Loading AI tools
פרדיגמת תכנות מוויקיפדיה, האנציקלופדיה החופשית
תכנות מובנה הוא פרדיגמת תכנות המיועדת לשיפור הבהירות והאיכות של תוכנית מחשב, תוך קיצור משך הפיתוח, באמצעות שימוש נרחב בשגרות, בלוקים ומבני בקרת זרימה מסוג Do while. התכנות המובנה בא לצמצם את השימוש בפקודת goto, היוצרת "קוד ספגטי" קשה להבנה והתמצאות.
פקודת goto הייתה פקודת בקרת זרימה יסודית בשפות תכנות פופולריות של שנות ה-60 של המאה ה-20, כגון COBOL ו-BASIC, והייתה בשימוש נרחב גם בשפות תכנות שבהן הייתה פחות חיונית, כגון Fortran ו-PL/I. הפקודה מאפשרת ביצוע קפיצה ברצף הביצוע של התוכנית, לפי שיקולי המתכנת. בדרך זו ניתן לחסוך שכפול קוד, ולהגיע לביצועים אופטימליים. עם זאת, שימוש מופרז בפקודה goto יוצר תוכנית חסרת מבנה ברור, המכונה "קוד ספגטי" (בשל הקושי לעקוב אחר מסלול הבקרה). תוכנית כזו מקשה על כתיבת קוד נטול באגים, וקשה מאוד לתחזק או להרחיב אותה. בנוסף, קוד אשר משתמש ב־goto עלול ליצור תופעות לוואי שקשה לעקוב אחריהן, ומקשה על הבנה של קוד ירושה.
משפט התכנות המובנה משנת 1966 ומאמרו הנודע משנת 1968 של אדסחר דייקסטרה, "Go To Statement Considered Harmful",[1] הובילו לשלילת השימוש בפקודת goto. לטענת דייקסטרה ורבים אחרים, ניתן לכתוב כל תוכנית מחשב ללא שימוש בפקודת goto. גישתו של דייקסטרה הפכה למקובלת ביותר בעולם התכנות, אך אל מול שלילה מוחלטת של הפקודה הציב דונלד קנות' גישה המתירה שימוש בפקודה במקרים מסוימים, במאמרו "Structured Programming with go to Statements".[2]
מאמרים נוספים, של דייקסטרה, רוברט פלויד, טוני הור, אולה יוהאן דאל ודייוויד גריס, תרמו לביסוסה של פרדיגמת התכנות המובנה, וזו נקלטה בתעשיית התוכנה, תוך פרסום מדריכים למימוש הפרדיגמה בשפות תכנות נפוצות.[3]
מאז שנות ה-70 של המאה ה-20, כחלק ממוסכמות תכנות מקצועי, נחשבת פקודת goto מוקצה מחמת מיאוס, וזאת על מנת להקל על תחזוקה והרחבה של קוד קיים: מוסכמה זו נאכפת לרוב גם בשפות המאפשרות שימוש ב־goto.
עם זאת, במקרים מיוחדים כגון יציאה מקינון מרובה, שימוש ב־goto עשוי להיות הפתרון הנכון והנקי יותר. בשפות תכנות חדשות מסוימות, כגון Java, לא ניתן להשתמש בפקודת goto.
משפט התכנות המובנה יצר את הבסיס התאורטי לתכנות המובנה, בכך שקבע שניתן לכתוב כל תוכנית תוך התבססות על שלושת מבני הבקרה הבאים בלבד:
if
, else
).while
, repeat
, for
או do..until
.לשם התאמה משופרת לתכנות מובנה, בשנות ה-70 נערכו בשפת PL/I שינויים אחדים לשיפור בקרת הזרימה: נוספה פקודת LEAVE
ליציאה מתוך לולאה, לפקודת DO
נוספו האופציות UNTIL
ו-REPEAT
, ונוספה פקודה לבחירה מרובה בצורה SELECT (expression) {WHEN (expression) group}... OTHERWISE group
. גם בשפות תכנות ותיקות אחרות נוספה במשך השנים תמיכה בתכנות מובנה. שפות תכנות מודרניות תוכננו מלכתחילה עם תמיכה בתכנות מובנה.
שגרה (באנגלית: Subroutine), פרוצדורה (באנגלית: Procedure) או שיטה (באנגלית Method) היא רצף של פקודות המאוגדות יחדיו, במטרה לבצע מטלה מוגדרת, מימוש של אלגוריתם. קריאה לשגרה היא הפעלה שלה תוך כדי פעולת התוכנית. שגרה יכולה שלא לקבל קלט, לקבל קלט יחיד או מספר של קלטים כלשהם. שימוש מושכל בשגרות עשוי לשפר את מבנה התוכנית, את קריאות הקוד ואת מידת הגמישות של התוכנית לביצוע שינויים. שימוש בשגרות מאפשר חלוקה של קוד לחלקים קצרים - שגרות - וכך מקל על וידוא נכונות של כל אחד מחלקי הקוד בנפרד. תוצאה זו מאפשרת להפחית במידה משמעותית את עלויות הפיתוח והתחזוקה של תוכנה.
בלוק הוא קבוצת פקודות שניתן להתייחס אליהן כאל פקודה אחת. בשפות תכנות התומכות בבלוקים יש תחביר המאפשר לזהות את תחילתו וסופו של בלוק, למשל הצירוף BEGIN..END
ב-PL/I, הזחה בפייתון וסוגריים מסולסלים {...}
ב-C ובשפות נוספות.
אף שעקרונות התכנות המובנה מומשו בשפות תכנות רבות, חריגה בולטת מעקרונות אלה הן פקודות return או yield, המאפשרות יציאה מוקדמת מתוך שגרה (בניגוד לגישה המחייבת יציאה משגרה רק לאחר הפקודה האחרונה שבה), פקודת break, המאפשרת באופן דומה יציאה מוקדמת מתוך לולאה, ופקודת continue, המאפשרת להפסיק איטרציה מסוימת בלולאה תוך מעבר לאיטרציה הבאה (אלה בניגוד לגישה המחייבת יציאה מלולאה רק לאחר הפקודה האחרונה שבה). ריבוי נקודות יציאה עלול ליצור באגים, עקב הימנעות אפשרית מביצוע פעולות שחובה לבצען לפני היציאה. יש התומכים בקיום פקודות אלה, המאפשרות קוד פשוט יותר. לעומתם טען ברטראן מייר (Bertrand Meyer) שפקודות אלה הן למעשה פקודת goto בשינוי אדרת, והמליץ בתוקף שלא להשתמש בהן.[4]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.