כתיבת קוד — שיעור 12
הנדסה לאחור של קוד מומצא
כל 2 משימות הקוד שנשמרו מהשיעור מופיעות כאן, עם דרישות, דוגמאות וקוד פתיחה. אפשר לכתוב פתרון בעורך המקומי וללחוץ על „בדיקת AI” לקבלת ציון, רמזים והערות.
T2 · בסיסי250 נק'~12 דק'debug
תיקון באג — טווח לולאה (inclusive)
הפונקציה אמורה לסכם את ריבועי המספרים בטווח [a, b] כולל שני הקצוות. אך היא שבורה: הלולאה אינה כוללת את b (range(a, b) עוצר לפני b), ולכן sum_squares(1, 3) מחזיר 5 במקום 14. מצא ותקן. החזר את הגרסה המתוקנת.
// הקוד השבור לתיקון
def sum_squares(a: int, b: int) -> int:
tot = 0
for i in range(a, b): # באג כאן
tot += i * i
return totדוגמאות
sum_squares(1, 3) → 14
sum_squares(2, 2) → 4
הפתרון נשמר מקומית אוטומטית.
T3 · בינוני400 נק'~30 דק'algorithmic
אינטרפרטר לולאות מקוננות
ממש מפרש לשפה זעירה עם לולאות מקוננות. פקודות (שורה לכל אחת): "SET v n" (קבע v=n) · "ADD v n" · "MUL v n" · "OUT v" (הוסף את v לפלט) · "LOOP k" ... "END" (חזור על הבלוק k פעמים; קינון מותר). משתנה שלא אותחל שווה 0. החזר את רשימת ערכי ה-OUT לפי הסדר. שים לב: LOOP 0 מדלג על הבלוק כולו.
דוגמאות
run_loops(['SET r 1','LOOP 3','MUL r 2','END','OUT r']) → [8]
run_loops(['SET s 0','LOOP 2','LOOP 3','ADD s 1','END','END','OUT s']) → [6]
הפתרון נשמר מקומית אוטומטית.