Small Basic/תנאים והסתעפויות
זוכרים את שלום עולם? מה דעתכם על זה שהתוכנה תגיד "בוקר טוב" או "ערב טוב" לפי השעה?
עושים את זה כך:
If (Clock.Hour < 12) Then
TextWindow.WriteLine("Good Morning World!")
EndIf
If (Clock.Hour > 12) Then
TextWindow.WriteLine("Good Evning World!")
EndIf
אבל מה זה?
If (Clock.Hour < 12) Then
TextWindow.WriteLine("Good Morning World")
EndIf
זו פקודה שנקראת If. האפשרות הזאת היא מבצעת פקודה כלשהי רק אם מתקיים תנאי מסוים. כדי להרכיב תנאי If צריך לרשום בהתחלה את השורה הזאת:
If (תנאי) Then
המילה If
מציינת שעכשיו מתחיל תנאי If. בתוך הסוגריים מופיע התנאי שאנו בודקים אם הוא יתקיים. במקרה שלנו זה clock.hour < 12
. האובייקט Clock
משתמש בשעון המחשב והפעולה Hour
היא
משתמשת בשעה של המחשב. בתוך התנאי מופיעה הפקודה שתופעל אם התנאי מתקיים. בסוף התנאי מופיעה המילה EndIf
שמציינת שנגמר תנאי ה- If.
אבל הקוד הזה די ארוך. בואו נראה שיטה שונה לכתיבת אותה תוכנה בדיוק:
If (Clock.Hour < 12) Then
TextWindow.WriteLine("Good Morning World!")
Else
TextWindow.WriteLine("Good Morning World!")
EndIf
הפקודה Else
היא פקודה שכותבת תנאי הפוף מהתנאי הקודם. זו שיטה מאוד יעילה כשכותבים 2 פקודות If. אם תריצו את הקוד תראו שהתוכנה פועלת בדיוק כמו קודם. אנחנו רק שיפרנו את המבנה של הקוד.
זוגי או אי זוגי
[עריכה]עכשיו, כשיש לנו ידע בכל מילות התנאי (If, EndIf, ו- Else) נרשום תוכנה שבודקת האם מספר הוא זוגי או אי זוגי.
TextWindow.Write("Enter a number: ")
num = TextWindow.ReadNumber()
remainder = Math.Remainder(num, 2)
If (remainder = 0) Then
TextWindow.WriteLine("The number is Even")
Else
TextWindow.WriteLine("The number is Odd")
EndIf
כשנריץ את התוכנה יתקבל הפלט הבא:
Enter a number: _
הזינו מספר והתוכנה תגיד האם המספר הוא זוגי או אי זוגי:
Enter a number: 2017
The number is Odd
Press any key to continue...
בתוכנה זו השתמשנו בעוד פקודה מעניינת שנקראת Math.Remainder
. הפעולה הזו מחלקת את המספר הראשון במספר השני ונותנת בחזרה את שארית החלוקה.
הסתעפויות
[עריכה]כשמתכנתים תוכנה, השורות רצות מלמעלה למטה. אבל יש פקודות מיוחדות שלא מריצות את הקוד לפי הסדר:
i = 1
start:
TextWindow.WriteLine(i)
i = i + 1
If (i < 25) Then
Goto start
EndIf
זה יהיה הפלט שלנו:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Press any key to continue...
נסביר את התוכנה. בהתחלה קבענו משתנה שקוראים לו i ונתנו לו את הערך 1. אחר כך רשמנו פקודה שלא הכרנו: start:
.
פקודה כזו נקראת "תווית". תווית היא כמו סימנייה בתוכנה. לתוויות אפשר לתת כל שם שאתם בוחרים.
עוד שורה מעניינת ראינו בתוכנית:
i = i + 1
השורה הזו גורמת לחבר 1 למשתנה i ולעדכן אותו בחזרה. שורה זו הפכה את הערך של i מ- 1 ל- 2. ולסיום,
If (i < 25) Then
Goto start
EndIf
הפקודה הזו אומרת שאם הערך של i קטן מ- 25 יש לבצע שוב את הקוד מהמיקום של התווית start.
ביצוע אינסופי?
[עריכה]עקרונית, הפקודה Goto אומרת לבצע שוב את התוכנה מקטע מסויים. למשל, אפשר לשנות את התוכנית מהפרק הקודם כך שהיא תרוץ לנצח:
begin:
TextWindow.Write("Enter a number: ")
num = TextWindow.ReadNumber()
remainder = Math.Remainder(num, 2)
If (remainder = 0) Then
TextWindow.WriteLine("The number is Even")
Else
TextWindow.WriteLine("The number is Odd")
EndIf
Goto begin
אם תריצו את התוכנה, היא תגיד לכם לנצח להזין מספר. בכל מקרה, תוכלו להפסיק את התוכנית אם תלחצו על ה- X בפינה של החלון.
הפרק הבא: Small Basic/ לולאות.