Menu
Coddy logo textTech

פקודת break

חלק מהיחידה יסודות במסלול ה-R של Coddy. שיעור 40 מתוך 78.

לפעמים צריך לצאת מלולאה מוקדם, לפני שהיא מסיימת את כל האיטרציות שלה. הפקודה break מאפשרת לעצור לולאה מיד כשמתקיים תנאי מסוים.

for (i in 1:10) {
  if (i == 5) {
    break
  }
  print(i)
}

פלט:

[1] 1
[1] 2
[1] 3
[1] 4

הלולאה הוגדרה לרוץ מ־1 עד 10, אבל כשהערך של i הגיע ל־5, הפקודה break עצרה את הלולאה לחלוטין. שים לב ש־5 מעולם לא הודפס, כי break יוצאת מיד.

הדבר שימושי במיוחד עם לולאות while כשמחפשים משהו:

num <- 1
while (TRUE) {
  if (num * num > 20) {
    break
  }
  num <- num + 1
}
print(num)

פלט:

[1] 5

כאן, while (TRUE) הייתה פועלת בדרך כלל לנצח, אבל break עוצרת אותה ברגע שאנחנו מוצאים את המספר הראשון שהריבוע שלו גדול מ-20. התבנית הזו נפוצה כשצריך לחפש עד שתנאי מתקיים.

challenge icon

אתגר

קל

קרא מספר limit מהקלט. השתמש בלולאת for כדי לעבור מ־1 עד limit, אבל עצור את הלולאה מוקדם באמצעות break כשתיתקל במספר הראשון שמתחלק גם ב־3 וגם ב־7.

הדפס כל מספר לפני בדיקת התנאי. כשתמצא מספר שמתחלק גם ב־3 וגם ב־7, הדפס את המספר הזה ואז צא מהלולאה.

לאחר סיום הלולאה, הדפס "Loop ended" באמצעות print().

לדוגמה, אם הקלט הוא 30, הפלט אמור להיות:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] 6
[1] 7
[1] 8
[1] 9
[1] 10
[1] 11
[1] 12
[1] 13
[1] 14
[1] 15
[1] 16
[1] 17
[1] 18
[1] 19
[1] 20
[1] 21
[1] "Loop ended"

הלולאה נעצרת ב־21 כי זה המספר הראשון שמתחלק גם ב־3 וגם ב־7 (21 = 3 × 7).

נסו בעצמכם

# קראו את הקלט
con <- file("stdin", "r")
limit <- as.integer(suppressWarnings(readLines(con, n = 1)))

# TODO: כתבו את הקוד שלכם למטה
# השתמשו בלולאת for מ-1 עד limit
# הדפיסו כל מספר לפני בדיקת התנאי
# צאו מהלולאה כשאתם מוצאים מספר שמתחלק גם ב-3 וגם ב-7
# רמז: השתמשו באופרטור %% כדי לבדוק התחלקות


# הדפיסו "Loop ended" אחרי הלולאה
print("Loop ended")
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: קומפיילר R אונליין