תכנות בשפת לוגו - קורס לילדים מגיל  8 עד 88

קורס זה הנו תרגום לעברית של עבודה מאת ראנדל אמברי http://www.embry.com/randall/. בחלקים מסוימים ראיתי לנכון להוסיף על הטקסט המקורי על מנת להתאימו לקהל לומדים צעיר יותר.

 

הגירסה העברית של שפת התכנות: יוני בר-לביא (יולי 2002)

עדכון הגרסה העברית: יוני בר-לביא (אפריל 2006)

 

לשם נוחות בלבד, הפניה אל הלומד/ת תהיה בלשון זכר.

 

התחלה

אם אתה קצר רוח, ורוצה לקפוץ ישירות לדוגמאות, אנא ודא כי קראת את הפרק שנקרא הערות חשובות. זה יכול לחסוך לך לא מעט הקלדות!  בנוסף, אולי יהיה זה משתלם להדפיס את הדפים האלה, ואז לעבוד עם חלון הלוגו והדפים המודפסים.

 

השורה הבאה היא חיבור המפעיל את החלון של לוגו. הקשה עליה מפעילה חלון חדש במקביל לחלון זה. תוכל להפעיל את החלון של לוגו ולהמשיך לקרוא את המסמך הזה במקביל.

 

 

בחלון החדש יש את הסביבה של לוגו. הסביבה מורכבת משלושה חלקים:

1.     חלון התוצאה - תופס את החצי העליון של הסביבה, ובו חי ומצייר הצב של לוגו.

2.     שטח הכתיבה  -תופס את החלק השמאלי התחתון של הסביבה. כאן אתה מקליד פקודות לוגו ומקבל הודעות מהצב של לוגו.

3.     לוח הבקרה - תופס את החלק הימני התחתון. מכיל כמה כפתורים שעוזרים לך לשלוט בצב של לוגו.

  

 

הערות חשובות

כללי

לחלק מהמשתמשים תתכן בעיה להקיש על מקש Enter בתוך שטח הכתיבה. אם לא קורה שום דבר בעת ההקשה על  Enter, הקש עם העכבר על כפתור בצע בתחתית שטח הכתיבה.

 השתמש בכפתור עצור בכדי לעצור תכנית רצה.

עבודה בשפה העברית

תוכנת הבסיס של לוגו תומכת בשפה העברית, אך לפעמים ישנן בעיות בשימוש בשטח הכתיבה. מנסיוני, התקנת סביבת הריצה של ג'אווה (בגרסה 1.3.1 או חדשה יותר) במחשב פותרת לחלוטין את הבעיה. בכל מקרה, יהיה זה מאוד נוח לכתוב את התוכנות במעבד תמלילים חיצוני (כדוגמת Word או כתבן), ולא ישירות בשטח הכתיבה, ואז להדביק את הטקסט אל שטח הכתיבה. צורת עבודה זו גם מאפשרת לך לשמור את התוכנות לעתיד.בכל מחשב עם Windows מותקנת תוכנת "כתבן", והיא אידיאלית לשימושים אלה. נא ראה סעיפים שמירה ושחזור של  תכניות שכתבת וכן הורדה והתקנת סביבת הריצה של ג'אווה להלן.

צבעים והדגשות לנוחות הלומד

כדי לעזור ללומד להתמצא במסמך, השתמשתי בצבעים על מנת להדגיש מילים משמעותיות לאותו הפרק. בנוסף, לאורך כל הקורס, פקודות בשפת לוגו יופיעו בגופן קורייר בצבע כחול.

פקודות לוגו בעברית

כדי לאפשר לילדים צעירים שהאנגלית לא שגורה בפיהם לתכנת בשפת לוגו, הוספתי לשפת לוגו המקורית את הפקודות המקבילות בעברית. מכיוון שבתכנות, פקודה יכולה להיות מורכבת רק מרצף אחד של סימנים, אזי חלק מהפקודות בעברית נראה מעט מוזר. לדוגמא: הפקודה קדימה היא ברורה, אבל מי יכול לנחש מה זה קבעצבעעט (קבע צבע עט – כמובן), או הסתרצב (הסתר צב...)

שמירה ושחזור של  תכניות שכתבת

לשמירה: הקש את הפקודה הצגעבודה. שטח הכתיבה יציג כעת את כל תת-השגרות שכתבת. בחר את כל הטקסט והעתק אותו (ctrl+c) בתוכנת עיבוד התמלילים בצע הדבקה של הטקסט (ctrl+v), ושמור. בחזרה בחלון הלוגו: הקש על כפתור סיום.

 

לשחזור: הקש את הפקודה קבלעבודה העתק את התכנית מתוך מעבד התמלילים, והדבק את הטקסט בשטח הכתיבה של לוגו. הקש על כפתור סיום.

 

אם אתה משתמש במערכת הפעלה Windows 98  אזי לא רצוי להשתמש בתוכנת Notepad מכיוון שהיא פשוטה מדי וגורמת לאבדן העברית. במקרה זה רצוי להשתמש לפחות בתוכנת כתבן (Write) או בתוכנת Word. במערכות הפעלה מסוג Windows 2000 או XP או Linux לסוגיו – אין כל בעיה.

 

הורדה והתקנת סביבת הריצה של ג'אווה

שפת הלוגו שאנו נלמד כאן נכתבה באמצעות שפת המחשב ג'אווה, ולכן נדרש כי במחשבך תהיה מותקנת סביבת הריצה של ג'אווה. רוב המחשבים היום מצוידים מראש בסביבת ריצה של ג'אווה, וסביר ששפת לוגו תפעל היטב בה. אך לפעמים אין זה כך, או שאנחנו רוצים לשדרג את סביבת הריצה של ג'אווה לגרסת מתקדמת יותר (לדוגמא סביבה שתומכת טוב יותר בעברית).

 

