הקדמה

אוריינות בסביבת הפיתוח

(1) הרצת קוד ב-shell וב-script

סביבת פיתוח (development environment) היא תוכנה או חבילת תוכנות המאפשרות כתיבת תכניות מחשב. קיימות סביבות פיתוח מגוונות המיועדות לתכנות בשפת פייתון, ויש ביניהן מן המבדיל ומן המשותף. המשותף לרבות מהן כולל בין השאר הפרדה בין כתיבת הוראות בחלון המכונה shell (או: console) לכתיבת קוד בחלון ה-script. הפרדה זו קיימת למשל ב-IDLE (Integrated Development and Learning Environment), סביבת פיתוח רווחת ומומלצת למתחילות ולמתחילים בלמידת תכנות. בהפעלת הסביבה הזאת נפתח ראשית חלון ה-shell: 

הסמן מהבהב ליד שלושה סוגריים משולשים. הוא מסמן כי נוכל לכתוב בחלון זה הוראה בשפת פייתון, ולהריץ (run) אותה, כלומר לגרום לה להתבצע. ההרצה נעשית באמצעות הקשה על המקש ENTER לאחר כתיבת ההוראה. בדרך כלל יוצג ערך שהוא תוצאת ההרצה. לדוגמה אם נכתוב את ההוראה הזאת: 

3 + 4

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

דוגמה נוספת – הוראה הבודקת אם המספר 7 גדול מהמספר 9 – תוצאתה היא ערך בשפה ששמו FALSE: 

בדרך כלל נריץ הוראות בחלון ה-shell כשנרצה לבדוק את פעולתה של הוראה זו או אחרת, או כשנחפוץ בהדגמתה. קטעי קוד ארוכים יותר, ובייחוד תכניות מחשב שלמות, נכתוב בדרך כלל בחלון אחר של סביבת הפיתוח, והוא חלון ה-script. ב-IDLE אפשר להגיע לחלון זה באמצעות בחירת New File בתפריט File: 

כאמור בחלון ה-script נכתוב קטעי קוד. הנה לדוגמה החלון כשיש בו תכנית המדפיסה  Hello World בתוך מלבן:

לפני שנריץ את התכנית עלינו לשמור אותה (אם לא נשמור התכנה תדרוש זאת). אפשר לשמור באמצעות בחירת Save בתפריט File. לתכנית הדוגמה ניתן את השם HelloWorld. נבחר את התיקיה שהקבצים יישמרו בה, נניח Python בכונן C.

סיומת של קבצי פייתון היא py. אם כן פעולת השמירה תיצור בתיקיה Python בכונן C קובץ בשם HelloWorld.py המכיל את הטקסט של התכנית שכתבנו. 

אופן הרצת תכנית ב-script יכול להשתנות מסביבת פיתוח אחת לאחרת. ב-IDLE אפשר להקיש על המקש F5 או לבחור Run Module בתפריט File. תוצאת ההרצה תופיע בחלון ה-shell. בדוגמה כאן אנו מפעילים שלוש פעמים הוראה בשם print, הוראה שנועדה להדפיס טקסט בחלון ה-shell.ש

בממשק הגרפי של סביבת פיתוח אחרת, Anaconda Spyder, מופיעים זה לצד זה לוח ה-script (הלוח השמאלי) ולוח ה-shell (או ה-console; זה הלוח הימני, בדרך כלל יש מעליו לוח נוסף). נוכל להשתמש ב-console כדי להריץ הוראה זו או אחרת. נשתמש בלוח ה-script להרצת קטעי קוד או תכניות. ההרצה – באמצעות הקשה על המקש F5 או בחירה ב-Run בתפריט Run. תוצאת ההרצה תוצג ב-console. 

אפשר גם להריץ שורות קוד מסוימות בתוך התכנית באמצעות סימונן והקשה על המקש F9 או בחירה ב-Run selection or current line בתפריט Run. 

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

age = input(‘Insert age; -1 to stop: ‘)

while age != ‘-1’:

    print(age)

    age = input(‘Insert age; -1 to stop: ‘)

 

(2) שגיאות תכנות

שגיאות בכתיבת קוד הן דבר שבשגרה. ככלל כתיבת קוד מחייבת טיפול בשני סוגים של שגיאות. סוג אחד הוא שגיאות הידור (compilation errors; הידור הוא תרגום התכנית מפייתון לשפה המובנת למחשב). שגיאות אלה נובעות בדרך כלל מתחביר לקוי. לדוגמה נשגה שגיאת תחביר אם נרצה לחשב את הסכום של 3 ו-4 ובטעות נשתמש בסימן שאינו סימן החיבור, כגון: 

3 +: 4

בדומה נעשה שגיאת תחביר אם נרצה לבדוק אם 7 שונה מ-9 ונשתמש בסימן שאינו בודק אי שיוויון בין מספרים, כגון הסימן ><:

7 >< 9

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

הודעת שגיאה זהה נקבל אם נריץ את ההוראה שתחבירה שגוי בחלון ה-script.

לעתים בכתיבת התכנית נעשה שגיאות שלא ימנעו את הרצת התכנית. למשל אם נכתוב בחלון ה-script הוראה המדפיסה בחלון ה-shell את החלוקה של 10 ב-0, שגיאה זו לא תזוהה לפני הרצת התכנית ולא תמנע את ההרצה. ואולם הרצת התכנית תיקָטע כיוון שתתרחש שגיאת זמן-ריצה (run-time error).

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

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

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