תכנות תרגול 6 שבוע : 26.4.06. הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.

Slides:



Advertisements
Similar presentations
מבוא למדעי המחשב לתעשייה וניהול
Advertisements

מבוא למדעי המחשב לתעשייה וניהול דוגמאות ותרגול נוסף במערך חד ממדי הרצאה 12.
Pointers הרצאה קריטית. השאלות הפתוחות מה זה ה- & שמופיע ב scanf מדוע כשמעבירים מחרוזת ל scanf אין צורך ב & האם ניתן להכריז על מערך שגדלו אינו ידוע בתחילת.
מבוא כללי למדעי המחשב תרגול 1. כתיבת התוכנה כתיבת התוכנית עצמה נעשית ע " י כתיבת קובץ טקסט רגיל אשר תוכנו מקיים את כללי שפת C כתיבת התוכנית עצמה נעשית.
תכנות מונחה עצמים 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 חידות ונקודות חשובות נכתב על-ידי יורי פקלני. © כל הזכויות שמורות לטכניון – מכון טכנולוגי לישראל.
11 Introduction to Programming in 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 דוא " ל :
מבוא למדעי המחשב © אריק פרידמן 1 מצביעים כמערכים דוגמה.
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 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 תרגול
תכנות תרגול 5 שבוע : לולאות for לולאות for for (counter=1 ;counter
מערכים מבוא לתכנות למנע"ס - שבוע מספר 8 - מאיר קומר - סמסטר ב' - תשס"ו והנה בעיה כתוב תוכנית אשר תקלוט 36 מספרים ותדפיס כמה מתוכם גדולים יותר מהממוצע.
תכנות תרגול 14 שבוע : רשימות מקושרות ישנו מבנה נתונים אשר מאפשר ישנו מבנה נתונים אשר מאפשר לנו לבצע את הוספת האיברים בצורה נוחה יותר. מבנה זה.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
מבוא כללי למדעי המחשב תרגול 5. חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
מבוא למדעי המחשב תרגול 6 - מערכים שעת קבלה : יום שני 11:00-12:00 דוא " ל :
תכנות תרגול 7 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא ידעו.
תכנות תרגול 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 דוא " ל :
Last time on Clang משתנה: "פתק" המשמש את המחשב לשמירת מידע. לכל משתנה יש שם וטיפוס כללים לשמות משתנים –חייבים להכיל רק אותיות, מספרים ו '_' –חייבים להתחיל.
פונקציות תכנות בשפת סי תרגול 6.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מבוא למדעי המחשב תרגול 9 – מערכים ומחרוזות, תרגילי חזרה שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב תרגול 5 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
תכנות תרגול 8 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא.
תכנות תרגול 1 שבוע : צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. דואר אלקטרוני :
Structure. מה לומדים היום ? דרך לבנות מבנה נתונים בסיסי – Structure מייצר " טיפוס " חדש מתאים כאשר רוצים לאגד כמה משתנים יחד דוגמאות : עובד : שם, טלפון,
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
1 מבוא למחשב שפת C תרגילי חזרה. 2 תרגיל 1 : מחשבון קלט : תרגיל חשבוני המורכב ממספרים שלמים עם פעולות חשבוניות ביניהם. התרגיל מסתיים ב =. אפשריים רווחים.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 12. ספריות.
מבנה נתונים ואלגוריתמים ) לשעבר - עיבוד מידע( ד"ר אבי רוזנפלד ד"ר אריאלה ריכרדסון.
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];
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Programming Arrays.
מבוא למדעי המחשב סיבוכיות.
מ- JAVA ל- C קרן כליף.
מצביעים קרן כליף.
הקצאות דינאמיות קרן כליף.
פונקציות קרן כליף.
פונקציות קרן כליף.
פונקציות קרן כליף.
מערכים ומטריצות קרן כליף.
מבוא כללי למדעי המחשב תרגול 4
תרגול 8 תחומי הכרה פונקציות
מבוא כללי למדעי המחשב תרגול 6
שאלות מבחינות קודמות יואב ציבין.
Presentation transcript:

תכנות תרגול 6 שבוע :

הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת הערכים שהפונקציה מקבלת דוגמא : נממש את הפונקציה f(x) = x^2 double sqr(double x) { return x*x; } הגדרת הפונקציה גוף הפונקציה { Function body return-value }

