תתי־הנושאים › נושא 7

נושא 7: לולאת for

צפו בסרטון ההסבר, ואז בחרו תת־נושא לתרגול.

סיכומון תחביר נושא 7: לולאת for

מבנה הלולאה

for (int i = 0; i < 3; i++)
{
    Console.WriteLine("Hi " + i);
}
Console.WriteLine("Done");

הפלט:

Hi 0
Hi 1
Hi 2
Done

בכותרת שלושה חלקים, ונקודה‑פסיק ביניהם:

  • אתחול int i = 0: מתבצע פעם אחת, בהתחלה.
  • תנאי i < 3: נבדק לפני כל סבב. כשהוא לא נכון, הלולאה מסתיימת והקוד ממשיך אחריה.
  • קידום i++: מתבצע בסוף כל סבב. זהה ל‑i = i + 1.

כותרות נפוצות

  • for (int i = 1; i <= 5; i++) מ‑1 עד 5, כולל 5.
  • for (int i = 0; i < 10; i = i + 2) בקפיצות של 2, מ‑0 עד 8.
  • for (int i = 5; i > 0; i--) ספירה לאחור, מ‑5 עד 1.
  • for (int i = 0; i < n; i++) מתבצע n פעמים. את n אפשר לקלוט מהמשתמש.

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

מונה

משתנה שסופר כמה פעמים קרה משהו. מאתחלים אותו ל‑0 לפני הלולאה, מגדילים אותו ב‑1 בתוך if, ומדפיסים אותו אחרי הלולאה. count++ הוא קיצור של count = count + 1.

int n = int.Parse(Console.ReadLine());
int count = 0;
for (int i = 0; i < n; i++)
{
    int x = int.Parse(Console.ReadLine());
    if (x > 90)
    {
        count++;
    }
}
Console.WriteLine(count);

סוכם וממוצע

משתנה שצובר ערכים. מאתחלים אותו ל‑0 לפני הלולאה, ומוסיפים לו בכל סבב. sum += x הוא קיצור של sum = sum + x. ממוצע הוא הסכום חלקי הכמות. כדי שהחילוק לא יהיה חילוק שלמים, מגדירים את הסוכם כ‑double.

double sum = 0;
for (int i = 0; i < n; i++)
{
    int x = int.Parse(Console.ReadLine());
    sum += x;
}
Console.WriteLine("Sum: " + sum);
Console.WriteLine("Average: " + sum / n);

משתנה שצובר מכפלה מאתחלים ל‑1 ולא ל‑0.

מקסימום ומינימום

max מחזיק את הערך הגדול ביותר שנקלט עד עכשיו, ו‑if מעדכן אותו כשנקלט ערך גדול ממנו. ערך ההתחלה נקבע לפי תחום הערכים: למקסימום ערך שקטן מכל קלט אפשרי, ולמינימום ערך שגדול מכל קלט אפשרי. בציונים מ‑0 עד 100 אלה 0 ו‑101.

int max = 0;
int min = 101;
for (int i = 0; i < n; i++)
{
    int x = int.Parse(Console.ReadLine());
    if (x > max)
    {
        max = x;
    }
    if (x < min)
    {
        min = x;
    }
}
Console.WriteLine(max + " " + min);

כדי לזכור באיזה סבב נמצא המקסימום, שומרים בתוך ה‑if גם את i, למשל pos = i;. עם > נשמר המופע הראשון של המקסימום, ועם >= האחרון.

אתחול לפי הערך הראשון

כשתחום הערכים לא ידוע, למשל כשיש גם מספרים שליליים, קולטים את הערך הראשון לפני הלולאה ומאתחלים לפיו. הלולאה מתחילה מ‑1, כי ערך אחד כבר נקלט.

int first = int.Parse(Console.ReadLine());
int max = first;
int min = first;
for (int i = 1; i < n; i++)
{
    int x = int.Parse(Console.ReadLine());
    if (x > max)
    {
        max = x;
    }
}

תרגול

  1. 07.1 לולאת for — for פשוט 20 רמות לתרגול ‹
    מה מתרגלים ב־לולאת for — for פשוט C# · 200 שאלות · 20 רמות
    • פקודת for ושלושת חלקי הכותרת שלה (אתחול, תנאי, קידום)
    • גוף הלולאה בסוגריים מסולסלים
    • מספר החזרות של הלולאה
    • קוד שממשיך אחרי סיום הלולאה
    • גבול שנקלט מהמשתמש
    • קלט ו‑if בתוך הלולאה
    • שימוש במשתנה i בגוף הלולאה
    • התחלה ממספר שאינו 0
    • <= לעומת <
    • קידום בקפיצות וספירה לאחור
    • לולאה שגופה אינו מתבצע כלל
  2. 07.2 לולאת for — for מונה 15 רמות לתרגול ‹
    מה מתרגלים ב־לולאת for — for מונה C# · 150 שאלות · 15 רמות
    • משתנה מונה שמאותחל ל‑0 לפני הלולאה
    • הגדלת המונה ב‑1 בתוך if
    • הדפסת המונה אחרי סיום הלולאה
    • ספירה של קלטים שמקיימים תנאי
    • ספירה של ערכי i שמקיימים תנאי
    • count++ כקיצור של count = count + 1
    • שני מונים באותה לולאה
    • מונה שמאותחל במקום הלא נכון
    • שילוב מונה עם תנאי מורכב ועם שארית
  3. 07.3 לולאת for — for סוכם/צובר 15 רמות לתרגול ‹
    מה מתרגלים ב־לולאת for — for סוכם/צובר C# · 150 שאלות · 15 רמות
    • משתנה סוכם שמאותחל ל‑0 לפני הלולאה
    • הוספת ערך לסוכם בכל סבב
    • הדפסת הסכום אחרי סיום הלולאה
    • סכום של קלטים וסכום של ערכי i
    • סכום חלקי שמודפס בכל סבב
    • סכום רק של ערכים שמקיימים תנאי
    • חישוב ממוצע מסכום ומכמות
    • חילוק שלמים בממוצע ו‑double
    • sum += x כקיצור של sum = sum + x
    • משתנה צובר במכפלה
    • שילוב סוכם עם מונה
  4. 07.4 לולאת for — for עם מינימום ומקסימום 17 רמות לתרגול ‹
    מה מתרגלים ב־לולאת for — for עם מינימום ומקסימום C# · 170 שאלות · 17 רמות
    • משתנה שמחזיק את הערך הגדול ביותר שנקלט עד עכשיו
    • if שמעדכן אותו כשנקלט ערך גדול יותר
    • ערך התחלה למקסימום ולמינימום לפי תחום הערכים
    • מינימום ומקסימום באותה לולאה
    • מעקב אחרי המשתנה סבב אחר סבב
    • > לעומת >= כשיש ערכים שווים
    • ערך התחלה שגוי ומספרים שליליים
    • אתחול לפי הערך הראשון שנקלט
    • שמירת מספר הסבב שבו נמצא המקסימום
    • שילוב מינימום ומקסימום עם מונה ועם סוכם
‹ נושא 6: מחלקת Math נושא 8: לולאת while ›