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

الوصول إلى أعضاء الـ Struct

جزء من قسم Logic & Flow في رحلة C على Coddy — الدرس 41 من 63.

الآن بعد أن أصبح بإمكانك إنشاء متغيرات struct، تحتاج إلى تعلم كيفية التعامل مع البيانات المخزنة بداخلها. عامل النقطة (.) هو مفتاحك للوصول إلى الأعضاء الفرديين لمتغير struct وتعديلهم.

تعد صيغة الوصول إلى أعضاء الـ struct مباشرة:

structVariable.memberName

باستخدام مثال الـ Point struct الخاص بنا، يمكنك القراءة من أعضائه والكتابة إليها على حد سواء:

struct Point p1;

// الكتابة إلى أعضاء الـ struct
p1.x = 10;
p1.y = 20;

// القراءة من أعضاء الـ struct
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);

يعمل عامل النقطة (dot operator) تماماً مثل الوصول إلى أي متغير آخر - حيث يمكنك استخدامه في عمليات التعيين، أو العمليات الحسابية، أو استدعاءات الدوال، أو في أي مكان تستخدم فيه متغيراً عادياً من ذلك النوع. يتصرف كل عضو كمتغير مستقل من نوعه المعلن، مما يسمح لك بمعالجة بيانات الـ struct بطريقة منظمة وبديهية.

challenge icon

التحدي

سهل

قم بإنشاء برنامج بلغة C يوضح كيفية الوصول إلى أعضاء الهيكل (struct members) وتعديلها باستخدام عامل النقطة (dot operator). يجب أن يقوم برنامجك بما يلي:

  1. تعريف struct باسم Car يحتوي على الأعضاء التالية:
    • عدد صحيح year لتخزين سنة التصنيع
    • مصفوفة أحرف brand بحجم 20 لتخزين علامة السيارة التجارية
    • عدد صحيح mileage لتخزين المسافة المقطوعة الحالية
    • عدد عشري price لتخزين سعر السيارة
  2. إنشاء متغير من نوع Car باسم myCar
  3. قراءة قيم الإدخال التالية وتعيينها لأعضاء الهيكل باستخدام عامل النقطة:
    • قراءة عدد صحيح للسنة وتعيينه لـ myCar.year
    • قراءة سلسلة نصية للعلامة التجارية وتعيينها لـ myCar.brand
    • قراءة عدد صحيح للمسافة المقطوعة وتعيينه لـ myCar.mileage
    • قراءة عدد عشري للسعر وتعيينه لـ myCar.price
  4. بعد قراءة جميع القيم، قم بإجراء العمليات التالية:
    • زيادة المسافة المقطوعة بمقدار 1000 باستخدام myCar.mileage += 1000;
    • إنقاص السعر بمقدار 500.0 باستخدام myCar.price -= 500.0;
  5. طباعة معلومات السيارة باستخدام عامل النقطة للوصول إلى كل عضو بهذا التنسيق الدقيق:
    • Car Details:
    • Year: [year]
    • Brand: [brand]
    • Mileage: [mileage]
    • Price: [price]

يختبر هذا التحدي فهمك لعامل النقطة لكل من القراءة من أعضاء الهيكل والكتابة إليها. ستتدرب على تعيين القيم لأعضاء الهيكل، وإجراء العمليات الحسابية عليها، والوصول إليها من أجل المخرجات.

على سبيل المثال، إذا كان الإدخال هو:

2020
Toyota
50000
25000.50

يجب أن تكون مخرجاتك:

Car Details:
Year: 2020
Brand: Toyota
Mileage: 51000
Price: 24500.50

ورقة مرجعية

يُستخدم عامل النقطة (.) للوصول إلى الأعضاء الفردية لمتغير الـ struct وتعديلها.

بناء الجملة (Syntax) للوصول إلى أعضاء الـ struct:

structVariable.memberName

مثال على القراءة من أعضاء الـ struct والكتابة إليها:

struct Point p1;

// الكتابة إلى أعضاء الـ struct
p1.x = 10;
p1.y = 20;

// القراءة من أعضاء الـ struct
printf("Point coordinates: (%d, %d)\n", p1.x, p1.y);

يمكن استخدام عامل النقطة في عمليات التعيين، أو العمليات الحسابية، أو استدعاءات الدوال، أو في أي مكان تستخدم فيه متغيراً عادياً من ذلك النوع. يتصرف كل عضو كمتغير مستقل من نوعه المعلن.

جرّب بنفسك

#include <stdio.h>
#include <string.h>

// TODO: قم بتعريف هيكل Car هنا

int main() {
    // TODO: myCar باسم Car قم بإنشاء متغير من نوع
    
    // قراءة قيم الإدخال
    int year;
    char brand[20];
    int mileage;
    float price;
    
    scanf("%d", &year);
    scanf("%s", brand);
    scanf("%d", &mileage);
    scanf("%f", &price);
    
    // TODO: قم بتعيين قيم الإدخال لأعضاء الهيكل باستخدام عامل النقطة
    
    // TODO: قم بتعديل المسافة المقطوعة والسعر كما هو محدد
    
    // TODO: قم بطباعة تفاصيل السيارة باستخدام عامل النقطة
    printf("Car Details:\n");
    // اطبع السنة، الماركة، المسافة المقطوعة، والسعر هنا
    
    return 0;
}
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow