מבוא כללי למדעי המחשב תרגול 5. חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה. 1 + 1 n n.

Slides:



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

מבוא למדעי המחשב לתעשייה וניהול דוגמאות ותרגול נוסף במערך חד ממדי הרצאה 12.
מבוא כללי למדעי המחשב תרגול 1. כתיבת התוכנה כתיבת התוכנית עצמה נעשית ע " י כתיבת קובץ טקסט רגיל אשר תוכנו מקיים את כללי שפת C כתיבת התוכנית עצמה נעשית.
מבוא למדעי המחשב תרגול 2 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
רקורסיות נושאי השיעור פתרון משוואות רקורסיביות שיטת ההצבה
תכנות תרגול 7 שבוע : מערכים עד היום התוכניות שלנו לא ידעו לשמור כמות גדולה של מידע ללא הגדרת כמות גדולה של משתנים. עד היום התוכניות שלנו לא.
תכנות תרגול 6 שבוע : חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n.
תרגול 5 רקורסיות. רקורסיה קריאה של פונקציה לעצמה –באופן ישיר או באופן עקיף היתרון : תכנות של דברים מסובכים נעשה ברור ונוח יותר, מכיוון שזו למעשה צורת.
תכנות תרגול 4 שבוע : לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
רקורסיות נושאי השיעור מהן רקורסיות פתרון רקורסיות : שיטת ההצבה שיטת איטרציות שיטת המסטר 14 יוני יוני יוני 1514 יוני יוני יוני 1514.
תכנות תרגול 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 תרגול
תכנות תרגול 6 שבוע : הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת.
מבוא כללי למדעי המחשב שיעור 5
תכנות תרגול 2 שבוע : צור קשר מתרגל – שי גוטנר, ביה " ס למדעי המחשב. מתרגל – שי גוטנר, ביה " ס למדעי המחשב. דואר אלקטרוני : דואר.
תכנות תרגול 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
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
תכנות תרגול 12 שבוע : הקצאת זיכרון דינאמית הזיכרון המקסימאלי ששימש את התוכנית שלנו עד היום היה קבוע מראש. לפני הרצת התוכנית, לאחר שהתוכנית עברה.
מבני בקרה לולאות. שאלה #1 שאלה ב' – תכתוב תוכנה הכותבת את תפריט הבאה Type 1 to find the area of a circle Type 2 to find the circumference of a circle.
מבוא למדעי המחשב תרגול מספר.
תכנות תרגול 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
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
מבוא למדעי המחשב תרגול 9 – מערכים ומחרוזות, תרגילי חזרה שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא כללי למדעי המחשב תרגול 7. מבנים מטרת המבנים היא לאפשר למתכנת להגדיר טיפוסי משתנים חדשים אשר מתאימים ספציפית לבעיה שאותה התוכנית פותרת. מטרת המבנים.
מבוא למדעי המחשב תרגול 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 שבוע : צור קשר מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. מתרגל – ליעם רודיטי, ביה " ס למדעי המחשב. דואר אלקטרוני :
1 מבוא למדעי המחשב רקורסיה. 2 רקורסיה היא שיטה לפתרון בעיות המבוססת על העיקרון העומד ביסוד אינדוקציה מתמטית: אם ידועה הדרך לפתור בעיה עבור המקרים הבסיסיים.
תרגיל כיתה 7 מבוא לטכנולוגיות מחשב CPE. – 2 – ארכיטקטורה של מעבד מודרני Execution Functional Units Instruction Control Integer/ Branch FP Add FP Mult/Div.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
1 מבוא למחשב שפת C תרגילי חזרה. 2 תרגיל 1 : מחשבון קלט : תרגיל חשבוני המורכב ממספרים שלמים עם פעולות חשבוניות ביניהם. התרגיל מסתיים ב =. אפשריים רווחים.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 12. ספריות.
1 Formal Specifications for Complex Systems (236368) Tutorial #1 Course site:
1 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
Programming Arrays.
Formal Specifications for Complex Systems (236368) Tutorial #1
הרצאה 3: משפטים, תנאים ולולאות
מבוא למדעי המחשב סיבוכיות.
רקורסיות קרן כליף.
רקורסיות קרן כליף.
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
ניתוח זמן ריצה (על קצה המזלג)
מבוא כללי למדעי המחשב תרגול 4
תרגול 8 תחומי הכרה פונקציות
שאלות מבחינות קודמות יואב ציבין.
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
מבוא לתכנות ב- Java תרגול 10 - רשימות מקושרות.
Presentation transcript:

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

חישוב e זוהי הנוסחא לחישוב e נראה כיצד לתרגם אותה לפונקציה n n

