Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 מבוא למדעי המחשב תרגול מספר 2. 2 בשיעור הקודם... הגדרות שפת מחשב, שפה עילית, קומפיילר, תוכנית בשפת C, קובץ הרצה קובץ (טקסט) המכיל תוכנית בשפת C (hello.c)

Similar presentations


Presentation on theme: "1 מבוא למדעי המחשב תרגול מספר 2. 2 בשיעור הקודם... הגדרות שפת מחשב, שפה עילית, קומפיילר, תוכנית בשפת C, קובץ הרצה קובץ (טקסט) המכיל תוכנית בשפת C (hello.c)"— Presentation transcript:

1 1 מבוא למדעי המחשב תרגול מספר 2

2 2 בשיעור הקודם... הגדרות שפת מחשב, שפה עילית, קומפיילר, תוכנית בשפת C, קובץ הרצה קובץ (טקסט) המכיל תוכנית בשפת C (hello.c) קובץ המכיל תוכנית מקופלת (hello.obj) קובץ המכיל תוכנית הרצה (hello.exe) הידור (compile) קישור (link)

3 3 בשיעור הקודם... סביבות עבודה Turbo C new, save, save as, open, compile, link, run,... תהליך כתיבת תוכנית והרצתה מבנה תוכנית בשפת C

4 4 בשיעור הקודם... פונקציות printf, scanf משתנים הערות ( תיעוד פנימי ) משפטי תנאי לולאות קבועים

5 5 מה בתפריט היום ? קצת על טיפוסים פונקציות קלט / פלט Debugging

6 6 טיפוסים מהו משתנה ? מה הקשר בין טיפוס ומשתנה ? בשיעור הקודם נתקלנו במשתנים מטיפוס int double הצהרה על משתנים תחביר : variable_type variable_name; לדוגמא : int john;

7 7 הצהרה על משתנים int main(void) { int x; int y,z; int m = 3; double q; return 0; }

8 8 טיפוסים טיפוס נוסף, המאפשר שמירה של תו בודד, הוא char תו ( character ) הוא סימן לכל סימן יש מספר סידורי טבלת ASCII תו בתוכנית C תמיד מלווה בגרשיים ('A') הגרשיים מתרגמים את התו למספר הסידורי שלו הטיפוס char מסוגל להכיל מספר בטווח [0..255]

9 9 ASCII Table

