תכנות מובנה – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
WikiMan3 (שיחה | תרומות)
ניסוח
WikiMan3 (שיחה | תרומות)
שורה 20:
משפט התכנות המובנה יצר את הבסיס התאורטי לתכנות המובנה, בכך שקבע שניתן לכתוב כל תוכנית תוך התבססות על שלושת מבני הבקרה הבאים בלבד:
* '''רצף''': הפקודות מבוצעות לפי סדר הופעתן בתוכנית.
* '''בחירה''': פקודה (או קבוצת פקודות) מבוצעת בהתאם לתנאי הנבדק בתוכנית באמצעות [[פקודת תנאי]] ( <code>if</code> , <code>else</code> ).
* '''איטרציה ([[לולאה]])''': פקודה (או קבוצת פקודות) מבוצעת שוב ושוב, עדכל להתקיימותו שלעוד תנאי מסוים מתקיים. נכתבת באמצעות פקודות כגון <code>while</code>, <code>repeat</code>, <code>for</code> או <code>do..until</code>.
[[קובץ:Structured program patterns he.png|423px|ממוזער|מרכז|[[תרשים זרימה|תרשימי זרימה]] המתארים את מבני הבקרה הבסיסיים בתכנות מובנה: רצף, בחירה ולולאה]]
לשם התאמה משופרת לתכנות מובנה, בשנות ה-70 נערכו בשפת PL/I שינויים אחדים לשיפור בקרת הזרימה: נוספה פקודת <code>LEAVE</code> ליציאה מתוך לולאה, לפקודת <code>DO</code> נוספו האופציות <code>UNTIL</code> ו-<code>REPEAT</code>, ונוספה פקודה לבחירה מרובה בצורה <code>SELECT (expression) {WHEN (expression) group}... OTHERWISE group</code>. גם בשפות תכנות ותיקות אחרות נוספה במשך השנים תמיכה בתכנות מובנה. שפות תכנות מודרניות תוכננו מלכתחילה עם תמיכה בתכנות מובנה.
שורה 32:
 
==יציאה מוקדמת משגרה או מלולאה==
אף שעקרונות התכנות המובנה מומשו בשפות תכנות רבות, חריגה בולטת מעקרונות אלה היאהן פקודתפקודות return או yield, המאפשרתהמאפשרות יציאה מוקדמת מתוך שגרה (בניגוד לגישה המחייבת יציאה משגרה רק לאחר הפקודה האחרונה שבה), פקודת break, המאפשרת באופן דומה יציאה מוקדמת מתוך לולאה, ופקודת continue, המציינת להפסיק איטרציה מסוימת בלולאה תוך מעבר לאיטרציה הבאה (אלה בניגוד לגישה המחייבת יציאה מלולאה רק לאחר הפקודה האחרונה שבה). ריבוי נקודות יציאה עלול ליצור באגים, עקב הימנעות אפשרית מביצוע פעולות שחובה לבצען לפני היציאה. יש התומכים בקיום פקודות אלה, המאפשרות קוד פשוט יותר. לעומתם טען [[ברטראן מייר]] {{אנג|Bertrand Meyer}} שפקודות אלה הן למעשה פקודת goto בשינוי אדרת, והמליץ בתוקף שלא להשתמש בהן.{{הערה|Bertrand Meyer, '''Touch of Class: Learning to Program Well with Objects and Contracts''', Springer Science & Business Media, 2009, p. 189}}
 
==לקריאה נוספת==