תתחילו עם פונקציות
בהינתן שיש לנו מכונה שיכולה לממש פונקציות פשוטות כמעט בלי טעויות, הגיע הזמן שנשנה את סדר הנושאים כשאנחנו מלמדים תכנות. האמת, את השינוי הזה היה צריך לעשות עוד הרבה לפני ה AI, אבל עכשיו באמת שאי אפשר לדחות אותו.
תתחילו עם פונקציות.
ישבתי לעזור לילד בעבודה בפייתון. הם קיבלו קטע קוד עם כמה שורות ריקות והיו צריכים להשלים, ככה זה נראה אחרי השלמה:
num = int(input("select a number: "))
sum = 0
x = 1
while x < num:
if num % x == 0:
sum += x
x += 1
if num == sum:
print("Perfect number")
else:
print("Not a perfect number")
הקוד קורא מספר מהמשתמש ובודק אם המספר שווה לסכום מחלקיו, מה שנקרא מספר מושלם. תרגיל חמוד שלגמרי מפספס את המטרה, כי מה שחשוב ללמד בשלבים הראשונים של חשיפה למדעי המחשב הוא התרגום משפה טבעית לשפה פורמלית. הצעד הראשון היה צריך להיות בסך הכל:
num = int(input("select a number: "))
if num == sum(divisors(num))
print("Perfect number")
else:
print("Not a perfect number")
עכשיו יש לנו שתי בעיות חדשות:
- לא הגדרנו את divisors
- בשביל להגדיר את divisors אנחנו צריכים לחשוב על ממשקים, מה זה פונקציה, מה פונקציה מקבלת ומחזירה, איך פונקציה מתקשרת עם הסביבה שלה.
ועוד כמה שאלות חדשות:
- אולי גם קלט צריך להיות פונקציה?
- מה לגבי ה if?
- וה print? למה אנחנו מדפיסים ולא "מחזירים" ערך? מה ההבדל בין שתי הפעולות?
ואלה בדיוק הדברים שאנחנו צריכים ללמוד וללמד, הרבה לפני שמדברים על מימוש ספציפי של משתנים, לולאות ו Control Flow. ממילא בשביל הלולאה הם רק צריכים ללחוץ Tab.