27.12.22 יום ג', (חוף, אשכול ב' שעות 5-6) - לולאת for: בעיות מינימום מקסימום

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

                
    שיטה2: ***** קליטת כל הערכים בתוך הלולאה - אתחול max לערך "מינוס אינסוף" *****
                דוגמת קוד כאן.
                לפני הכניסה ללולאה:
                הצהרה על המשתנה השלם max, ואתחולו כך: ;max=int.MinValue.
                בתוך הלולאה:
                קליטת המספרים מהמשתמש.
                לאחר הלולאה:
                הדפסת ערכו של max.
                דיון:
                שיטה זו מראה 
כיצד מתגברים על הבעיה במקרה שכל המס' הנקלטים הם שליליים.

                אמנם, לא ניתן לאתחל את max לערך מינוס אינסוף, כיוון שטווח המספרים
            
    של int נע בין 2,147,483,648 לבין 2,147,483,647-
                ולכן, נאתחל את max כך: ;max=int.MinValue כלומר ל- 2,147,483,647-    

שיטה3: ***** קליטת ערך ראשון מחוץ ללולאה *****
               
דוגמת קוד כאן.
                לפני הכניסה ללולאה:
                הצהרה על המשתנה num.
                קליטת המספר הראשון ל- num.
                הצהרה על המשתנה max.
                השמת ערכו של num ל- max.
                בתוך הלולאה:
                קליטת יתר המספרים (n-1 מספרים) והשוואתם לערך הנמצא ב- max, 
                אם ערכו של המספר הנוכחי גדול מ- max, תבוצע השמה שלו ל- max.
                לאחר הלולאה:
                הדפסת ערכו של max. (תמיד תתקבל תשובה נכונה, כיוון שמדד ההשוואה
                ההתחלתי היה אחד מאיברי הסדרה, במקרה זה המספר הראשון בסדרה).
 
2. לולאה לקליטת כמות מספרים שלא ידועה מראש
   
 א. כתבו תוכנית הקולטת שלמים עד שייקלט הערך 1-.
        התוכנית תדפיס את הערך המקסימלי שנקלט.
3. דוגמת מבדקים / בחנים ממוחשבים כאן.

לבית 
*** ליום ב' הבא, ה- 2.1.2023, בו יהיה גם מבדק ש.ב ***
קריאה
1. הערות ודגשים לסיכום הפרק של לולאת for (עמ' 139).
תרגול
2. יינתן כאן עד מחר, יום ד'. מדובר בתרגילי סיכום נוספים בנושא לולאת for.
צפייה (רשות, העשרה)
3. טים קורי - 'איך ללמוד #C בשנת 2023' כאן.
    * מהם נושאי התכנות שניתן ללמוד ב- #C לטווח הארוך (של שנים רבות קדימה, כי זה לוקח זמן!).
    * מהו הסדר הנכון בו כדאי ללמוד את נושאי התכנות.
    * מהם נושאי הבסיס אותם יש ללמוד לפי הסדר.
    * אלו נושאים אפשר ללמוד שלא לפי סדר מסוים. 
    * טיפים, טריקים ועוד.

בשיעורים הבאים
 פרק 9 לולאת for (תת-נושאים אחרונים וסיכום)
1.  מושגים:
    'זקיף', 'מעבר חוסם', 'דגל', 'מסננת-קלט' (החל מעמ' 140).
2.  ויתור על חלקים בכותרת הלולאה
     ויתור על חלקים בכותרת הלולאה (עמ' 111).
     ללא החלק הראשון (אתחול האינדקס): אין אתחול ל- i.
     * כאשר אין צורך באינדקס.
     * כאשר i כבר הוצהר ואותחל לפני הלולאה, נשאיר החלק הראשון ריק.
     * כאשר לאחר סיום ריצת הלולאה, נרצה לגשת לערכו של i כפי שהיה בסיום הלולאה.
     ללא החלק האמצעי (תנאי הלולאה): במקרה שאין תנאי, הלולאה תהיה אינסופית.
     ללא החלק הסופי (קידום האינדקס): המשמעות שאין שימוש בערכו של האינדקס,
     הכניסה ללולאה תהיה תלויה בתנאי שכתוב בחלקה האמצעי.
3.  לולאה אינסופית
     אפשרות נוספת ליצירת לולאה אינסופית: ללא אתחול, ללא תנאי, ללא קידום - (;;)for.
אלגוריתמיקה - 'השלבים בפתרון בעיה'
4. מדוע כדאי ליישמם כבר בשלב הזה
    השלבים:
     א. הבנת הבעיה.
     ב. הצבת ערכים לווידוא הבנת הבעיה.
     ג. זיהוי ואפיון הנתונים: קלט / חישוב / פלט.
     ד. ציור תרשים זרימה.
     ה. פירוט אסטרטגיית הפתרון בעברית, אותה מתרגמים לקוד התכנותי.
פרק 10 לולאת while
5.  לולאת התנאי while (עמ' 140-159).