בשיעור הקודם למדנו על ביטויים מתימטיים, וראינו שלביטוי מתימטי יש ערך שהוא מספר. לדוגמא: (
ישנו עוד סוג של ביטויים הידועים בשם ביטויים לוגיים. לביטוי לוגי יכול להיות רק אחד משני הערכים: "אמת" או "שקר". בשפת לוגו, "שקר" מיוצג על ידי המספר 0, ואילו "אמת" מיוצג על ידי כל מספר שאינו 0. בואו נראה דוגמאות לביטויים לוגיים (ענה על השאלות הבאות "אמת" או "שקר"):
(
(2 גדול מ- 0)
(4 גדול מ- 4)
(4 גדול או שווה ל- 4)
(
(2>
(2=2)
(4>(2+2))
בוא וננסה זאת בלוגו:
חשב 5>2
חשב 2>5
חשב 0=3
חשב 5+5=
כדי להתקדם להמשך השיעור, נעשה הפסקה קלה, ונלמד מעט על כתיבת תת-שגרות בצורה שקל יותר לקרוא:
צורה שקשה לקרוא:
חזור
אותו הדבר בצורה שקל יותר לקרוא:
חזור
חזור 6 [
ימינה 60
קדימה 20
]
קדימה
חזור
ימינה 2
קדימה
]
ימינה 20
]
אנחנו רואים שבכל פעם שאנחנו פותחים רשימה אנחנו יורדים שורה ודוחפים קצת את הפקודות של הרשימה ימינה (כל פקודה בשורה חדשה). כשסוגרים את הרשימה, חוזרים אחורה. זה מדגיש יותר טוב את הקינון שלמדנו עליו בשיעור 2. בדוגמא למעלה צבעתי כל רשימה בצבע אחר לפי רמת הקינון שלה.
הפקודה הבאה שנלמד היא מעניינת מאוד. היא מאפשרת לצב שלנו להחליט מה לעשות, על פי ביטוי לוגי שאנחנו קובעים. לדוגמא, אנחנו רוצים שהצב יפנה ימינה 45 מעלות וילך קדימה 30 צעדים אם (4=3), אחרת, הצב צריך לפנות שמאלה 68 מעלות, ללכת אחורה
אםאחרת (4=3) [ ימינה 45 קדימה 30 ] [ שמאלה 68 אחורה
כמו שראינו, הפקודה אםאחרת מקבלת שלושה פרמטרים: הראשון הוא ביטוי לוגי, השני הוא רשימת פקודות לבצוע במקרה שהביטוי הלוגי הוא "אמת", והשלישי הוא רשימת פקודות לבצוע במקרה שהביטוי הלוגי הוא "שקר".
בואו נסבך זאת קצת, אבל נכתוב בצורה נוחה לקריאה תת-שגרה שמציירת קו זיגזג:
כדי זיגזג
פרמטרים [ מרחק ]
קבע א 0
חזור :מרחק [
קדימה 20
אםאחרת (:א=0) [
קבע א
שמאלה 20
] [
קבע א 0
ימינה 20
]
]
ננסה זאת:
הביתה
נקהמסך
זיגזג
הפקודה כלעוד מקבלת שני פרמטרים, הראשון הוא ביטוי לוגי, והשני הוא רשימת פקודות לבצוע כל-עוד הביטוי הלוגי הוא "אמת". לדוגמא:
כדי שבלול
פרמטרים [ אורך ]
כלעוד (:אורך>0) [
קדימה :אורך
ימינה 90
קבע אורך :אורך-2
]
ננסה זאת:
הביתה
נקהמסך
שבלול 50
סיכום השיעור
לביטויים לוגיים יש אחד משני הערכים "אמת", או "שקר".
בלוגו, "שקר" שווה ל- 0, ואילו "אמת" שווה לכל מספר השונה מ- 0.
פקודת אםאחרת מקבלת שלושה פרמטרים: ביטוי לוגי, רשימת פקודות למקרה שהביטוי הוא "אמת" ורשימת פקודות למקרה שהביטוי הוא "שקר".
פקודת כלעוד מקבלת שני פרמטרים: ביטוי לוגי ורשימת פקודות לבצוע כל עוד הביטוי הוא "אמת". חשוב מאוד לודא שהביטוי הלוגי יגיע בסופו של דבר לערך "שקר", אחרת תווצר לולאה אינסופית שאף פעם לא תפסיק לבצע את רשימת הפקודות שבפרמטר השני.