לוגו/קלט ופלט
הדפסה למסך
עריכההדרך העיקרית שבה לוגו יכולה להציג בפנינו את ה"פלט" (התוצאות) של התוכניות שכתבנו, היא באמצעות הדפסה למסך הפקודות או ציור על המסך הגראפי. בפיסקה זו נעסוק בשלוש פקודות לוגו המדפיסות פלט טקסטואלי אל המסך.
הפקודה print
עריכהprint היא פקודת הפלט המרכזית ברוב שפות התיכנות, וגם אנחנו השתמשנו בה כבר, לא פעם. print מקבלת כקלט משתנים, מילים, ביטויים חשבוניים, הליכים שהגדרנו, ועוד, ומציגה אותם, לאחר עיבוד, על המסך. ההדפסה נעשית בשורה אחת, כאשר פריטים שונים מופרדים ביניהם באמצעות תו הרווח. בסוף ההדפסה מתבצעת "ירידת שורה" אוטומטית. כזכור, print מכונה בקיצור גם pr, וכדאי לציין גם, שהדפסה של מספר פריטים תיעשה בעזרת הכללת פקודת ההדפסה ורשימת הפריטים בתוך סוגריים רגילים, כך:
- ([?print "Hi! [How are you)
- שימו לב לכך שפקודת ההדפסה טיפלה ב"מילה" וב"משפט" לוגו, יחדיו. מה יקרה אם נשכח את הסוגריים העגולים?
- ([?print "Hi! [How are you)
הפקודה type
עריכהtype היא פקודה דומה מאד ל-print, אך ההדפסה נעשית ללא הפרדות אוטומטיות: בין פריטים שונים אין תו רווח וגם בסוף ההדפסה אין ירידת שורה. בעניין זה יש לשים לב לכך שההדפסה למסך בלוגו מתבצעת רק לאחר שהמחשב קיבל הוראה לרדת שורה. מסיבה זו, הפקודה type נראית כאילו היא אינה מדפיסה דבר. נסו:
- ([?type "Hi! [How are you)
ועכשיו הוסיפו את הפקודה הבאה, שתיתן למחשב הוראה (אוטומטית) לרדת שורה ו"תשחרר" את הפלט שיצרה הפקודה type אל המסך:
- ?...print "Well
שימו לב כיצד הודפסו הנתונים שהעברנו לפקודה type. השוו זאת לדרך שבה טיפלה print באותם נתונים בדיוק.
הפקודה show
עריכהגם show היא פקודה דומה מאד ל-print. ההבדל היחיד בין הפקודות הוא ש-show מדפיסה רשימות בין סוגריים מרובעים. נסו גם כאן את הדוגמה הקודמת:
- ([?show "Hi! [How are you)
קלט מהמקלדת
עריכההמקלדת היא האמצעי העיקרי שבעזרתו מקבלת לוגו קלט מהמשתמש. הפקודות הבאות מאפשרות לנו לקבל מידע באמצעות המקלדת:
חלון הקלט
עריכההפקודה readchar ויתר הפקודות שנדון בהן בשורות הבאות, פותחת חלון קלט מיוחד שבו המשתמש יכול להקליד קלט כלשהו. חלון זה ניתן לסגור בעזרת הכפתורים OK או Cancel, או בהקשה על מקש Enter. סגירת החלון בעזרת הכפתור OK או בעזרת מקש Enter, תעביר ללוגו את התוים שהוקלדו בחלון הקלט. רצף תוים זה נשמר כולו בזיכרון, עד שייעשה בו שימוש או עד שלוגו תקבל פקודה למחוק אותו. רצף תוים זה יכונה "המחסנית". (כדאי לציין כבר כאן, שסגירת החלון בעזרת הכפתור Cancel יוצרת בעיה, ולוגו תדפיס את ההודעה ...Stopping ולא תוכל להמשיך את ביצוע הפקודות שקיבלה.)
הפקודה readchar
עריכההפקודה readchar מחזירה, כפלט, את התו הראשון ב"מחסנית" ואז מוחקת תו זה מהמחסנית. בפעם הבאה שבה נפעיל את הפקודה readchar הפלט שלה יהיה התו הראשון במחסנית - כלומר התו השני שהקלדנו בחלון הקלט. בפעמים הבאות שבהן נפעיל את הפקודה readchar היא תחזיר תו אחרי תו את כל מה שהקלדנו בחלון הקלט.
בסוף המחסנית שומר המחשב באופן אוטומטי תו המציין את סוף ההקלדה ("\"). כאשר readchar תגיע לתו זה היא תחזיר גם אותו כפלט. בפעם הבאה שבה נקרא לה, readchar "תיתקע" ללא תוים להחזיר, ואז ייפתח מחדש החלון המיוחד, בציפיה לקלט נוסף מהמשתמש.
- נסו את הפקודה הבאה:
- [repeat 10 [print readchar
- הלולאה שיצרנו אמורה להדפיס 10 פעמים את הפלט של הפקודה readchar. משום שמדובר בפקודה print, אנו יודעים שבכל פעם תסתיים ההדפסה בירידת שורה. כאשר לוגו מבצעת את הלולאה בפעם הראשונה, היא פותחת את חלון הקלט. בחלון הקלט אנו יכולים להקליד רצפי תוים ארוכים או קצרים. נסו להפעיל את הפקודה כמה פעמים, כאשר בכל פעם אתם כותבים רצפי אותיות באורכים אחרים. תוכלו לראות כיצד לוגו מרוקנת את "מחסנית" הקלט, תו אחר תו, ופותחת מחדש את חלון הקלט בכל פעם שה"מחסנית" מתרוקנת. שימו לב להדפסה של תו סיום הקלט. תו זה אינו נראה על המסך, וכל מה שאנחנו יכולים לראות הוא ירידת השורה שמוסיפה הפקודה print באופן אוטומטי.
הפקודה readchars
עריכה- הפקודה readchars מקבלת כקלט מספר ומחזירה, מתוך מחסנית הקלט, תוים במספר המתאים. פקודה זו אינה פועלת בלוגו בקריאה של קלט מהמקלדת, אבל היא יעילה מאד בקריאה של קלט מקבצים. עוד על כך - בהמשך.
הפקודה readword
עריכה- readword מחזירה גם היא תוים ממחסנית הקלט. למעשה, היא מחזירה את כל התוים שהוקלדו, כשהם מחוברים לכדי "מילה" אחת. הפקודה מרוקנת את מחסנית הקלט, ולכן בכל פעם שאנו נותנים ללוגו את הפקודה readword חלון הקלט ייפתח מחדש. נסו:
- [repeat 10 [print readword
הפקודה readlist
עריכה- readlist פועלת כמו readword - גם היא מרוקנת את כל מחסנית הקלט בכל פעם - אך מחזירה את הפלט שלה בצורת רשימה. הרשימה מכילה את הקלט שהקלדנו, מחולק למילים (החלוקה נעשית לפי תוי הרווח ולפי הסוגריים המרובעים).
הפרק הקודם: משפטים ורשימות |
קלט ופלט | הפרק הבא: טיפול בקבצים |