סיכום זה מרכז את הידע שנרכש בחלקים א’ וב’ של הקורס ומהווה הכנה לקראת חלק ג’.
בחלקים אלו למדנו את אבני הבניין של מדעי המחשב: החל מקבלת החלטות לוגיות, דרך אוטומציה של פעולות באמצעות לולאות, ועד לארגון קוד מתקדם בפונקציות ושימוש במבני נתונים.
מה צפוי בחלק ג’:
- מערכים דו-ממדיים: עבודה עם מטריצות וטבלאות נתונים.
- עצמים ומחלקות (OOP): תכנות מונחה עצמים, הגדרת מחלקות, תכונות ופעולות.
- פתרון בגרויות: הכנה ממוקדת לשאלונים 381 ו-371.
קישורים לסרטוני ההדרכה:
פרק 3 - תנאים, ביטויים לוגיים ושארית חלוקה
בפרק זה נלמד כיצד לקבל החלטות בתוכנית שלנו באמצעות תנאים, ביטויים לוגיים ושימוש בשארית החלוקה .
3.1 משפטי תנאי (if, else, else if)
משפט תנאי מאפשר לבצע פקודות רק אם ביטוי לוגי מסוים מחזיר true .
- if פשוט: בדיקת תנאי יחיד.
- if-else: ביצוע פעולה חלופית אם התנאי לא התקיים .
- else if: בדיקת מספר אפשרויות בשרשרת, כאשר לכל היותר אחת תתבצע .
אזהרה: יש להשתמש ב-== להשוואה. שגיאה נפוצה היא הוספת ; בסוף שורת ה-if, מה שיגרום לגוף התנאי להתבצע תמיד .
3.2 אופרטורים לוגיים ושארית חלוקה (%)
האופרטורים מאפשרים השוואה ושילוב תנאים :
&&(AND): שני התנאים חייבים להתקיים.||(OR): לפחות אחד התנאים חייב להתקיים.!(NOT): שלילת הערך הלוגי.%(מודולו): מחזיר את שארית החלוקה. שימושי לזיהוי זוגיות (num % 2 == 0) או בידוד ספרות .
3.3 משתני דגל וטבלאות מעקב
משתנה דגל (Flag): משתנה בוליאני השומר מצב (למשל, האם נמצא מספר מסוים) . טבלת מעקב: כלי לרישום שינויי משתנים על נייר כדי להבין את זרימת הקוד .
דוגמה למעקב פלינדרום (עבור הקלט 363): | שורה | num | units | hundreds | units == hundreds | פלט | | :— | :— | :— | :— | :— | :— | | 3 | 363 | 3 | - | - | - | | 4 | 363 | 3 | 3 | - | - | | 5 | 363 | 3 | 3 | true | 363 is a palindrome |
פרק 4 - לולאות for
לולאת for משמשת לביצוע פעולה מספר מוגדר של פעמים .
4.1 מבנה הלולאה ושימושים
המבנה כולל: איתחול מונה, תנאי עצירה וקידום המונה . שימושים נפוצים:
- צובר (Sum): חישוב סכום מספרים בתוך הלולאה .
- מציאת מקסימום/מינימום: השוואת כל קלט למשתנה השומר את הערך הגבוה ביותר שנמצא עד כה .
int max = -1;
for (int i = 0; i < 10; i++) {
int num = int.Parse(Console.ReadLine());
if (num > max) max = num;
}4.2 טכניקת הגילגול (Sliding Window)
שימוש במשתנה עזר (לרוב prev) כדי לשמור את הערך מהאיטרציה הקודמת. טכניקה זו חיונית לספירת שינויים ברצף או השוואת איברים סמוכים .
פרק 5 - לולאות while
לולאת while מתבצעת כל עוד תנאי מסוים מתקיים, ומתאימה למצבים בהם מספר החזרות אינו ידוע מראש .
5.1 עבודה עם זקיפים וקלט
- זקיף (Sentinel): ערך מוסכם (כמו 0) המורה על הפסקת קליטת הנתונים .
- קלט כפול: קליטה ראשונה לפני הלולאה וקליטה נוספת בסוף גוף הלולאה כדי לעדכן את התנאי .
- שימוש ב-break: מאפשר יציאה מיידית. מומלץ כשהוא משפר את הקריאות, אך יש להימנע ממנו בתוך מבנים מסובכים מדי .
5.2 אלגוריתמים עם ספרות (פירוק ובנייה)
- פירוק מספר: שימוש ב-
% 10לקבלת ספרה ימנית ו-/ 10להסרתה . - הפיכת מספר: בניית מספר חדש ע”י הכפלה ב-10 והוספת הספרה שחולצה .
פרק 6 - לולאות מקוננות
קינון (Nesting) הוא מצב בו לולאה אחת נמצאת בתוך גוף לולאה אחרת .
6.1 יתרונות וחסרונות
- יתרונות: מאפשר טיפול במבנים היררכיים, מטריצות ודגמים .
- חסרונות: פגיעה בביצועים (זמן ריצה גדל משמעותית) וסיבוך הקריאות .
- כלל אצבע: מומלץ לא לחרוג מ-2 עד 3 רמות קינון .
6.2 תבניות גרפיות (Patterns)
לולאות מקוננות הן הכלי המרכזי להדפסת דגמים (כוכביות, מספרים) .
- חיצונית: אחראית על השורות.
- פנימית: אחראית על התוכן בכל שורה (עמודות) .
פרק 7 - פונקציות (פעולות)
פונקציות מחלקות את התוכנית לתתי-משימות, משפרות קריאות ומאפשרות שימוש חוזר בקוד (DRY) .
7.1 הגדרת פונקציה וחתימה
הגדרת פונקציה כוללת :
- מודיפייר:
static(בשלב זה). - סוג החזרה:
void(ללא החזרה) או סוג נתונים (כמוint,bool). - שם: בשיטת
PascalCase. - פרמטרים: משתני הקלט שהפונקציה מצפה לקבל .
7.2 העברת פרמטרים וערכי החזרה
- ארגומנט: הערך המועבר בפועל בזמן הקריאה .
- העברה לפי ערך: הפונקציה מקבלת עותק של הנתון, ולכן שינוי שלו בתוך הפונקציה לא ישפיע מחוצה לה .
- מילת המפתח ref: מאפשרת לשנות את המשתנה המקורי (לא בתוכנית הלימוד הבסיסית אך חשוב להבנה) .
- החזרת ערך (return): מאפשרת “לשלוח” תוצאה חזרה למקום שקרא לפונקציה .
פרק 8 - מחרוזות (Strings)
מחרוזת היא אוסף תווים המתנהגת לצרכי קריאה כמו מערך, אך היא Immutable .
8.1 תכונות ופעולות בסיסיות
- Immutable: לא ניתן לשנות תו בודד בתוך מחרוזת קיימת; כל שינוי יוצר מחרוזת חדשה .
- פעולות נדרשות: גישה לפי אינדקס
[i], אורך.Length, בדיקת הכלה.Containsומציאת מיקום.IndexOf. - השוואה לקסיקוגרפית: השוואת מחרוזות לפי סדר ה-ABC .
פרק 9 - מערכים חד-ממדיים
מערך הוא אוסף משתנים מאותו סוג השמורים תחת שם אחד .
9.1 יסודות המערך וסריקה
- גישה: באמצעות אינדקס (החל מ-0 עד
Length - 1) . - לולאת foreach: דרך קריאה ונוחה לסרוק את כל איברי המערך ללא ניהול ידני של המונה .
- איתחול ישיר: ניתן לאתחל מערך עם ערכים בתוך סוגריים מסולסלים
{}.
9.2 סוגי מערכים מתקדמים
- מערך מונים: מערך בו האינדקס מייצג ערך, והתוכן מייצג את מספר הופעותיו .
- מערך דגלים (מציינים): מערך בוליאני המציין קיום של תנאי עבור כל אינדקס .
- מערך צוברים (Prefix Sum): שמירת סכום מצטבר המאפשר חישוב סכומי טווחים במהירות .
9.3 הכנה לבגרויות - מערכים
עמוד 9Ex9.3 מרכז שאלות בגרות שאינן דורשות ידע בעצמים:
- שאלון 371: שאלות מעקב, סיסמאות והצפנה .
- שאלון 381: סכומים מקסימליים, מערכי הפרשים ומערכים ממוינים .
סוף הסיכום. אנלוגיה לסיום: תכנות הוא כמו בנייה בקוביות; הפרקים הראשונים הם הקוביות הבסיסיות (תנאים ולולאות), והפרקים המתקדמים הם הוראות ההרכבה (פונקציות ומערכים) המאפשרות לבנות מבנים מורכבים ומרשימים.