Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


Presentation on theme: "תכנות תרגול 5 שבוע : 27.11.05. הגדרת פונקציות return-value-type function-name(parameter1, parameter2, …) הגדרת סוג הערכים שהפונקציה מחזירה שם הפונקציהרשימת."— Presentation transcript:

1 תכנות תרגול 5 שבוע : 27.11.05

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

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

4 פונקציות - דוגמא נוספת נממש את הפונקציה שמוצאת את המינימום בין שלושה מספרים : 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;} משתנה מקומי שמוכר רק בתוך הפונקציה

5 שימוש בפונקציות 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;}

6 שימוש בפונקציות 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;}

7 חישוב ערכים באמצעות לולאות נתון הסכום הבא :  i = 1 n (-1) i+1 4 2i -1 נכתוב פונקציה שמחשבת אותו

8 תרגיל כתוב פונקציה המקבלת כקלט את הדיוק המבוקש של החישוב. הדרכה : זוהי הכרזת הפונקציה : double calc_something(double eps) {} (-1) i+1 4 2i -1 < eps הפונקציה תרוץ עד שיתקיים

9 תרגיל - פתרון double calc_something(double eps) { int i=1,key=1; double result = 0,expr; do{ expr = 4.00/(2*i-1); result = result + key*expr; i++; key *= -1; }while (expr > eps); return result; } הפונקציה הדיוק

10 דוגמא כתבו את הפונקציות הבאות : int IsAlpha(char ch) int IsDigit(char ch) מקבלת תו ומחזירה אחד אם הוא אות ואפס אם לא מקבלת תו ומחזירה אחד אם הוא סיפרה ואפס אם לא כתוב תוכנית שמקבלת רצף של תווים ומדפיסה כמה אותיות היו ברצף וכמה ספרות היו ברצף.

11 הפונקציות int IsAlpha(char ch) { return (('a'<=ch && ch<='z')||('A'<=ch && ch<='Z')); } int IsDigit(char ch) { return ('0' <= ch && ch <= '9'); } אות קטנהאות גדולה סיפרה

12 void main() { int digit = 0, alpha = 0; char ch; scanf("%c", &ch); while( ch != '\n') { if (IsAlpha(ch) == 1) alpha++; else if (IsDigit(ch) == 1) digit++; scanf("%c", &ch); } printf("Alpha %d Digit %d\n", alpha, digit); } ספירת אותיות ספירת ספרות התוכנית

13 תרגיל כתבו את תוכנית הבאה : קלטו רצף של תווים והדפיסו אותו כך שכל אות קטנה הופכת לגדולה וכל אות גדולה לקטנה. אם התו הוא לא אות הוא יודפס ללא שינוי. קלט : abCdE12 פלט : ABcDe12

14 הפונקציות int IsBigAlpha(char ch) { return ('A'<=ch && ch<='Z'); } int IsSmallAlpha(char ch) { return ('a'<=ch && ch<='z'); }

15 void main() { char ch; scanf("%c", &ch); while( ch != '\n') { if (IsBigAlpha(ch) == 1) ch = ch + 32; else if (IsSmallAlpha(ch) == 1) ch = ch - 32; printf("%c",ch); scanf("%c", &ch); } printf("\n" ); return 0; }התוכנית

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

17 #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 = 1 + 1 / (double)last; for(i = 1; i <= last; i++) e *= mul; return e; } קביעת n הביטוי : העלאה בחזקה :

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

19 הפונקציה 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; }

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

21 פתרון 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; }

22 הגדרת משתנים הגדרות אפשריות : משתנה מקומי משתנה סטטי משתנה גלובלי

23 תרגיל 3 כתוב פונקציה שהערך שהיא מחזירה הוא כמה פעמים קראו לה

24 פתרון תרגיל 3 int count() { static int i=0; return ++i; }


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

Similar presentations


Ads by Google