במחלקה Console מוגדרות שתי מתודות הפלט הבאות:
Console.WriteLine מדפיסה על המסך ויורדת שורה.
Console.Write מדפיסה על מסך ולא יורדת שורה.
מאמר זה עוסק במתודות הפלט וביצירת מחזורת פלט תוך שימוש במרקרים.
מתודות פלט
מאת: ארז קלר
להורדת דוגמאות הקוד
עם המחלקה Console כבר ערכנו הכרות מאוד ראשונית ובסיסית.
את המתודה Console.WriteLine אנחנו כבר מכירים, אבל רק על קצה המזלג.
את המתודה Console.Write אנחנו עדיין לא מכירים.
במאמר זה נצלול קצת יותר פנימה ונכיר יותר לעומק את יכולות המחלקה והמתודות.
- Console.WriteLine מדפיסה על המסך ויורדת שורה.
- Console.Write מדפיסה על מסך ולא יורדת שורה.
וזה ההבדל היחידי בין המתודות. |
לדוגמה (ConsoleWriteSample):
1 : class Program
2 : {
3 : static void Main(string[] args)
4 : {
5 : Console.Write("Hello ");
6 : Console.Write("World ");
7 : }
8 : }
פלט:
המתודות הללו יכולות לקבל כל סוג של מידע ולהציגו, לדוגמה (ConsoleWriteSample02):
1 : class Program
2 : {
3 : static void Main(string[] args)
4 : {
5 : Console.WriteLine("Hello World");
6 : Console.WriteLine(123);
7 : Console.WriteLine(123.456);
8 : Console.WriteLine('A');
9 : int num = 123;
10 : double dnum = 678.123;
11 : Console.Write(num);
12 : Console.Write(" + ");
13 : Console.Write(dnum);
14 : Console.Write(" = ");
15 : Console.Write(num + dnum);
16 : Console.WriteLine();
17 : }
18 : }
בשורה 5 המתודה מקבלת פרמטר מטיפוס string,
בשורה 6 המתודה מקבלת פרמטר מטיפוס int,
בשורה 7 המתודה מקבלת פרמטרמטיפוס double,
בשורה 8 המתודה מקבלת פרמטר מטיפוס char.
(למעשה מאחורי הקלעים מדובר על מתודות שונות בעלות אותו השם, ליכולת הזאת קוראים העמסת מתודות או Method Overloading באנגלית, אבל אל זה נרחיב במאמר אחר)
פלט:
אבל כל זה עדיין רק על קצה המזלג, בשביל להכיר את היכולות של המחלקה קצת יותר לעומק צריך להכיר את האפשרויות של הסמנים (Markers).
הגדרת מחרוזת הפלט ( Text Formatting)
שימוש בסמנים (Markers)
המתודות Write ו- WriteLine מאפשרות לפרמט את הפלט על ידי שימוש בסמנים (Markers).
"פירמוט" הוא היכולת לקבוע את מבנה וצורת הפלט,
סמן הוא "שומר מקום" למידע שברצוננו להדפיס.
לדוגמה:
Console.WriteLine("The Sum of {0} and {1} is {2}.",12,23,12+23);
הפלט:
The Sum of 12 and 23 is 35
{2}, {1}, {0} – הם סמנים, סמנים הם שומרי מקום למידע שיוגדר בשלב מאוחר יותר במתודה.
על המסך לא נראה את הסמנים אלא את המידע שהחליף אותם.
בדוגמה, הסמן {0} מוחלף על ידי הערך 12, הסמן {1} מוחלף על ידי 23 והסמן {3} מוחלף על ידי תוצאת הסיכום 12+23.
מתודות הפלט מחייבות לשמור על מספור עוקב של הסמנים, אולם הסמנים אינם חייבים להופיע על פי הסדר, לדוגמה:
Console.WriteLine("The Sum of {2} and {1} is {0}.",12,23,12+23);
גם בדוגמה זו הסמן {0} מוחלף על ידי 12 (למרות שהוא הסמן האחרון), הסמן {1} מוחלף על ידי 23 והסמן השלישי {2} מוחלף על ידי תוצאת הסיכום 12+23.
הפרמטר היחידי שקובע הוא לא סדר הופעת הסמנים אלא המספור שלהם:
{0} – תמיד יוחלף על ידי הפרמטר מידע הראשון.
{1} – תמיד יוחלף על ידי הפרמטר מידע השני.
{2} – תמיד יוחלף על ידי הפרמטר מידע השלישי.
וכיוצא בזה.....
{99} – תמיד יוחלף על ידי הפרמטר מידע מספר 100.
כל סמן יכול להופיע יותר מפעם אחת במחרוזת הפלט,
בדוגמה השלישית כל אחד מהמספרים 11,22,33 יודפס 3 פעמים.
Console.WriteLine(“{0}{1}{2}{0}{1}{2}{0}{1}{2}”,11,22,33);
דוגמת קוד (ConsoleMarker):
1 : class Program
2 : {
3 : static void Main(string[] args)
4 : {
5 : Console.WriteLine("The Sum of {0} and {1} is {2}.", 12, 23, 12 + 23);
6 : Console.WriteLine("The Sum is {2} , Result of {1} + {0}.", 12, 23, 12 + 23);
7 : Console.WriteLine("{0}{1}{2}{0}{1}{2}{0}{1}{2}", 11, 22, 33);
8 : }
9 : }
פלט:
הגדרת מרווחים
על מנת לשמור על מרווחים אחידים בפלט ניתן לקבוע כמה תווי מסך יוקצו לכל Marker
ו- Marker:
Console.WriteLine("The Sum of {0,10} and {1,10} is {2,10}.",12,23,12+23);
הפלט:
The Sum of 12 and 23 is 35
בדוגמה זו נקבע כי הערכים שיחליפו את שלושת הסמנים ישתרעו על פני 10 תווי מסך, כאשר היישור יהיה לצד ימין.
הדוגמה הבאה מציגה מרווח , אולם עם יישור לצד שמאל.
Console.WriteLine("The Sum of {0,-10} and {1,-10} is {2,-10}.",12,23,12+23);
הפלט:
The Sum of 12 and 23 is 35 .
דוגמת קוד: ConsoleSpaces:
1 : class Program
2 : {
3 : static void Main(string[] args)
4 : {
5 : Console.WriteLine("The Sum of {0,10} and {1,10} is {2,10}.", 12, 23, 12 + 23);
6 : Console.WriteLine("The Sum of {0,-10} and {1,-10} is {2,-10}.", 12, 23, 12 + 23);
7 : }
8 : }
פלט:
כרטיסי ניקוב |
ג'וזף מרי ג'אקארד היה יכול להיות אחד מעשירי העולם אלמלא נולד 100 שנה מוקדם מדי (אבל גם כך לא נראה לי שהיה "רעב ללחם"). |
|
|
כל הזכויות שמורות למחבר ©