ניתן להוריד ולהתקין את הגרסא העדכנית של סביבת הריצה של ג'אווה מאתר חברת sun. הסביבה אינה עולה כסף, אולם לוקח קצת זמן להוריד אותה.

על מנת להתחיל את ההורדה יש להקיש על קישור זה.


שיעור מס' 1 – שרטוט בעזרת הצב

שיעור זה יציג בפניך את הצב של לוגו ואת לוח הבקרה שלו

 

האם אתה מבחין במשולש הכחול הנמצא במרכז חלון התוצאה? זהו הצב. (הקצה שלו מראה את הכיוון שאליו הצב פונה כרגע) לוח הבקרה מאפשר לך לבקש מהצב לבצע פעולות באמצעות לחיצה על הכפתורים השונים. בזמן שאתה לוחץ על הכפתורים השונים, מציג שטח הכתיבה את שמות הפעולות (הפקודות) שבקשת מהצב לבצע. אלו הפקודות שישמשו אותך בתכנות בשפת לוגו.

 

הקש עם העכבר על כפתור קדימה בלוח הבקרה.  הצב יזוז קדימה 10 צעדים וכן, תופיע שורה חדשה בלוח הכתיבה: 'קדימה 10'

הקש על קדימה שוב. הצב יזוז עוד קצת, והשורה בלוח הכתיבה תשתנה ל-'קדימה 20'

עכשיו הקש על ימינה. הצב  יפנה מעט ימינה ובשטח הכתיבה תופיע שורה חדשה: 'ימינה 10'

הקש ימינה עוד 8 פעמים (שטח הכתיבה יראה 'ימינה 90' ).

הקש קדימה עוד שתי פעמים.

ואז הקש ימינה 9 פעמים.

ואז הקש קדימה שתי פעמים.

הקש ימינה 9 פעמים.

ולבסוף, הקש קדימה שתי פעמים נוספות.

 

כתבת תכנית מחשב פשוטה שמציירת קופסא, והתכנית שכתבת מופיעה בשטח הכתיבה !!!

ניתוח - מה עשינו

אם עקבת בדייקנות אחרי ההוראות, אז בשטח הכתיבה צריכות להופיע השורות הבאות:

קדימה 20

ימינה 90

קדימה 20

ימינה 90

קדימה 20

ימינה 90

קדימה 20

 

אם זה נראה קצת אחרת, לא נורא. כנראה שהקשת על הכפתורים פעם אחת יותר או פחות. אם אתה רוצה לנסות שוב, הקש פעמיים על כפתור הביתה (הפעם הראשונה מחזירה את הצב לבית שלו במרכז חלון התוצאה. ההקשה השניה מנקה את חלון התוצאה).

 

השורות שמופיעות בשטח הכתיבה הן הפקודות שהצב של לוגו מבין. אתה יכול להקליד את הפקודות האלה בעצמך בשטח הכתיבה או להשתמש בכפתורים. נראה לי שזה יותר משתלם לכתוב את הפקודות בשטח הכתיבה, בגלל שאפשר לתת לצב פקודות בזמן קצר יותר. לדוגמא: במקום להקיש 9 פעמים עם העכבר על כפתור ימינה, אפשר פשוט לכתוב את הפקודה 'ימינה 90' (ואחר כך להקיש על מקש Enter), והצב יבצע בדיוק את אותו הדבר!

 

דרך אגב, המספר 90 בפקודה 'ימינה 90' הוא מספר המעלות שהצב פנה ימינה. זאת אומרת שהצב פנה 90 מעלות ימינה. למה 90? נגיד שהחבר שלך איבד את הכדור שלו, ואתה מנסה להגיד לו שלך איפה נמצא הכדור. אתה יודע שהכדור נמצא בצד ימין שלו אבל גם קצת מאחוריו. אם הוא יפנה ימינה, הוא לא ימצא את הכדור. אתה צריך להגיד לו בצורה יותר מדויקת "ימינה וקצת מאחוריך". אבל, גם התיאור הזה לפעמים לא מספיק, וצריך למסור תיאור יותר מדויק. מה עושים? היוונים הקדמונים גם נתקלו בבעיה הזו, והם חשבו על דרך להגיד אחד לשני כיוונים בצורה מדויקת. הם דמיינו שהם עומדים במרכז של מעגל גדול (כמו לעמוד במרכז של שעון מחוגים גדול). את המעגל הגדול הזה הם חילקו ל- 360 חלקים (כל חלק נקרא מעלה, ולכן במעגל יש 360 מעלות) ואז הם יכלו לומר את הכוון המדויק שאליו הם פנו. כאשר אומרים "90 מעלות" בעצם מתכוונים לרבע סיבוב (בתוך 360 יש 4 פעמים 90). כאשר אומרים "180 מעלות" בעצם אומרים חצי סיבוב (יש 2 פעמים 180 בתוך 360). בטח שמעת פעם מבוגרים אומרים אחד לשני "תראה איזו מכונית יפה בשעה חמש שלך" למה הם מתכוונים? בעצם לאותו דבר – הם מדמיינים שהם נמצאים במרכז של שעון מחוגים גדול, והמכונית היפה נמצאת במקום שבו נמצאת הספרה 5.

 

הנה עוד מספר דברים שאפשר לעשות עם לוח הבקרה:

1.      לרוב הצב מצייר קו כאשר אתה לוחץ על הכפתורים קדימה או אחורה, אבל אם תלחץ על כפתור עט עכשיו למטה, הכפתור ישתנה ועכשיו יהיה כתוב בו "עט עכשיו למעלה". במצב הזה הצב זז מבלי לצייר. זוהי השיטה להעביר אותו ממקום למקום מבלי שהוא יצייר קו במקומות שבהם הוא עבר. אם לוחצים על הכפתור הזה שנית, הוא חוזר להיות "עט עכשיו למטה" והצב חוזר לצייר.

