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

Slides:



Advertisements
Similar presentations
מבוא למדעי המחשב לתעשייה וניהול דוגמאות ותרגול נוסף במערך חד ממדי הרצאה 12.
Advertisements

Pointers הרצאה קריטית. השאלות הפתוחות מה זה ה- & שמופיע ב scanf מדוע כשמעבירים מחרוזת ל scanf אין צורך ב & האם ניתן להכריז על מערך שגדלו אינו ידוע בתחילת.
1 מבוא למדעי המחשב הקצאה דינאמית. 2 הקצאת זיכרון דינאמית  כאשר אנו משתמשים במערכים, אנו מקצים אוטומטית את הזיכרון המקסימלי שנצטרך.  בפועל, אנו משתמשים.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
מבוא למדעי המחשב תרגול 2 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תכנות תרגול 7 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא.
תכנות תרגול 9 שבוע : הקשר בין מערכים למצביעים נרצה לעמוד על הקשר בין מערך למצביע מאחר ומערכים הם הכללה של משתנים הרי שברור שלמערך ולכל אחד מאיבריו.
תכנות תרגול 6 שבוע : חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
מבוא לשפת C חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
מבוא למדעי המחשב תרגול 8 - מחרוזות שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא כללי למדעי המחשב תרגול. הבית האדום כתובת : רחוב קוקוריקו 2 הבית הירוק כתובת : רחוב קוקוריקו 4 הבית הצהוב כתובת : רחוב קוקוריקו 1 הבית הורוד כתובת.
תכנות תרגול 9 שבוע : מערכים int a; a=5; int a[10]; a[2] = 5; 5 a a[0] a[1] a[2] a[9]  5 משתנה בודד מערך גישה למשתנה השלישי במערך.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מבוא למדעי המחשב תרגול 4 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
אלגוריתמים, WINDOWS והחיים. מבוא למדעי המחשב - מאיר קומר - סמסטר א '- תשס " ט - שיעור מספר 7 מיוןsort.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מבוא כללי למדעי המחשב שיעור 5
תכנות – שיעור 7. חזרה -מערכים נגדיר בעזרתו קבוצת משתנים כאשר יהיה לנו מספר רב של משתנים זהים נגדיר בעזרתו קבוצת משתנים כאשר יהיה לנו מספר רב של משתנים.
תכנות תרגול 2 שבוע : צור קשר מתרגל – שי גוטנר, ביה " ס למדעי המחשב. מתרגל – שי גוטנר, ביה " ס למדעי המחשב. דואר אלקטרוני : דואר.
תכנות תרגול 14 שבוע:
תכנות תרגול 10 שבוע : הקשר בין מערכים למצביעים נרצה לעמוד על הקשר בין מערך למצביע מאחר ומערכים הם הכללה של משתנים הרי שברור שלמערך ולכל אחד מאיבריו.
תכנות תרגול 3 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
מבוא למדעי המחשב תרגול 6 - מערכים שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תכנות תרגול 7 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא ידעו.
Tutorials #4-#5 Controller + DataPath design – © Yohai Devir 2007 Technion - IIT.
תכנות תרגול 5 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מערכים עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר עד היום כדי לייצג 20 סטודנטים נאלצנו להגדיר int grade1, grade2, …, grade20; int grade1, grade2, …, grade20;
תכנות תרגול 4 שבוע : לולאות for לולאות for for (counter=1 ;counter
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
תוכנה 1 - תרגול שיעור 10 Pointers (2) שולי לב יהודי
מבוא כללי למדעי המחשב הקצאת זיכרון דינאמית
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מבוא למדעי המחשב תרגול 9 – מערכים ומחרוזות, תרגילי חזרה שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב תרגול 12 – הקצאת זיכרון דינאמית שעת קבלה : יום שני 11:00-12:00 דוא " ל :
Sscanf example #include int main () { char sentence []="Rudolph is 12 years old"; char str [20]; int i; sscanf (sentence,"%s %*s %d",str,&i); printf ("%s.
תכנות תרגול 8 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא.
1 מבוא למדעי המחשב רקורסיה. 2 רקורסיה היא שיטה לפתרון בעיות המבוססת על העיקרון העומד ביסוד אינדוקציה מתמטית: אם ידועה הדרך לפתור בעיה עבור המקרים הבסיסיים.
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
מבוא למדעי המחשב הרצאה 7: מבנים מבוסס על השקפים שנערכו שי ארצי, גיתית רוקנשטיין, איתן אביאור, וסאהר אסמיר, מיכאל אלעד, רון קימל וניר אילון עדכון אחרון.
מבנים קרן כליף. ביחידה זו נלמד :  מהו מבנה (struct)  איתחול מבנה  השמת מבנים  השוואת מבנים  העברת מבנה לפונקציה  מבנה בתוך מבנה  מערך של מבנים.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
1 מבוא למדעי המחשב הרצאה 5: פונקציות. 2 מבוא לפונקציות חלוקה של אלגוריתם לתת משימות: משימה - פונקציה: דוגמאות מציאת המקסימלי מבין שני איברים האינדקס של.
1 נתבונן בפונקציה הבאה public static int min(int[] a,int n) { int min = a[0]; for (int i = 1; (i < n ) && (i < a.length) ; i++) if (min > a[i]) min = a[i];
Programming Pointers. נדגים היום בעזרת מצביעים העברת משתנים לפונקציה שמשנה אותם  פונקציה שמקבלת מצביעים לסמן תא בזיכרון  פונקציה שמחזירה מצביע מערך.
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Programming Arrays.
מצביעים קרן כליף.
תירגול 14: מבני נתונים דינאמיים
תרגול 5 רקורסיות.
Introduction to Programming in C
מצביעים קרן כליף.
מבוא כללי למדעי המחשב פונקציות
הקצאת זיכרון דינאמית מבוא כללי למדעי המחשב
מבוא כללי למדעי המחשב תרגול 4
מבוא כללי למדעי המחשב תרגול 6
מערכים של מצביעים הקצאה דינאמית
Programming in C תרגול Introduction to C - Fall Amir Menczel.
תירגול 8:מצביעים והקצאה דינאמית
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

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

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

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

מבוא למדעי המחשב © אריק פרידמן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 איך זה רץ... 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); grades מקצים זיכרון למערך grades

מבוא למדעי המחשב © אריק פרידמן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); grades מאתחלים את המערך

מבוא למדעי המחשב © אריק פרידמן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); … קריאה לפונקציה grades n grades

מבוא למדעי המחשב © אריק פרידמן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); … הקצאת משתנים0? grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … אתחול הלולאה grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … התנאי מתקיים grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … גוף הלולאה grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … קידום grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … התנאי מתקיים grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … גוף הלולאה grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … קידום grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … התנאי מתקיים grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … גוף הלולאה grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … קידום grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … התנאי מתקיים grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … גוף הלולאה grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … קידום grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … התנאי מתקיים grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … גוף הלולאה grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … קידום grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … התנאי לא מתקיים grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … מוחזר הפונקציה מסתיימת. הזיכרון בו השתמשה משוחרר grades n grades i sum

מבוא למדעי המחשב © אריק פרידמן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); … המשתנה avg מקבל את הערך grades

מבוא למדעי המחשב © אריק פרידמן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 איך זה רץ... 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); … קריאה לפונקציה grades n grades