Presentation is loading. Please wait.

Presentation is loading. Please wait.

Engineering Programming A

Similar presentations


Presentation on theme: "Engineering Programming A"— Presentation transcript:

1 Engineering Programming A
תרגול 3 Introduction to C - Fall Amir Menczel

2 אופרטורים להשוואה הערה: שימו לב להבדל הבא:
"==" הוא אופרטור להשוואה אשר מחזיר ערך 1 (אם מתקיים שוויון) או (0 אם לא מתקיים שוויון). "=" הוא אופרטור השמה. x = y;, משמעו שהמשתנה x מקבל את הערך y.

3 אופרטורים לוגיים

4 קדימויות של אופרטורים () ! ++ -- Casting * / % + -
* / % + - < <= > >= == != && || = += -= /= *= %=

5 דוגמא – תנאים בוליאניים ולוגיים:
void main() { int x=4,y=7,z; z=x<2; // z=0 z=y==7; // z=1 z=(y>=x); // z=1 z=2+(y-x>0)*2; // z=2+1*2=4 z=x!=4; // z=0 z=!(x==4); // z=!(1)=0 z=!x; // z=0 z=x=y; // z=7, x=7 z=x=0; // z=0, x=0 x=4; y=5; z=7<x<10; // z=1 z=(x<0 && y<0) || x>0; // z = (0 && 0) || 1 = 1 }

6 פקודת if-else: // SYNTAX: if (condition) command1;
else // else is optional command2; אם condition שונה מ 0 (אמת) אז command1 תתבצע, אחרת command2 תתבצע. אם נרצה לבצע יותר מפקודה אחת במקום שבו נמצאות command1 או command2, נצטרך לשים את הפקודות בתוך "בלוק" אשר נתחם באמצעות סוגריים מסולסלות – { } : int x,y,max,min; // keyboard input -> x,y if (x>y) { max=x; min=y; } else { max=y; min=x; פקודת if-else:

7 דוגמה /*A program to determine how you did in the course:*/
#include <stdio.h> void main() { int grade; printf("Enter your grade: "); scanf("%d",&grade); if (grade >= 80) printf("Passed with a good grade\n"); else if (grade >= 56) printf("Passed\n"); else printf("Failed\n"); }

8 תרגיל 1 בתוכנית שלפניכם ישנם 4 קטעי קוד חסרים. מה צריך להיות כתוב
במקומות החסרים, כך שפלט התכנית יהיה זהה לזה של התכנית שבדוגמא למעלה. /*A program to determine how you did in the course*/ void main() { int grade; printf("Enter your grade: "); scanf("%d",&grade); if( ______ ) printf("Passed with a good grade"); else printf( _____ ); printf( ______ ); }

9 תרגיל- 1 פתרון /* program to determine how you did in the course*/
תרגיל- 1 פתרון /* program to determine how you did in the course*/ void main() { int grade; printf("Enter your grade: "); scanf("%d",&grade); if(grade>=56) if(grade>=80) printf("Passed with a good grade\n"); else printf("Passed\n"); printf("Failed\n"); }

10 לולאות DO-WHILE WHILE FOR do { פקודות ; } while (תנאי ביצוע);
פקודות ; } while (תנאי ביצוע); while (תנאי ביצוע) { } for (פקודת קידום; תנאי ביצוע; אתחול משתנים) { פקודות; כל עוד התנאי מתקיים, בצע בצע פקודות ובדוק אם התנאי מתקיים החל מ startValue=X ועד X=endValue, בצע

11 לולאות – מבנה לולאת while
!=0 ==0 ביצוע גוף הלולאה חישוב תנאי מעבר לפקודה הבאה אחרי כל הלולאה

12 תרגיל 2 כתוב קוד המחשב את סכום הספרות במספר שלם חיובי הניתן כקלט.
כתוב קוד המחשב את סכום הספרות במספר שלם חיובי הניתן כקלט. int num,sum; printf("Enter an integer number\n"); scanf("%d", &num); sum=0; while(num){ sum+=num%10; num=num/10; } printf("The digits sum is %d\n",sum);

13 תרגיל 3 מה יקרה לאחר הרצת הקוד הבא (יתכן כי יותר מתשובה אחת נכונה) ?
מה יקרה לאחר הרצת הקוד הבא (יתכן כי יותר מתשובה אחת נכונה) ? int k = 10, sum = 0,j; for (j = 0;j < k; j = k - 1) sum = sum + 1; לאחר הביצוע k = 10. הקוד לא יעבור קומפילציה. לאחר הביצוע ערך j הוא 9. הביצוע יכנס ללולאה אינסופית. אף לא אחת מהתשובות לעיל. תשובה: 4.

14 תרגיל 4 מה יקרה לאחר הרצת הקוד הבא (יתכן כי יותר מתשובה אחת נכונה) ?
מה יקרה לאחר הרצת הקוד הבא (יתכן כי יותר מתשובה אחת נכונה) ? int sum = 0,number; for (number = 1;number <= 10; number = number + 1) number = number - 1; printf("%d\n",sum); הקוד לא יעבור קומפילציה. ביצוע הקוד ידפיס 0. ביצוע הקוד ידפיס 55. ביצוע הקוד ידפיס 45. אף לא אחת מהתשובות לעיל. תשובה: 5. (כי יש לולאה אינסופית)

15 תרגיל 5 כתוב קוד המצייר ריבוע בגודל n*n של כוכביות.
printf("Enter size of square\n"); scanf("%d",&n); for(i=0;i<n;i++){ for(j=0;j<n;j++) printf("*"); printf("\n"); } איך ניתן לשנות הקוד כדי שידפיס מסגרת של כוכביות?

16 תרגיל 5 - המשך כתוב קוד המצייר מסגרת של כוכביות
printf("Enter size of square\n"); scanf("%d",&n); for(i=0;i<n;i++){ for(j=0;j<n;j++) if(i==0||i==n-1||j==0||j==n-1) printf("*"); else printf(" "); printf("\n"); }

17 תרגיל 5 - המשך כתוב קוד המצייר משולש של כוכביות לדוגמא עבור n=5: * **
*** **** ***** printf("Enter size of triangle\n "); scanf("%d",&n); for(i=0;i<n;i++){ for(j=0;j<=i;j++) printf("*"); printf("\n"); }

18 תרגיל 5 - המשך כתוב קוד המצייר משולש שווה שוקיים של כוכביות
לדוגמא עבור n=7: * *** ***** ******* ניתן להניח ש-n תמיד אי זוגי printf("Enter size of triangle\n"); scanf("%d",&n); for(i=0;i<n;i+=2){ for(j=0;j<=(n-i)/2;j++) printf(" "); for(j=0;j<=i; j++) printf("*"); printf("\n"); }

19 תרגיל 6 מה יקרה לאחר הרצת הקוד הבא? (יתכן כי יותר מתשובה אחת נכונה)
מה יקרה לאחר הרצת הקוד הבא? (יתכן כי יותר מתשובה אחת נכונה) int i; for (i=0;i<10; i=i+1) for (i=0;i<9; i=i+1) printf("*"); ביצוע הקוד ידפיס 90 פעם את התו '*'. התכנית תגרום ללולאה אינסופית. ביצוע הקוד ידפיס 9 פעמים את התו '*'. הקוד לא יעבור קומפילציה. אף לא אחת מהתשובות לעיל. תשובה: 3 (כי בשתי הלולאות יש שימוש באותו המשתנה i).

20 תרגיל 7 חשבו את הסכום הבא: n + 2n + 3n + … + n2 ללא שימוש בפעולות כפל.

21 תשובה :1 for(i=1,sum=0;i<=n;++i) for(j=1;j<=n;++j) sum+=i; תשובה :2 for(j=1;j<=i;++j) sum+=n;


Download ppt "Engineering Programming A"

Similar presentations


Ads by Google