2.      לפעמים הצב קצת מפריע לראות מה קורה מתחתיו. לחץ על כפתור "הצב נראה" והצב ייעלם.

3.      נמאס לך לצייר קווים שחורים? יש לך אפשרות לשנות את צבע הקו שמצייר הצב. אם תשים לב, תבחין בשלושה בוררים בצבעים אדום, כחול וירוק. על ידי שינוי הרמה של כל צבע, יש לך אפשרות לקבוע צבע חדש לקו שמצייר הצב. בהתחלה, כל שלושת הבוררים נמצאים במצב הכי נמוך שלהם (הכי שמאלה שאפשר). במצב זה אין אדום ולא כחול ולא ירוק, ולכן הצבע הוא שחור. אם תעביר הבורר האדום ימינה עד הסוף, תראה שהריבוע של הצבע השתנה לצבע אדום חזק, והצבע של הקו שמצייר הצב הוא אדום. אם עכשיו תעביר גם את הבורר הירוק ימינה עד הסוף, הצבע השתנה לצהוב. זה דומה מאוד לערבוב של צבעי מים על נייר, אבל החוקים הם קצת שונים.

סיכום השיעור

אפשר לשלוט בצב באמצעות לוח הבקרה על ידי הכפתורים הבאים:

-         קדימה – מזיז את הצב קדימה 10 צעדים, בדיוק כמו שמקלידים 'קדימה 10' בשטח הכתיבה.

-         אחורה - מזיז את הצב אחורה 10 צעדים, בדיוק כמו שמקלידים 'אחורה 10' בשטח הכתיבה.

-         שמאלה - מפנה את הצב 10 מעלות שמאלה, בדיוק כמו שמקלידים 'שמאלה 10' בשטח הכתיבה.

-         ימינה - מפנה את הצב 10 מעלות ימינה, בדיוק כמו שמקלידים 'ימינה 10' בשטח הכתיבה.

-         הביתה/נקה מסך – לחיצה אחת מחזירה את הצב למרכז חלון התוצאה (מקביל להקלדת הפקודה 'הביתה' בשטח הכתיבה), ומשנה את שם הכפתור ל-'נקה מסך'. לחיצה נוספת על כפתור זה תנקה את חלון התוצאה (מקביל להקלדת הפקודה 'נקהמסך').

-         עט עכשיו למטה/עט עכשיו למעלה – מחליף את מצב העט. לרוב המצב הוא שהעט למטה והצב מצייר. לחיצה אחת מחליפה את המצב ל- 'עט עכשיו למעלה' (הקלדת פקודה 'עטלמעלה'). לחיצה נוספת מחליפה את המצב ל- 'עט עכשיו למטה' (פקודה: 'עטלמטה')

-         הצב נראה/הצב מוסתר – מציג או מסתיר את הצב. לרוב המצב הוא שהצב נראה. במצב זה – לחיצה אחת מסתירה את הצב (פקודה: 'הסתרצב'). לחיצה נוספת מציגה את הצב (פקודה: 'הצגצב')

-         שנה צבע – משנה את צבע העט לצב שנבחר על ידי הבוררים. יש קודם לבחור צבע מתאים על ידי שינוי הבוררים של שלושת הצבעים. כשמגיעים לצבע שמוצא חן בעינינו – לוחצים על הכפתור ומשנים את צבע העט. אפשר כמובן גם להקליד את הפקודה בשטח הכתיבה, לדוגמא: כדי ליצור צבע כתום כהה יש לערבב אדום ברמה של 240 עם ירוק ברמה של 155 ועם כחול ברמה של 40. הפקודה שיש להקליד היא: 'קבעצבעעט 240 155 40'


שיעור מס' 2: בניית קופסא בצורה יעילה יותר

בשיעור מס' 1 למדת איך לשרטט קופסא, על ידי שימוש בלוח הבקרה. ללוגו יש דרך נוחה יותר לשרטט ריבוע, על ידי שימוש בפקודה החזקה חזור.

 

אבל לפני כן, כדאי לדעת יותר על המושג פרמטרים. פרמטר הוא מילה או מספר שאנחנו מוסיפים אחרי שם הפקודה על מנת להסביר לצב בדיוק איך לבצע אותה. לדוגמא: אנחנו יכולים להגיד לצב ללכת קדימה, אבל אנחנו חייבים להגיד לו כמה צעדים ללכת. לכן תמיד נוסיף לפקודה קדימה פרמטר של מספר הצעדים, ואז הצב יכול לדעת כמה צעדים ללכת. במקרה של הפקודה 'קדימה 45', המילה קדימה היא שם הפקודה, ואילו המספר 45 הוא הפרמטר. כמעט כל הפקודות של שפת לוגו מצפות לקבל פרמטרים (אחד או יותר) על מנת לפעול. רק כדוגמא, הפקודות קדימה ואחורה מצפות לקבל פרמטר שיגיד לצב כמה צעדים ללכת. הפקודות ימינה ושמאלה מצפות לקבל פרמטר של מספר המעלות שהצב צריך לפנות, ואילו הפקודה קבעצבעעט מצפה לקבל שלושה פרמטרים בכדי לערבב צבע (אדום, כחול וירוק – זוכר ??).

 

עוד כדאי ללמוד על המושג רשימה בלוגו. כשאומרים רשימה בלוגו מתכוונים לקבוצה של פקודות (עם הפרמטרים שלהן) אשר נמצאות בתוך סוגריים מרובעים ( הסוגר '['  בהתחלה, והסוגר ']' בסוף ). הנה ארבע דוגמאות לרשימות של לוגו:

1.                   [קדימה 10 שמאלה 90 קדימה 15 ימינה 90 קדימה 20 ימינה 45 קדימה 20]

2.                   [ ]

3.                   [קדימה 20]

4.                   [קדימה 20 ימינה 90]

 

אפשר לנסות לכתוב את הרשימות האלה בשטח הכתיבה ולראות מה קורה.

 

