You are on page 1of 5

‫תרגול כיתה ושיעורי בית‬

‫שיעור מספר ‪ - 3‬המשך יסודות‬


‫מה נתרגל?‬
‫תרגול עבודה עם קבועים‬ ‫‪‬‬
‫תרגול ‪casting‬‬ ‫‪‬‬
‫תרגול הפונקציה ‪)(scanf‬‬ ‫‪‬‬
‫איפוס הבאפר‬ ‫‪‬‬
‫תרגול פונקציות קלט‪/‬פלט נוספות‬ ‫‪‬‬

‫הנחיות‪:‬‬
‫יש להגיש את שיעורי הבית דרך מערכת ה‪ .EDU-‬שימו לב למועד האחרון להגשה‪.‬‬ ‫‪‬‬
‫יש להגיש קובץ ‪ ZIP/RAR‬המכיל את הקבצים הרלוונטיים (קבצי קוד או ‪ .)word‬שם קובץ ההגשה חייב‬ ‫‪‬‬
‫להכיל את שמכם המלא! לדוגמא‪.HW3_Daniel.rar :‬‬
‫יש לוודא שכל הקבצים מתקמפלים ללא שגיאות (‪ )error‬וללא אזהרות (‪.)warning‬‬ ‫‪‬‬
‫יש להוסיף הערות בקוד במקומות המתאימים (באנגלית)‪.‬‬ ‫‪‬‬
‫זכרו את הקונבנציות‪ :‬היכן נגדיר את הקבועים? מתי נשתמש ב‪ const -‬ומתי ב‪define? No magic-‬‬ ‫‪‬‬
‫‪!!!!Numbers‬‬
‫ידידותיות למשתמש‪ :‬כל פעם כשרוצים לקרוא קלט מהמשתמש‪ ,‬יש להציג למשתמש הנחיות ברורות‬ ‫‪‬‬
‫איזה קלט עליו להכניס‪.‬‬
‫בכל פעם כשמדפיסים ערך למסך‪ ,‬יש להציג הסבר לגבי משמעותו (למשל‪ ,‬לא להדפיס ‪ A‬אלא להדפיס‬ ‫‪‬‬
‫‪.)The first letter is A‬‬

‫תרגול‪:‬‬

‫התחברו למערכת הבדיקות האוטומטית בקישור‪/http://autofeedback.cyber.org.il :‬‬


‫וענו שם על משימות ‪ 1‬עד ‪.4‬‬
‫‪ )1‬כתבו תכנית המגדירה משתנה ראשון מסוג תו ואתחלו אותו ב‪.H -‬‬

‫קלטו משתנה שני באמצעות פונקציית ‪.getchar‬‬

‫קלטו משתנה שלישי באמצעות פונקציית ‪.scanf‬‬

‫כעת הדפיסו למסך את‪:‬‬

‫תוכן המשתנה הראשון כתו ולידו הדפיסו כתו את תוכן המשתנה הראשון ‪.1 +‬‬ ‫א‪.‬‬
‫הערך המספרי של המשתנה הראשון‪.‬‬ ‫ב‪.‬‬
‫סכום ערכי ה‪ASCII -‬של שלושת המשתנים‪.‬‬ ‫ג‪.‬‬
‫סכום ערכי ה‪ASCII -‬של המשתנה הראשון והשלישי‪.‬‬ ‫ד‪.‬‬
‫הסימן המיוצג על ידי ערך ה‪ ASCII -‬שהדפסתם בסעיף הקודם‪.‬‬ ‫ה‪.‬‬

‫כתבו הערה בקוד בה מוסברת המשמעות של הערך המספרי שמודפס‪.‬‬

‫‪ )2‬כתבו תוכנה הממירה מיילים לקילומטרים‪ .‬התוכנית תקלוט מהמשתמש מרחק במיילים ( מספר עשרוני) ותדפיס‬
‫למסך את המרחק בקילומטרים‪ .‬בדקו את יחס ההמרה‪ ,‬וכמובן הגדירו אותו כקבוע בקוד (‪ const‬או‬
‫‪ .)?define‬בכל המספרים העשרוניים‪ ,‬יש להציג רק ‪ 3‬ספרות מימין לנקודה‪.‬‬
‫כדי לבדוק האם התכנית שלכם תקינה‪ ,‬לחצו כאן‬

‫הדפיסו למסך את השאלה " ‪ ."?y/n: Do you want to be a Magshima‬לאחר מכן קלטו מהמשתמש תו‬ ‫‪)3‬‬
‫המציין את התשובה שלו (‪ .)y/n‬הדפיסו את תשובת המשתמש‪ .‬במקרה זה ניתן להניח שהמשתמש יזין רק ‪y‬‬
‫או ‪.n‬‬
‫יש להשתמש בפונקציות ‪ getchar, putchar‬בקליטת התשובה ובפלט שלה‪.‬‬

‫קלטו שלושה מספרים שלמים בפקודה אחת‪ .‬חשבו את הממוצע שלהם והציגו הודעה מתאימה למשתמש‪.‬‬ ‫‪)4‬‬

