לעתים קרובות נרצה לכלול בתוכנית פקודות שיתבצעו רק במקרה ותנאי מסוים מתקיים. יש כמה דרכים לעשות זאת בלוגו.
* הפקודה הבסיסית לטיפול ב"תנאים" היא if. אופן הכתיבה של הפקודה הוא כזה: if cond [instruction] כאשר cond הוא תנאי שיש לבדוק, ו instruction הוא אוסף פקודות שיתבצעו במקרה והתנאי נכון. התנאי יכלול בדרך כלל אחד מבין הסימנים הבאים = ("שווה"), < ("גדול"), > ("קטן"), או שילוב שלהם. מבחינת לוגו מה שחשוב הוא שהתנאי יחזיר תוצאה של "אמת" (TRUE) או "שקר" (FALSE). הנה דוגמה לשורה הבודקת תנאי - "האם ערכו של המשתנה size גדול מ 100?" - ומדפיסה את ערכו של המשתנה אם הוא אכן עונה על התנאי. if :size>100 [print :size] מה שקורה מבחינת לוגו הוא, שהמחשב מגיע לפקודה IF ומחפש אחריה "ביטוי בוליאני". "ביטוי בוליאני" הוא כל דבר שלוגו מסוגלת לקבל ממנו תשובה של TRUE או FALSE. הביטוי כאן הוא size>100: ולכן
לעתים קרובות נרצה לכלול בתוכנית פקודות שיתבצעו רק במקרה ותנאי מסוים מתקיים. יש כמה דרכים לעשות זאת בלוגו.
* הפקודה הבסיסית לטיפול ב"תנאים" היא if. אופן הכתיבה של הפקודה הוא כזה: if cond [instruction] כאשר cond הוא תנאי שיש לבדוק, ו instruction הוא אוסף פקודות שיתבצעו במקרה והתנאי נכון. התנאי יכלול בדרך כלל אחד מבין הסימנים הבאים = ("שווה"), < ("גדול"), > ("קטן"), או שילוב שלהם. מבחינת לוגו מה שחשוב הוא שהתנאי יחזיר תוצאה של "אמת" (TRUE) או "שקר" (FALSE). הנה דוגמה לשורה הבודקת תנאי - "האם ערכו של המשתנה size גדול מ 100?" - ומדפיסה את ערכו של המשתנה אם הוא אכן עונה על התנאי. if :size>100 [print :size] מה שקורה מבחינת לוגו הוא, שהמחשב מגיע לפקודה IF ומחפש אחריה "ביטוי בוליאני". "ביטוי בוליאני" הוא כל דבר שלוגו מסוגלת לקבל ממנו תשובה של TRUE או FALSE. הביטוי כאן הוא size>100: ולכן לוגו מחפשת את המשתנה size ובודקת מה ערכו. נניח שערכו של size הוא 150. מה תהיה תוצאת ההשוואה 100<150? התוצאה תהיה TRUE, שכן 150 באמת גדול יותר מ-100. הביטוי הבוליאני הניב תוצאה של TRUE, ולכן לוגו פונה לבצע את ההוראות שבין הסוגריים המרובעים. במקרה שלנו מדובר בהוראה יחידה - להדפיס את ערכו של size, ולכן יודפס המספר 150.