אפשר לדמיין שהסוגריים של הרשימה הם קן של ציפורים שנראה ככה: [ ]

ושהפקודות שבתוך הרשימה מקננות בתוך הקן הזה.

 

למה צריך רשימות?

בעצם אתה משתמש ברשימות כל הזמן. כשאתה אומר למישהו "לך 4 צעדים קדימה" אתה בעצם גורם לאותו אדם להשתמש ברשימה. הרשימה הזאת נראית בערך ככה:

 

כדי ללכת 4 צעדים קדימה

[

1.      הרם את רגל ימין

2.      הנח את רגל ימין 30 סמ' קדימה

3.      העבר את המשקל שלך אל רגל ימין

4.      הרם את רגל שמאל

5.      הנח את רגל שמאל 30 סמ' קדימה

6.      העבר את המשקל שלך אל רגל שמאל

7.      הרם את רגל ימין

8.      הנח את רגל ימין 30 סמ' קדימה

9.      העבר את המשקל שלך אל רגל ימין

10.  הרם את רגל שמאל

11.  הנח את רגל שמאל 30 סמ' קדימה

12.  העבר את המשקל שלך אל רגל שמאל

]

 

אבל במקום כל זה יש לנו בראש רשימה קצת שונה. יש לנו בעצם רשימה של הפעולות שצריך לעשות כדי ללכת צעד אחד (נקרא לרשימה זו "צעד אחד").

כדי לצעוד 4 צעדים – אנחנו לוקחים את רשימת הפעולות שנקראת "צעד אחד" ומבצעים אותה 4 פעמים.

 

בטח שמת לב שהדוגמה השנייה של הרשימות בלוגו לא מכילה אף פקודה. זוהי רשימה חוקית בהחלט, והיא בעצם רשימה ריקה! למה צריך רשימה ריקה? נדגים זאת באמצעות דוגמא נוספת. נכין הוראות איך להיות "תלמיד טוב":

 

כדי להכין שיעורי בית

[

1.      פתח את המחברת

2.      קרא את השאלות

3.      כתוב תשובות

]

 

כדי לא לעשות כלום

[]

 

כדי להיות תלמיד טוב

[

1.      בדוק אם יש שיעורי בית

2.      אם יש שיעורים: הכן שיעורי בית

3.      אם אין: אל תעשה כלום

]

 

עכשיו אתה מוכן ללמוד את הפקודה חזור. הפקודה חזור מצפה לקבל שני פרמטרים. הפרמטר הראשון הוא כמה פעמים לבצע, והפרמטר השני הוא רשימה של מה לבצע.

יש לנו עכשיו דרך קלה יותר לצייר קופסא:

הביתה

נקהמסך

חזור 4 [ קדימה 20 ימינה 90 ]

 

הפרמטר הראשון בדוגמא זו הוא המספר "4"

הפרמטר השני הוא הרשימה: "[קדימה 20 ימינה 90]"

 

זאת אומרת שהצב יבצע 4 פעמים את הרשימה "[קדימה 20 ימינה 90]"

 

 

הדוגמא לא כל-כך מרשימה? מה דעתך על זה?

הביתה

נקהמסך

חזור 20 [ חזור 4 [ קדימה 20 ימינה 90 ] ימינה 18 ]

 

עכשיו תחשוב כמה זמן היה לוקח לך לבצע זאת על ידי לחיצה על הכפתורים בלוח הבקרה!

כדאי עוד לשים לב לכך שבפקודה האחרונה שכתבנו יש חזור בתוך הרשימה של חזור. לצורה זו של כתיבת פקודות קוראים "קינון" (זוכר??).

 

זוכר את הרשימה הריקה? נסה לנחש מה יעשה הצב בפקודה הבאה:

חזור 175 []

 

אפשר להגיד שהפקודה חזור היא פקודה מסוג "לולאה". מדוע? מפני שהפקודות שמקננות בתוך הרשימה שלה מבוצעות אחת אחרי השנייה לפי הסדר.

אבל אחרי שהפקודה האחרונה ברשימה בוצעה, הצב חוזר לפקודה הראשונה שברשימה ומתחיל מחדש.

אם תסמן את השורה הכחולה שמופיעה למטה בכתב קטן, תעתיק ותדביק אל שטח הכתיבה ותבצע(enter)

תראה שרטוט אשר ממחיש מדוע הפקודה: חזור 4 [ ימינה 90 קדימה 20 ] (אשר מציירת קופסא בארבעה שלבים) היא בעצם לולאה.

 

[ימינה 90 חזור 4 [ קבעצבעעט 0 0 0 חזור 12 [ ימינה 5 קדימה 9 ] ימינה 90 קדימה 5 שמאלה 120 קדימה 10 שמאלה 120 קדימה 10 שמאלה 120 קדימה 5 שמאלה 90 חזור 6 [ ימינה 5 קדימה 9 ] קבעצבעעט 0 0 250 כתוב [ימינה_90_קדימה_20] ]]

 

בהמשך תוכל להבין איך כתבתי אותה.

סיכום השיעור

פרמטרים הם ערכים שדרושים לחלק מהפקודות של לוגו.

פקודת לוגו מורכבת משם הפקודה ומכל הפרמטרים הנדרשים לה.

כדי ליצור רשימה שמים פקודת לוגו אחת או יותר בתוך סוגריים מרובעים.

כדי ליצור רשימה ריקה לא שמים אף פקודה בתוך הסוגריים.

פקודת חזור היא פקודה מסוג "לולאה"  אשר דורשת שני פרמטרים: הראשון הוא מספר הפעמים שצריך לבצע, והשני הוא רשימה של פקודות לבצוע.

על הפקודות שנמצאות בתוך הפרמטר השני של פקודת ה-חזור (הרשימה) אומרים שהן מקננות בתוך פקודת ה-חזור.


שיעור מס' 3: תת-שגרות (סברוטינות)

