Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

ملخص: Point Manager

جزء من قسم البرمجة كائنية التوجه في رحلة C على Coddy. الدرس 11 من 61.

challenge icon

التحدي

سهل

لنبنِ وحدة Point كاملة تدير إحداثيًا ثنائي الأبعاد. يجمع هذا التحدي التلخيصي كل ما تعلمته عن التعامل مع البُنى باعتبارها كائنات: using المؤشرات لتعديل الحالة وconst pointers لعمليات القراءة فقط.

ستنشئ ثلاثة ملفات:

  • point.h: Declare بنية Point تحتوي على two integer members: x وy. كذلك Declare two functions تعملان كطرائق:
    • point_move: Takes a pointer to Point along with two integers (dx وdy)، ويحرّك position النقطة بإضافة هذه values إلى x وy
    • point_print: Takes a const pointer إلى Point ويعرض coordinates الخاصة بها (يجب ألا تقوم هذه function بتعديل النقطة)
    استخدم include guards بالرمز POINT_H.
  • point.c: Implement كلتا الدالتين. فكّر بعناية في أي function تحتاج إلى regular pointer (لتعديل النقطة) وأيّها تستخدم const pointer (للقراءة بأمان دون تعديل).
  • main.c: Create كائن Point، وحرّكه، واعرض position الخاصة به في مراحل مختلفة.

ستتلقى four integer inputs: initial x، وinitial y، وdx value (مقدار الحركة أفقيًا)، وdy value (مقدار الحركة عموديًا).

في ملف main، قم بتهيئة Point باستخدام starting coordinates، وPrint position الأولية، ثم حرّكه بالمقادير المعطاة، وبعد ذلك Print position الجديدة.

يجب أن تُخرج function point_print النتيجة بهذا format:

Point: ({x}, {y})

على سبيل المثال، عند استخدام inputs 3 و5 و2 و-1، سيكون Output كما يلي:

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;
}

جميع دروس البرمجة كائنية التوجه

تدرّب بنفسك: مترجم C عبر الإنترنت