10 10 דוגמא int main(void) { char ch; ch = 'B'; /* Now the value of ch is 66 */ ch = ch + 1; /* Now the value of ch is 67 */ ch = 'B' - 'A'; /* Now the value of ch is 1 */ ch = ‘1' + 3; /* and now? */ return 0; }

11 11 Debugging כעת נראה כיצד ניתן להריץ את התוכנית בשקף הקודם, שורה אחר שורה. נוכל להתבונן בערך המשתנה ch בזמן שהתוכנית רצה.

12 12 פונקציות כל פונקציה מקבלת פרמטרים ומחזירה ערך לדוגמא, הפונקציה sin מקבלת מספר ממשי ומחזירה את הסינוס שלו קריאה לפונקציה מתבצעת כך : function_name(parameters); אם הפונקציה מקבלת יותר מפרמטר אחד, בין הפרמטרים מפרידים פסיקים ניתן להציב את הערך שפונקציה מחזירה לתוך משתנה, כך : variable_name = function_name(parameters); לדוגמא :x = sin(y);

13 13 פונקציות חתימה ( דרך רישום המציינת את מאפייני הפונקציה ) returned_type function_name(types_of_parameters) לדוגמא : double sin(double) יש פונקציות, שבנוסף לקבלת פרמטרים, חישוב והחזרת ערך, מבצעות משהו נוסף (side effect), למשל : מדפיסות משהו על המסך

14 14 הפונקציה putchar הפונקציה putchar – תפקידה להדפיס תו בודד על המסך חתימה : int putchar(int) הפונקציה מקבלת פרמטר מטיפוס int, ומדפיסה אותו על המסך בתור תו הפונקציה מחזירה את הערך שאותו היא קיבלה במקרה של כשלון, הפונקציה מחזירה EOF

15 15 הפונקציה putchar דוגמאות לשימוש ( כך קוראים לפונקציה ): putchar('v'); putchar('\n'); putchar(35); putchar(v); x = putchar(86);

16 16 הפונקציה getchar getchar - תפקידה לקלוט תו בודד מהמקלדת חתימה : int getchar(void) void אומר שהפונקציה לא מקבלת פרמטרים הפונקציה קולטת תו מהמקלדת ומחזירה אותו ( את ערך ה - ASCII שלו ) אם הפונקציה נכשלת, היא מחזירה EOF כיצד מציבים את התו שנקלט לתוך משתנה ? ch = getchar();

17 17 getchar / putchar איך אפשר לקלוט תו ואח " כ להדפיס אותו ? ch1 = getchar(); putchar(ch1); דרך אחרת, בלי להשתמש במשתנה : putchar(getchar());

18 18 printf תזכורת printf מדפיסה מחרוזות למסך לפי מחרוזת הבקרה שהועברה לה מחרוזת הבקרה יכולה להכיל תווים רגילים תווים מיוחדים ( ראינו כבר %d, %f) חתימה int printf( מחרוזת בקרה "", arg1, arg2,...) הערך המוחזר ע " י printf הוא מספר התווים שהודפסו, או מספר שלילי במקרה של כשלון

19 19 printf כיצד מפוענחת מחרוזת הבקרה ? תווי בקרה - ( השימושיים ביותר ) תו הבקרהאיך המשתנה יודפס c%c% כתו בודד %d כשלם בבסיס עשרוני %f כממשי בבסיס עשרוני %s כמחרוזת

20 20 תווי בקרה עם פרמטרים משמשים לשליטה על אופן ההצגה של הנתון. מופיעים בין סימן ה-% לבין האות המתאימה לו הפרמטרים מובאים בסדר הבא: % תג טיפוס – מסמן את סוג הנתון (d, f, c, s…)

21 21 רוחב השדה כל נתון מודפס כרצף של תווים בעל אורך מסוים. רוחב השדה = מספר התאים המוקצים להדפסת הנתון. printf("%d %f %c %s", 3500, 3.141, 'A', "hello world"); 3500 3.141000 A hello world 4 8 1 11

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

23 23 רוחב השדה printf("%27s\n", "Here are some numbers:"); printf("%10d%10d%10d\n", 1, 2, 3); printf("%10f%10f%10f\n", 1.5, 2.5, 3.5); Here are some numbers: 1 2 3 1.500000 2.500000 3.500000

24 24 דיוק ההצגה הדיוק ניתן כמספר טבעי שלפניו יש נקודה. במקרה של מספר ממשי, הדיוק מציין את מספר הספרות אחרי הנקודה שיש להציג. במקרה של מחרוזת, הדיוק מציין את מספר התווים המקסימלי שאנו רוצים להציג מהמחרוזת. 2.71828183  2.71828  2.72 vacation  vacat  va דיוק 8  דיוק 5  דיוק 2

25 25 דיוק ההצגה printf("%.20s \n", "sorry for the interruption"); printf("%.50s ok?\n", "sorry for the interruption"); printf("%.3f %f %.8f \n", 2.0/3, 2.0/3, 2.0/3); sorry for the interr sorry for the interruption ok? 0.667 0.666667 0.66666667

26 26 סימנים מקדימים סימןתאורדוגמה - מצמיד את הנתון לשמאל השדה 234111 + מוסיף סימן '+' לפני מספרים אי שליליים +234111 רווח מוסיף רווח לפני מספרים אי שליליים 234111

27 27 דוגמאות משולבות printf("%10.3f!\n", 7/3.0); printf("%10.3f!\n", 1.5); printf("%010.3f!\n", 1.5); printf("%-10.3f!\n", 1.5); 2.333! 1.500! 000001.500! 1.500 ! printf("%d\n", -2003); printf("%+d\n", 2003); printf("% d\n", 2003); -2003 +2003 2003

28 28 scanf תזכורת scanf קולטת מחרוזת מהמשתמש ומפענחת אותה לפי מחרוזת הבקרה שהועברה לה מחרוזת הבקרה יכולה להכיל תווים רגילים תווים מיוחדים ((%d, %lf, %c, %s חתימה int scanf( מחרוזת בקרה "", arg1, arg2,...)  הערך המוחזר ע " י scanf הוא מספר הפרמטרים שנקלטו בהצלחה, או EOF בסוף קובץ  שימו לב : הערך המוחזר הוא לא הערך שהמשתמש הקיש !

29 29 scanf השימוש ב-scanf זהה כמעט לשימוש ב-printf, מלבד העובדה שצריכים להשתמש באופרטור & לקליטת משתנה מסוג double, משתמשים בתו הבקרה %lf (ולא %f כמו ב-printf) כיצד נקלוט מהמשתמש מספר שלם לתוך המשתנה m, ולאחריו מספר ממשי לתוך המשתנה x? scanf(“%d%lf”, &m, &x); כיצד נחייב את המשתמש להקיש מחרוזת כלשהי ולאחריו את המספר המבוקש? scanf(“Hello%d”, &m);

30 30 דוגמאות scanf("%c%c", &c1, &c2); > abcd> a b c d c1='a' c2='b' c1='a' c2=' ' scanf("%c %c", &c1, &c2); > abcd> a b c d c1='a' c2='b'

31 31 דוגמאות scanf("%d%c", &i, &c); > 3415abcd i=3415 c='a' > 3415 abcd i=3415 c=' ' scanf("%d %c", &i, &c); > 3415abcd i=3415 c='a' > 3415 abcd i=3415 c='a'

32 32 דוגמאות scanf("%d%c%d", &i, &c, &j); > 215.37 i=215 c='.' j=37 > 215 37 i=215 c=' ' j=37

33 33 scanf שימוש בערך המוחזר ע " י scanf: ניתן לזהות אם הקלט אינו תקין ע " י בדיקת הערך המוחזר מהפונקציה אם המספר המוחזר שונה ממספר הפרמטרים שתכננו לקרוא - סימן שהפונקציה נכשלה בפענוח הקלט תמיד צריך לבדוק אם הקלט תקין !

34 34 scanf דוגמא לשימוש בערך החזרה של scanf על הלוח

35 35 קלט / פלט - פונקציות ספריה כדי להשתמש בפונקציה, צריך להצהיר עליה ההצהרות על הפונקציות putchar, getchar, printf, scanf נמצאות בקובץ הספרייה stdio.h אם כותבים בתחילת התוכנית את השורה #include אז תוכן הקובץ stdio.h נוסף לתוכנית, ואז התוכנית מכילה את ההצהרות על פונקציות הקלט / פלט, ואפשר להשתמש בהן

36 36 פונקציות ספריה ניתן לכתוב תוכנית מבלי להשתמש בפונקציות הנ " ל דוגמא לקובץ ספרייה נוסף : math.h מכיל הצהרות על פונקציות מתמטיות, כמו sqrt(), sin(), log() ועוד... אם רוצים להשתמש בהן, צריך לכתוב בתחילת התוכנית #include

37 37 סיכום הקשר בין משתנה וטיפוס : כל משתנה הוא מטיפוס מסוים ! פונקציות מקבלות פרמטרים ומחזירות ערכים שימוש בערך חזרה של פונקציות פונקציות ספרייה

38 38 רפרנס - קליטת מספרים #include int main(void) { char ch1, ch2; int x, y, res; printf(“Enter 2 integers with a character after each one : \n”); res = scanf(“%d%c%d%c”, &x, &ch1, &y, &ch2); if (res < 4) { printf(“Input Error”); return 1; } return 0; }


Download ppt "1 מבוא למדעי המחשב תרגול מספר 2. 2 בשיעור הקודם... הגדרות שפת מחשב, שפה עילית, קומפיילר, תוכנית בשפת C, קובץ הרצה קובץ (טקסט) המכיל תוכנית בשפת C (hello.c)"

Similar presentations


Ads by Google