הכרזה על פונקציות return-value-type function-name(parameter1, parameter2, …); הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת סוגי הערכים שהפונקציה מקבלת הכרזה על פונקציה בצורה כזו מעל לקטע הקוד הראשי של התוכנית מאפשרת לנו להשתמש בפונקציה בכל מקום. double sqr(double ); int minimum( int, int, int ); int main() {}

פונקציות - דוגמא נוספת נממש את הפונקציה שמוצאת את המינימום בין שלושה מספרים : int minimum( int x, int y, int z ) { int min = x; int min = x; if ( y < min ) if ( y < min ) min = y; min = y; if ( z < min ) if ( z < min ) min = z; min = z; return min; return min;} משתנה מקומי שמוכר רק בתוך הפונקציה

שימוש בפונקציות int main() { int a, b, c; int a, b, c; printf( "Enter three integers: " ); printf( "Enter three integers: " ); scanf( "%d%d%d", &a, &b, &c ); scanf( "%d%d%d", &a, &b, &c ); printf( "Min is: %d\n", minimum( a, b, c ) ); printf( "Min is: %d\n", minimum( a, b, c ) ); return 0; return 0;}

שימוש בפונקציות int main() { int a, b, c, min; int a, b, c, min; printf( "Enter three integers: " ); printf( "Enter three integers: " ); scanf( "%d%d%d", &a, &b, &c ); scanf( "%d%d%d", &a, &b, &c ); min = minimum( a, b, c ); min = minimum( a, b, c ); printf( "Min is: %d\n", min); printf( "Min is: %d\n", min); return 0; return 0;}

העברת הערכים משתמש a b c45 2 x y z main minimum

תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה -n של הסדרה הוא קירוב לשורש של a. הקירוב משתפר ככל ש -n גדל. כתוב פונקציה המקבלת מספר ומחשבת את השורש שלו לפי סדרה זו. תנאי העצירה של החישוב יהיה כאשר : root n == root n-1

פתרון double MySqrt(int num) { double root, root_n = 1.0; do { root = root_n; root_n = (root + num / root) / 2; }while(root_n != root); return root; }

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

פתרון ( בלי מערכים ) void main() { int a1,a2,a3,…,a100; int a1,a2,a3,…,a100; scanf(“%d %d %d,…”,a1,a2,a3,…); scanf(“%d %d %d,…”,a1,a2,a3,…); printf(“%d %d %d,…”,a100,a99,a98,…); printf(“%d %d %d,…”,a100,a99,a98,…);} אל תנסו בבית !!!

מערכים int a; a=5; int a[10]; a[2] = 5; 5 a a[0] a[1] a[2] a[9]  5 משתנה בודד מערך גישה למשתנה השלישי במערך

void main() { int i=0; int i=0; int a[100]; int a[100]; for (i=0;i<100;i++) for (i=0;i<100;i++) scanf (“%d”,&a[i]); scanf (“%d”,&a[i]); for (i=99;i>=0;i--) for (i=99;i>=0;i--) printf (“%d”,a[i]); printf (“%d”,a[i]);} קלט פלט

תרגיל כתוב תוכנית הקולטת 10 איברים לתוך מערך ומדפיסה תחילה את כל האיברים הזוגיים ואחר כך את כל האיברים האי זוגיים Enter numbers Even: Odd:

#include #include #define SIZE 10 void main() { int i,arr[SIZE]; printf("Enter numbers\n"); for (i=0;i<SIZE;i++) scanf("%d",&arr[i]);printf("Even:\n"); if (arr[i] % 2 == 0) printf("%d ",arr[i]); printf("\nOdd:\n"); for (i=0;i<SIZE;i++) if (arr[i] % 2 != 0) printf("%d ",arr[i]); printf("\n");} קלט פלט

מערכים - אתחול int a[10] = {1,2,3}; int a[10] = {0}; a[0] a[1] a[2] a[9]  a[0] a[1] a[2] a[9] 

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

#define SIZE_A 10 int main() { int i,A[SIZE_A],x; for (i = 0; i < SIZE_A; i++) scanf(“%d”,&A[i])scanf(“%d”,&x); if ( A[i]== x ) printf(“%d appears in %d”,x,i); }

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

קלט פלט 4-6 a b

