מירי
כיתה ז · מבוא לתכנות בפייתון

איך מחשב עובד קלט, עיבוד, פלט ו-0 ו-1

כל מחשב, מהטלפון ועד שרת ענק, עושה ארבעה דברים: מקבל קלט, מעבד אותו, מוציא פלט ושומר בזיכרון. ובפנים הכל כתוב רק ב-0 וב-1. כאן בונים מספר מביטים ומריצים תוכנית פייתון שהופכת מספר לבינארי. כדאי להיזכר קודם בנורות של בינארי ובחשיבה ממוחשבת. אחר כך ממשיכים למשתנים וטיפוסים.

1

הרעיון

קלטעיבודפלט

קלט ופלט

קלט הוא מה שנכנס למחשב: מקלדת, עכבר, מיקרופון, מצלמה. פלט הוא מה שיוצא: מסך, רמקול, מדפסת. בפייתון input() קורא קלט, ו-print() מוציא פלט.

עיבוד וזיכרון

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

הכל 0 ו-1

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

בבינארי כל מקום שווה פי 2 מהמקום שמימינו: 1, 2, 4, 8, 16 וכן הלאה. למשל 1101 הוא 8 + 4 + 0 + 1 = 13.

לזכור: 8 ביטים הם בייט. בבייט אחד אפשר לכתוב 256 מספרים שונים, מ-0 עד 255.
2

מעבדה: מספר בתוך בייט

הזיזו את המחוון או לחצו על הביטים כדי להדליק ולכבות אותם. מתחת יש תוכנית פייתון שהופכת את המספר לבינארי: היא מחלקת ב-2 שוב ושוב, ורושמת את השארית. לחצו "שורה הבאה" ועקבו אחרי n ו-bits.

נסו את אלה:

בתוכנית יש לולאת while: שורות 5 ו-6 חוזרות כל עוד n גדול מ-0. את הלולאות נלמד לעומק בלולאות בפייתון.

הריצו בעצמכם

אפשר לשנות את הקוד ולהריץ פייתון אמיתי. בפעם הראשונה הטעינה לוקחת כמה שניות.

3

טעויות שכולם עושים

שוכחים את הבסיס

בלי 2, פייתון קורא את הספרות כמספר רגיל. כדי לקרוא בינארי צריך לכתוב את הבסיס.

✗ יוצא 101
print(int("101"))
✓ יוצא 5
print(int("101", 2))

קוראים מהצד הלא נכון

הביט הימני שווה 1. כל ביט משמאלו שווה פי 2. לכן 100 בבינארי הוא 4, לא 1.

✗ "100 זה 1"
# 1 + 0 + 0 = 1 ?
✓ 4 + 0 + 0 = 4
print(int("100", 2))   # 4

256 לא נכנס בבייט

בבייט יש 256 אפשרויות, אבל הן מתחילות ב-0. לכן הגדול ביותר הוא 255. ל-256 צריך ביט תשיעי.

✓ 8 ביטים
print(bin(255))   # 0b11111111
✗ כבר 9 ביטים
print(bin(256))   # 0b100000000

bin מחזיר טקסט

bin מחזיר מחרוזת שמתחילה ב-0b, לא מספר. אי אפשר לחבר אליה מספר. כדי לחשב, הופכים חזרה עם int.

✗ שגיאה
print(bin(5) + 1)
✓ יוצא 6
print(int(bin(5), 2) + 1)
4

דוגמה פתורה, צעד אחרי צעד

קופה בחנות: מקלידים מחיר של מוצר וכמה יחידות קונים, והקופה מדפיסה את הסכום. בואו נראה איפה בתוכנית יש קלט, איפה עיבוד ואיפה פלט. הקלט כאן: מחיר 12 ו-3 יחידות.

5

תרגול

6

שאלות שכולם שואלים

למה מחשבים משתמשים בבינארי ולא בעשרוני?

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

מה ההבדל בין ביט לבייט?

ביט הוא ספרה אחת: 0 או 1. בייט הוא 8 ביטים יחד, ובו אפשר לשמור מספר מ-0 עד 255 או אות אחת. קובץ של מגה בייט הוא בערך מיליון בייטים.

מה ההבדל בין זיכרון לאחסון?

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