#include double CalcE(int last); int main() { int last; printf("Enter number of iterations\n"); scanf("%d", &last); printf("%lf\n", CalcE(last)); } double CalcE(int last) { int i; double e = 1, mul = / (double)last; for(i = 1; i <= last; i++) e *= mul; return e; } קביעת n הביטוי : העלאה בחזקה :

חישוב e x כתוב פונקציה המקבלת את n ואת x ומחשבת את e x באמצעות הנוסחה 1 + x n n

הפונקציה double CalcE(int last,int power) { int i; double e = 1; double mul = 1 + power / (double)last; for(i = 1; i <= last; i++) e *= mul; return e; }

תרגיל שורש של מספר מחושב לפי הסדרה הבאה : 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; }

מספרים אקראיים ניתן לייצר מספרים אקראיים ע " י הפונקציה ניתן לייצר מספרים אקראיים ע " י הפונקציה 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;}

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

#include #include double rand_real() { return (double) rand() / RAND_MAX; } int main() { intall = 0,good = 0; doublex,y,temp; srand(time(NULL));

while (1) { x = rand_real(); x = rand_real(); y = rand_real(); y = rand_real(); if ( x > y ) { if ( x > y ) { temp = x; x = y; y = temp; } if ( x >= 0.5 || y - x >= 0.5 || 1 - y >= 0.5 ) good++;all++; if ( all % == 0 ) printf("%d / %d = %lf\n", good,all,(double) good/all); } return 0; }

מספרים מושלמים מספר יקרא מושלם אם הוא שווה לסכום מחלקיו. מספר יקרא מושלם אם הוא שווה לסכום מחלקיו. דוגמאות : דוגמאות : 6 = = כתבו תוכנית הקוראת מספר שלם n ומדפיסה את כל המספרים המושלמים מ -1 עד n ( כולל ). כתבו תוכנית הקוראת מספר שלם n ומדפיסה את כל המספרים המושלמים מ -1 עד n ( כולל ). התוכנית צריכה להיות יעילה ככל האפשר מבחינת זמן ריצה. התוכנית צריכה להיות יעילה ככל האפשר מבחינת זמן ריצה.

פתרון #include int sum_of_dividers(int n) { intk,sum = 1; for ( k = 2; k * k <= n; k++ ) if ( k * k == n ) sum += k; else if ( n % k == 0 ) sum += k + n / k; return sum; }

פתרון - המשך int main() { intn,k; scanf("%d",&n); for ( k = 2; k <= n; k++ ) if ( sum_of_dividers(k) == k ) printf("%d\n",k); return 0; }

רקורסיות דני יוסי שמעון אבנר רמי נתון בניין רב קומות וכל שכן יכול לדבר רק עם זה שמעליו וזה שמתחתיו. אנחנו מבקשים מרמי את רשימת הדיירים בבניין דני דני, יוסי דני, יוסי, שמעון דני, יוסי, שמעון, אבנר דני, יוסי, שמעון, אבנר, רמי רמי, תן לנו את רשימת הדיירים של הבניין

רקורסיות חישוב עצרת n ! = n* (n-1) * … * 1 int factorial(int n) { if (n==0) return 1; return n*factorial(n-1); } int factorial(int n) { intfact =1; while (n >= 1) { fact *=n; n--; } return fact; } n ! = n * (n-1) ! 0 ! = 1

רקורסיות תרגיל : כתבו פונקציה המחשבת את הסכום sum(n) = sum(n-1) + n sum(1) = 1 רקורסיה

פתרון int sum(int n) { if (n==1) return 1; return n+sum(n-1); }

רקורסיות חישוב חזקה ברקורסיה int power(int x, int y) { if (y == 0) return 1; return x * power(x, y -1); }

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

רקורסיות פתרון int mul(int x,int y) { if (y==1) return x; return x+mul(x,y-1); }

רקורסיות פתרון int div(int x,int y) { if (y>x) return 0; return 1 + div(x-y,y); }

רקורסיות סדרת פיבונאצ ' י נתונה הנוסחה הרקורסיבית הבאה: Fib(0) = 0Fib(1) = 1 Fib(n) = Fib(n-1) + Fib(n-2) הערכים של סדרה זאת הם: 0,1,1,2,3,5,8,13,… כתבו פונקציה לחישוב האיבר ה-n של סדרת פיבונאצ'י.

רקורסיות פונקציה רקורסיבית int fib_rec(int n) { if (n<= 1) return n; else return fib_rec(n-1) + fib_rec(n-2); }

רקורסיות פונקציה איטרטיבית int fib_iter(int n) { intprev1 = 0,prev2 = 1,current,count; for (count=0; count<n; count++ ) { current = prev1 + prev2; prev1 = prev2; prev2 = current; } return prev1; }

מערכים נכתוב תוכנית שזורקת קובייה 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;}