אם תקליד 'חזור 4 [קדימה 20 ימינה 90]' בכל פעם שאתה רוצה לצייר ריבוע זה עלול להיות מעייף ומבלבל, במיוחד אם אתה מקנן את הפקודה בתוך פקודת חזור אחרת, כמו בדוגמא בשיעור 2.

 

ישנה דרך קלה יותר: לוגו מאפשרת לך לכתוב תת-שגרות, שהן בעצם אוסף של פקודות שאתה נותן להן שם חדש.

 

לדוגמא, זה יהיה נחמד אם פשוט תוכל להקליד 'קופסא', והצב יבין את הפקודה ויצייר קופסא.

ישנה דרך ללמד את הצב לצייר קופסא:

1.      בשטח הכתיבה הקלד את הפקודה 'כדי קופסא' (Enter...)

2.      שטח הכתיבה יתחלף ויהפוך ל- לעורך השגרות.  יהיה כתוב בכותרתו "כדי קופסא".

3.      הקלד פנימה 'חזור 4 [קדימה 20 ימינה 90]'

4.      משסיימת להקליד, הקש על כפתור סיום, ועורך השגרות יחזור להיות שטח הכתיבה.

5.      עכשיו בשטח הכתיבה הקלד 'קופסא', הצב מיד יצייר קופסא! הקש על כפתור הביתה פעמיים, בכדי לנקות את המסך, והקלד שוב 'קופסא' כדי לראות את הצב מצייר קופסא שוב.

 

אם אתה רוצה לשנות את הדרך בה הצב מצייר את הקופסא, פשוט הקלד 'כדי קופסא' שוב, ומייד יוצג עורך השגרות ובתוכו תופיע תת-השגרה שכתבת קודם.

כעת תוכל לשנות את הדרך בה מצייר הצב את הקופסא.

לדוגמא תוכל להחליף את הפקודות ל- 'חזור 4 [קדימה 40 ימינה 90]' (ואז - כפתור סיום), ומעתה והלאה – הצב יצייר קופסא גדולה יותר. (מדוע ?)

 

בוא ונלמד את הצב לצייר עוד שתי צורות חדשות: משולש ומשושה.

 

כדי לכתוב תת-שגרה שמציירת משולש צריך:

1.      בשטח הכתיבה הקלד את הפקודה 'כדי משולש' (Enter...)

2.      שטח הכתיבה יתחלף ויהפוך ל- לעורך השגרות.  יהיה כתוב בכותרתו "כדי משולש".

3.      הקלד פנימה 'חזור 3 [קדימה 40 ימינה 120]'

4.      משסיימת להקליד, הקש על כפתור סיום, ועורך השגרות יחזור להיות שטח הכתיבה.

 

וכדי לכתוב תת-שגרה שמציירת משושה ניצור תת-שגרה בשם "משושה" ונכניס לעורך השגרות: 'חזור 6 [קדימה 40 ימינה 60]'

 

נסה זאת. האם הצלחת ללמד את הצב לצייר את המשולש והמשושה?

סיכום השיעור

-         תת-שגרה (או – סברוטינה) היא אוסף של פקודת לוגו אחת או יותר. זוהי הדרך שלנו ללמד את הצב לעשות דברים שהוא לא יודע לעשות.

-         כדי ליצור תת-שגרה חדשה, או כדי לשנות תת-שגרה קיימת, משתמשים בפקודת כדי ומוסיפים לה את שם תת-השגרה כפרמטר.

-         לימדנו את הצב שלנו לצייר שלוש צורות חדשות שהוא לא הכיר: קופסא, משולש ומשושה.

 

האם אתה יכול לחשוב איך מציירים עיגול?

רמז: במעגל יש 360 מעלות (זוכר??) שים לב שבכל תת שגרה שכתבנו עד עכשיו, הצב בעצם עשה סיבוב אחד (360 מעלות) סביב עצמו.

-         במשולש הוא פנה 3 פעמים 120 מעלות ימינה ( 3 X 120 = 360 ).

-         בקופסא הוא פנה 4 פעמים 90 מעלות (  4 X 90 = 360)

-         ואילו במשושה הוא פנה 6 פעמים 60 מעלות ( 6 X 60 = 360 ).

 


שיעור מס' 4: מִשְתָנים

מִשְתָנֵה בלוגו הוא מלה שאתה קובע לה ערך מספרי. למה קוראים לזה מִשְתָנֵה? מפני שאתה יכול בכל רגע להחליט לשנות את הערך המספרי לערך מספרי אחר. נסה להקליד:

קבע אורך 40

 

זה עתה קבעת ערך של 40 למשתנה שנקרא "אורך". כדי לבדוק שהצלחת אתה יכול להשתמש בפקודת 'חשב':

חשב :אורך

 

(שים לב שיש רווח אחרי הפקודה חשב ושהנקודתיים יהיו צמודים למילה אורך.)

 

עכשיו אתה יכול להשתמש במשתנה "אורך" בכל מקום שנדרש פרמטר מספרי בתוך פקודת לוגו. לדוגמא, לכתוב:

 

חזור 4 [קדימה :אורך ימינה 90]

 

זה בדיוק כמו לכתוב:

 

חזור 4 [קדימה 40 ימינה 90]

 

מכיוון שקבענו שהמשתנה ששמו "אורך" ערכו כרגע הוא 40.

 

עכשיו, שנה את הערך של המשתנה "אורך" ונסה שוב:

 

קבע אורך 20

חזור 4 [קדימה :אורך ימינה 90]

 

כמובן, שניתן כעת גם לשנות את תת-השגרה קופסא ל- (כדי קופסא , זוכר??)

חזור 4 [קדימה :אורך ימינה 90]

 

ומעכשיו, גודל הקופסא שהצב יצייר יהיה תלוי במשתנה "אורך". נסה זאת:

 

הביתה

נקהמסך

קבע אורך 5

קופסא

קבע אורך 25

קופסא

קבע אורך 50

קופסא

סיכום השיעור

משתנים נוצרים על ידי שימוש בפקודה קבע, עם שני פרמטרים: שמו של המשתנה וערכו המספרי. אפשר להשתמש במשתנים במקום ערכים מספריים על ידי כתיבת שמם אחרי נקודתיים (קדימה :אורך). אפשר להציג את ערכו של משתנה בשטח הכתיבה על ידי שימוש בפקודה חשב – לדוגמא: חשב :אורך.


שיעור מס' 5: פקודת פרמטרים

למדת קודם כי הרבה פקודות של לוגו דורשות פרמטרים.

בנוסף, עד עכשיו יצרת תת-שגרות מאוד פשוטות אשר בעצם אינן מקבלות פרמטרים.

 

אחר כך שינית את תת-השגרה קופסא כך שתדע להשתמש במשתנה "אורך". זאת אומרת שאם רצים קופסא בגודל 37, הקלדת:

 

קבע אורך 37

קופסא

 

הפקודה קופסא עושה שימוש במשתנה "אורך", אבל הוא לא מגיע כפרמטר כמו לדוגמה בפקודה קדימה, וזה קצת לא נוח.

 

יש לזה פתרון!

ניתן ליצור תת-שגרות אשר עושות שימוש בפרמטרים.

עושים זאת על ידי שימוש בפקודה "פרמטרים" בתוך תת-השגרה עצמה.

בצורה זו תוכל להפעיל תת-שגרה המשתמשת במשתנים גם ללא השימוש בפקודת קבע לפני הפעלת תת-השגרה.

 

נסה את הדוגמא הבאה:

כדי מלבן

--- לוגו עבר לעורך השגרות ----

פרמטרים [ רוחב גובה ]

חזור 2 [ קדימה :רוחב שמאלה 90 קדימה :גובה שמאלה 90]

--- לחיצה על כפתור סיום -- לוגו חוזר לשטח הכתיבה ---

הביתה

נקהמסך

מלבן 20 10

מלבן 10 20

מלבן 15 15

 

על ידי שימוש בפרמטרים, תת-השגרה קופסא יכולה להיות:

כדי קופסא

--- לוגו עבר לעורך השגרות ----

פרמטרים [ אורך ]

חזור 4 [ קדימה :אורך ימינה 90 ]

--- לחיצה על כפתור סיום -- לוגו חוזר לשטח הכתיבה ---

הביתה

נקהמסך

קופסא 5

קופסא 25

קופסא 50

 

שים לב שהפקודה (בשיעור הזה):

קופסא 25

עושה בדיוק אותו דבר כמו:

קבע אורך 25

קופסא

בשיעור הקודם, רק בצורה יותר נוחה.

 

סיכום השיעור

הפקודה פרמטרים דורשת פרמטר בודד: רשימה של שמות משתנים.

תת-שגרה שיש בה את פקודת פרמטרים בשורה הראשונה, תדרוש את כל הפרמטרים האלה כשהיא מופעלת.

ברגע שאתה "קורא" לפקודה עם הפרמטרים הנדרשים, הפרמטרים האלה יושמו אוטומטית בתוך המשתנים הנמצאים ברשימה הזו לפי הסדר.


שיעור מס' 6: משחקים בגיאומטריה

אולי אתה זוכר משיעורי הגיאומטריה (ואם לא למדת גיאומטריה עדין, אז תאמין לי), שסכום הזוויות בצורה סגורה הוא 360 מעלות. אפשר לנצל את העובדה הזו כדי לצייר מצולעים בכל מספר של צדדים.

 

מצולע הוא צורה סגורה בעלת 3 צדדים או יותר. לא יכולה להיות צורה סגורה בעלת 2 צדדים (מדוע?)

 

 נסה זאת:

כדי מצולע

פרמטרים [ צדדים אורך ]

חזור :צדדים [ קדימה :אורך ימינה (360/:צדדים) ]

כעת, הפעל את תת-השגרה באמצעות הפקודות הבאות:

הביתה

נקהמסך

מצולע 3 20

מצולע 5 30

מצולע 8 30

 

שים לב כי בתת-השגרה מצולע  יש את הסימן '/'. זהו הסמל של פעולת חילוק.

לוגו גם מסוגל לבצע פעולות חיבור (סימן +), חיסור (סימן -) וכפל (סימן *).

הנוסחא (360/:צדדים) נקראת ביטוי מתימטי. אתה יכול להתנסות עם עוד ביטויים על ידי שימוש בפקודת חשב. נסה זאת:

חשב (10/2)

חשב (10*2)

חשב (10+2)

חשב (5-2)

קבע א 2

קבע ב 3

חשב (:א+:ב)

חשב ((א:+2)*:ב)

 

הערה חשובה: מכיוון שאנחנו עובדים כרגע בשפה העברית, הביטויים המתימטיים נראים קצת הפוכים.

זאת אומרת שאנחנו נדרשים לכתוב אותם מימין לשמאל ולא משמאל לימין.

בסוף הלימוד הייתי ממליץ לך ללמוד את הפקודות של לוגו באנגלית ולכתוב בשפה זו משמאל לימין...

סיכום השיעור

בפקודות לוגו אשר מקבלות פרמטרים, אתה יכול לשים ביטויים מתימטיים במקום פרמטרים מספריים, פשוט על ידי סגירתם בתוך סוגריים עגולים. לדוגמא קדימה (3+4) תבצע בדיוק אותו הדבר כמו קדימה 7.

 


שיעור מס' 7: איך לכתוב תכנית בצורה שקל יותר לקרוא

התחלנו לכתוב דברים מסובכים, ולפעמים קצת קשה לנו להבין מה קורה בתוכנית.

זה הזמן ללמוד שיטה שעוזרת לנו לכתוב תת-שגרות בצורה שקל יותר לקרוא ולהבין.

 

