פקודת goto – הבדלי גרסאות
תוכן שנמחק תוכן שנוסף
יוניון ג'ק (שיחה | תרומות) אין תקציר עריכה |
מאין תקציר עריכה |
||
שורה 1:
'''פקודת goto''' ({{כ}}"go to", ב[[עברית]]: "לך אל
זיהוי המקום שאליו תתבצע הקפיצה נעשה בדרך כלל באמצעות מתן תגית (label) למקום זה. בשפת [[BASIC]] ניתן מספר (בסדר עולה) לכל שורת פקודה, והקפיצה נעשית באמצעות ציון מספר השורה בפקודת ה־goto. בשפת [[פסקל (שפת תכנות)|פסקל]] יש להגדיר את התווית באמצעות פקודת <code>label</code> לפני שניתן להשתמש בה.
==ירידת קרנה של פקודת goto==
בשנת [[1968]] פרסם [[אדסחר דייקסטרה]] מאמר מפורסם בשם "[http://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf פקודת GOTO נחשבת מזיקה]", ובו שלל את השימוש בפקודת goto. לטענת דייקסטרה ורבים אחרים, ניתן לכתוב כל תוכנית מחשב ללא שימוש בפקודת goto. גישתו של דייקסטרה הפכה למקובלת ביותר בעולם התכנות, אך אל מול שלילה מוחלטת של הפקודה הציב [[דונלד קנות']] גישה המתירה שימוש בפקודה במקרים מסוימים, במאמרו [http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pdf תכנות מובנה הכולל שימוש ב GOTO].
שורה 11 ⟵ 10:
ברוב השפות שתומכות ב[[תכנות פרוצדורלי]] ומאפשרות שימוש בפקודת goto לא ניתן לקפוץ מחוץ לשגרה הנוכחית. בשפת C ישנו צמד פונקציות (<code>setjmp</code> ו־<code>longjmp</code>) שנועד לביצוע goto שאינו מקומי על ידי שמירת מצב ה[[מחסנית (מבנה נתונים)|מחסנית]] לפני הקפיצה ושחזורה לאחריה.
בשפות חדשות יותר כמו [[Java]]
==דוגמאות שימוש==
שורה 29 ⟵ 28:
==ראו גם==
* [[בקרת זרימה]]
* [[קוד ספגטי]]
|