تهيئة الـ 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 جاهزة للاستخدام بكفاءة.
التحدي
سهلقم بإنشاء برنامج بلغة C يوضح تهيئة الهياكل (struct) باستخدام قوائم التهيئة (initializer lists). يجب أن يقوم برنامجك بما يلي:
- تعريف
structباسمEmployeeمع الأعضاء التاليين:- عدد صحيح
idلتخزين معرف الموظف - مصفوفة أحرف
departmentبحجم 15 لتخزين اسم القسم - عدد صحيح
yearsOfServiceلتخزين سنوات الخدمة - رقم عشري
salaryلتخزين راتب الموظف
- عدد صحيح
- إنشاء ثلاثة متغيرات من نوع
Employeeباستخدام قوائم التهيئة بالبيانات التالية:emp1: المعرف 101، القسم "Engineering"، سنوات الخدمة 5، الراتب 75000.50emp2: المعرف 102، القسم "Marketing"، سنوات الخدمة 3، الراتب 65000.25emp3: المعرف 103، القسم "Sales"، سنوات الخدمة 8، الراتب 80000.75
- طباعة المعلومات لكل موظف بهذا التنسيق الدقيق:
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]
- حساب وطباعة إجمالي الرواتب لجميع الموظفين الثلاثة بالتنسيق:
Total Salary: [total] - حساب وطباعة متوسط سنوات الخدمة بالتنسيق:
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;
}يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1أساسيات المؤشرات
ما هو المؤشر؟الإعلان عن المؤشراتعامل العنوان (&)عامل إلغاء المرجعية (*)مؤشرات NULLمراجعة: أساسيات المؤشرات4مشروع: أداة نصوص بسيطة
نظرة عامة على المشروععد الأحرف7الهياكل (structs)
ما هو الـ Struct؟الإعلان عن Structإنشاء متغيرات Structالوصول إلى أعضاء الـ Structتهيئة الـ Structsمراجعة: Struct بيانات الطالب2المؤشرات والمصفوفات
أسماء المصفوفات كمؤشراتعناصر المصفوفة - المؤشراتالعمليات الحسابية على المؤشراتمقارنة المؤشراتمراجعة: التنقل في المصفوفة باستخدام المؤشرات5المؤشرات والدوال
التمرير بالقيمةتمرير المؤشرات إلى الدوالتعديل المتغيرات عبر المؤشراتمثال كلاسيكي: التبديلتمرير المصفوفات إلى الدوالملخص: وسائط المؤشرات في الدوال8الهياكل والمؤشرات
المؤشرات إلى الهياكلعامل السهم (->)تمرير الهياكل بالقيمةتمرير مؤشرات الهياكلالتخصيص الديناميكي للهياكلمراجعة: تعديل الهياكل باستخدام المؤشرات11تحديات المراجعة النهائية
مراجعة: دمج السلاسل النصية الديناميكيمراجعة: مصفوفة من الـ Structsمراجعة: عداد تكرار الكلمات3مصفوفات الأحرف والسلاسل النصية
السلاسل النصية كمصفوفات charالمُنهي الصفري (Null Terminator)إدخال السلاسل النصية باستخدام scanfاستخدام strlen()استخدام strcpy()استخدام strcat()استخدام strcmp()مراجعة: دوال السلاسل النصية الأساسية