תכנות תרגול 5 שבוע : 27.11.05. הגדרת פונקציות return-value-type...

24
ללללל ללללל ללללל ללללל5 5 לללל לללל: : 27.11.05 27.11.05
  • date post

    21-Dec-2015
  • Category

    Documents

  • view

    245
  • download

    6

Transcript of תכנות תרגול 5 שבוע : 27.11.05. הגדרת פונקציות return-value-type...

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

55 תכנות תרגולתכנות תרגול

::שבועשבוע

27.11.0527.11.05

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

הגדרת פונקציותהגדרת פונקציות

return-value-typereturn-value-type function-name( function-name(parameter1parameter1, , parameter2parameter2, …), …)

הגדרת סוג הערכים שהפונקציהמחזירה

שם הפונקציה רשימת הערכים שהפונקציהמקבלת

f(x) = x^2f(x) = x^2נממש את הפונקציה נממש את הפונקציה דוגמא:דוגמא:

doubledouble sqr( sqr(double x)double x)

{{

return x*x;return x*x;

}}

הגדרת הפונקציה

גוף הפונקציה

{Function body return-value

}

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

הכרזה על פונקציותהכרזה על פונקציות

return-value-typereturn-value-type function-name( function-name(parameter1parameter1, , parameter2parameter2, …), …);;

הגדרת סוג הערכים שהפונקציהמחזירה

שם הפונקציה הערכים שהפונקציה סוגי רשימת מקבלת

הכרזה על פונקציה בצורה כזו מעל לקטע הקוד הראשי של התוכנית הכרזה על פונקציה בצורה כזו מעל לקטע הקוד הראשי של התוכנית

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

doubledouble sqr( sqr(double );double );

intint minimum( minimum( intint, , intint, , intint ); );

int main()int main()

{{

}}

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

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

intint minimum( minimum( intint x, x, intint y, y, intint z ) z )

{{

int int minmin = x; = 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;

}}

משתנה מקומי שמוכר רקבתוך הפונקציה

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

שימוש בפונקציותשימוש בפונקציות

int main()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", printf( "Min is: %d\n", minimumminimum( ( a, b, ca, b, c ) ); ) );

return 0;return 0;

}}

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

שימוש בפונקציותשימוש בפונקציותint main()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 = min = minimumminimum( ( a, b, ca, b, c ); );

printf( "Min is: %d\n", min);printf( "Min is: %d\n", min);

return 0;return 0;

}}

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

חישוב ערכים באמצעות לולאות חישוב ערכים באמצעות לולאות

:נתון הסכום הבא

i = 1

n

(-1)i+14

2i -1

נכתוב פונקציה שמחשבת אותו

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

תרגילתרגיל

כתוב פונקציה המקבלת כקלט את הדיוק המבוקש של כתוב פונקציה המקבלת כקלט את הדיוק המבוקש של

החישוב.החישוב.

הדרכה:הדרכה:

זוהי הכרזת הפונקציה:זוהי הכרזת הפונקציה:double calc_something(double eps)double calc_something(double eps){{}}

(-1)i+14

2i -1< eps הפונקציה תרוץ עד שיתקיים

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

תרגיל - פתרוןתרגיל - פתרוןdouble calc_something(double eps)double calc_something(double eps){{

int i=1,key=1;int i=1,key=1;double result = 0,expr;double result = 0,expr;dodo{{

expr = 4.00/(2*i-1);expr = 4.00/(2*i-1);result = result + key*expr;result = result + key*expr;i++;i++;key *= -1;key *= -1;

}while (expr > eps);}while (expr > eps);return result;return result;

}}

הפונקציה

הדיוק

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

דוגמאדוגמא

כתבו את הפונקציות הבאות:

int IsAlpha(char ch)

int IsDigit(char ch)

מקבלת תו ומחזירה אחד אם הוא אות ואפס אם לא

מקבלת תו ומחזירה אחד אם הוא סיפרה ואפס אם לא

כתוב תוכנית שמקבלת רצף של תווים ומדפיסה כמה אותיות היו ברצף וכמה

ספרות היו ברצף.

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

הפונקציותהפונקציות

int IsAlpha(char ch){ return (('a'<=ch && ch<='z')||('A'<=ch && ch<='Z'));}

int IsDigit(char ch){ return ('0' <= ch && ch <= '9');}

אות קטנה אות גדולה

סיפרה

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

void main(){

int digit = 0, alpha = 0;char ch;scanf("%c", &ch);while( ch != '\n'){

if (IsAlpha(ch) == 1)alpha++;

elseif (IsDigit(ch) == 1)

digit++;scanf("%c", &ch);

}printf("Alpha %d Digit %d\n", alpha, digit);

}

ספירת אותיות

ספירת ספרות

התוכניתהתוכנית

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

תרגילתרגיל

כתבו את תוכנית הבאה:

קלטו רצף של תווים והדפיסו אותו כך שכל אות קטנה הופכת לגדולה וכל אות גדולה

לקטנה. אם התו הוא לא אות הוא יודפס ללא abCdE12קלט: שינוי. ABcDe12פלט:

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

הפונקציותהפונקציות

int IsBigAlpha(char ch){ return ('A'<=ch && ch<='Z');}

int IsSmallAlpha(char ch){ return ('a'<=ch && ch<='z');}

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

void main(){

char ch;scanf("%c", &ch);while( ch != '\n'){

if (IsBigAlpha(ch) == 1)ch = ch + 32;

elseif (IsSmallAlpha(ch) == 1)

ch = ch - 32;printf("%c",ch);scanf("%c", &ch);

}printf("\n");return 0;

}

התוכניתהתוכנית

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

ee חישוב חישוב

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

1 + 1n

n

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

#include <stdio.h>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 קביעת

הביטוי:

העלאה בחזקה:

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

eexxחישוב חישוב

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

1 + xn

n

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

הפונקציההפונקציה

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;

}

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

תרגילתרגיל

שורש של מספר מחושב לפי הסדרה הבאה:

root0 = 1rootn = rootn-1 + a / rootn-1

2

של הסדרה הוא קירוב nכאשר האיבר ה- גדל.n. הקירוב משתפר ככל ש-aלשורש של

כתוב פונקציה המקבלת מספר ומחשבת את השורש שלו לפי סדרה זו.

:תנאי העצירה של החישוב יהיה כאשרrootn == rootn-1

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

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

}

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

הגדרת משתניםהגדרת משתנים

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

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

33תרגיל תרגיל

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

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

33פתרון תרגיל פתרון תרגיל

int count(){

static int i=0;return ++i;

}