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

21
ייייי ייייייייי- I

Upload: quinto

Post on 21-Jan-2016

124 views

Category:

Documents


1 download

DESCRIPTION

תכנות פרוצדורלי - I. נושאי הקורס. פרדיגמות תכנותיות: תכנות פונקציונלי תכנות מונחה עצמים תכנות פרוצדורלי תכנות מקבילי פרדיגמות תכנותיות ככלי לפתרון בעיות אלגוריתמיות: דומה: פרוק בעייה לתת-בעיות ע"י הגדרת אבני בניין וקשרים ביניהן. שונה: אבני הבניין והקשרים ביניהם. פרדיגמות תיכנותיות. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: תכנות פרוצדורלי -  I

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

Page 2: תכנות פרוצדורלי -  I

נושאי הקורס

:פרדיגמות תכנותיותתכנות פונקציונלי

תכנות מונחה עצמים

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

תכנות מקבילי

:פרדיגמות תכנותיות ככלי לפתרון בעיות אלגוריתמיות

.דומה: פרוק בעייה לתת-בעיות ע"י הגדרת אבני בניין וקשרים ביניהן

.שונה: אבני הבניין והקשרים ביניהם

Page 3: תכנות פרוצדורלי -  I

פרדיגמות תיכנותיות:תכנות פונקציונאלי

.פונקציות מהוות את אבני הבניין של תוכניות מחשב

ניתן לבנות אותן, להרכיבן, להעבירן כפרמטרים, להחזירן כפרמטרים

לפונקציות אחרות.

.התייחסות לפונקציות היא כאל המושג המתמטי פונקציה

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

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

.פרוצדורות מהוות את יחידות הארגון של צעדים חישוביים אלה

.הפרוצדורות מסודרות בהיררכיה

Page 4: תכנות פרוצדורלי -  I

מושגיםהוא מתכון לביצוע משימה. אלגוריתם מורכב אלגוריתם

מסדרת הוראות חד-משמעיות ואפשריות לביצוע אשר

סדר ביצוען מוגדר היטב.

היא בעיה שבה מתוארת נקודת בעיה אלגוריתמית

מוצא ומטרה, ונדרש אלגוריתם להשגת המטרה.

:אבני בניין בפתרון בעיות בפרדיגמה הפרוצדורלית

