31
ללללל ללללל ללללל ללללל4 4 לללל לללל: : 20 20 . . 11 11 .05 .05

תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

  • View
    219

  • Download
    0

Embed Size (px)

Citation preview

Page 1: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

44 תכנות תרגולתכנות תרגול

::שבועשבוע

2020..1111.05.05

Page 2: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

forfor לולאות לולאות

for for (counter=1 ;counter<=7 ; counter+(counter=1 ;counter<=7 ; counter++ )+ )

{{

loop bodyloop body

}}

שם המשתנה שבאמצעותו נשלוט בלולאה

הערך שבו נאתחל אותו

התנאי שכל עוד הוא מתקיים נמשכת הלולאה

קידום משתנה הלולאה

אןמה ערכו של המשתנה כ ?

Page 3: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

forforשימושים נוספים ללולאות שימושים נוספים ללולאות

באמצעות לולאות נוכל לבצע חישובים מתמטים.באמצעות לולאות נוכל לבצע חישובים מתמטים.

למשל הדבר הבא: קלוט מספר מהמשתמש למשל הדבר הבא: קלוט מספר מהמשתמש

וקבע אם הוא ראשוני או לא!וקבע אם הוא ראשוני או לא!

Page 4: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

#include<stdio.h>#include<stdio.h>void main()void main(){{

int i,prime,sq;int i,prime,sq;printf("enter a number\n");printf("enter a number\n");scanf("%d", &prime);scanf("%d", &prime);sq = (int) sqrt(prime);sq = (int) sqrt(prime);for(i = 2 ; i <= sq; i++)for(i = 2 ; i <= sq; i++) if (prime % i == 0)if (prime % i == 0) {{ printf("%d not prime divided by %d \printf("%d not prime divided by %d \n",prime,i);n",prime,i); breakbreak;; }}if (i > sq ) printf("the number %d is prime\if (i > sq ) printf("the number %d is prime\n",prime); n",prime);

}}

הגדרת משתנים וקליטת .המספר מהמשתמש

גבול החיפוש

הלולאה למציאת מספר שמחלק .(אם קיים כזה)

Page 5: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

11תרגיל תרגיל

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

הראשונים עד אליו. הראשונים עד אליו.

Page 6: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

void main()void main(){{

int i,j,sq,last;int i,j,sq,last;printf("enter a number\n");printf("enter a number\n");scanf("%d", &last);scanf("%d", &last);for(i = 2; i <=for(i = 2; i <= lastlast; i++); i++){{

sq = (int) sqrt(i);sq = (int) sqrt(i);for(j = 2 ; j <= sq; j++)for(j = 2 ; j <= sq; j++)

if (i % j == 0)if (i % j == 0)break;break;

if (j > sq ) if (j > sq ) printf("the number %d is prime\n", printf("the number %d is prime\n",

i); i); }}

}}

בדיקת הראשוניות

חזרה עלהבדיקה עד

לקלט

Page 7: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

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

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 8: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

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

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;

}}

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

x

y

z

Page 9: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

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

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 10: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

שימוש בפונקציותשימוש בפונקציות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 11: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

העברת הערכיםהעברת הערכים

משתמש

44

55

22

a

b

c

44

55

22

x

y

z

mainminimum

Page 12: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

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

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 13: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

22תרגיל תרגיל אם הוא אם הוא 00כתוב פונקציה המקבלת מספר שלם ומחזירה כתוב פונקציה המקבלת מספר שלם ומחזירה

אם כן. הדרכה: אם כן. הדרכה:11לא ראשוני ולא ראשוני ו

void main()void main()

{{

if (IsPrime(if (IsPrime(77) == 1)) == 1)

printf(“printf(“77 is prime”); is prime”);

}}

int IsPrime(int p)int IsPrime(int p)

{{

}}

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

הפונקציה )השלימו את הגוף(?

Page 14: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

- המשך- המשך22תרגיל תרגיל

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

Page 15: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

- פתרון- פתרון22תרגיל תרגיל

int IsPrime(int num)int IsPrime(int num){{ int i, sq;int i, sq; sq = (int) sqrt(num);sq = (int) sqrt(num); for(i = 2 ; i <= sq; i++)for(i = 2 ; i <= sq; i++) {{ if (num % i == 0)if (num % i == 0) return 0;return 0; }} return 1;return 1;}}

הפונקציה

לולאה למציאת מחלקים

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

0במידה ונמצא אז להחזיר

אם הגענו לכאן אז אף מחלק לא נמצא והמספר ראשוני

Page 16: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

- פתרון- פתרון22תרגיל תרגיל

void main()void main(){{

int num, last;int num, last;printf("enter a number\n");printf("enter a number\n");scanf("%d", &last);scanf("%d", &last);for(num = 2; num <= last; num++)for(num = 2; num <= last; num++)

if (IsPrime(num) == 1)if (IsPrime(num) == 1)printf("%d is prime\n", num); printf("%d is prime\n", num);

}}

התוכנית הראשית

לולאה להדפסת כל הראשונים עד למספר שנקלט

בדיקת ראשוניות

Page 17: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

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

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

i = 1

n

(-1)i+14

2i -1

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

Page 18: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

חישוב הסכוםחישוב הסכום

double calc_something(int n)double calc_something(int n){{

int i,key=1;int i,key=1;double result = 0;double result = 0;for (i=1; i<=n ;i++)for (i=1; i<=n ;i++){{

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

}}return result;return result;

}}

הפונקציה

החישוב עצמו

Page 19: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

33תרגיל תרגיל

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

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

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

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

(-1)i+14

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

Page 20: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

- פתרון- פתרון33תרגיל תרגיל 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 21: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

Switch Switch וו CaseCase

ififדומה לקינון משפטי דומה לקינון משפטי •

מאפשר בחירה של אפשרויות רמות על בסיס מספר שלםמאפשר בחירה של אפשרויות רמות על בסיס מספר שלם•

• switch (switch (expressionexpression) {) {    case case const-exprconst-expr: :

statementsstatements    case case const-exprconst-expr: :

statementsstatements    ……    default:default:

statementsstatements}}

Page 22: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

The switch statementThe switch statement

הביטוי חייב להיות שלםהביטוי חייב להיות שלם•

הביטוי מוערך ומחפשים הביטוי מוערך ומחפשים switchswitchבעת ביצוע בעת ביצוע •casecase שמתאים לערך הביטוי. אם נמצא כזה שמתאים לערך הביטוי. אם נמצא כזה

--defaultdefaultקופצים אליו אם אין כזה קופצים לקופצים אליו אם אין כזה קופצים ל

Page 23: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

תרגום ציוןתרגום ציון

switch (grade/10) { switch (grade/10) { case 10: case 10: case 9: case 9:

printf ("A\n"); printf ("A\n"); break; break;

case 8: case 8: printf ("B\n"); printf ("B\n"); break; break;

case 7: case 7: printf ("C\n"); printf ("C\n"); break; break;

case 6: case 6: printf ("D\n"); printf ("D\n"); break; break;

default: default: printf ("F\n"); printf ("F\n");

} }

Page 24: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

BreakBreak

מוצא איפה להתחיל לפעול מוצא איפה להתחיל לפעול switchswitchכאשר ה כאשר ה • הוא "קופץ" לשם ומבצע את הכתוב. הוא "קופץ" לשם ומבצע את הכתוב.

הוא ממשיך לעשות כך עד שהוא פוגש במילה הוא ממשיך לעשות כך עד שהוא פוגש במילה •breakbreak.לראשונה. לראשונה

הוא קופץ להמשך הוא קופץ להמשך breakbreakברגע שפגש ב ברגע שפגש ב •- - switchswitchהתוכנית לאחר ההתוכנית לאחר ה

Page 25: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

Switch Switch וו CaseCase

ififדומה לקינון משפטי דומה לקינון משפטי •

מאפשר בחירה של אפשרויות רמות על בסיס מספר שלםמאפשר בחירה של אפשרויות רמות על בסיס מספר שלם•

• switch (switch (expressionexpression) {) {    case case const-exprconst-expr: :

statementsstatements    case case const-exprconst-expr: :

statementsstatements    ……    default:default:

statementsstatements}}

Page 26: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

The switch statementThe switch statement

• expressionexpression must have an integral value must have an integral value

• when the switch statement is executed: when the switch statement is executed: – the expression is evaluated the expression is evaluated – if a case matches the value of the if a case matches the value of the

expression, the program jumps to the first expression, the program jumps to the first statement after that case label statement after that case label

– otherwise, the default case is selectedotherwise, the default case is selected– the default is optionalthe default is optional

Page 27: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

תרגום ציוןתרגום ציון

switch (grade/10) { switch (grade/10) { case 10: case 10: case 9: case 9:

printf ("A\n"); printf ("A\n"); break; break;

case 8: case 8: printf ("B\n"); printf ("B\n"); break; break;

case 7: case 7: printf ("C\n"); printf ("C\n"); break; break;

case 6: case 6: printf ("D\n"); printf ("D\n"); break; break;

default: default: printf ("F\n"); printf ("F\n");

} }

Page 28: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

BreakBreak

מזהה איפה להתחיל לפעול מזהה איפה להתחיל לפעול switchswitchכאשר ה כאשר ה • הוא "קופץ" לשם ומבצע את הכתוב. הוא "קופץ" לשם ומבצע את הכתוב.

הוא ממשיך לעשות כך עד שהוא פוגש במילה הוא ממשיך לעשות כך עד שהוא פוגש במילה •breakbreak.לראשונה. לראשונה

הוא קופץ להמשך הוא קופץ להמשך breakbreakברגע שפגש ב ברגע שפגש ב •- - switchswitchהתוכנית לאחר ההתוכנית לאחר ה

Page 29: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

דוגמאדוגמא

• Operation.cOperation.c

Page 30: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

תרגילתרגיל

אם אם 100100 ל ל 11כתוב תוכנית המקבלת מספר בין כתוב תוכנית המקבלת מספר בין •קיים מטבע שמתאים למספר היא מדפיסה את קיים מטבע שמתאים למספר היא מדפיסה את

שמו אם לא היא מדפיסה שאין מטבע כזה. שמו אם לא היא מדפיסה שאין מטבע כזה. בדוק את תקינות הקלט!בדוק את תקינות הקלט!

Page 31: תכנות תרגול 4 שבוע : 20.11.05. לולאות for לולאות for for (counter=1 ;counter

SolutionSolution

• Coins.cCoins.c