#define SIZE_A 10 #define SIZE_B 3 int main() { int i, j; int A[SIZE_A],B[SIZE_B]; for (i = 0; i <= SIZE_A – SIZE_B; i++) { for (j = 0; j < SIZE_B; ++j) if ( A[i + j] != B[j] ) break; if (j == SIZE_B) printf(“Range %d-%d”,i,i + SIZE_B); }}

מספרים אקראיים ניתן לייצר מספרים אקראיים ע " י הפונקציה ניתן לייצר מספרים אקראיים ע " י הפונקציה int rand(void); הפונקציה מייצרת מספר אקראי שלם בתחום 0 עד RAND_MAX הפונקציה מייצרת מספר אקראי שלם בתחום 0 עד RAND_MAX מובטח ש -RAND_MAX הוא לפחות 32,767 מובטח ש -RAND_MAX הוא לפחות 32,767 הפונקציה מוגדרת ב -stdlib.h הפונקציה מוגדרת ב -stdlib.h

דוגמאות יצירת מספר אקראי שלם בין 0 ל -19 ( כולל ): יצירת מספר אקראי שלם בין 0 ל -19 ( כולל ): rand() % 20 יצירת מספר אקראי שלם בין 10 ל -20 ( כולל ): יצירת מספר אקראי שלם בין 10 ל -20 ( כולל ): rand() % יצירת מספר אקראי ממשי בתחום [0,1]: יצירת מספר אקראי ממשי בתחום [0,1]: (double) rand() / RAND_MAX

יצירת מספרים אקראיים - אתחול אנו מעוניינים שבכל ריצה של התוכנית תיווצר סדרה שונה של מספרים אקראיים. אנו מעוניינים שבכל ריצה של התוכנית תיווצר סדרה שונה של מספרים אקראיים. את נקודת ההתחלה, ה -seed, ניתן לקבוע ע " י הפונקציה הבאה המוגדרת ב -stdlib.h: את נקודת ההתחלה, ה -seed, ניתן לקבוע ע " י הפונקציה הבאה המוגדרת ב -stdlib.h: void srand(unsigned int seed); כדי שה -seed יהיה שונה בכל ריצה, יש לכתוב בתחילת התוכנית את הפקודה הבאה : כדי שה -seed יהיה שונה בכל ריצה, יש לכתוב בתחילת התוכנית את הפקודה הבאה :srand(time(NULL)); כאשר הפונקציה time() מוגדרת ב -time.h

תרגיל כתוב תוכנית המדפיסה 7 מספרים אקראיים שלמים בתחום 5 עד 50 ( כולל ), ואח " כ מדפיסה שלמים בתחום 5 עד 50 ( כולל ), ואח " כ מדפיסה 7 מספרים אקראיים ממשיים בתחום [0,1]. 7 מספרים אקראיים ממשיים בתחום [0,1]. דוגמה לפלט :

#include #include int rand_int() { return rand() % ; return rand() % ;} double rand_real() { return (double) rand() / RAND_MAX; return (double) rand() / RAND_MAX;} פתרון

פתרון - המשך int main() { int k; int k; srand(time(NULL)); srand(time(NULL)); for ( k=0; k<7; k++ ) for ( k=0; k<7; k++ ) printf("%d\n",rand_int()); printf("%d\n",rand_int()); for ( k=0; k<7; k++ ) for ( k=0; k<7; k++ ) printf("%lf\n",rand_real()); printf("%lf\n",rand_real()); return 0; return 0;}

מערכים נכתוב תוכנית שזורקת קובייה 6000 פעמיים ונספור כמה פעמיים יצא כל מספר.

#include #include #define SIZE 7 int main() { int num, face, roll, frequency[ SIZE ] = { 0 }; int num, face, roll, frequency[ SIZE ] = { 0 }; scanf("%d",&num); scanf("%d",&num); srand( num ); srand( num ); for ( roll = 1; roll <= 6000; roll++ ) { for ( roll = 1; roll <= 6000; roll++ ) { face = rand() % 6 + 1; face = rand() % 6 + 1; ++frequency[ face ]; ++frequency[ face ]; } printf( "%s%17s\n", "Face", "Frequency" ); printf( "%s%17s\n", "Face", "Frequency" ); for ( face = 1; face <= SIZE - 1; face++ ) for ( face = 1; face <= SIZE - 1; face++ ) printf( "%4d%17d\n", face, frequency[ face ] ); printf( "%4d%17d\n", face, frequency[ face ] ); return 0; return 0;}