סיכום: ניתוב במחשבון
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C של Coddy. שיעור 37 מתוך 61.
אתגר
קלבנו מחשבון באמצעות טבלת ניתוב. תיצרו מערך של מצביעים לפונקציות שממפה קודי פעולות לפונקציות המתאימות, ואז תשתמשו בו כדי לבצע חישובים.
כתבו תוכנית ש:
- יוצרת
typedefבשםOperationעבור מצביע לפונקציה שמקבלת שני פרמטרים מסוגintומחזירהint - מגדירה ארבע פונקציות חשבוניות:
add: מחזירה a + bsub: מחזירה a - bmul: מחזירה a * bdivide: מחזירה a / b (חלוקה של מספרים שלמים)
- ב־
main, יוצרת טבלת ניתוב: מערך של 4 מצביעים לפונקציות מסוגOperation, שבו האינדקס 0 הוא add, האינדקס 1 הוא sub, האינדקס 2 הוא mul והאינדקס 3 הוא divide - קוראת שלוש קלטים: שני מספרים שלמים וקוד פעולה (0-3)
- משתמשת בקוד הפעולה כדי לגשת לטבלת הניתוב באמצעות אינדקס ולקרוא לפונקציה המתאימה
- מדפיסה את התוצאה
תקבלו שלושה קלטים: המספר הראשון, המספר השני וקוד הפעולה (0 עבור add, 1 עבור sub, 2 עבור mul, 3 עבור divide).
הפלט שלכם צריך להיות מספר שלם יחיד: תוצאת הפעולה:
7בדוגמה זו, עם הקלטים 10, 3, 1: קוד הפעולה 1 בוחר את sub מטבלת הניתוב, ולכן מחשבים 10 - 3 = 7.
העיקר כאן הוא להשתמש באינדוקס של מערך כדי לבחור את הפונקציה: אין צורך בהצהרות if או switch. טבלת הניתוב שלכם צריכה להיראות כך:
Operation ops[4] = {add, sub, mul, divide};לאחר מכן קראו לפונקציה באמצעות: ops[code](a, b)
נסו בעצמכם
#include <stdio.h>
// TODO: צרו typedef בשם 'Operation' עבור מצביע לפונקציה
// שמקבלת שני פרמטרים מסוג int ומחזירה int
// TODO: הגדירו את ארבע הפונקציות האריתמטיות: add, sub, mul, divide
int main() {
// קראו קלט
int a, b, code;
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &code);
// TODO: צרו את טבלת הניתוב (מערך של 4 מצביעים לפונקציות מסוג Operation)
// Operation ops[4] = { ... };
// TODO: השתמשו בקוד הפעולה כדי לקרוא לפונקציה המתאימה
// ושמרו את התוצאה
int result;
// הדפיסו את התוצאה
printf("%d\n", result);
return 0;
}כל השיעורים ביחידה תכנות מונחה עצמים
4כימוס
המושג של מצביעים אטומיםהגדרת מבנים אטומיםפונקציות Get ו-Setאימות ב-Settersסיכום: הקופסה הסודית7מצביעים לפונקציות
הצהרת מצביעים לפונקציותקריאה למצביעים לפונקציותשימוש ב-typedef עבור מצביעים לפונקציותהעברת פונקציות כארגומנטיםסיכום: ניתוב במחשבון2אובייקטים ומתודות
מבנים כאובייקטיםמצביע 'Self'נכונות constמצביע לעומת ערךמתודות עזרחזרה: מנהל נקודות5פרויקט: חשבון בנק פשוט
הגדרת הפרויקטמימוש החשבוןתרגלו בעצמכם: קומפיילר C אונליין