תרגול 6.4 Karel the Robot - לולאות מקוננות


תרגול בלולאות

התרגולים המקוריים של Stanford Karel the Robot נמצאים בקישור זה השיעור האחרון שניתן לפתור שם שיעור מספר 8. לאחר מכן יש באגים בתחביר שאינם מאפשרים להתקדם. הלולאות הנתמכות אצלם הן repeat(n) כאשר n הוא מספר החזרות, ובנוסף while בתבנית המוכרת לנו.


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


אני ממליץ לאחר למי שרוצה להכיר תרגילים נוספים לתרגל מ-reborg שכאן. קיימים הבדלים בשמות הפעולות הזמינות לכם ועליכם לגלות את הפעולות הרלוונטיות. לאחר תרגול קודם בגרסת Stanford Karel הרעיון של קריאה לפעולות אמור להיות ברור. התחביר הוא תחביר JavaScript - כלומר מעט שונה מהתחביר שנלמד עבור יצירת פעולת.


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

שימושים נפוצים הסבר הפעולה שם הפעולה
תנועה במסלול, מעבר בין משבצות קארל מתקדם משבצת אחת קדימה בכיוון שאליו הוא מסתכל ()move
שינוי כיוון, פנייה קארל מסתובב 90° שמאלה ()turnLeft
פנייה ימינה בשלב בו הפעולה לא זמינה - נאלצים לבצע שלוש קריאות ל־()turnLeft ()turnRight
סימון מיקום, השארת עקבות קארל מניח ביפר במשבצת עליה הוא נמצא ()putBeeper
איסוף ביפרים למשימות שונות קארל מרים ביפר מהמשבצת בה הוא עומד ()pickBeeper
בדיקה לפני איסוף/הנחה בודק אם יש ביפרים במשבצת ()beepersPresent
המשך רק אם אין ביפר בודק שאין ביפרים במשבצת הנוכחית ()noBeepersPresent
הימנעות ממכשולים לפני ()move בודק אם הדרך קדימה פנויה ()frontIsClear
בדיקה לצורך תנאי עצירה בודק אם הדרך קדימה חסומה ()frontIsBlocked
בדיקה לפני מעבר שמאלה, אם אפשרי בודק אם השמאל פנוי ()leftIsClear
שימושי בלולאות ניווט או בפניות בודק אם הימין פנוי ()rightIsClear
התאמת המהלכים הבאים לפי כיוון בודק אם קארל פונה צפונה ()facingNorth
בקרת כיוון בתנועה למטה בודק אם קארל פונה דרומה ()facingSouth
תנועה צפוייה ימינה בודק אם קארל פונה מזרחה ()facingEast
שינוי כיוון במסלולים שמאליים בודק אם קארל פונה מערבה ()facingWest
הסתובבות עד כיוון מסוים בודק אם קארל לא פונה צפונה ()notFacingNorth