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

تهيئة الـ Structs

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

بينما يمكنك إنشاء متغيرات struct ثم تعيين قيم لأعضائها بشكل فردي، توفر لغة C طريقة أكثر ملاءمة لتعيين القيم الأولية. يمكنك تهيئة متغير struct في وقت التصريح باستخدام قائمة تهيئة (initializer list) محاطة بأقواس متعرجة.

صيغة تهيئة الـ struct هي:

struct StructureName variableName = {value1, value2, ...};

باستخدام مثال الـ Point struct الخاص بنا، يمكنك التصريح عنه وتهيئته في سطر واحد بسيط:

struct Point p1 = {10, 20};

يؤدي هذا إلى إنشاء متغير Point باسم p1 مع ضبط x على 10 و y على 20. يتم تعيين القيم الموجودة في قائمة التهيئة إلى أعضاء الـ struct بالترتيب الذي تم التصريح به في تعريف الـ struct.

إن نهج التهيئة هذا ليس فقط أكثر إيجازاً من عمليات التعيين المنفصلة، بل إنه يضمن أيضاً أن يبدأ الـ struct الخاص بك بقيم ذات معنى بدلاً من البيانات العشوائية غير الصالحة. وهو مفيد بشكل خاص عندما تكون على دراية بالقيم الأولية في وقت التجميع (compile time) وتريد إنشاء متغيرات struct جاهزة للاستخدام بكفاءة.

challenge icon

التحدي

سهل

قم بإنشاء برنامج بلغة C يوضح تهيئة الهياكل (struct) باستخدام قوائم التهيئة (initializer lists). يجب أن يقوم برنامجك بما يلي:

  1. تعريف struct باسم Employee مع الأعضاء التاليين:
    • عدد صحيح id لتخزين معرف الموظف
    • مصفوفة أحرف department بحجم 15 لتخزين اسم القسم
    • عدد صحيح yearsOfService لتخزين سنوات الخدمة
    • رقم عشري salary لتخزين راتب الموظف
  2. إنشاء ثلاثة متغيرات من نوع Employee باستخدام قوائم التهيئة بالبيانات التالية:
    • emp1: المعرف 101، القسم "Engineering"، سنوات الخدمة 5، الراتب 75000.50
    • emp2: المعرف 102، القسم "Marketing"، سنوات الخدمة 3، الراتب 65000.25
    • emp3: المعرف 103، القسم "Sales"، سنوات الخدمة 8، الراتب 80000.75
  3. طباعة المعلومات لكل موظف بهذا التنسيق الدقيق:
    • Employee 1:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
    • Employee 2:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
    • Employee 3:
    • ID: [id]
    • Department: [department]
    • Years of Service: [yearsOfService]
    • Salary: [salary]
  4. حساب وطباعة إجمالي الرواتب لجميع الموظفين الثلاثة بالتنسيق: Total Salary: [total]
  5. حساب وطباعة متوسط سنوات الخدمة بالتنسيق: Average Years of Service: [average]

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

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

Employee 1:
ID: 101
Department: Engineering
Years of Service: 5
Salary: 75000.50
Employee 2:
ID: 102
Department: Marketing
Years of Service: 3
Salary: 65000.25
Employee 3:
ID: 103
Department: Sales
Years of Service: 8
Salary: 80000.75
Total Salary: 220001.50
Average Years of Service: 5.33

ورقة مرجعية

يمكنك تهيئة متغير struct عند وقت التصريح باستخدام قائمة تهيئة محاطة بأقواس متعرجة:

struct StructureName variableName = {value1, value2, ...};

مثال مع struct من النوع Point:

struct Point p1 = {10, 20};

يتم تعيين القيم الموجودة في قائمة التهيئة لأعضاء الـ struct بالترتيب الذي تم التصريح به في تعريف الـ struct. هذا النهج أكثر إيجازاً من التعيينات المنفصلة ويضمن أن يبدأ الـ struct الخاص بك بقيم ذات معنى بدلاً من بيانات عشوائية غير مفيدة.

جرّب بنفسك

#include <stdio.h>

// TODO: قم بتعريف هيكل الموظف (Employee struct) هنا

int main() {
    // TODO: قم بإنشاء ثلاثة متغيرات للموظفين باستخدام قوائم التهيئة
    
    // TODO: اطبع المعلومات لكل موظف
    
    // TODO: احسب واطبع إجمالي الراتب ومتوسط سنوات الخدمة
    
    return 0;
}
quiz iconاختبر نفسك

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

جميع دروس Logic & Flow