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