צורה שקשה לקרוא:

חזור 18 [ חזור 6 [ ימינה 60 קדימה 20 ] קדימה 100 חזור 180 [ ימינה 2 קדימה 1 ] ימינה 20 ]

 

למה קשה להביןאת הדוגמא הזו? מפני שקשה לנו להבין מה מקנןן בתוך מה.

 

בדיוק אותו הדבר בצורה שהרבה יותר קל לקרוא:

 

חזור 18 [

      חזור 6 [

            ימינה 60

            קדימה 20

      ]

      קדימה 100

      חזור 180 [

            ימינה 2

            קדימה 1

      ]

      ימינה 20

]

 

אנחנו רואים שבכל פעם שאנחנו פותחים רשימה אנחנו יורדים שורה ודוחפים את הפקודות של הרשימה הזו מעט ימינה (כל פקודה בשורה חדשה). כשסוגרים את הרשימה, יורדים שורה חוזרים שמאלה וסוגרים בסוגר מרובע. זה מדגיש יותר טוב את הקינון שלמדנו עליו בשיעור 2. בדוגמא למעלה צבעתי כל רשימה בצבע אחר לפי רמת הקינון שלה:

-         רמה 1 – בכחול

-         רמה 2 – באדום

-         רמה 3 – בירוק

 

מה שחשוב כאן הוא לא הצבע, אלא כמה דחפנו את השורה.

 


שיעור מס' 8: ביטויים לוגיים

בשיעור 6 למדנו על ביטויים מתימטיים, וראינו שלביטוי מתימטי יש ערך שהוא מספר. לדוגמא: (1+2) הוא ביטוי מתימטי, והערך שלו הוא (3).

למדנו עוד, שכדי להציג את הערך של ביטוי מתימטי, משתמשים בפקודה חשב.

 

ישנו עוד סוג של ביטויים הידועים בשם ביטויים לוגיים.

לביטוי לוגי  יכול להיות רק אחד משני הערכים: "אמת" או "שקר".

בשפת לוגו, "שקר" מיוצג על ידי המספר 0, ואילו "אמת" מיוצג על ידי כל מספר שאינו 0.

בואו נראה דוגמאות לביטויים לוגיים (ענה על השאלות הבאות "אמת" או "שקר"):

(13 גדול מ- 6)

(2 גדול מ- 0)

(4 גדול מ- 4)

(4 גדול או שווה ל- 4)

(1>2)

(2>1)

(2=2)

(4>(2+2))

 

בוא וננסה זאת בלוגו:

חשב 5>2

חשב 2>5

חשב 0=3

חשב 5+5=10

 

 

הפקודה הבאה שנלמד היא מעניינת מאוד. היא מאפשרת לצב שלנו להחליט מה לעשות.

כדי להחליט מה לעשות, הצב משתמש בפקודת החלטה ששמה אםאחרת.

 

לדוגמא, אנחנו רוצים שהצב יפנה ימינה 45 מעלות וילך קדימה 30 צעדים אם (4=3). אחרת, הצב צריך לפנות שמאלה 68 מעלות, ללכת אחורה 100 צעדים ואז לפנות 100 מעלות ימינה. איך כותבים את זה בלוגו? מאוד פשוט:

 

אםאחרת (4=3) [ ימינה 45 קדימה 30 ] [ שמאלה 68 אחורה 100 ימינה 100 ]

 

כמו שראינו, הפקודה אםאחרת מקבלת שלושה פרמטרים:

-         הראשון "(4=3)" הוא ביטוי לוגי

-         השני "[ ימינה 45 קדימה 30 ]" הוא רשימת פקודות לבצוע אם הביטוי הלוגי הוא "אמת"

-          והשלישי "[ שמאלה 68 אחורה 100 ימינה 100 ]" הוא רשימת פקודות לבצוע במקרה שהביטוי הלוגי הוא "שקר".

 

בואו נסבך זאת קצת, אבל נכתוב בצורה נוחה לקריאה תת-שגרה שמציירת קו זיגזג:

 

כדי זיגזג

פרמטרים [ מרחק ]

קבע א 0

חזור :מרחק [

      קדימה 20

      אםאחרת (:א=0) [

            קבע א 1

            שמאלה 20

      ]

      [

            קבע א 0

            ימינה 20

      ]

]

 

ננסה זאת:

 

הביתה

נקהמסך

זיגזג 10

 

הפקודה כלעוד היא פקוד מסוג "לולאה מותנית".

 

על לולאה למדנו, אבל מה זה מותנית?

מותנית מלשון תנאי. הרשימה תבוצע פעם אחרי פעם בתנאי שהביטוי הלוגי הוא "אמת". ברגע שהביטוי הלוגי יהיה "שקר" – הלולאה "תיקרע" או "תישבר".

 

בניגוד לפקודת חזור אשר מבצעת רשימה מספר קבוע של פעמים, הפקודה כלעוד מבצעת את הרשימה כל עוד הביטוי הלוגי שלה הוא "אמת".

 

לכן פקודת כלעוד מקבלת שני פרמטרים, הראשון הוא ביטוי לוגי (כמו ב- אםאחרת), והשני הוא רשימת פקודות לבצוע כל-עוד הביטוי הלוגי הוא "אמת". לדוגמא:

כדי שבלול

פרמטרים [ אורך ]

כלעוד (:אורך>0) [

      קדימה :אורך

      ימינה 90

      קבע אורך :אורך-2

]

 

ננסה זאת:

 

הביתה

נקהמסך

שבלול 50

 

אזהרה: הפקודה כלעוד יכולה לגרום למצב שאנשי מחשבים קוראים לו "לולאה אינסופית".

במצב כזה המחשב "תקוע" בתוך הלולאה וממשיך לבצע אותה פעם אחרי פעם ללא הפסקה.

