Privacy Policy Cookie Policy Terms and Conditions תכנות פרוצדורלי - ויקיפדיה

תכנות פרוצדורלי

מתוך ויקיפדיה, האנציקלופדיה החופשית

תכנות פרוצדורלי הוא מתודולוגיה לפיתוח תוכנה, שהמימוש שלה החל בתחילת שנות השישים, בשפות תכנות כדוגמת Algol ו-PL/I ונמשך לאחר מכן בשפות התכנות C ו־Pascal. היא הייתה התפתחות של הקוד ("המוכלל") מעל שיטות הקידוד הישנות. בשיטה הראשונית תוכנות היו כתובות כמקשה אחת, כאשר כל המשתנים פתוחים לכל חלקי הקוד, ותהליך הריצה מתבצע תוך קפיצות מחלק קוד אחד לשני.

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

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

פרוצדורות יכולות להכין תת-פרוצדורות כדי להמשיך ולשפר את קריאות (readability) התוכנה ושבירתה לחלקים לוגיים ברורים. מצב שבו פרוצדורה נמצאת בתוך פרוצדורה אחרת וכך הלאה קרוי קינון (nesting).

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

תוכן עניינים

[עריכה] מבנה דוגמת תוכנית פרוצדורלית בפסקל

  • פרוצדורה ראשית א'
    • תת פרוצדורה 1
    • תת פרוצדורה 2
      • תת תת פרוצדורה I
  • פרוצדורה ראשית ב'
  • פרוצדורה ראשית ג'
  • (וכולי)
  • תוכנית ראשית
    • התחלה
      • קריאה לפרוצדורה ראשית א'
      • קריאה לפרוצדורה ראשית ב'
      • קריאה לפרוצדורה ראשית ג'
    • סוף

[עריכה] יתרונותיו של התכנות הפרוצדורלי

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

[עריכה] בעיות בתכנות פרוצדורלי

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

[עריכה] השוואה עם שפת Visual Basic

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

[עריכה] ראו גם

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu