חזרה: מנהל נקודות
חלק מהיחידה תכנות מונחה עצמים במסלול ה-C של Coddy. שיעור 11 מתוך 61.
אתגר
קלבואו נבנה מודול Point מלא שמנהל קואורדינטה דו־ממדית. אתגר החזרה הזה משלב את כל מה שלמדת על התייחסות למבנים כאובייקטים: שימוש במצביעים כדי לשנות מצב ובמצביעי const לפעולות לקריאה בלבד.
תיצור שלושה קבצים:
point.h: הצהר על מבנהPointעם שני איברים מסוג מספר שלם:xו-y. כמו כן, הצהר על שתי פונקציות שמתפקדות כמתודות:point_move: מקבלת מצביע ל-Point יחד עם שני מספרים שלמים (dxו-dy), ומזיזה את הנקודה על ידי הוספת הערכים האלה ל-xול-ypoint_print: מקבלת מצביעconstל-Point ומציגה את הקואורדינטות שלו (הפונקציה הזאת לא אמורה לשנות את הנקודה)
POINT_H.point.c: ממש את שתי הפונקציות. חשוב היטב איזו פונקציה זקוקה למצביע רגיל (כדי לשנות את הנקודה) ואיזו משתמשת במצביעconst(כדי לקרוא בבטחה בלי לשנות).main.c: צור Point, הזז אותו והצג את מיקומו בשלבים שונים.
תקבל ארבעה מספרים שלמים כקלט: ה-x ההתחלתי, ה-y ההתחלתי, ערך dx (המרחק להזזה אופקית) ו-ערך dy (המרחק להזזה אנכית).
בקובץ הראשי שלך, אתחל Point עם קואורדינטות ההתחלה, הצג את מיקומו ההתחלתי, הזז אותו בכמויות הנתונות, ואז הצג את מיקומו החדש.
הפונקציה point_print צריכה להציג את הפלט בפורמט הזה:
Point: ({x}, {y})לדוגמה, עם הקלטים 3, 5, 2 ו--1, הפלט יהיה:
Point: (3, 5)
Point: (5, 4)נסו בעצמכם
#include <stdio.h>
#include "point.h"
int main() {
// קרא את ערכי הקלט
int x, y, dx, dy;
scanf("%d", &x);
scanf("%d", &y);
scanf("%d", &dx);
scanf("%d", &dy);
// TODO: צור Point עם קואורדינטות התחלתיות (x, y)
// TODO: הדפס את המיקום ההתחלתי באמצעות point_print
// TODO: הזז את הנקודה ב-(dx, dy) באמצעות point_move
// TODO: הדפס את המיקום החדש באמצעות point_print
return 0;
}
כל השיעורים ביחידה תכנות מונחה עצמים
4כימוס
המושג של מצביעים אטומיםהגדרת מבנים אטומיםפונקציות Get ו-Setאימות ב-Settersסיכום: הקופסה הסודית2אובייקטים ומתודות
מבנים כאובייקטיםמצביע 'Self'נכונות constמצביע לעומת ערךמתודות עזרחזרה: מנהל נקודות5פרויקט: חשבון בנק פשוט
הגדרת הפרויקטמימוש החשבוןתרגלו בעצמכם: קומפיילר C אונליין