‫שיעורי בית‪:‬‬

‫‪ )5‬כתבו תכנית המגדירה שני משתנים מסוג תו‪ .‬אחד מהם יכיל את האות ‪ A‬והאחר את האות‪ . Z‬יש להדפיס את‬
‫שני התווים האלו‪ ,‬ואת כמות האותיות בשפה האנגלית‪ ,‬המחושבת בעזרת חיסור שני התווים‬

‫תעדו את הקוד שלכם והסבירו כיצד חישבתם‪.‬‬

‫כתבו תכנית אשר קולטת מספר שלם המציין מספר מעלות צלזיוס‪ ,‬ומדפיסה למסך את ההמרה של הקלט‬ ‫‪)6‬‬
‫למעלות פרנהייט (בצירוף הודעה מתאימה)‪ .‬יש לחפש באינטרנט מהי הנוסחה המתאימה‪.‬‬
‫כדי לבדוק האם התכנית שלכם תקינה‪ ,‬לחצו כאן‪.‬‬
‫‪ )7‬בשאלה זו נלמד על משתנים מסוג ‪ .unsigned‬משתנה מסוג ‪ int‬יכול לקבל ערכים חיוביים או שליליים‪ ,‬אך‬
‫משתנה מסוג ‪ unsigned int‬יכול לקבל רק ערכים חיוביים (או אפס)‪ .‬זה נראה כך‪:‬‬

‫גודלו של ‪ unsigned int‬הוא ‪ 4‬בתים (כמו הגודל של ‪.)int‬‬

‫למדנו בכיתה על טווח הערכים של משתנה מסוג )‪.int (-2,147,483,648 < int < +2,147,483,647‬‬

‫הסיקו – מהו טווח הערכים של משתנה מסוג ‪ ?unsigned int‬ניתן להיעזר בגוגל‪ ,‬למרות שאין צורך‪.‬‬
‫הסבירו מדוע זהו הטווח (התייחסו בתשובתכם לטווח של ‪.)int‬‬

‫הביטו על הקוד הבא‪:‬‬ ‫‪)8‬‬

‫מה יודפס למסך? מדוע?‬

‫חישוב נפח כדור‪ :‬כתבו תכנית אשר קולטת מהמשתמש רדיוס של כדור (מספר עשרוני‪ ,‬ביחידות של ס"מ)‬ ‫‪)9‬‬
‫ומחשבת את נפח הכדור‪ .‬הדפיסו למסך ‪ 2‬שורות‪ :‬הרדיוס שנקלט ונפח הכדור‪ .‬כל שורה יש להדפיס עם‬
‫הסבר משמעותה‪ .‬ניתן להניח שהערךשל פאי הוא ‪.3.14‬‬
‫למידע על חישוב נפח כדור ובדיקת התכנית שלכם חפשו באינטרנט‪.‬‬
.‫מהו הפלט של התכנית הבאה? הסבירו מדוע זהו הפלט‬ )10
int main(void)
{
int i = 65537;
unsigned short s = (unsigned short)i;
float f = (float)i;
char c = (char)i;

printf("s = %u, i = %d, f = %f, c = %d\n", s,i,f,c);


return (0);
}
‫ דניאל התבקש לכתוב תכנית אשר‬. ‫ התחיל דניאל החניך המתוסכל ללמוד תכנות ב‬,15 ‫בגיל‬ )11
:‫ הוא כתב את התכנית הבאה‬,‫ לצורך כך‬.‫מספרת על עצמו‬

#include <stdio.h>

#define AGE 15;

int main(void)
{
int myAge = AGE;
printf("Hello Magshimim!\n");
printf("My name is Daniel and I am %d years old!\n", myAge);
return 0;
}

:‫ ולכן החליט לעדכן את התכנית שלו באופן הבא‬,‫ דניאל גדל בשנה‬,‫במהלך השנה‬

#include <stdio.h>

#define AGE 15;

int main(void)
{
int myAge = AGE + 1;
printf("Hello Magshimim!\n");
printf("My name is Daniel and I am %d years old!\n", myAge);
return 0;
}

:‫אך כאשר המדריך הריץ את התכנית הוא קיבל על הצג את הפלט הבא‬

C:\MinGW\bin>hello.exe
Hello Magshimim!
My name is Daniel and I am 15 years old!

.‫ למרות השינוי‬15 ‫ ולמה הוא נשאר בן‬,‫הסבירו לדניאל במה הוא שגה‬
‫בונוס‪:‬‬
‫התבוננו בפלט של השורה הבאה‪ .‬השתמשו בקובץ הדגמה ‪ ,classExample5Casting.c‬ושימו את‬ ‫‪)12‬‬
‫השורה הזאת במקומות שונים‪ ,‬וראו כיצד הפלט משתנה!!‬
‫;)‪printf("%f\n", 5 / 2‬‬
‫הסבירו מדוע זה קורה‪ ,‬ומה ניתן לעשות כדי לקבל את הפלט הרצוי? הציעו לפחות ‪ 2‬דרכים שונות לתיקון‪.‬‬

‫בהצלחה!‬

You might also like