Download presentation
Presentation is loading. Please wait.
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
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.