סיכום מקיף: יסודות התכנות ב-C# - חלקים א' וב'


מדריך שלם הכולל תנאים, לולאות, פונקציות, מחרוזות ומערכים

סיכום זה מרכז את הידע שנרכש בחלקים א’ וב’ של הקורס ומהווה הכנה לקראת חלק ג’.

בחלקים אלו למדנו את אבני הבניין של מדעי המחשב: החל מקבלת החלטות לוגיות, דרך אוטומציה של פעולות באמצעות לולאות, ועד לארגון קוד מתקדם בפונקציות ושימוש במבני נתונים.

מה צפוי בחלק ג’:

  • מערכים דו-ממדיים: עבודה עם מטריצות וטבלאות נתונים.
  • עצמים ומחלקות (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;
}

סרטון הסבר לולאות for

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)

לולאות מקוננות הן הכלי המרכזי להדפסת דגמים (כוכביות, מספרים) .

  • חיצונית: אחראית על השורות.
  • פנימית: אחראית על התוכן בכל שורה (עמודות) .

תרגול 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: סכומים מקסימליים, מערכי הפרשים ומערכים ממוינים .

קישורים ישירים לשאלות בגרות


סוף הסיכום. אנלוגיה לסיום: תכנות הוא כמו בנייה בקוביות; הפרקים הראשונים הם הקוביות הבסיסיות (תנאים ולולאות), והפרקים המתקדמים הם הוראות ההרכבה (פונקציות ומערכים) המאפשרות לבנות מבנים מורכבים ומרשימים.