Presentation is loading. Please wait.

Presentation is loading. Please wait.

מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.

Similar presentations


Presentation on theme: "מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה."— Presentation transcript:

1 מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה

2 מבוא למדעי המחשב © אריק פרידמן 2 המטרה העברת מערך כפרמטר לפונקציה לא מעתיקים את המערך (by value), אלא מעבירים את הכתובת שלו. הדרך

3 מבוא למדעי המחשב © אריק פרידמן 3 הדוגמה – פונקציה לחישוב ציון ממוצע מה שרוצים : מקבלת מערך של מספרים עשרוניים כקלט מחזירה את הממוצע שלהם

4 מבוא למדעי המחשב © אריק פרידמן4 הפונקציה : double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); הקריאה לפונקצה תתבצע כך:

5 מבוא למדעי המחשב © אריק פרידמן5 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); 2040 2032 2024 2016 2008 2000 grades מקצים זיכרון למערך grades

6 מבוא למדעי המחשב © אריק פרידמן6 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); 91 65 98 86 74 2040 2032 2024 2016 2008 2000 grades מאתחלים את המערך

7 מבוא למדעי המחשב © אריק פרידמן7 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 קריאה לפונקציה 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000

8 מבוא למדעי המחשב © אריק פרידמן8 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 הקצאת משתנים0? 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

9 מבוא למדעי המחשב © אריק פרידמן9 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; i=0 for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 אתחול הלולאה 00 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

10 מבוא למדעי המחשב © אריק פרידמן10 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; i<n for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 התנאי מתקיים 0 0 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

11 מבוא למדעי המחשב © אריק פרידמן11 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 גוף הלולאה74 0 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

12 מבוא למדעי המחשב © אריק פרידמן12 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; ++i for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 קידום 741 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

13 מבוא למדעי המחשב © אריק פרידמן13 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; i<n for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 התנאי מתקיים 74 1 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

14 מבוא למדעי המחשב © אריק פרידמן14 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 גוף הלולאה160 1 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

15 מבוא למדעי המחשב © אריק פרידמן15 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; ++i for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 קידום 1602 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

16 מבוא למדעי המחשב © אריק פרידמן16 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; i<n for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 התנאי מתקיים 160 2 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

17 מבוא למדעי המחשב © אריק פרידמן17 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 גוף הלולאה258 2 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

18 מבוא למדעי המחשב © אריק פרידמן18 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; ++i for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 קידום 2583 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

19 מבוא למדעי המחשב © אריק פרידמן19 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; i<n for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 התנאי מתקיים 258 3 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

20 מבוא למדעי המחשב © אריק פרידמן20 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 גוף הלולאה323 3 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

21 מבוא למדעי המחשב © אריק פרידמן21 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; ++i for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 קידום 3234 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

22 מבוא למדעי המחשב © אריק פרידמן22 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; i<n for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 התנאי מתקיים 323 4 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

23 מבוא למדעי המחשב © אריק פרידמן23 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 גוף הלולאה414 4 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

24 מבוא למדעי המחשב © אריק פרידמן24 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; ++i for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 קידום 4145 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

25 מבוא למדעי המחשב © אריק פרידמן25 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; i<n for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 התנאי לא מתקיים 414 5 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

26 מבוא למדעי המחשב © אריק פרידמן26 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 מוחזר 82.8. הפונקציה מסתיימת. הזיכרון בו השתמשה משוחרר. 414 5 2056 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 5 2000 i sum

27 מבוא למדעי המחשב © אריק פרידמן27 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades, 5); … 91 65 98 86 74 המשתנה avg מקבל את הערך 82.8. 2040 2032 2024 2016 2008 2000 grades

28 מבוא למדעי המחשב © אריק פרידמן28 בלי לשנות את הפונקציה... double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades+2, 3); מה היה קורה אם היינו משנים את הקריאה באופן הבא?

29 מבוא למדעי המחשב © אריק פרידמן29 איך זה רץ... double average(double *grades, int n) { int i; double sum=0; for (i=0; i<n; ++i) { sum += grades[i]; } return sum/n; } double grades[5]; … (scanf, etc.) avg = average(grades+2, 3); … 91 65 98 86 74 קריאה לפונקציה 2054 2052 2048 grades n 2040 2032 2024 2016 2008 2000 grades 3 2016


Download ppt "מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה."

Similar presentations


Ads by Google