2.1.23 יום ב', (חוף, אשכול ב' שעות 1-2) - היכרות עם הלולאה While

בכיתה 
1. לולאת While
    לולאות כללי:
    כפי שראינו, לולאה היא טכניקת תכנות המשמשת לבקרת זרימת התוכנית.
    היא מבצעת סדר פעולות מספר פעמים.
    לולאת while כללי:
    מדובר בסוג נוסף של לולאה. 
    משתמשים בה בעיקר כשלא ידוע למתכנת מספר הפעמים אשר על קטע הקוד להתבצע.    
            
    לפני הכניסה ללולאה:
    נצהיר על אינדקס עבור הלולאה ונאתחל אותו בערך (בדרך-כלל בערך 0 או 1).
    בכותרת הלולאה:
    נכתוב את תנאי הכניסה ללולאה.
    בבלוק הלולאה:
    נכתוב את סדר הפעולות הרצוי.
    שורה אחת לפני סיום בלוק הלולאה:
    נקדם את אינדקס הלולאה.     
2. שלוש דוגמאות פתורות לשימוש בלולאת while כאן.
3. תרגילי בית ראשונים בנושא לולאת while (להכנה ליום ב' הבא):
    (עבור פתרון לשני התרגילים שלהלן, חובה להשתמש בלולאת while בלבד, ולא בלולאת for).
    א. כתבו תכנית הקולטת משכורות המשולמות למורים בביה"ס עד לקליטת הערך 0.
        התכנית תדפיס את הדברים הבאים:
        1) מהו סכום הכסף אותו בית הספר משלם עבור משכורות.
        2) מהו סכום כל המשכורות של המורים המרוויחים בין 50,000-100,000 ש"ח.
        3) כמה משכורות שולמו, שהן בנות 4 ספרות.
        4) כמה משכורות שולמו, שהן בנות 5 ספרות ומעלה.
    ב. כתבו תכנית המדפיסה את כל המספרים השלמים בטווח שבין 0 ל- 1,000 המתחלקים
        ב- 2, 3 ו- 5 גם יחד. דוגמה למספר שיודפס: 30.           
4. דוגמת מבדקים / בחנים ממוחשבים כאן.

לבית 
*** ליום ב' הבא, ה- 9.1.2023, בו יהיה גם מבדק ש.ב ***
שיעורי הבית יועלו כאן עד יום ד' הקרוב.
קריאה
1. 
תרגול
2. 
צפייה 
3. 

בשיעורים הבאים
לולאת while
1.  מושגים:
    'זקיף' - בטיפול בלולאות בהן לא ידוע למתכנת מהו אורך הקלט, נשאלת השאלה: "איך יודעים
    מתי מגיעה האיטרציה (סיבוב / מחזור / ביצוע חוזר) האחרונה של הלולאה או קליטת הנתון האחרון"?
    לכן נשתמש בנתון חריג שקליטתו מסמנת את סוף רשימת הנתונים שנקלטו או במלים אחרות:
    תנאי הכניסה ללולאה יתקיים כל עוד לא התקבל הזקיף כקלט.
    הזקיף איננו חלק מסדרת הנתונים הנקלטים ויש להימנע מלהתייחס אליו במקרה של חישובים בלולאה.    
    דוגמות לזקיף: הערך 1-, הערך 999-, הערך 999, הערך 0, הביטוי 0=>i.
    סרטון בנושא כאן.
    'מעבר חוסם' - משהו שקרה באחת הכניסות ללולאה, וכאשר דבר כזה קורה, אנו רוצים להפסיק
    את הלולאה. למשל: קלוט מספרים שלמים עד שהסך הכל שלהם מגיע או עובר את הערך 100.
    סרטון בנושא כאן.
    'דגל' - משתנה המשמש לאחסון ערך בוליאני true/false (או קוד בעל משמעות מוגדרת מראש).
    השימוש בדגל נועד כדי לזהות ולאותת על מצב כלשהו בעל חשיבות לגבי המשך הרצת התכנית.
    לדוגמה: קלטו שלמים עד לקליטת שלם המתחלק ב- 5. איך יודעים מתי לסיים את הלולאה?
    כאשר ערכו של הדגל הופך מ- false ל- true. כלומר, עד שלא נקלט מספר מתאים, ערך התכונה
    של הדגל אותחל ל- false. כאשר נקלט מספר אשר בבדיקה בתוך הלולאה הסתבר שהוא מתחלק
    ב- 5, משנים את ערך הדגל ל- true. בתנאי הלולאה כותבים שיש להיכנס אליה כל עוד ערך הדגל
    הוא false, מה שאומר שכאשר נקלט מספר המתחלק ב- 5, ברור שלא תהיה עוד כניסה ללולאה.
    סרטון בנושא כאן.
    'מסננת-קלט' -  כאשר בודקים את תקינות הקלט. לדוגמה: האם המספר הנקלט חיובי,
    האם המספר הנקלט נמצא בטווח המספרים 1-7 (למשל כאשר רוצים קלט המייצג יום בשבוע).
    כיצד הנושא בא לידי ביטוי בלולאה? כאן 'מכריחים' את המשתמש להקליד קלט בטווח הערכים הרצוי, 
    וכל עוד לא הוקלד קלט כזה אין התקדמות לביצוע ההוראות הבאות בתוכנית. 
    לולאה מסוג זה שמטרתה לוודא תקינות קלט, נקראת "מסננת קלט".
    סרטון בנושא כאן.
    'לולאה-אינסופית' - לולאה ללא תנאי עצירה או לולאה שתנאי העצירה בה לא מתקיים לעולם.
    דוגמאות לתנאי בשורת ה- while המאפשר כניסה אינסופית ללולאה: 1==1, true, i>0.
    במקרה של התנאי (0<i)while הלולאה תהיה אינסופית אם לפני הלולאה הוגדר ש 1= i ובבלוק
    הלולאה לא משנים את ערכו של i.
    סרטון בנושא כאן.

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