הרבה פעמים כשמחשב "נתקע" לך זה בגלל שהתוכנה שלו מבצעת איזו לולאה מותנית, אבל בגלל תקלה, או טעות בתוכנה – הביטוי הלוגי אף פעם לא מגיע למצב של "שקר" ולכן הלולאה לא מפסיקה.

 

חשוב כשמשתמשים בפקודת כלעוד לתכנן היטב את הביטוי הלוגי כך שתמיד יגיע בסופו של דבר למצב "שקר" – והלולאה תיעצר.

סיכום השיעור

לביטויים לוגיים יש אחד משני הערכים "אמת", או "שקר".

 

בלוגו, "שקר" שווה ל- 0, ואילו "אמת" שווה לכל מספר השונה מ- 0.

 

פקודת אםאחרת מקבלת שלושה פרמטרים:

-         ביטוי לוגי

-         רשימת פקודות למקרה שהביטוי הוא "אמת"

-         רשימת פקודות למקרה שהביטוי הוא "שקר".

 

פקודת כלעוד היא לולאה מותנית אשר מקבלת שני פרמטרים:

-         ביטוי לוגי

-         רשימת פקודות לבצוע כל עוד הביטוי הוא "אמת".

חשוב מאוד לוודא שהביטוי הלוגי יגיע בסופו של דבר לערך "שקר", אחרת תיווצר לולאה אינסופית שאף פעם לא תעצור.


שיעור מס' 9: רקורסיה

הגעת רחוק ואתה בדרך הנכונה להבין את שפת לוגו. עליך לתרגל זאת הרבה ולזכור שהדברים שלמדת הם הבסיס של כמעט כל שפת תכנות שקיימת ! לסיום נלמד נושא קשה מאוד שאפילו אנשים מבוגרים מתקשים להבינו. הנושא הוא רקורסיה.

רקורסיה הוא מה שקורה כאשר תת-שגרה קוראת לעצמה.

 

בוא נראה דרך אחרת לכתוב את תת-השגרה שבלול:

כדי שבלול

פרמטרים [ אורך ]

קדימה :אורך

ימינה 90

אםאחרת (:אורך>1) [

     שבלול (:אורך-2)

] []

 

ננסה זאת

 

הביתה

נקהמסך

שבלול 50

 

בוא ונצייר טבלה של שבלול 6 שבה ננתח מה קורה כאן:

 

הערך של אורך

מה בוצע לפני ה- אםאחרת

הערך של (:אורך>1)

הקריאה ל-שבלול בתוך ה-אםאחרת

הערות

6

קדימה 6

ימינה 90

"אמת"

שבלול 4

אורך = 6, לכן הקריאה ל-שבלול היא עם 4

4

קדימה 4

ימינה 90

"אמת"

שבלול 2

 

אורך = 4, לכן הקריאה ל-שבלול היא עם 2

2

קדימה 2

ימינה 90

"אמת"

שבלול 0

אורך = 2, לכן הקריאה ל-שבלול היא עם 0

0

קדימה 0

ימינה 90

"שקר"

 

אין קריאה ל-שבלול בגלל ש-אורך לא גדול מ- 1

 

נסה לצייר טבלה כזאת שמתחילה כאשר קוראים ל-שבלול עם פרמטר 10.

 

סיכום השיעור

תת-שגרה רקורסיבית היא תת-שגרה אשר בין הפקודות שהיא מבצעת קיימת קריאה אליה עצמה.

מה שחשוב לזכור ברקורסיה, בדומה ללולאת כלעוד, הוא "תנאי העצירה" שלה. תנאי העצירה אומר שבמצב מסויים, תת-השגרה לא תקרא לעצמה, אלא תמשיך בבצוע הפעולות שרשומות אחרי הקריאה (אם יש כאלה. בדוגמא למעלה תנאי העצירה הוא כאשר הביטוי (:אורך>1) מגיע לערך "שקר".

 


שיעור מס' 10: נושאים מתקדמים

האם חשבת פעם למה מסודרים זרעי החמניה על הפרח כפי שהם מסודרים? מסתבר שלמקצוע המתימטיקה יש מה להגיד בענין. ישנו הסבר לצורת סידור הזרעונים, והסבר זה הוא כל כך פשוט שניתן אפילו ללמד את הצב של לוגו לצייר אותו ללא כל בעיה.

את המידע לצורך כתיבת התוכנה לקחתי מהמאמר היפה הזה: (יש להקיש על החיבור על מנת לקרוא את המאמר): http://archive.concord.org/publications/pdf/mathdes.pdf

יש לבקש מאדם השולט בשפה האנגלית לתרגם מאמר זה.

 

התוכנה לציור סידור הזרעים על החמניה מופיעה בשורות הבאות. ניתן להתרשם כי בשורות כל כך מועטות של תוכנה ניתן לצייר ציור כל כך מורכב !!

 

כדי גרעין

פרמטרים [גודל]

שמאלה 70

קדימה :גודל

ימינה 140

קדימה :גודל

ימינה 40

קדימה :גודל

ימינה 140

קדימה :גודל

ימינה 110

סוף

 

כדי חמניה

פרמטרים [גרעינים גודלגרעין ]

קבע מסגרעין 1

כלעוד (:מסגרעין<:גרעינים) [

     עטלמעלה

     קדימה :מסגרעין

     עטלמטה

     אםאחרת :גודלגרעין [ גרעין :גודלגרעין ] [ גרעין (:מסגרעין/4) ]

     עטלמעלה

     אחורה :מסגרעין

     ימינה 137.5

     קבע מסגרעין (:מסגרעין+1)

]

סוף

 

בכדי לקבל את התוכנה יש להקיש  קבלעבודה ו"להדביק" את שתי תת-השגרות לחלון הטקסט. אחר כך יש להקיש על כפתור סיום. כדי להפעילה, יש להקיש: חמניה 100 0 ומיד הצב יצייר 100 זרעים של חמניה.