דוגמאות
וואו! עבדנו קשה מאוד בשביל לאסוף את הסינטקס בהרצאה הזו, אבל עכשיו נוכל לכתוב לא מעט תוכניות מעניינות רק עם הכלים הבסיסיים שיש לנו. נייצר כמה דוגמאות - נסו לעצור ולכתוב בעצמכם לפני שתראו את הפתרון. הפקידו על הזחות נכונות ומתן שמות משמעותיים למשתנים.
- כתבו תוכנית שמחשבת את המהירות של כדור נופל תחת כוח הכבידה אחרי 5.4 שניות, אם הגוף מתחיל ממנוחה. הנוסחא למהירות של גוף מאיץ בזמן \(t\) היא:
$$ v_0 + a \cdot t $$
עבור \(v_0\) מהירות התחלתית ו-\(a\) תאוצתו, כאשר תאוצת הנפילה החופשית היא בערך \(9.8\).
#define GRAVITY 9.8
int main() {
const double time = 5.4;
const double velocity = time * GRAVITY;
printf("Velocity after %.2f secs is %.2f meters/second", time, velocity);
}
- כתבו תוכנית שמחשבת שטח של משולש שגובהו 5 וצלעו 3.
int main() {
const double length = 5.0, width = 3.0;
const double area_rect = length * width * 0.5;
printf("Rectangle area: %.2f\n", area_rect);
}
- כתבו תוכנית שמחשבת ממוצע של המספרים 5, 3.4 ו-1.2.
int main() {
printf("Average: %.2f", (5 + 3.4 + 1.2) / 3);
}
Note
שימו לב שהקפדנו לתת למשתנים שמות משמעותיים כמו
length,area_rectangleוכו’. במתמטיקה נהוג לתת למשתנים שמות מאוד בסיסיים שקל לכתוב ביד כמוgלכבידה וכו’ - בתכנות זה כמעט תמיד רעיון לא טוב. יתכן שאנחנו עובדים בצוות ואז כדאי שהשמות יהיו מובנים לשאר המתכנתים, או אפילו אם אנחנו עובדים לבד על מנת שנוכל לקרוא קוד שכתבנו לפני מספר חודשים ולהבין מה הכוונה בצורה מהירה ויעילה.
תרגילים
- כתבו תוכנית שמדפיסה את הסכום, ההפרש, המכפלה, חלוקת השלמים, חלוקת העשרוניים והשארית בין המספר 17 למספר 5.
- כתבו תוכנית המקבלת טמפרטורה מהמשתמש בצלזיוס וממירה אותה לפרנהייט. נוסחת ההמרה היא \(F = 1.8 \cdot C + 32 \)
- קבלו מהמשתמש שלושה מספרים עבור הציונים שלהם, והדפיסו את הממוצע שלהם לפי חלוקת שלמים ולפי חלוקת עשרוניים.
- קבלו מספר מהמשתמש שניתן להניח שהוא בן 0 ל-999. הדפיסו את ספרת האחדות, העשרות והמאות שלו.
- קבלו מספר מהמשתמש שייצג אורך זמן כלשהו בשניות. הדפיסו כמה שעות, דקות ושניות שלמות יש באורך הזמן הזה.
- קבלו מהמשתמש שני מספרים
xו-yוהדפיסו אותם. לאחר מכן, החליפו בין הערכים שלהם והדפיסו אותם שוב, וודאו שהם השתנו באמת. - קבלו מהשמתמש מספר בן 3 ספרות, והדפיסו את היפוך הספרות שלו. למשל עבור
527הדפיסו725. - כתבו תוכנית המקבלת מהמשתמש שני מספרים ומדפיסה את סכום הערכים המוחלטים שלהם.
- כתבו תוכנית המקבלת מהשמתמש מספר חודש בין 1 ל-12 ומדפיסה את מספר הימים באותו החודש. בחודשים אי זוגיים יש 31 ימים, ובחודשים זוגיים יש 30 ימים, פרט לפברואר (2) בו יש 28 ימים.
תרגיל
לכל אחת מהתוכניות הבאות, קבעו מה יודפס ללא הרצת התוכנית, ולאחר מכן תריצו וודאו את תשובותכם:
int a = 2;
int b = 5;
int c = 8;
a += b++;
c -= ++a;
printf("%d %d %d\n", a, b, c);
int a = 6;
int b = 4;
int c = 2;
int x = a + b * c;
int y = x % 5;
int z = y == 1 || a / b == 1;
printf("%d %d %d\n", x, y, z);
a++;
b *= z;
printf("%d %d %d\n", a, b, c);
int a = 8;
int b = 3;
int x = a % b == 2;
int y = a / b > 2;
int z = x && y;
printf("%d %d %d\n", x, y, z);
printf("%d\n", x * 10 + y * 5 + z);