המסודרות )המייצגות אלגוריתמים(פרוצדורות

.בהיררכיה

Page 5: תכנות פרוצדורלי -  I

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

תוכנה הוא מתודולוגיה לפיתוח תכנות פרוצדורלי.

גדולה לתת תוכניות תוכנית מחשבבמתודולוגיה זו מחולקת

או שגרה, פרוצדורהרבות, שכל אחת מהן קרויה

, וכל שגרה קוראת לשגרות האחרות. לכל פונקציה )תכנות(

פרוצדורה בתוכנית פרוצדורלית ישנה המשימה שאותה היא

מבצעת, כחלק ממכלול המשימות המרכיב את התוכנית

השלמה.

Page 6: תכנות פרוצדורלי -  I

רקעהיסטוריה של פיתוח תוכנה

סיבוכיות הולכת וגדלה של פיתוח תוכניות מחשב

-1968משבר התוכנה, כינוס נאטו ב

:פתוח מערכת תוכנה היא פעילות בעלת סיבוכיות גבוההסיבוכיות המתייחסת לתוכנה עצמה

סיבוכיות המתייחסת לאנשים המעורבים פיתוח התוכנה

סיבוכיות זו גורמת לכך שפתרונות הם איטרטיבים: לא ניתן להגיע

לפתרון "בסיבוב ראשון"

תכנות פרוצדורלי היא בין הפרדיגמות הראשונות שפותחו על מנת

להתגבר על סיבוכיות זו

Page 7: תכנות פרוצדורלי -  I

נושא מרכזי: מתודולוגיות/היוריסטיקות העוזרות להתגבר על סיבוכיות קוגניטיבית

הפשטה(abstraction)

פיתוח מלמעלה למטה(top-down

development)

עידון הדרגתי(successive refinement)

Page 8: תכנות פרוצדורלי -  I

הפשטה."דרך חשיבה והסתכלות על "דברים

התעלמות מפרטים שאינם רלוונטיים בשלבים מסוימים של פתרוןבעיות.

.חשיבותה של הפשטה בפיתוח תוכנה

.שקיעה בפרטי התכנות, מורידה את רמת ההפשטה

חשיבה ברמת הפשטה נמוכה מדי עלולה להפריע להבחין בעובדות חשובותשניתן להבחין בהן כאשר בוחנים בעיה ברמת הפשטה גבוהה יותר.

:דיון ברמת הפשטה מתאימה מאפשר ביצוע רפלקציה

אי-שקיעה בפרטים מאפשרת להקדיש חלק מהמקורות המנטליים)ה"חשיבתיים"( שלנו לרפלקציה.

Page 9: תכנות פרוצדורלי -  I

The Magical Number 7מספר הקסם Seven

Miller, G. A. )1956(. The magical number seven plus or minus two: Some limits on

our capacity for processing information. Psychological Review 63, pp. 81-97.

( מגבלות הזיכרון לטווח קצרshort-term memory .)

(. 2 יחידות מידע )+- 7אדם ממוצע יכול "להחזיק במוח" בכל רגע

כמו למשל מגבלה זו עשויה להשפיע על דרך פתרון בעיות מורכבות(

.פיתוח מערכות תוכנה(

.)"יחידות מידע אלו יכולות להיות מכל גודל )"צפופות

.עבור החשיבה יחידת מידע היא יחידה אחת ללא קשר לגודלה ומורכבותה

( "אנו נוטים לארגן מידע מורכב בהיררכיות או ליצור "גושי מידעchunking.)

Page 10: תכנות פרוצדורלי -  I

(דוגמאות) 7מספר הקסם

Bell Labs : בתכנון 7התחשבו ב"מספר הקסם "user’s

interface.כך שאדם ממוצע יוכל להשתמש בה

Xerox PARC לתכנון 7: השתמשו בידע על "מספר הקסם "

תפריט המכיל שבעה פריטים עדיף . context menusהמושג

)מעל ליכולתו של אדם ממוצע(. פריטים10על תפריט המכיל

Page 11: תכנות פרוצדורלי -  I

Iהפשטה -

התעלמות מפרטים שאינם רלוונטיים בשלבים

מסוימים של פתרון בעיות.

.ניתן להסתכל על הפשטה כעל העתקה מהרבה לאחד

הפשטה מאפשרת לנו ל”שכוח” מידע ולטפל בדברים שונים

כאילו היו זהים.

באופן כללי: משמרים את המשותף לקבוצת עצמים

ומתעלמים מההבדלים ביניהם עד כמה שניתן. התכונות

המשותפות “נתפסות” במושג אחד.

Page 12: תכנות פרוצדורלי -  I

Iהפשטה -

:היררכית היונקים

ברמות גבוהות של הפשטה אנו מתעלמים מההבדלים;

ברמות נמוכות של הפשטה אנו מבחינים בין סוגי יונקים.

?מהו ריבוע

,הוכחת משפט על משולשים, חבורות

פונקציות רציפות.

Page 13: תכנות פרוצדורלי -  I

IIהפשטה -

התעלמות מפרטים שאינם רלוונטיים

בשלבים מסוימים של פתרון בעיות.

התמקדות במהותה של יישות )על-פי תכונותיה( ולא

כיצד מהות זו באה ממומשת.

:בהקשר של פיתוח מערכות תוכנה

בשלבים מסוימים של פיתוח תוכנה התמקדות ב"מה" ולא

ב"איך".

Page 14: תכנות פרוצדורלי -  I

הפשטה – יישום

כתיבת הוראות שניתן להפעיל אותן על יותר

מסוג אחד של עצמים.

אופן ההפעלה המפורש לגבי כל אחד

מהעצמים מפורט ברמות נמוכות יותר של

הפשטה.

Page 15: תכנות פרוצדורלי -  I

Abstraction

Example: )Abelson and Sussman, 1986, p. 73(

The linear-combination function gets four inputs: a,

b, x, y, and outputs the expression value a*x+b*y.

)define )linear-combination a b x y(

)add )multiply a x( )multiply b y(((

Page 16: תכנות פרוצדורלי -  I

הפשטה

התעלמות מפרטים שאינם רלוונטיים

בשלבים מסוימים של פתרון בעיות.

.הפשטה מגשרת בין שפת המחשב לשפתנו :בהמשך – קשרים בין הפשטה ל

פיתוח מלמעלה למטה

קשר לעידון הדרגתי

Page 17: תכנות פרוצדורלי -  I

משימה ראשונה - בקבוצות

חברת התוכנה שלכם קבלה פרויקט בשם

"תקשוב שדה תעופה".

עליכם להעלות שאלות שיש להתייחס אליהן

בשלב ההערכות לפרויקט.

Page 18: תכנות פרוצדורלי -  I

משימה שנייה - בקבוצות

חברת התוכנה שלכם קבלה פרויקט בשם

"תקשוב שדה תעופה".

.רשמו את דרישות מערכת התוכנה

.החליטו על מבנה מערכת התוכנה

.תארו את מרכיבי התוכנה העיקריים

Page 19: תכנות פרוצדורלי -  I

משימה שלישית - בקבוצות

חברת התוכנה שלכם קבלה פרויקט בשם

"תקשוב שדה תעופה".

כל קבוצה בוחרת מודול )רכיב( אחד ומעדנת את

תיאורו.

Page 20: תכנות פרוצדורלי -  I

מתודולוגיות העוזרות להתגבר על סיבוכיות קוגניטיבית

הפשטה(abstraction)

פיתוח מלמעלה למטה(top-down development)

עידון הדרגתי(successive refinement)

הסבירו במשפט אחד או שניים

כל אחת מהמתודולוגיות.

Page 21: תכנות פרוצדורלי -  I

מתודולוגיות מרכזיות

.סיבוכיות הולכת וגדלה של פיתוח תוכניות מחשב

:במדעי המחשב

אסטרטגיות פיתוח, העוזרות להתגבר על

סיבוכיות זו, הן חלק מהדיספלינה של מדעי

.המחשב