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/ לולאות.