SlideShare une entreprise Scribd logo
1  sur  16
Télécharger pour lire hors ligne
‫المصفوفات‬Arrays:
‫تمھيد‬:‫التعامل‬ ‫يتم‬ ‫بحيث‬ ‫معا‬ ‫النوع‬ ‫فى‬ ‫المتشابھة‬ ‫العناصر‬ ‫من‬ ‫مجموعة‬ ‫يرتبط‬ ‫قد‬ ‫االحيان‬ ‫من‬ ‫كثير‬ ‫فى‬
‫يتم‬ ‫بحيث‬ ‫مشترك‬ ‫واحد‬ ‫برابط‬ ‫معا‬ ‫العناصر‬ ‫ھذه‬ ‫ربط‬ ‫يتم‬ ‫أن‬ ‫يستلزم‬ ‫مما‬ ‫واحدة‬ ‫بطريقة‬ ‫العناصر‬ ‫ھذه‬ ‫مع‬
‫الرابط‬ ‫ھذا‬ ‫طريق‬ ‫عن‬ ‫العناصر‬ ‫ھذه‬ ‫مع‬ ‫التعامل‬‫المشترك‬.‫فإنه‬ ،‫معا‬ ‫وإرتباطھا‬ ‫العناصر‬ ‫ھذه‬ ‫لتشابھه‬ ‫ونظرا‬
‫محدد‬ ‫شرط‬ ‫طريق‬ ‫عن‬ ‫العناصر‬ ‫ھذه‬ ‫من‬ ‫أكثر‬ ‫أو‬ ‫عنصر‬ ‫الصطفاء‬ ‫وسيلة‬ ‫إيجاد‬ ‫الضروري‬ ‫من‬.‫خلص‬ ‫لذلك‬
‫االحتياجات‬ ‫ھذه‬ ‫حل‬ ‫لتوفير‬ ‫طريقة‬ ‫اليجاد‬ ‫البرمجة‬ ‫لغات‬ ‫مبرمجو‬.‫بالمصفوفات‬ ‫يسمى‬ ‫ما‬ ‫تعريف‬ ‫ھو‬ ‫الحل‬ ‫و‬
)Arrays(‫يطلق‬ ‫ما‬ ‫أو‬‫بالمنظومات‬ ‫البعض‬ ‫عليه‬.
‫ھي‬ ‫عناوين‬ ‫أربعة‬ ‫طريق‬ ‫عن‬ ‫ھذه‬ ‫مناقشتنا‬ ‫خالل‬ ‫سننطلق‬ ‫فاننا‬ ‫لذلك‬:
1.‫المصفوفة‬ ‫ھي‬ ‫ما‬.
2.‫المصفوفات‬ ‫أنواع‬ ‫ھي‬ ‫ما‬.
3.‫مصفوفة‬ ‫عن‬ ‫اإلعالن‬ ‫كيفية‬.
4.‫مصفوفة‬ ‫مع‬ ‫التعامل‬ ‫كيفية‬.
5.‫المصفوفات‬ ‫إلستخدام‬ ‫أمثلة‬.
‫أوال‬:‫المصفوفة‬ ‫تعريف‬:
‫بأن‬ ‫القول‬ ‫يمكن‬ ‫فانه‬ ،‫تمھيد‬ ‫من‬ ‫به‬ ‫تقدمنا‬ ‫ما‬ ‫ووفق‬ ‫المصفوفة‬ ‫تعريف‬ ‫الى‬ ‫بالنسبة‬" :‫ھي‬ ‫المصفوفة‬
‫مشتركة‬ ‫بصفة‬ ‫معا‬ ‫والمرتبطة‬ ‫النوع‬ ‫فى‬ ‫المتشابھة‬ ‫العناصر‬ ‫من‬ ‫بعض‬ ‫تجمع‬ ‫عن‬ ‫عبارة‬."
‫أنواع‬ ‫يكون‬ ‫أن‬ ‫الممكن‬ ‫من‬ ‫النوع،فانه‬ ‫فى‬ ‫متشابھة‬ ‫بيانات‬ ‫عن‬ ‫عبارة‬ ‫المصفوفة‬ ‫عناصر‬ ‫كانت‬ ‫لما‬ ‫و‬‫البيانات‬
‫ھى‬ ‫العناصر‬ ‫لھذه‬‫حرفية‬ ‫بيانات‬(char)‫رقمية‬ ‫وبيانات‬(int)‫حقيقية‬ ‫وبيانات‬(float)‫األنواع‬ ‫ھذه‬ ‫وتسمى‬
(float, int, char)‫الترتيب‬ ‫على‬‫ھى‬ ‫االنواع‬ ‫وھذه‬‫أقل‬ ‫تجزئتھا‬ ‫يمكن‬ ‫ال‬ ‫حيث‬ ،‫للبيانات‬ ‫الرئيسية‬ ‫ألنواع‬
‫ذلك‬ ‫من‬.
‫مع‬ ‫تعامالتنا‬ ‫معظم‬ ‫فى‬ ‫فيه‬ ‫نرى‬ ‫الذى‬ ‫الوقت‬ ‫وفى‬‫بيانات‬ ‫من‬ ‫عناصر‬ ‫من‬ ‫تتكون‬ ‫المصفوفة‬ ‫ان‬ ‫المصفوفات‬
‫مركبة‬ ‫عناصر‬ ‫من‬ ‫تتكون‬ ‫ان‬ ‫ممكن‬ ‫المصفوفة‬ ‫أن‬ ‫أخرى‬ ‫أوقات‬ ‫فى‬ ‫نجد‬ ‫فاننا‬ ،‫بسيطة‬.‫المصفوفة‬ ‫تتكون‬ ‫فقد‬
‫ھياكل‬ ‫أو‬ ‫مصفوفات‬ ‫من‬)‫الحقا‬ ‫شرحھا‬ ‫سيتم‬(‫ما‬ ‫وھو‬ ‫ودوال‬ ‫إجراءات‬ ‫مع‬ ‫تتعامل‬ ‫والتى‬ ‫كائنات‬ ‫من‬ ‫أحيانا‬ ‫و‬
‫لغة‬ ‫به‬ ‫تتميز‬c++.‫لذل‬‫بلغات‬ ‫البرمجة‬ ‫واحتراف‬ ‫إتقان‬ ‫فى‬ ‫االھمية‬ ‫بالغ‬ ‫أثر‬ ‫المصفوفات‬ ‫لدراسة‬ ‫فإن‬ ‫ك‬
‫لغة‬ ‫رأسھا‬ ‫وعلى‬ ‫الحاسب‬c++.
‫ثانيا‬:‫المصفوفات‬ ‫أنواع‬
‫و‬‫ھما‬ ‫أساسيين‬ ‫نوعين‬ ‫الى‬ ‫تقسيمھا‬ ‫فيمكن‬ ‫المصفوفات‬ ‫أنواع‬ ‫الى‬ ‫بالنسبة‬:
•‫البعد‬ ‫أحادية‬ ‫مصفوفات‬One Dimensional Arrays‫عن‬ ‫وھى‬‫يمكن‬ ‫مصفوفات‬‫على‬ ‫اليھا‬ ‫النظر‬
‫دليل‬ ‫يحتاج‬ ‫المصفوفات‬ ‫من‬ ‫النوع‬ ‫ھذا‬ ‫ومثل‬ ‫واحدا‬ ‫عمودا‬ ‫أو‬ ‫واحدا‬ ‫صفا‬ ‫ذلك‬ ‫كان‬ ‫سواء‬ ‫متجه‬ ‫انھا‬
‫عناصره‬ ‫النتقاء‬ ‫واحد‬.‫المصفوفات‬ ‫من‬ ‫النوع‬ ‫لھذا‬ ‫االعتبارية‬ ‫االشكال‬ ‫يوضح‬ ‫التالي‬ ‫الشكل‬ ‫و‬.
‫عمود‬
‫صف‬
‫يتم‬ ‫فانه‬ ، ‫الحالتين‬ ‫كلتا‬ ‫فى‬ ‫و‬‫الحاسوب‬ ‫ذاكرة‬ ‫فى‬ ‫واحدة‬ ‫بطريقة‬ ‫البعد‬ ‫أحادية‬ ‫المصفوفة‬ ‫تمثيل‬
‫عمود‬ ‫بشكل‬ ‫سنعتبره‬ ‫ما‬ ‫وھو‬.
•‫االبعاد‬ ‫متعددة‬ ‫مصفوفات‬Multidimensional Arrays‫االبعاد‬ ‫ثالثى‬ ،‫البعد‬ ‫ثنائى‬ ‫النوع‬ ‫ھذا‬ ‫يكون‬ ‫وقد‬
‫االستخدام‬ ‫قليل‬ ‫وھو‬‫ذل‬ ‫من‬ ‫أكثر‬ ‫ھو‬ ‫ما‬ ‫أو‬ ،‫االستخدام‬ ‫نادر‬ ‫وھو‬ ‫ك‬.‫دراستنا‬ ‫فى‬ ‫سنتناول‬ ‫و‬
‫فيمكن‬ ‫االكبر‬ ‫االبعاد‬ ‫ذات‬ ‫المصفوفات‬ ‫أما‬ ‫البعد‬ ‫ثنائية‬ ‫ھى‬ ‫التى‬ ‫تلك‬ ‫و‬ ‫البعد‬ ‫احادية‬ ‫المصفوفات‬
‫نتناولھا‬ ‫فلن‬ ‫لذلك‬ ‫االسلوب‬ ‫بنفس‬ ‫معھا‬ ‫التعامل‬.‫و‬ ‫صفوف‬ ‫من‬ ‫تتكون‬ ‫البعد‬ ‫ثنائية‬ ‫المصفوفات‬ ‫و‬
‫و‬ ‫أعمدة‬‫ھى‬‫عناصرھا‬ ‫من‬ ‫عنصر‬ ‫أى‬ ‫الصطفاء‬ ‫دليلين‬ ‫الى‬ ‫تحتاج‬.‫ويو‬‫مصفوفة‬ ‫التالى‬ ‫الشكل‬ ‫ضح‬
‫البعد‬ ‫ثنائية‬
‫من‬ ‫تتكون‬ ‫وھى‬5‫و‬ ‫صفوف‬6‫أعمدة‬.
‫ثالثا‬:‫المصفوفة‬ ‫عن‬ ‫االعالن‬:
‫من‬ ‫زوجى‬ ‫عدد‬ ‫ثم‬ ‫المصفوفة‬ ‫أسم‬ ‫يليه‬ ‫المصفوفة‬ ‫عناصر‬ ‫نوع‬ ‫بذكر‬ ‫المصفوفات‬ ‫عن‬ ‫االعالن‬ ‫يتم‬
‫االقصى‬ ‫الحد‬ ‫بداخلھا‬ ‫يوضع‬ ‫المتحاورة‬ ‫االقواس‬‫الفاصلة‬ ‫أخيرا‬ ‫و‬ ‫البعد‬ ‫لھذا‬ ‫المصفوفة‬ ‫لعناصر‬
‫التعريف‬ ‫جملة‬ ‫لنھاية‬ ‫إعالنا‬ ‫المنقوطة‬.
‫المصفوفة‬ ‫لتعريف‬ ‫مختلفة‬ ‫حاالت‬ ‫توضح‬ ‫التالية‬ ‫االمثلة‬ ‫و‬.
‫عناصر‬ ‫نوع‬
‫المصفوفة‬
‫الحد‬
‫االقصى‬
‫بعد‬ ‫لكل‬
‫البعد‬‫أسم‬
‫المصفوفة‬
‫عدد‬‫أزواج‬
‫االقواس‬
‫المتجاورة‬
‫المثال‬
‫عددى‬
‫صحيح‬
201a1int a[20];
‫حرفى‬301b1char b[30];
‫عددى‬
‫كسري‬
251mem1float mem[25];
‫عددى‬
‫صحيح‬
20‫و‬ ‫صف‬
30‫عمود‬
2d2int d[20][30];
‫حرفى‬10‫صفوف‬
‫و‬200‫عمود‬
2stack2char
stack[10][200];
‫حرفى‬10‫مستويات‬
‫و‬10‫صفوف‬
‫و‬10‫أعمدة‬
3x3char
x[10][10][10];
‫عددى‬
‫كسري‬
‫متضاعف‬
‫الدقة‬
10‫صفوف‬
20‫عمود‬
2y2double
y[10][20];
‫النحو‬ ‫على‬ ‫االعالن‬ ‫مرحلة‬ ‫أثناء‬ ‫للمصفوفة‬ ‫قيم‬ ‫تخصيص‬ ‫الممكن‬ ‫من‬ ‫أنه‬ ‫مالحضظة‬ ‫الضروري‬ ‫من‬
‫التالى‬:
int a[]={1,2,3,4,5,6};
‫المصفوفة‬ ‫أن‬ ‫يتضح‬ ‫المثال‬ ‫ھذا‬ ‫وفى‬a‫ھى‬ ‫الصحيحة‬ ‫االعداد‬ ‫من‬ ‫واحد‬ ‫صف‬ ‫من‬ ‫تتكون‬
1‫و‬2‫و‬3‫و‬4‫و‬5‫و‬6.
float b[][]={{1,2,3},{4,5,6},{7,8,9}};
‫المصفوفة‬ ‫أن‬ ‫يتضح‬ ‫المثال‬ ‫ھذا‬ ‫وفى‬B‫من‬ ‫تتكون‬3‫أعمدة‬ ‫ثالثة‬ ‫من‬ ‫يتكون‬ ‫صف‬ ‫وكل‬ ‫صفوف‬.
‫ھى‬ ‫االول‬ ‫الصف‬ ‫عناصر‬:1‫و‬2‫و‬3.‫ھى‬ ‫الثانى‬ ‫الصف‬ ‫وعناصر‬4‫و‬5‫و‬6.‫الثالث‬ ‫الصف‬ ‫عناصر‬ ‫حين‬ ‫فى‬
‫ھى‬7‫و‬8‫و‬9.
char c[]={‘a’,’n’,’o’};
‫رابعا‬:‫مع‬ ‫التعامل‬ ‫كيفية‬‫المصفوفة‬:
‫المصفوفة‬ ‫مع‬ ‫التعامل‬ ‫يتم‬ ‫فانه‬ ‫لذلك‬ ،‫الحاسوب‬ ‫ذاكرة‬ ‫في‬ ‫مصفوفة‬ ‫من‬ ‫أكثر‬ ‫وجود‬ ‫الممكن‬ ‫من‬ ‫كان‬ ‫لما‬
‫المصفوفة‬ ‫داخل‬ ‫العنصر‬ ‫موضع‬ ‫لتحديد‬ ‫أدلة‬ ‫مجموعة‬ ‫أو‬ ‫دليل‬ ‫و‬ ‫أسمھا‬ ‫طريق‬ ‫عن‬.‫مع‬ ‫التعامل‬ ‫كان‬ ‫ولما‬
‫يكم‬ ‫لم‬ ‫إن‬ ‫الحكمة‬ ‫من‬ ‫فإنه‬ ‫لذلك‬ ،‫االالف‬ ‫يتجاوزز‬ ‫قد‬ ‫عناصرھا‬ ‫من‬ ‫كبير‬ ‫عدد‬ ‫مع‬ ‫التعامل‬ ‫يتطلب‬ ‫المصفوفة‬
‫تكرارية‬ ‫حلقات‬ ‫إستخدام‬ ‫الضرورى‬ ‫من‬‫طريق‬ ‫عن‬‫دراستھا‬ ‫السابق‬ ‫التكرارية‬ ‫الجمل‬ ‫من‬ ‫أي‬‫جملة‬ ‫مثل‬for
‫جملة‬ ‫أو‬while‫جملة‬ ‫أو‬do while‫أست‬ ‫نفضل‬ ‫اننا‬ ‫إال‬‫جملة‬ ‫خدام‬for‫البداية‬ ‫نعلم‬ ‫الننا‬ ‫وذلك‬ ‫التكرارية‬
‫الزيادة‬ ‫ومقدار‬ ‫والنھاية‬.‫المصفوفة‬ ‫عناصر‬ ‫إلى‬ ‫اإلشارة‬ ‫ويتم‬‫نسبا‬ ‫بداخلھا‬ ‫العنصر‬ ‫موضع‬ ‫بتحيد‬ ‫البعد‬ ‫أحادية‬
‫فيھا‬ ‫عنصر‬ ‫أول‬ ‫الى‬)‫المؤشرات‬ ‫دراسة‬ ‫عند‬ ‫ذلك‬ ‫سيتضح‬ ‫كم‬ ،‫المصفوفة‬ ‫أسم‬(‫كما‬‫إلى‬ ‫اإلشارة‬ ‫يتم‬
‫المصفوفة‬ ‫عناصر‬‫ثنائ‬‫البعد‬ ‫ية‬‫العنصر‬ ‫عندھما‬ ‫يقع‬ ‫الذي‬ ‫العمود‬ ‫ورقم‬ ‫الصف‬ ‫برقم‬.‫مع‬ ‫التعامل‬ ‫ويمكن‬
‫االتية‬ ‫المراحل‬ ‫طريق‬ ‫عن‬ ‫المصفوفة‬:
•‫ثم‬ ‫ومن‬ ‫المصفوفة‬ ‫لعناصر‬ ‫الفعلى‬ ‫العدد‬ ‫معرفة‬‫قرأة‬‫عناصر‬‫المصفوفة‬‫الحلقات‬ ‫طريق‬ ‫عن‬
‫التكرارية‬.
•‫المصفوفة‬ ‫عناصر‬ ‫معالجة‬‫المصفوفة‬‫التكرارية‬ ‫الحلقات‬ ‫طريق‬ ‫عن‬.
•‫عناصر‬ ‫من‬ ‫العديد‬ ‫إظھار‬ ‫المطلوب‬ ‫كان‬ ‫اذا‬ ‫التكرارية‬ ‫الحلقات‬ ‫استخدام‬ ‫ويمكن‬ ‫النتائج‬ ‫إظھار‬ ‫و‬ ‫طباعة‬
‫المعالجة‬ ‫عند‬ ‫المصفوفة‬.‫الحلقات‬ ‫من‬ ‫عدد‬ ‫استخدام‬ ‫الضروري‬ ‫من‬ ‫أنه‬ ‫على‬ ‫التأكيد‬ ‫يجب‬ ‫وھنا‬
‫الممصفوفة‬ ‫بعد‬ ‫مع‬ ‫يتساوى‬ ‫المتداخلة‬ ‫التكرارية‬.
‫خامسا‬:‫المصفوفا‬ ‫إلستخدام‬ ‫أمثلة‬‫ت‬
‫بأنواعھا‬ ‫المصفوفات‬ ‫لمعالجة‬ ‫برامج‬ ‫انشاء‬ ‫كيفية‬ ‫لتوضيح‬ ‫االمثلة‬ ‫من‬ ‫لمجمزعة‬ ‫الجزء‬ ‫ھذا‬ ‫فى‬ ‫سنتعرض‬.
‫برنامج‬1:‫وطباعة‬ ‫وحساب‬ ‫االلى‬ ‫الحاسب‬ ‫مادة‬ ‫فى‬ ‫الطالب‬ ‫من‬ ‫عدد‬ ‫درجات‬ ‫لقراءة‬ ‫برنامج‬ ‫انشئ‬
‫الدرجات‬ ‫ومتوسط‬ ‫مجموع‬.
‫الحل‬:
#include<iostream.h>
void main(void)
{
int degrees[25],i,n;
float sum,average;
cout<<”Enter number of students n please /n”;
cin>>n;
sum=0;
for(i=0;i<n;i++)
{
cout<<”Enter the degree of student no. “<<i<<”please n”;
cin<<degrees[i];
sum=sum+degrees[i];
}
average=sum/n;
cout <<” The average of degrees is “ <<average<<”n”;
}
‫برنامج‬2:‫بمقدار‬ ‫الموظفين‬ ‫رواتب‬ ‫لزيادة‬ ‫برنامج‬ ‫انشئ‬20%‫رواتبھم‬ ‫مقدار‬ ‫من‬.
‫الحل‬:
#include<iostream.h>
void main(void)
{
int salary[100],i,n;
float average;
cout<<”Enter number of employees n please /n”;
cin>>n;
for(i=0;i<n;i++)
{
cout<<”Enter the salary of employee no. “<<i<<”please n”;
cin<<salary[i];
salary[i]= salary[i]*(1.2);
cout<<”Salary after increasing= “<<salary[i]<<”n”;
}
}
‫برنامج‬3:
‫وطباعة‬ ‫أخري‬ ‫مربعة‬ ‫مصفوفة‬ ‫فى‬ ‫الناتج‬ ‫ووضع‬ ‫مربعتين‬ ‫مصفوفتين‬ ‫لقراءة‬ ‫برنامج‬ ‫انشئ‬‫على‬ ‫الناتج‬
‫الشاشة‬:
‫الحل‬:
include<iostream.h>
void main(void)
{
int a[10][10],b[10][10],c[10][10],i,j,m,n;
cout<<”Enter number of rows and columns please m and nplease /n”;
cin>>m>>n;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
cout<<”Enter the the elements of matrices a and b for row #”<<i<<”and col. #”<<j<<”
pleasen”;
cin>>a[i][j]<<b[i][j];
cout<<”The sum of the matrix is given by= “<<c[i][j]<<”n”;
}
}
‫برنامج‬3:
‫طالب‬ ‫اسم‬ ‫قراءة‬ ‫برنامج‬ ‫انشئ‬name‫الجملة‬ ‫مستخدما‬ ‫به‬ ‫رحب‬ ‫ثم‬namewelcome
‫الحل‬:
# include<iostream.h>
#include<string.h>
void main(void)
{
char namr[80]
cout<<”place enter your name : “;
gets(name);
cout<<”welcome “ << name;
}
‫مالحظات‬:
1-‫فى‬‫الحروف‬ ‫مصفوفة‬ ‫عن‬ ‫يعلن‬ ‫البرنامج‬ ‫ھذا‬name‫ثم‬‫االجراء‬ ‫نستخدم‬gets‫المستخدم‬ ‫اسم‬ ‫ليقرأ‬
‫ثم‬ ‫المفاتيح‬ ‫لوحة‬ ‫من‬‫المصفوفة‬ ‫فى‬ ‫المستخدم‬ ‫أدخلھا‬ ‫التى‬ ‫الحروف‬ ‫يخزن‬
-‫إذا‬‫التالى‬ ‫اكتب‬ ‫حدة‬ ‫على‬ ‫المصفوفة‬ ‫حروف‬ ‫من‬ ‫حرف‬ ‫كل‬ ‫مع‬ ‫تتعامل‬ ‫أن‬ ‫رغبت‬name[0] = 'a'
-‫إذا‬‫المتغيرات‬ ‫أحــد‬ ‫الى‬ ‫المصفوفة‬ ‫فى‬ ‫الحروف‬ ‫أحد‬ ‫فى‬ ‫الموجودة‬ ‫القيمة‬ ‫تنقل‬ ‫ان‬ ‫اردت‬‫نكتب‬ ‫األخرى‬ss
= name[15];
2-‫تن‬ ‫الحروف‬ ‫مصفوفة‬‫صفر‬ ‫بالرقم‬ ‫تھى‬
‫صفر‬ ‫بالرقم‬ ‫تنتھى‬ ‫ان‬ ‫يجب‬ ‫الحروف‬ ‫مصفوفة‬ ‫ان‬ ‫تالحظ‬ ‫ان‬ ‫يجب‬( null )
*‫برنامج‬*
# include <iostream.h>
void main(void)
{
char strin[ ] = “hello”;
cout<<”the character array is”<< strin <<”n”;
}
*‫مالحظات‬:
-‫فى‬‫مصفوفة‬ ‫عن‬ ‫نعلن‬ ‫البرنامج‬ ‫ھذا‬‫باسم‬string
-‫نطلب‬‫كلمة‬ ‫فيھا‬ ‫يضع‬ ‫بان‬ ‫يھيئھا‬ ‫ان‬ ‫المترجم‬ ‫من‬hello‫يلى‬ ‫كما‬char string[ ] = "hello”
-‫بعد‬‫االجراء‬ ‫نستخدم‬ ‫ذلك‬printf‫المصفوفة‬ ‫ھذه‬ ‫محتويات‬ ‫ليطبع‬
-‫كلمة‬ ‫استخدام‬sizeof‫ونطبعه‬ ‫المصفوفة‬ ‫ھذه‬ ‫حجم‬ ‫على‬ ‫لنحصل‬‫الناتج‬ ‫يكون‬
The character array is hello
-‫الحظ‬‫ھو‬ ‫المصفوفة‬ ‫حجم‬ ‫ان‬6‫حروف‬‫فيھا‬ ‫وضعنا‬ ‫اننا‬ ‫حين‬ ‫فى‬5‫فقط‬‫الحروف‬ ‫وھى‬hello
‫السبب‬:‫تنتھى‬ ‫الحروف‬ ‫مصفوفة‬ ‫أن‬ ‫ھو‬‫فى‬ ‫كما‬ ‫نھايتھا‬ ‫على‬ ‫كداللة‬ ‫يستخدم‬ ‫الذى‬ ‫صفر‬ ‫بالرقم‬ ‫دائماص‬
‫الشكل‬:
‫السجالت‬)‫الھياكل‬(
‫تمھيد‬:
‫بحيث‬ ‫معا‬ ‫النوع‬ ‫فى‬ ‫المتشابھة‬ ‫غير‬ ‫أو‬ ‫المتشابھة‬ ‫العناصر‬ ‫من‬ ‫مجموعة‬ ‫يرتبط‬ ‫قد‬ ‫االحيان‬ ‫من‬ ‫كثير‬ ‫فى‬
‫مشترك‬ ‫واحد‬ ‫برابط‬ ‫معا‬ ‫العناصر‬ ‫ھذه‬ ‫ربط‬ ‫يتم‬ ‫أن‬ ‫يستلزم‬ ‫مما‬ ‫واحدة‬ ‫بطريقة‬ ‫العناصر‬ ‫ھذه‬ ‫مع‬ ‫التعامل‬ ‫يتم‬
‫المشترك‬ ‫الرابط‬ ‫ھذا‬ ‫طريق‬ ‫عن‬ ‫العناصر‬ ‫ھذه‬ ‫مع‬ ‫التعامل‬ ‫يتم‬ ‫بحيث‬.‫ونظرا‬‫إل‬‫رتباطھا‬‫ھذه‬‫فإنه‬ ،‫معا‬ ‫العناصر‬
‫محدد‬ ‫شرط‬ ‫طريق‬ ‫عن‬ ‫العناصر‬ ‫ھذه‬ ‫من‬ ‫أكثر‬ ‫أو‬ ‫عنصر‬ ‫الصطفاء‬ ‫وسيلة‬ ‫إيجاد‬ ‫الضروري‬ ‫من‬.
‫قاعدة‬ ً‫ال‬‫فمث‬ ‫البيانات‬ ‫قواعد‬ ‫تطبيقات‬ ‫البرامج‬ ‫عالم‬ ‫في‬ ‫التطبيقات‬ ‫من‬ ‫العديد‬ ‫ألن‬ ‫نظرا‬ ‫أنه‬ ‫بالذكر‬ ‫الجدير‬ ‫و‬
‫سجال‬ ‫شكل‬ ‫في‬ ‫الموظفين‬ ‫بيانات‬ ‫تمثل‬ ‫موظفين‬ ‫بيانات‬‫لو‬ ‫و‬ ‫حقول‬ ‫من‬ ‫مجموعة‬ ‫من‬ ‫يتكون‬ ‫سجل‬ ‫كل‬ ‫ت‬
‫مثل‬ ‫البيانات‬ ‫قواعد‬ ‫برامج‬ ‫بأحد‬ ‫خبرة‬ ‫لك‬ ‫أن‬dbase‫أو‬MS-Access‫أو‬FoxPro‫نظم‬ ‫برامج‬ ‫من‬ ‫غيرھا‬ ‫أو‬
‫البيانات‬ ‫قواعد‬ ‫معالجة‬‫سجالت‬ ‫إلى‬ ‫ينقسم‬ ‫الملف‬ ‫أن‬ ‫فستعرف‬records‫حقول‬ ‫إلى‬ ‫ينقسم‬ ‫السجل‬ ‫و‬
fields‫كوحدة‬ ‫الحقول‬ ‫مع‬ ‫كذلك‬ ‫و‬ ‫كوحدة‬ ‫السجل‬ ‫مع‬ ‫للتعامل‬ ‫نحتاج‬ ً‫ا‬‫دائم‬ ‫و‬.‫لغة‬ ‫تستخدم‬ ‫و‬C‫كلمة‬
struct‫لكلمة‬ ‫األخرى‬ ‫البرمجة‬ ‫لغات‬ ‫تستخدمه‬ ‫الذي‬ ‫المفھوم‬ ‫بنفس‬Record.
‫االحتياجات‬ ‫ھذه‬ ‫حل‬ ‫لتوفير‬ ‫طريقة‬ ‫اليجاد‬ ‫البرمجة‬ ‫لغات‬ ‫مبرمجو‬ ‫خلص‬ ‫لذلك‬.‫يسمى‬ ‫ما‬ ‫تعريف‬ ‫ھو‬ ‫الحل‬ ‫و‬
‫ا‬ ‫أو‬ ‫بالسجالت‬‫لھياكل‬)structures(‫فصاعد‬ ‫االن‬ ‫من‬ ‫عليه‬ ‫وسنطلق‬‫السجالت‬.
‫ھي‬ ‫عناوين‬ ‫أربعة‬ ‫طريق‬ ‫عن‬ ‫ھذه‬ ‫مناقشتنا‬ ‫خالل‬ ‫سننطلق‬ ‫فاننا‬ ‫لذلك‬:
1.‫ھو‬ ‫ما‬‫السجل‬.
2.‫عن‬ ‫اإلعالن‬ ‫كيفية‬‫سجل‬.
3.‫مع‬ ‫التعامل‬ ‫كيفية‬‫سجل‬.
4.‫إلستخدام‬ ‫أمثلة‬‫السجالت‬.
‫أوال‬:‫السجل‬ ‫تعريف‬:
‫العناصر‬ ‫من‬ ‫مجموعة‬ ‫عن‬ ‫عبارة‬ ‫السجل‬‫التشابھة‬ ‫غير‬ ‫معا‬ ‫المرتبطة‬)‫متشابھة‬ ‫أحيانا‬ ‫و‬(‫النوع‬ ‫فى‬
‫بالحقول‬ ‫العناصر‬ ‫ھذه‬ ‫تسمى‬.
‫السجل‬ ‫عن‬ ‫االعالن‬ ‫ثانيا‬:
‫فمنھا‬ ‫الطرق‬ ‫من‬ ‫مجموعة‬ ‫طريق‬ ‫عن‬ ‫السجل‬ ‫عن‬ ‫االعالن‬ ‫يتم‬:
1-‫متغيرات‬ ‫عن‬ ‫االعالن‬ ‫يتم‬ ‫منفصلة‬ ‫جملة‬ ‫وفى‬ ‫ذلك‬ ‫بعد‬ ‫ثم‬ ‫سجل‬ ‫النوع‬ ‫من‬ ‫جديد‬ ‫بيانات‬ ‫نوع‬ ‫تعريف‬
‫النوع‬ ‫من‬‫سابقا‬ ‫المعرف‬ ‫سجل‬.
2-‫الى‬ ‫المتغيرات‬ ‫جميع‬ ‫التعريف‬ ‫جملة‬ ‫نفس‬ ‫وفى‬ ‫يلحقة‬ ‫ثم‬ ‫سجل‬ ‫النوع‬ ‫من‬ ‫جديد‬ ‫بيانات‬ ‫نوع‬ ‫تعريف‬
‫النوع‬ ‫ھذا‬ ‫نفس‬ ‫من‬ ‫ھى‬.
3-‫المحجوزة‬ ‫الكلمة‬ ‫باستخدام‬ ‫سجل‬ ‫النوع‬ ‫من‬ ‫جديد‬ ‫بيانات‬ ‫نوع‬ ‫تعريف‬typedef‫مستقلة‬ ‫جملة‬ ‫فى‬
‫جد‬ ‫جملة‬ ‫فى‬ ‫النوع‬ ‫نفس‬ ‫من‬ ‫ھى‬ ‫التى‬ ‫المتغيرات‬ ‫نعرف‬ ‫ثم‬‫يدة‬.
‫المحجوزة‬ ‫الكلمة‬ ‫استخدام‬ ‫يجب‬ ‫السابقة‬ ‫الثالث‬ ‫الحالت‬ ‫من‬ ‫حالة‬ ‫كل‬ ‫وفى‬struct‫فى‬ ‫رغبتنا‬ ‫البادء‬
‫النوع‬ ‫متشابھة‬ ‫غير‬ ‫البيانات‬ ‫من‬ ‫ومركب‬ ‫جديد‬ ‫نوع‬ ‫مع‬ ‫التعامل‬.
‫الحالة‬ ‫فى‬ ‫السجل‬ ‫تعريف‬ ‫ويتم‬‫الثانية‬‫المحجوزة‬ ‫الكلمة‬ ‫استخدام‬ ‫طريق‬ ‫عن‬struct‫باسم‬ ‫متبوعة‬
‫بين‬ ‫يوضع‬ ‫ثم‬ ‫الھيكل‬‫البيانات‬ ‫نوع‬ ‫ذكر‬ ‫طريق‬ ‫عن‬ ‫وذلك‬ ‫السجل‬ ‫ھذا‬ ‫حقول‬ ‫أو‬ ‫عناصر‬ ‫المجموعات‬ ‫قوسى‬
‫الحقل‬ ‫تعريف‬ ‫نھاية‬ ‫عن‬ ‫لالعﯩن‬ ‫منقوطة‬ ‫فاصلة‬ ‫ثم‬ ‫الحقل‬ ‫باسم‬ ‫متبوعا‬ ‫الحقل‬ ‫منه‬ ‫يتكون‬ ‫التى‬.‫يتم‬ ‫ھكذا‬
‫السجل‬ ‫لھذا‬ ‫الحقول‬ ‫جميع‬ ‫تعريف‬.
‫العا‬ ‫التعريف‬ ‫فى‬ ‫ذلك‬ ‫تلخيص‬ ‫ويمكن‬‫التالى‬ ‫م‬:
struct structure_name
{
type1 field1;
type2 field2;
.
.
.
typen fieldn;
};
‫حيث‬structure_name‫عنه‬ ‫االعالن‬ ‫المراد‬ ‫السجل‬ ‫أسم‬ ‫ھو‬.‫المتغيرات‬ ‫عن‬ ‫االعالن‬ ‫يتم‬ ‫الحالة‬ ‫ھذه‬ ‫وفى‬
var1,var2,…,varn‫النوع‬ ‫من‬ ‫ھى‬ ‫التى‬structure_name‫التالى‬ ‫النحو‬ ‫على‬:
struct structure_name var1,var2,…,varn;
‫المثال‬ ‫سبيل‬ ‫على‬:‫التالى‬ ‫السجل‬
struct S
{
int a;
float b;
char c;
float d
char name[20];
};
‫للبيانات‬ ‫مركب‬ ‫جديد‬ ‫نوع‬ ‫عن‬ ‫اعالن‬ ‫مجرد‬ ‫ھو‬‫أسمه‬ ‫ھيكل‬ ‫عن‬ ‫عبارة‬S‫و‬‫من‬ ‫مكون‬5‫حقول‬‫ھى‬:
-a،‫صحيح‬ ‫عددى‬ ‫ونوعه‬
-b،‫كسري‬ ‫عددى‬ ‫ونوعه‬
-c‫حرفى‬ ‫نوعه‬ ‫و‬،
-d،‫كسري‬ ‫عددى‬ ‫ونوعى‬
-‫أخيرا‬name‫حرفية‬ ‫سلسلة‬ ‫وھو‬string‫من‬ ‫مكونة‬20‫حرف‬.
‫لإلعالن‬ ‫و‬)‫حجز‬(‫النوع‬ ‫من‬ ‫متغيرات‬ ‫عن‬S‫التالية‬ ‫الجملة‬ ‫نستخدم‬:
struct S x,y,z;
‫المنغيرات‬ ‫عن‬ ‫االعالن‬ ‫تم‬ ‫حيث‬x,y,z‫سجالت‬ ‫أنھا‬ ‫على‬.‫أنھا‬ ‫ذلك‬ ‫من‬ ‫أكثر‬ ‫بل‬ ،‫فحسب‬ ‫ھذا‬ ‫ليس‬
‫ال‬ ‫من‬ ‫سجالت‬‫نوع‬S.
‫المحجوزة‬ ‫الكلمة‬ ‫استخدام‬ ‫طريق‬ ‫عن‬ ‫الثانية‬ ‫الحالة‬ ‫فى‬ ‫السجل‬ ‫تعريف‬ ‫ويتم‬struct‫باسم‬ ‫متبوعة‬
‫البيانات‬ ‫نوع‬ ‫ذكر‬ ‫طريق‬ ‫عن‬ ‫وذلك‬ ‫السجل‬ ‫ھذا‬ ‫حقول‬ ‫أو‬ ‫عناصر‬ ‫المجموعات‬ ‫قوسى‬ ‫بين‬ ‫يوضع‬ ‫ثم‬ ‫الھيكل‬
‫تع‬ ‫نھاية‬ ‫عن‬ ‫لالعﯩن‬ ‫منقوطة‬ ‫فاصلة‬ ‫ثم‬ ‫الحقل‬ ‫باسم‬ ‫متبوعا‬ ‫الحقل‬ ‫منه‬ ‫يتكون‬ ‫التى‬‫الحقل‬ ‫ريف‬.‫يتم‬ ‫ھكذا‬
‫السجل‬ ‫لھذا‬ ‫الحقول‬ ‫جميع‬ ‫تعريف‬.‫النوع‬ ‫من‬ ‫ھى‬ ‫التى‬ ‫المتغيرات‬ ‫جميع‬ ‫المجموعة‬ ‫نھاية‬ ‫قوس‬ ‫،يلى‬ ‫أخيرا‬
‫المحدد‬.‫التالى‬ ‫العام‬ ‫التعريف‬ ‫فى‬ ‫ذلك‬ ‫تلخيص‬ ‫ويمكن‬:
struct structure_name
{
type1 field1;
type2 field2;
.
.
.
typen fieldn;
} var1,var2,…,varn;
‫حيث‬structure_name‫عنه‬ ‫االعالن‬ ‫المراد‬ ‫السجل‬ ‫أسم‬ ‫ھو‬.‫المتغيرات‬ ‫عن‬ ‫االعالن‬ ‫تم‬ ‫الحالة‬ ‫ھذه‬ ‫وفى‬
var1,var2,…,varn‫النوع‬ ‫تعريف‬ ‫جملة‬ ‫نفس‬ ‫فى‬.
‫المثال‬ ‫سبيل‬ ‫على‬:‫التالى‬ ‫السجل‬
struct S
{
int a;
float b;
char c;
float d
char name[20];
} x,y,z;
‫أسمه‬ ‫ھيكل‬ ‫عن‬ ‫عبارة‬ ‫للبيانات‬ ‫مركب‬ ‫جديد‬ ‫نوع‬ ‫عن‬ ‫اعالن‬ ‫ھو‬S‫من‬ ‫ومكون‬5‫ھى‬ ‫حقول‬:
-a،‫صحيح‬ ‫عددى‬ ‫ونوعه‬
-b،‫كسري‬ ‫عددى‬ ‫ونوعه‬
-c‫حرفى‬ ‫نوعه‬ ‫و‬،
-d،‫كسري‬ ‫عددى‬ ‫ونوعى‬
-‫أخيرا‬name‫حرفية‬ ‫سلسلة‬ ‫وھو‬string‫من‬ ‫مكونة‬20‫حرف‬.
‫و‬‫عن‬ ‫االعالن‬ ‫تم‬ ‫الوقت‬ ‫نفس‬ ‫فى‬‫المنغيرات‬x,y,z‫سجالت‬ ‫أنھا‬ ‫على‬‫النوع‬ ‫من‬S.
‫المحجوزة‬ ‫الكلمة‬ ‫باستخدام‬ ‫الثالثة‬ ‫الحالة‬ ‫فى‬ ‫السجل‬ ‫تعريف‬ ‫ويتم‬typedef‫الكلمة‬ ‫استخدام‬ ‫مع‬
‫المحجوزة‬struct‫نوع‬ ‫ذكر‬ ‫طريق‬ ‫عن‬ ‫وذلك‬ ‫السجل‬ ‫ھذا‬ ‫حقول‬ ‫أو‬ ‫عناصر‬ ‫المجموعات‬ ‫قوسى‬ ‫بين‬ ‫يوضع‬ ‫ثم‬
‫الحقل‬ ‫تعريف‬ ‫نھاية‬ ‫عن‬ ‫لالعﯩن‬ ‫منقوطة‬ ‫فاصلة‬ ‫ثم‬ ‫الحقل‬ ‫باسم‬ ‫متبوعا‬ ‫الحقل‬ ‫منه‬ ‫يتكون‬ ‫التى‬ ‫البيانات‬.
‫السجل‬ ‫لھذا‬ ‫الحقول‬ ‫جميع‬ ‫تعريف‬ ‫يتم‬ ‫ھكذا‬.‫المجموعة‬ ‫نھاية‬ ‫قوس‬ ‫،يلى‬ ‫أخيرا‬‫الھيكل‬ ‫اسم‬.‫ويمكن‬
‫تل‬‫التالى‬ ‫العام‬ ‫التعريف‬ ‫فى‬ ‫ذلك‬ ‫خيص‬:
typedef struct
{
type1 field1;
type2 field2;
.
.
.
typen fieldn;
} structure_name;
‫حيث‬structure_name‫عنه‬ ‫االعالن‬ ‫المراد‬ ‫السجل‬ ‫أسم‬ ‫ھو‬.‫الحالة‬ ‫ھذه‬ ‫وفى‬‫ي‬‫المتغيرات‬ ‫عن‬ ‫االعالن‬ ‫تم‬
var1,var2,…,varn‫التالى‬ ‫النحو‬ ‫على‬.
structure_name var1,var2,…,varn;
‫المثال‬ ‫سبيل‬ ‫على‬:‫التالى‬ ‫السجل‬
typedef struct
{
int a;
float b;
char c;
float d
char name[20];
} S;
‫أسمه‬ ‫ھيكل‬ ‫عن‬ ‫عبارة‬ ‫للبيانات‬ ‫مركب‬ ‫جديد‬ ‫نوع‬ ‫عن‬ ‫اعالن‬ ‫مجرد‬ ‫ھو‬S‫من‬ ‫ومكون‬5‫ھى‬ ‫حقول‬:
-a،‫صحيح‬ ‫عددى‬ ‫ونوعه‬
-b،‫كسري‬ ‫عددى‬ ‫ونوعه‬
-c‫حرفى‬ ‫نوعه‬ ‫و‬،
-d،‫كسري‬ ‫عددى‬ ‫ونوعى‬
-‫أخيرا‬name‫حرفية‬ ‫سلسلة‬ ‫وھو‬string‫من‬ ‫مكونة‬20‫حرف‬.
‫و‬‫عن‬ ‫لالعالن‬‫المنغيرات‬x,y,z‫النوع‬ ‫من‬ ‫سجالت‬ ‫أنھا‬ ‫على‬S‫الجملة‬ ‫نستخدم‬
S x,y,z;
‫السجل‬ ‫مع‬ ‫التعامل‬ ‫ثالثا‬:
‫لھا‬ ‫المكونة‬ ‫عناصرھا‬ ‫مع‬ ‫التعامل‬ ‫طريق‬ ‫عن‬ ‫السجالت‬ ‫مع‬ ‫التعامل‬ ‫يتم‬.‫أسم‬ ‫ذكر‬ ‫طريق‬ ‫عن‬ ‫ذلك‬ ‫ويتم‬
‫ھيكل‬ ‫ھو‬ ‫الذى‬ ‫المتغير‬‫نقطة‬ ‫ثم‬.”"‫األ‬ ‫من‬ ‫ذلك‬ ‫سيتضح‬ ‫كما‬ ‫الحقل‬ ‫أسم‬ ‫ثم‬‫التالية‬ ‫مثلة‬:
cin>>x.b;
‫الحقل‬ ‫لقراءة‬b‫المتغير‬ ‫من‬x‫النوع‬ ‫من‬ ‫ھيكل‬ ‫نوع‬ ‫من‬ ‫ھو‬ ‫الذى‬S.
cout <<y.d;
‫الحقل‬ ‫لطباعة‬d‫المتغير‬ ‫من‬y‫النوع‬ ‫من‬ ‫ھيكل‬ ‫نوع‬ ‫من‬ ‫ھو‬ ‫الذى‬S‫الشاشة‬ ‫غلى‬.
z.d=x.b+y.d;
‫للحقل‬ ‫قيمة‬ ‫لتخصيص‬d‫المتغير‬ ‫من‬z‫الحقلين‬ ‫قيم‬ ‫مجموع‬ ‫عن‬ ‫عبارة‬ ‫وھى‬b‫الھيكل‬ ‫من‬S‫الحقل‬ ‫و‬
d‫الھيكل‬ ‫من‬y‫ھما‬ ‫اللذان‬‫نوع‬ ‫من‬‫ال‬‫ھيكل‬S.
‫سجل‬‫داخل‬‫سجل‬.
‫توسيع‬ ‫يمكننا‬ ،‫الھياكل‬ ‫مع‬ ‫التعامل‬ ‫و‬ ‫االعالن‬ ‫كيفية‬ ‫فيه‬ ‫تناولنا‬ ‫الذى‬ ‫الوقت‬ ‫فى‬‫ليكون‬ ‫النقاش‬ ‫نطاق‬
‫عناصر‬)‫حقول‬(‫بأنواعھا‬ ‫مصفوفات‬ ‫عن‬ ‫عبارة‬ ‫أو‬ ‫ذاتھا‬ ‫حد‬ ‫فى‬ ‫ھياكل‬ ‫عن‬ ‫عبارة‬ ‫الھيكل‬-‫من‬ ‫فليس‬ ‫لذلك‬
‫ترى‬ ‫أن‬ ‫العجيب‬‫آخر‬ ‫تركيب‬ ‫داخل‬ ً‫ا‬‫تركيب‬.‫من‬ ‫قسم‬ ‫لكل‬ ‫تركيب‬ ‫وضع‬ ‫تريد‬ ‫كنت‬ ‫إذا‬ ‫فمثال‬‫فى‬ ‫األقسام‬
‫الشركة‬.‫التركيب‬ ‫تضع‬ ‫أن‬ ‫الممكن‬ ‫من‬employee‫تركيب‬ ‫داخل‬ ‫فى‬‫فيه‬ ‫لتخزن‬ ‫القسم‬‫الخاصة‬ ‫المعلومات‬
‫القسم‬ ‫عن‬ ‫المسئول‬ ‫بالموظف‬.
-‫فى‬‫التركيب‬ ‫عن‬ ‫تعلن‬ ‫أن‬ ‫يجب‬ ‫الحالة‬ ‫ھذه‬employeeً‫ال‬‫أو‬
struct employee
{
char name[40];
char address[40];
int age;
float salary;
}
-‫مثل‬ ‫فيه‬ ‫ونضعه‬ ‫األخر‬ ‫التركيب‬ ‫عن‬ ‫نعلن‬ ‫ذلك‬ ‫وبعد‬:-
struct dept
{
int deno;
int product;
sturct employee emp;
}
-‫الحظ‬‫التركيب‬ ‫وضعنا‬ ‫كيف‬emp‫التركيب‬ ‫داخل‬ ‫فى‬dept
-‫بعد‬‫التركيب‬ ‫عن‬ ‫نعلن‬ ‫ان‬ ‫يمكن‬ ‫ذلك‬dept‫مثل‬ ‫سبق‬ ‫كما‬struct dept dept1;
-‫فى‬‫اكتب‬ ‫فرعى‬ ‫تركيب‬ ‫داخل‬ ‫عنصر‬ ‫مع‬ ‫التعامل‬ ‫حالة‬: dept1.emp.age = 25
‫حيث‬dept1‫اسم‬‫ثم‬ ‫الرئيسى‬ ‫التركيب‬‫نقطه‬
emp‫اسم‬‫نقطه‬ ‫ثم‬ ‫الفرعى‬ ‫التركيب‬
age‫التركيب‬ ‫داخل‬ ‫العنصر‬ ‫اسم‬‫الفرعى‬
‫وبرامج‬ ‫أمثلة‬:
#include <stdio.h>
#include <conio.h>
#include<iostream.h>
void main ()
{
struct data
{
int num;
char stat;
};
struct data stud;
stud.num = 5;
stud. stat='t';
cout<<"n stud.num =”<< stud.num<<” stud.stat="<< stud. stat;
getch();
}
‫فيكون‬ ‫الناتج‬
strud.num =5, stud.stat=t
‫الثانى‬ ‫البرنامج‬:
#include<iostream.h>
#include<stdio.h> // ‫حرفية‬ ‫سلسلة‬ ‫تقرأ‬ ‫والتي‬ gets() ‫الدالة‬ ‫استخدام‬ ‫من‬ ‫نتمكن‬ ‫حتى‬
#include<stdlib.h>
// ‫رقم‬ ‫الى‬ ‫حرفية‬ ‫سلسلة‬ ‫تحول‬ ‫والتي‬ atoi() ‫الدالة‬ ‫استخدام‬ ‫من‬ ‫نتمكن‬ ‫حتى‬
struct employee
{
char name[40];
char address[40];
int age;
float salary;
};
struct department
{
int depnum;
char product[40];
struct employee emp;
};
void main(void)
{
struct deparment dept;
char temp[10];
cout<<”enter dept no : “;
gets(temp);
dept.deptnum = atoi(temp);
cout<<”enter dep. Product : “;
gets(dept.product);
cout<<”enter employee name : “ ;
gets(dept.emp.name);
cout<<”enter employee address” ;
gets(dept.emp.address);
cout<<”enter employee age : “ ;
gets(temp);
dept.emp.age = atoi(temp);
cout<<”enter employee salary : “;
gets(temp);
dept.emp.salary = atof(temp)
cout<<”nn you entered nn “ ;
cout<<”dept no : tt “<<dept.deptnum<<”n”;
cout<<”dept product : tt “<<dept.product<<”n”;
cout<<”employee address : tt”<< dept.emp.address<<”n”;
cout<<”employee age : tt”<<dept.emp.age<<”n”;
cout<<”employee salary: t”<<dept.emp.salary<<”n”;
}
‫مالحظات‬:-
-‫فى‬‫التركيب‬ ‫عن‬ ‫نعلن‬ ‫البرنامج‬ ‫بداية‬employee‫أوال‬
-‫ثم‬‫التركيب‬ ‫عن‬ ‫نعلن‬department‫التركيب‬ ‫داخله‬ ‫ونضع‬employee
-‫الحظ‬، ‫الموظف‬ ‫اسم‬ ‫إدخال‬ ‫المستخدم‬ ‫من‬ ‫نطلب‬ ‫فعندما‬ ‫الفرعى‬ ‫التركيب‬ ‫عناصر‬ ‫مع‬ ‫نتعامل‬ ‫كيف‬‫فإننا‬
‫نستخدم‬‫اإلجراء‬gets‫الحروف‬ ‫مصفوفه‬ ‫له‬ ‫ونمرر‬name‫الفرعى‬ ‫التركيب‬ ‫فى‬ ‫الموجودة‬emp‫كمايلى‬:
gets(dept.emp.name);
-‫بعد‬‫االجراء‬ ‫نستخدم‬ ‫المعلومات‬ ‫جميع‬ ‫ادخال‬ ‫من‬ ‫المستخدم‬ ‫ينتھى‬ ‫ان‬printf‫على‬ ‫المعلومات‬ ‫لطبع‬
‫الشاشة‬.
‫آخر‬ ‫في‬ ‫سجل‬ ‫محتويات‬ ‫وضع‬:
‫مساواة‬ ‫إمكانية‬ ‫قبل‬ ‫من‬ ‫رأينا‬‫و‬ ‫الثاني‬ ‫المتغير‬ ‫في‬ ‫األول‬ ‫المتغير‬ ‫قيمة‬ ‫لوضع‬ ‫ذلك‬ ‫و‬ ‫واحد‬ ‫نوع‬ ‫من‬ ‫متغيرين‬
‫مساواة‬ ‫يتم‬ ‫بالتالي‬ ‫و‬ ‫آخر‬ ‫مع‬ ‫سجل‬ ‫نوع‬ ‫من‬ ‫متغير‬ ‫مساواة‬ ‫يمكن‬ ‫بحيث‬ ‫السجالت‬ ‫مع‬ ‫ذلك‬ ‫تحقيق‬ ‫يمكن‬
‫ذلك‬ ‫يوضح‬ ‫التالي‬ ‫البرنامج‬ ‫و‬ ،‫النوع‬ ‫نفس‬ ‫من‬ ‫السجلين‬ ‫يكون‬ ‫أن‬ ‫بشرط‬ ‫السجلين‬ ‫بين‬ ‫العناصر‬ ‫جميع‬ ‫قيم‬:
#include<iostream.h>
#include <stdio.h>
#include <conio.h>
void main ()
{
struct data
{
int no;
char name[10];
};
struct data stud1, stud2;
cout<<”stud1.no = ";
cin>> stud1.no;
cout<<”stud1.name = ";
cin>> stud1.name;
stud2 = stud1;
cout<<” stud1.no =t”<< stud1. no<<” stud1.name "<< stud1.name <”n”;
cout<<” stud2.no =t”<< stud2. no<<” stud2.name "<< stud2.name <”n”;
getch();
}
‫لذلك‬‫يكون‬‫الناتج‬
stud1.no= 5 stud1.name= tamer
stud2.no= 5 stud2.name= tamer
‫لتوضيح‬ ‫مثال‬‫المتداخلة‬ ‫السجالت‬NestedStructures:
‫وضحنا‬‫أو‬ ‫العناصر‬ ‫تكون‬ ‫أن‬ ‫يمكن‬ ‫بالتالي‬ ‫و‬ ‫العناصر‬ ‫ھذه‬ ‫نوع‬ ‫كان‬ ً‫ا‬‫أي‬ ‫العناصر‬ ‫من‬ ‫مجموعة‬ ‫ھو‬ ‫السجل‬ ‫أن‬
‫عنصر‬ ‫السجل‬ ‫يكون‬ ‫كيف‬ ‫يوضح‬ ‫التالي‬ ‫البرنامج‬ ‫و‬ ‫المتداخلة‬ ‫بالسجالت‬ ‫يسمى‬ ‫ما‬ ‫ھذا‬ ‫و‬ ‫سجالت‬ ‫بعضھا‬
‫الحالة‬ ‫ھذه‬ ‫في‬ ‫السجالت‬ ‫عناصر‬ ‫مع‬ ‫التعامل‬ ‫كيفية‬ ‫و‬ ‫آخر‬ ‫سجل‬ ‫في‬.
#include <stdio.h>
#include <conio.h>
#include<iostream.h>
void main()
{
struct person{
int no;
char name[10];
};
struct group{
struct person P1;
struct person P2;
int code;
};
struct group G1;
cout<<"nn G1.P1.no= ";
cin>>G1.P1.no;
cout<<”n G1.P1.name= ";
cin>>G1.P1.name;
cout"n G1.code = ";
cin>>G1.code;
G1.P2=G1.P1;
cout<<"nn The data of Groups :nt";
cout<<”nt G1.P1.no=”<<G1.P1.no;
cout<<"nt G1.P1.name="<<G1.P1.name;
cout<<"nt G1.code="<<G1.code;
cout<<"nt G1.P2.no "<<G1.P2.no;
cout<<"nt G1.P2.name=”<<G1.P2.name;
}
‫الناتج‬ ‫فيكون‬
G1.P1.no= 10
G1.P1.name= Samer
G1.code =199
The data of Groups :
G1.P1.no=10
G1.P1.name= Samer
G1.code=199
G1.P2.no=10
G1.P2.name= Samer
`

Contenu connexe

En vedette

انتل المصفوفات
انتل المصفوفاتانتل المصفوفات
انتل المصفوفاتhalaalameer
 
المصفوفات
المصفوفاتالمصفوفات
المصفوفاتh_nas_1426
 
المصفوفات النظرية والتطبيق د.الطويل
المصفوفات النظرية والتطبيق د.الطويلالمصفوفات النظرية والتطبيق د.الطويل
المصفوفات النظرية والتطبيق د.الطويلQutiaba Yousif
 
عمل طالبات الرياضيات المصفوفات
عمل طالبات الرياضيات المصفوفاتعمل طالبات الرياضيات المصفوفات
عمل طالبات الرياضيات المصفوفاتnajla saleh
 

En vedette (7)

انتل المصفوفات
انتل المصفوفاتانتل المصفوفات
انتل المصفوفات
 
المصفوفات
المصفوفاتالمصفوفات
المصفوفات
 
جبر 1ث ع ف1
جبر 1ث ع ف1جبر 1ث ع ف1
جبر 1ث ع ف1
 
المصفوفات النظرية والتطبيق د.الطويل
المصفوفات النظرية والتطبيق د.الطويلالمصفوفات النظرية والتطبيق د.الطويل
المصفوفات النظرية والتطبيق د.الطويل
 
رياضيات
رياضياترياضيات
رياضيات
 
عمل طالبات الرياضيات المصفوفات
عمل طالبات الرياضيات المصفوفاتعمل طالبات الرياضيات المصفوفات
عمل طالبات الرياضيات المصفوفات
 
Amines1
Amines1Amines1
Amines1
 

Similaire à مصفوفه

مواضيع متقدمة في JavaScript
مواضيع متقدمة في JavaScriptمواضيع متقدمة في JavaScript
مواضيع متقدمة في JavaScriptMolham Al-Maleh
 
Variables المتغيرات في سي شارب
Variables المتغيرات في سي شارب Variables المتغيرات في سي شارب
Variables المتغيرات في سي شارب nermine amin
 
معمار المرشدي دجلة بالمز
معمار المرشدي دجلة بالمز معمار المرشدي دجلة بالمز
معمار المرشدي دجلة بالمز دجلة بالمز
 
برمجة النظم العائمة باستخدام لغة Grafcet
برمجة النظم العائمة باستخدام لغة Grafcetبرمجة النظم العائمة باستخدام لغة Grafcet
برمجة النظم العائمة باستخدام لغة GrafcetDr. Munthear Alqaderi
 
[C++ Tutorial] #6- Pointers
[C++ Tutorial] #6- Pointers [C++ Tutorial] #6- Pointers
[C++ Tutorial] #6- Pointers Ghadeer AlHasan
 
الوحده السادسه 1
الوحده السادسه 1الوحده السادسه 1
الوحده السادسه 1manal889
 
Uml sequence diagram
Uml sequence diagramUml sequence diagram
Uml sequence diagramSally Jarkas
 
توزيع المنهج للمرحلة الاعدادية
توزيع المنهج للمرحلة الاعداديةتوزيع المنهج للمرحلة الاعدادية
توزيع المنهج للمرحلة الاعداديةاحمد ذكرى
 
الدرس الثالث عشر
الدرس الثالث عشرالدرس الثالث عشر
الدرس الثالث عشرAnas Aloklah
 
Enter to jess مدخل الى قواقع جيس
Enter to jess مدخل الى قواقع جيسEnter to jess مدخل الى قواقع جيس
Enter to jess مدخل الى قواقع جيسHasan Edrees
 

Similaire à مصفوفه (20)

6 arrays
6 arrays6 arrays
6 arrays
 
مواضيع متقدمة في JavaScript
مواضيع متقدمة في JavaScriptمواضيع متقدمة في JavaScript
مواضيع متقدمة في JavaScript
 
Uml class diagram
Uml class diagramUml class diagram
Uml class diagram
 
Variables المتغيرات في سي شارب
Variables المتغيرات في سي شارب Variables المتغيرات في سي شارب
Variables المتغيرات في سي شارب
 
معمار المرشدي دجلة بالمز
معمار المرشدي دجلة بالمز معمار المرشدي دجلة بالمز
معمار المرشدي دجلة بالمز
 
Luct7.pdf
Luct7.pdfLuct7.pdf
Luct7.pdf
 
المصفوفات.pdf
المصفوفات.pdfالمصفوفات.pdf
المصفوفات.pdf
 
برمجة النظم العائمة باستخدام لغة Grafcet
برمجة النظم العائمة باستخدام لغة Grafcetبرمجة النظم العائمة باستخدام لغة Grafcet
برمجة النظم العائمة باستخدام لغة Grafcet
 
[C++ Tutorial] #6- Pointers
[C++ Tutorial] #6- Pointers [C++ Tutorial] #6- Pointers
[C++ Tutorial] #6- Pointers
 
ARRAYS
ARRAYSARRAYS
ARRAYS
 
4- Arrays
4-  Arrays4-  Arrays
4- Arrays
 
Relational Data Base
Relational Data BaseRelational Data Base
Relational Data Base
 
الوحده السادسه 1
الوحده السادسه 1الوحده السادسه 1
الوحده السادسه 1
 
Uml sequence diagram
Uml sequence diagramUml sequence diagram
Uml sequence diagram
 
28438
2843828438
28438
 
توزيع المنهج للمرحلة الاعدادية
توزيع المنهج للمرحلة الاعداديةتوزيع المنهج للمرحلة الاعدادية
توزيع المنهج للمرحلة الاعدادية
 
الدرس الثالث عشر
الدرس الثالث عشرالدرس الثالث عشر
الدرس الثالث عشر
 
Java Generics
Java GenericsJava Generics
Java Generics
 
Linked list
Linked listLinked list
Linked list
 
Enter to jess مدخل الى قواقع جيس
Enter to jess مدخل الى قواقع جيسEnter to jess مدخل الى قواقع جيس
Enter to jess مدخل الى قواقع جيس
 

مصفوفه

  • 1. ‫المصفوفات‬Arrays: ‫تمھيد‬:‫التعامل‬ ‫يتم‬ ‫بحيث‬ ‫معا‬ ‫النوع‬ ‫فى‬ ‫المتشابھة‬ ‫العناصر‬ ‫من‬ ‫مجموعة‬ ‫يرتبط‬ ‫قد‬ ‫االحيان‬ ‫من‬ ‫كثير‬ ‫فى‬ ‫يتم‬ ‫بحيث‬ ‫مشترك‬ ‫واحد‬ ‫برابط‬ ‫معا‬ ‫العناصر‬ ‫ھذه‬ ‫ربط‬ ‫يتم‬ ‫أن‬ ‫يستلزم‬ ‫مما‬ ‫واحدة‬ ‫بطريقة‬ ‫العناصر‬ ‫ھذه‬ ‫مع‬ ‫الرابط‬ ‫ھذا‬ ‫طريق‬ ‫عن‬ ‫العناصر‬ ‫ھذه‬ ‫مع‬ ‫التعامل‬‫المشترك‬.‫فإنه‬ ،‫معا‬ ‫وإرتباطھا‬ ‫العناصر‬ ‫ھذه‬ ‫لتشابھه‬ ‫ونظرا‬ ‫محدد‬ ‫شرط‬ ‫طريق‬ ‫عن‬ ‫العناصر‬ ‫ھذه‬ ‫من‬ ‫أكثر‬ ‫أو‬ ‫عنصر‬ ‫الصطفاء‬ ‫وسيلة‬ ‫إيجاد‬ ‫الضروري‬ ‫من‬.‫خلص‬ ‫لذلك‬ ‫االحتياجات‬ ‫ھذه‬ ‫حل‬ ‫لتوفير‬ ‫طريقة‬ ‫اليجاد‬ ‫البرمجة‬ ‫لغات‬ ‫مبرمجو‬.‫بالمصفوفات‬ ‫يسمى‬ ‫ما‬ ‫تعريف‬ ‫ھو‬ ‫الحل‬ ‫و‬ )Arrays(‫يطلق‬ ‫ما‬ ‫أو‬‫بالمنظومات‬ ‫البعض‬ ‫عليه‬. ‫ھي‬ ‫عناوين‬ ‫أربعة‬ ‫طريق‬ ‫عن‬ ‫ھذه‬ ‫مناقشتنا‬ ‫خالل‬ ‫سننطلق‬ ‫فاننا‬ ‫لذلك‬: 1.‫المصفوفة‬ ‫ھي‬ ‫ما‬. 2.‫المصفوفات‬ ‫أنواع‬ ‫ھي‬ ‫ما‬. 3.‫مصفوفة‬ ‫عن‬ ‫اإلعالن‬ ‫كيفية‬. 4.‫مصفوفة‬ ‫مع‬ ‫التعامل‬ ‫كيفية‬. 5.‫المصفوفات‬ ‫إلستخدام‬ ‫أمثلة‬. ‫أوال‬:‫المصفوفة‬ ‫تعريف‬: ‫بأن‬ ‫القول‬ ‫يمكن‬ ‫فانه‬ ،‫تمھيد‬ ‫من‬ ‫به‬ ‫تقدمنا‬ ‫ما‬ ‫ووفق‬ ‫المصفوفة‬ ‫تعريف‬ ‫الى‬ ‫بالنسبة‬" :‫ھي‬ ‫المصفوفة‬ ‫مشتركة‬ ‫بصفة‬ ‫معا‬ ‫والمرتبطة‬ ‫النوع‬ ‫فى‬ ‫المتشابھة‬ ‫العناصر‬ ‫من‬ ‫بعض‬ ‫تجمع‬ ‫عن‬ ‫عبارة‬." ‫أنواع‬ ‫يكون‬ ‫أن‬ ‫الممكن‬ ‫من‬ ‫النوع،فانه‬ ‫فى‬ ‫متشابھة‬ ‫بيانات‬ ‫عن‬ ‫عبارة‬ ‫المصفوفة‬ ‫عناصر‬ ‫كانت‬ ‫لما‬ ‫و‬‫البيانات‬ ‫ھى‬ ‫العناصر‬ ‫لھذه‬‫حرفية‬ ‫بيانات‬(char)‫رقمية‬ ‫وبيانات‬(int)‫حقيقية‬ ‫وبيانات‬(float)‫األنواع‬ ‫ھذه‬ ‫وتسمى‬ (float, int, char)‫الترتيب‬ ‫على‬‫ھى‬ ‫االنواع‬ ‫وھذه‬‫أقل‬ ‫تجزئتھا‬ ‫يمكن‬ ‫ال‬ ‫حيث‬ ،‫للبيانات‬ ‫الرئيسية‬ ‫ألنواع‬ ‫ذلك‬ ‫من‬. ‫مع‬ ‫تعامالتنا‬ ‫معظم‬ ‫فى‬ ‫فيه‬ ‫نرى‬ ‫الذى‬ ‫الوقت‬ ‫وفى‬‫بيانات‬ ‫من‬ ‫عناصر‬ ‫من‬ ‫تتكون‬ ‫المصفوفة‬ ‫ان‬ ‫المصفوفات‬ ‫مركبة‬ ‫عناصر‬ ‫من‬ ‫تتكون‬ ‫ان‬ ‫ممكن‬ ‫المصفوفة‬ ‫أن‬ ‫أخرى‬ ‫أوقات‬ ‫فى‬ ‫نجد‬ ‫فاننا‬ ،‫بسيطة‬.‫المصفوفة‬ ‫تتكون‬ ‫فقد‬ ‫ھياكل‬ ‫أو‬ ‫مصفوفات‬ ‫من‬)‫الحقا‬ ‫شرحھا‬ ‫سيتم‬(‫ما‬ ‫وھو‬ ‫ودوال‬ ‫إجراءات‬ ‫مع‬ ‫تتعامل‬ ‫والتى‬ ‫كائنات‬ ‫من‬ ‫أحيانا‬ ‫و‬ ‫لغة‬ ‫به‬ ‫تتميز‬c++.‫لذل‬‫بلغات‬ ‫البرمجة‬ ‫واحتراف‬ ‫إتقان‬ ‫فى‬ ‫االھمية‬ ‫بالغ‬ ‫أثر‬ ‫المصفوفات‬ ‫لدراسة‬ ‫فإن‬ ‫ك‬ ‫لغة‬ ‫رأسھا‬ ‫وعلى‬ ‫الحاسب‬c++. ‫ثانيا‬:‫المصفوفات‬ ‫أنواع‬ ‫و‬‫ھما‬ ‫أساسيين‬ ‫نوعين‬ ‫الى‬ ‫تقسيمھا‬ ‫فيمكن‬ ‫المصفوفات‬ ‫أنواع‬ ‫الى‬ ‫بالنسبة‬: •‫البعد‬ ‫أحادية‬ ‫مصفوفات‬One Dimensional Arrays‫عن‬ ‫وھى‬‫يمكن‬ ‫مصفوفات‬‫على‬ ‫اليھا‬ ‫النظر‬ ‫دليل‬ ‫يحتاج‬ ‫المصفوفات‬ ‫من‬ ‫النوع‬ ‫ھذا‬ ‫ومثل‬ ‫واحدا‬ ‫عمودا‬ ‫أو‬ ‫واحدا‬ ‫صفا‬ ‫ذلك‬ ‫كان‬ ‫سواء‬ ‫متجه‬ ‫انھا‬ ‫عناصره‬ ‫النتقاء‬ ‫واحد‬.‫المصفوفات‬ ‫من‬ ‫النوع‬ ‫لھذا‬ ‫االعتبارية‬ ‫االشكال‬ ‫يوضح‬ ‫التالي‬ ‫الشكل‬ ‫و‬.
  • 2. ‫عمود‬ ‫صف‬ ‫يتم‬ ‫فانه‬ ، ‫الحالتين‬ ‫كلتا‬ ‫فى‬ ‫و‬‫الحاسوب‬ ‫ذاكرة‬ ‫فى‬ ‫واحدة‬ ‫بطريقة‬ ‫البعد‬ ‫أحادية‬ ‫المصفوفة‬ ‫تمثيل‬ ‫عمود‬ ‫بشكل‬ ‫سنعتبره‬ ‫ما‬ ‫وھو‬. •‫االبعاد‬ ‫متعددة‬ ‫مصفوفات‬Multidimensional Arrays‫االبعاد‬ ‫ثالثى‬ ،‫البعد‬ ‫ثنائى‬ ‫النوع‬ ‫ھذا‬ ‫يكون‬ ‫وقد‬ ‫االستخدام‬ ‫قليل‬ ‫وھو‬‫ذل‬ ‫من‬ ‫أكثر‬ ‫ھو‬ ‫ما‬ ‫أو‬ ،‫االستخدام‬ ‫نادر‬ ‫وھو‬ ‫ك‬.‫دراستنا‬ ‫فى‬ ‫سنتناول‬ ‫و‬ ‫فيمكن‬ ‫االكبر‬ ‫االبعاد‬ ‫ذات‬ ‫المصفوفات‬ ‫أما‬ ‫البعد‬ ‫ثنائية‬ ‫ھى‬ ‫التى‬ ‫تلك‬ ‫و‬ ‫البعد‬ ‫احادية‬ ‫المصفوفات‬ ‫نتناولھا‬ ‫فلن‬ ‫لذلك‬ ‫االسلوب‬ ‫بنفس‬ ‫معھا‬ ‫التعامل‬.‫و‬ ‫صفوف‬ ‫من‬ ‫تتكون‬ ‫البعد‬ ‫ثنائية‬ ‫المصفوفات‬ ‫و‬ ‫و‬ ‫أعمدة‬‫ھى‬‫عناصرھا‬ ‫من‬ ‫عنصر‬ ‫أى‬ ‫الصطفاء‬ ‫دليلين‬ ‫الى‬ ‫تحتاج‬.‫ويو‬‫مصفوفة‬ ‫التالى‬ ‫الشكل‬ ‫ضح‬ ‫البعد‬ ‫ثنائية‬ ‫من‬ ‫تتكون‬ ‫وھى‬5‫و‬ ‫صفوف‬6‫أعمدة‬. ‫ثالثا‬:‫المصفوفة‬ ‫عن‬ ‫االعالن‬: ‫من‬ ‫زوجى‬ ‫عدد‬ ‫ثم‬ ‫المصفوفة‬ ‫أسم‬ ‫يليه‬ ‫المصفوفة‬ ‫عناصر‬ ‫نوع‬ ‫بذكر‬ ‫المصفوفات‬ ‫عن‬ ‫االعالن‬ ‫يتم‬ ‫االقصى‬ ‫الحد‬ ‫بداخلھا‬ ‫يوضع‬ ‫المتحاورة‬ ‫االقواس‬‫الفاصلة‬ ‫أخيرا‬ ‫و‬ ‫البعد‬ ‫لھذا‬ ‫المصفوفة‬ ‫لعناصر‬ ‫التعريف‬ ‫جملة‬ ‫لنھاية‬ ‫إعالنا‬ ‫المنقوطة‬. ‫المصفوفة‬ ‫لتعريف‬ ‫مختلفة‬ ‫حاالت‬ ‫توضح‬ ‫التالية‬ ‫االمثلة‬ ‫و‬. ‫عناصر‬ ‫نوع‬ ‫المصفوفة‬ ‫الحد‬ ‫االقصى‬ ‫بعد‬ ‫لكل‬ ‫البعد‬‫أسم‬ ‫المصفوفة‬ ‫عدد‬‫أزواج‬ ‫االقواس‬ ‫المتجاورة‬ ‫المثال‬ ‫عددى‬ ‫صحيح‬ 201a1int a[20]; ‫حرفى‬301b1char b[30]; ‫عددى‬ ‫كسري‬ 251mem1float mem[25];
  • 3. ‫عددى‬ ‫صحيح‬ 20‫و‬ ‫صف‬ 30‫عمود‬ 2d2int d[20][30]; ‫حرفى‬10‫صفوف‬ ‫و‬200‫عمود‬ 2stack2char stack[10][200]; ‫حرفى‬10‫مستويات‬ ‫و‬10‫صفوف‬ ‫و‬10‫أعمدة‬ 3x3char x[10][10][10]; ‫عددى‬ ‫كسري‬ ‫متضاعف‬ ‫الدقة‬ 10‫صفوف‬ 20‫عمود‬ 2y2double y[10][20]; ‫النحو‬ ‫على‬ ‫االعالن‬ ‫مرحلة‬ ‫أثناء‬ ‫للمصفوفة‬ ‫قيم‬ ‫تخصيص‬ ‫الممكن‬ ‫من‬ ‫أنه‬ ‫مالحضظة‬ ‫الضروري‬ ‫من‬ ‫التالى‬: int a[]={1,2,3,4,5,6}; ‫المصفوفة‬ ‫أن‬ ‫يتضح‬ ‫المثال‬ ‫ھذا‬ ‫وفى‬a‫ھى‬ ‫الصحيحة‬ ‫االعداد‬ ‫من‬ ‫واحد‬ ‫صف‬ ‫من‬ ‫تتكون‬ 1‫و‬2‫و‬3‫و‬4‫و‬5‫و‬6. float b[][]={{1,2,3},{4,5,6},{7,8,9}}; ‫المصفوفة‬ ‫أن‬ ‫يتضح‬ ‫المثال‬ ‫ھذا‬ ‫وفى‬B‫من‬ ‫تتكون‬3‫أعمدة‬ ‫ثالثة‬ ‫من‬ ‫يتكون‬ ‫صف‬ ‫وكل‬ ‫صفوف‬. ‫ھى‬ ‫االول‬ ‫الصف‬ ‫عناصر‬:1‫و‬2‫و‬3.‫ھى‬ ‫الثانى‬ ‫الصف‬ ‫وعناصر‬4‫و‬5‫و‬6.‫الثالث‬ ‫الصف‬ ‫عناصر‬ ‫حين‬ ‫فى‬ ‫ھى‬7‫و‬8‫و‬9. char c[]={‘a’,’n’,’o’}; ‫رابعا‬:‫مع‬ ‫التعامل‬ ‫كيفية‬‫المصفوفة‬: ‫المصفوفة‬ ‫مع‬ ‫التعامل‬ ‫يتم‬ ‫فانه‬ ‫لذلك‬ ،‫الحاسوب‬ ‫ذاكرة‬ ‫في‬ ‫مصفوفة‬ ‫من‬ ‫أكثر‬ ‫وجود‬ ‫الممكن‬ ‫من‬ ‫كان‬ ‫لما‬ ‫المصفوفة‬ ‫داخل‬ ‫العنصر‬ ‫موضع‬ ‫لتحديد‬ ‫أدلة‬ ‫مجموعة‬ ‫أو‬ ‫دليل‬ ‫و‬ ‫أسمھا‬ ‫طريق‬ ‫عن‬.‫مع‬ ‫التعامل‬ ‫كان‬ ‫ولما‬ ‫يكم‬ ‫لم‬ ‫إن‬ ‫الحكمة‬ ‫من‬ ‫فإنه‬ ‫لذلك‬ ،‫االالف‬ ‫يتجاوزز‬ ‫قد‬ ‫عناصرھا‬ ‫من‬ ‫كبير‬ ‫عدد‬ ‫مع‬ ‫التعامل‬ ‫يتطلب‬ ‫المصفوفة‬ ‫تكرارية‬ ‫حلقات‬ ‫إستخدام‬ ‫الضرورى‬ ‫من‬‫طريق‬ ‫عن‬‫دراستھا‬ ‫السابق‬ ‫التكرارية‬ ‫الجمل‬ ‫من‬ ‫أي‬‫جملة‬ ‫مثل‬for ‫جملة‬ ‫أو‬while‫جملة‬ ‫أو‬do while‫أست‬ ‫نفضل‬ ‫اننا‬ ‫إال‬‫جملة‬ ‫خدام‬for‫البداية‬ ‫نعلم‬ ‫الننا‬ ‫وذلك‬ ‫التكرارية‬ ‫الزيادة‬ ‫ومقدار‬ ‫والنھاية‬.‫المصفوفة‬ ‫عناصر‬ ‫إلى‬ ‫اإلشارة‬ ‫ويتم‬‫نسبا‬ ‫بداخلھا‬ ‫العنصر‬ ‫موضع‬ ‫بتحيد‬ ‫البعد‬ ‫أحادية‬ ‫فيھا‬ ‫عنصر‬ ‫أول‬ ‫الى‬)‫المؤشرات‬ ‫دراسة‬ ‫عند‬ ‫ذلك‬ ‫سيتضح‬ ‫كم‬ ،‫المصفوفة‬ ‫أسم‬(‫كما‬‫إلى‬ ‫اإلشارة‬ ‫يتم‬ ‫المصفوفة‬ ‫عناصر‬‫ثنائ‬‫البعد‬ ‫ية‬‫العنصر‬ ‫عندھما‬ ‫يقع‬ ‫الذي‬ ‫العمود‬ ‫ورقم‬ ‫الصف‬ ‫برقم‬.‫مع‬ ‫التعامل‬ ‫ويمكن‬ ‫االتية‬ ‫المراحل‬ ‫طريق‬ ‫عن‬ ‫المصفوفة‬: •‫ثم‬ ‫ومن‬ ‫المصفوفة‬ ‫لعناصر‬ ‫الفعلى‬ ‫العدد‬ ‫معرفة‬‫قرأة‬‫عناصر‬‫المصفوفة‬‫الحلقات‬ ‫طريق‬ ‫عن‬ ‫التكرارية‬. •‫المصفوفة‬ ‫عناصر‬ ‫معالجة‬‫المصفوفة‬‫التكرارية‬ ‫الحلقات‬ ‫طريق‬ ‫عن‬. •‫عناصر‬ ‫من‬ ‫العديد‬ ‫إظھار‬ ‫المطلوب‬ ‫كان‬ ‫اذا‬ ‫التكرارية‬ ‫الحلقات‬ ‫استخدام‬ ‫ويمكن‬ ‫النتائج‬ ‫إظھار‬ ‫و‬ ‫طباعة‬ ‫المعالجة‬ ‫عند‬ ‫المصفوفة‬.‫الحلقات‬ ‫من‬ ‫عدد‬ ‫استخدام‬ ‫الضروري‬ ‫من‬ ‫أنه‬ ‫على‬ ‫التأكيد‬ ‫يجب‬ ‫وھنا‬ ‫الممصفوفة‬ ‫بعد‬ ‫مع‬ ‫يتساوى‬ ‫المتداخلة‬ ‫التكرارية‬.
  • 4. ‫خامسا‬:‫المصفوفا‬ ‫إلستخدام‬ ‫أمثلة‬‫ت‬ ‫بأنواعھا‬ ‫المصفوفات‬ ‫لمعالجة‬ ‫برامج‬ ‫انشاء‬ ‫كيفية‬ ‫لتوضيح‬ ‫االمثلة‬ ‫من‬ ‫لمجمزعة‬ ‫الجزء‬ ‫ھذا‬ ‫فى‬ ‫سنتعرض‬. ‫برنامج‬1:‫وطباعة‬ ‫وحساب‬ ‫االلى‬ ‫الحاسب‬ ‫مادة‬ ‫فى‬ ‫الطالب‬ ‫من‬ ‫عدد‬ ‫درجات‬ ‫لقراءة‬ ‫برنامج‬ ‫انشئ‬ ‫الدرجات‬ ‫ومتوسط‬ ‫مجموع‬. ‫الحل‬: #include<iostream.h> void main(void) { int degrees[25],i,n; float sum,average; cout<<”Enter number of students n please /n”; cin>>n; sum=0; for(i=0;i<n;i++) { cout<<”Enter the degree of student no. “<<i<<”please n”; cin<<degrees[i]; sum=sum+degrees[i]; } average=sum/n; cout <<” The average of degrees is “ <<average<<”n”; }
  • 5. ‫برنامج‬2:‫بمقدار‬ ‫الموظفين‬ ‫رواتب‬ ‫لزيادة‬ ‫برنامج‬ ‫انشئ‬20%‫رواتبھم‬ ‫مقدار‬ ‫من‬. ‫الحل‬: #include<iostream.h> void main(void) { int salary[100],i,n; float average; cout<<”Enter number of employees n please /n”; cin>>n; for(i=0;i<n;i++) { cout<<”Enter the salary of employee no. “<<i<<”please n”; cin<<salary[i]; salary[i]= salary[i]*(1.2); cout<<”Salary after increasing= “<<salary[i]<<”n”; } } ‫برنامج‬3: ‫وطباعة‬ ‫أخري‬ ‫مربعة‬ ‫مصفوفة‬ ‫فى‬ ‫الناتج‬ ‫ووضع‬ ‫مربعتين‬ ‫مصفوفتين‬ ‫لقراءة‬ ‫برنامج‬ ‫انشئ‬‫على‬ ‫الناتج‬ ‫الشاشة‬:
  • 6. ‫الحل‬: include<iostream.h> void main(void) { int a[10][10],b[10][10],c[10][10],i,j,m,n; cout<<”Enter number of rows and columns please m and nplease /n”; cin>>m>>n; for(i=0;i<m;i++) { for(j=0;j<n;j++) { cout<<”Enter the the elements of matrices a and b for row #”<<i<<”and col. #”<<j<<” pleasen”; cin>>a[i][j]<<b[i][j]; cout<<”The sum of the matrix is given by= “<<c[i][j]<<”n”; } } ‫برنامج‬3: ‫طالب‬ ‫اسم‬ ‫قراءة‬ ‫برنامج‬ ‫انشئ‬name‫الجملة‬ ‫مستخدما‬ ‫به‬ ‫رحب‬ ‫ثم‬namewelcome ‫الحل‬: # include<iostream.h> #include<string.h> void main(void) { char namr[80]
  • 7. cout<<”place enter your name : “; gets(name); cout<<”welcome “ << name; } ‫مالحظات‬: 1-‫فى‬‫الحروف‬ ‫مصفوفة‬ ‫عن‬ ‫يعلن‬ ‫البرنامج‬ ‫ھذا‬name‫ثم‬‫االجراء‬ ‫نستخدم‬gets‫المستخدم‬ ‫اسم‬ ‫ليقرأ‬ ‫ثم‬ ‫المفاتيح‬ ‫لوحة‬ ‫من‬‫المصفوفة‬ ‫فى‬ ‫المستخدم‬ ‫أدخلھا‬ ‫التى‬ ‫الحروف‬ ‫يخزن‬ -‫إذا‬‫التالى‬ ‫اكتب‬ ‫حدة‬ ‫على‬ ‫المصفوفة‬ ‫حروف‬ ‫من‬ ‫حرف‬ ‫كل‬ ‫مع‬ ‫تتعامل‬ ‫أن‬ ‫رغبت‬name[0] = 'a' -‫إذا‬‫المتغيرات‬ ‫أحــد‬ ‫الى‬ ‫المصفوفة‬ ‫فى‬ ‫الحروف‬ ‫أحد‬ ‫فى‬ ‫الموجودة‬ ‫القيمة‬ ‫تنقل‬ ‫ان‬ ‫اردت‬‫نكتب‬ ‫األخرى‬ss = name[15]; 2-‫تن‬ ‫الحروف‬ ‫مصفوفة‬‫صفر‬ ‫بالرقم‬ ‫تھى‬ ‫صفر‬ ‫بالرقم‬ ‫تنتھى‬ ‫ان‬ ‫يجب‬ ‫الحروف‬ ‫مصفوفة‬ ‫ان‬ ‫تالحظ‬ ‫ان‬ ‫يجب‬( null ) *‫برنامج‬* # include <iostream.h> void main(void) { char strin[ ] = “hello”; cout<<”the character array is”<< strin <<”n”; } *‫مالحظات‬: -‫فى‬‫مصفوفة‬ ‫عن‬ ‫نعلن‬ ‫البرنامج‬ ‫ھذا‬‫باسم‬string -‫نطلب‬‫كلمة‬ ‫فيھا‬ ‫يضع‬ ‫بان‬ ‫يھيئھا‬ ‫ان‬ ‫المترجم‬ ‫من‬hello‫يلى‬ ‫كما‬char string[ ] = "hello” -‫بعد‬‫االجراء‬ ‫نستخدم‬ ‫ذلك‬printf‫المصفوفة‬ ‫ھذه‬ ‫محتويات‬ ‫ليطبع‬ -‫كلمة‬ ‫استخدام‬sizeof‫ونطبعه‬ ‫المصفوفة‬ ‫ھذه‬ ‫حجم‬ ‫على‬ ‫لنحصل‬‫الناتج‬ ‫يكون‬ The character array is hello -‫الحظ‬‫ھو‬ ‫المصفوفة‬ ‫حجم‬ ‫ان‬6‫حروف‬‫فيھا‬ ‫وضعنا‬ ‫اننا‬ ‫حين‬ ‫فى‬5‫فقط‬‫الحروف‬ ‫وھى‬hello ‫السبب‬:‫تنتھى‬ ‫الحروف‬ ‫مصفوفة‬ ‫أن‬ ‫ھو‬‫فى‬ ‫كما‬ ‫نھايتھا‬ ‫على‬ ‫كداللة‬ ‫يستخدم‬ ‫الذى‬ ‫صفر‬ ‫بالرقم‬ ‫دائماص‬ ‫الشكل‬:
  • 8. ‫السجالت‬)‫الھياكل‬( ‫تمھيد‬: ‫بحيث‬ ‫معا‬ ‫النوع‬ ‫فى‬ ‫المتشابھة‬ ‫غير‬ ‫أو‬ ‫المتشابھة‬ ‫العناصر‬ ‫من‬ ‫مجموعة‬ ‫يرتبط‬ ‫قد‬ ‫االحيان‬ ‫من‬ ‫كثير‬ ‫فى‬ ‫مشترك‬ ‫واحد‬ ‫برابط‬ ‫معا‬ ‫العناصر‬ ‫ھذه‬ ‫ربط‬ ‫يتم‬ ‫أن‬ ‫يستلزم‬ ‫مما‬ ‫واحدة‬ ‫بطريقة‬ ‫العناصر‬ ‫ھذه‬ ‫مع‬ ‫التعامل‬ ‫يتم‬ ‫المشترك‬ ‫الرابط‬ ‫ھذا‬ ‫طريق‬ ‫عن‬ ‫العناصر‬ ‫ھذه‬ ‫مع‬ ‫التعامل‬ ‫يتم‬ ‫بحيث‬.‫ونظرا‬‫إل‬‫رتباطھا‬‫ھذه‬‫فإنه‬ ،‫معا‬ ‫العناصر‬ ‫محدد‬ ‫شرط‬ ‫طريق‬ ‫عن‬ ‫العناصر‬ ‫ھذه‬ ‫من‬ ‫أكثر‬ ‫أو‬ ‫عنصر‬ ‫الصطفاء‬ ‫وسيلة‬ ‫إيجاد‬ ‫الضروري‬ ‫من‬. ‫قاعدة‬ ً‫ال‬‫فمث‬ ‫البيانات‬ ‫قواعد‬ ‫تطبيقات‬ ‫البرامج‬ ‫عالم‬ ‫في‬ ‫التطبيقات‬ ‫من‬ ‫العديد‬ ‫ألن‬ ‫نظرا‬ ‫أنه‬ ‫بالذكر‬ ‫الجدير‬ ‫و‬ ‫سجال‬ ‫شكل‬ ‫في‬ ‫الموظفين‬ ‫بيانات‬ ‫تمثل‬ ‫موظفين‬ ‫بيانات‬‫لو‬ ‫و‬ ‫حقول‬ ‫من‬ ‫مجموعة‬ ‫من‬ ‫يتكون‬ ‫سجل‬ ‫كل‬ ‫ت‬ ‫مثل‬ ‫البيانات‬ ‫قواعد‬ ‫برامج‬ ‫بأحد‬ ‫خبرة‬ ‫لك‬ ‫أن‬dbase‫أو‬MS-Access‫أو‬FoxPro‫نظم‬ ‫برامج‬ ‫من‬ ‫غيرھا‬ ‫أو‬ ‫البيانات‬ ‫قواعد‬ ‫معالجة‬‫سجالت‬ ‫إلى‬ ‫ينقسم‬ ‫الملف‬ ‫أن‬ ‫فستعرف‬records‫حقول‬ ‫إلى‬ ‫ينقسم‬ ‫السجل‬ ‫و‬ fields‫كوحدة‬ ‫الحقول‬ ‫مع‬ ‫كذلك‬ ‫و‬ ‫كوحدة‬ ‫السجل‬ ‫مع‬ ‫للتعامل‬ ‫نحتاج‬ ً‫ا‬‫دائم‬ ‫و‬.‫لغة‬ ‫تستخدم‬ ‫و‬C‫كلمة‬ struct‫لكلمة‬ ‫األخرى‬ ‫البرمجة‬ ‫لغات‬ ‫تستخدمه‬ ‫الذي‬ ‫المفھوم‬ ‫بنفس‬Record. ‫االحتياجات‬ ‫ھذه‬ ‫حل‬ ‫لتوفير‬ ‫طريقة‬ ‫اليجاد‬ ‫البرمجة‬ ‫لغات‬ ‫مبرمجو‬ ‫خلص‬ ‫لذلك‬.‫يسمى‬ ‫ما‬ ‫تعريف‬ ‫ھو‬ ‫الحل‬ ‫و‬ ‫ا‬ ‫أو‬ ‫بالسجالت‬‫لھياكل‬)structures(‫فصاعد‬ ‫االن‬ ‫من‬ ‫عليه‬ ‫وسنطلق‬‫السجالت‬. ‫ھي‬ ‫عناوين‬ ‫أربعة‬ ‫طريق‬ ‫عن‬ ‫ھذه‬ ‫مناقشتنا‬ ‫خالل‬ ‫سننطلق‬ ‫فاننا‬ ‫لذلك‬: 1.‫ھو‬ ‫ما‬‫السجل‬. 2.‫عن‬ ‫اإلعالن‬ ‫كيفية‬‫سجل‬. 3.‫مع‬ ‫التعامل‬ ‫كيفية‬‫سجل‬. 4.‫إلستخدام‬ ‫أمثلة‬‫السجالت‬. ‫أوال‬:‫السجل‬ ‫تعريف‬: ‫العناصر‬ ‫من‬ ‫مجموعة‬ ‫عن‬ ‫عبارة‬ ‫السجل‬‫التشابھة‬ ‫غير‬ ‫معا‬ ‫المرتبطة‬)‫متشابھة‬ ‫أحيانا‬ ‫و‬(‫النوع‬ ‫فى‬ ‫بالحقول‬ ‫العناصر‬ ‫ھذه‬ ‫تسمى‬. ‫السجل‬ ‫عن‬ ‫االعالن‬ ‫ثانيا‬: ‫فمنھا‬ ‫الطرق‬ ‫من‬ ‫مجموعة‬ ‫طريق‬ ‫عن‬ ‫السجل‬ ‫عن‬ ‫االعالن‬ ‫يتم‬: 1-‫متغيرات‬ ‫عن‬ ‫االعالن‬ ‫يتم‬ ‫منفصلة‬ ‫جملة‬ ‫وفى‬ ‫ذلك‬ ‫بعد‬ ‫ثم‬ ‫سجل‬ ‫النوع‬ ‫من‬ ‫جديد‬ ‫بيانات‬ ‫نوع‬ ‫تعريف‬ ‫النوع‬ ‫من‬‫سابقا‬ ‫المعرف‬ ‫سجل‬. 2-‫الى‬ ‫المتغيرات‬ ‫جميع‬ ‫التعريف‬ ‫جملة‬ ‫نفس‬ ‫وفى‬ ‫يلحقة‬ ‫ثم‬ ‫سجل‬ ‫النوع‬ ‫من‬ ‫جديد‬ ‫بيانات‬ ‫نوع‬ ‫تعريف‬ ‫النوع‬ ‫ھذا‬ ‫نفس‬ ‫من‬ ‫ھى‬. 3-‫المحجوزة‬ ‫الكلمة‬ ‫باستخدام‬ ‫سجل‬ ‫النوع‬ ‫من‬ ‫جديد‬ ‫بيانات‬ ‫نوع‬ ‫تعريف‬typedef‫مستقلة‬ ‫جملة‬ ‫فى‬ ‫جد‬ ‫جملة‬ ‫فى‬ ‫النوع‬ ‫نفس‬ ‫من‬ ‫ھى‬ ‫التى‬ ‫المتغيرات‬ ‫نعرف‬ ‫ثم‬‫يدة‬. ‫المحجوزة‬ ‫الكلمة‬ ‫استخدام‬ ‫يجب‬ ‫السابقة‬ ‫الثالث‬ ‫الحالت‬ ‫من‬ ‫حالة‬ ‫كل‬ ‫وفى‬struct‫فى‬ ‫رغبتنا‬ ‫البادء‬ ‫النوع‬ ‫متشابھة‬ ‫غير‬ ‫البيانات‬ ‫من‬ ‫ومركب‬ ‫جديد‬ ‫نوع‬ ‫مع‬ ‫التعامل‬. ‫الحالة‬ ‫فى‬ ‫السجل‬ ‫تعريف‬ ‫ويتم‬‫الثانية‬‫المحجوزة‬ ‫الكلمة‬ ‫استخدام‬ ‫طريق‬ ‫عن‬struct‫باسم‬ ‫متبوعة‬ ‫بين‬ ‫يوضع‬ ‫ثم‬ ‫الھيكل‬‫البيانات‬ ‫نوع‬ ‫ذكر‬ ‫طريق‬ ‫عن‬ ‫وذلك‬ ‫السجل‬ ‫ھذا‬ ‫حقول‬ ‫أو‬ ‫عناصر‬ ‫المجموعات‬ ‫قوسى‬
  • 9. ‫الحقل‬ ‫تعريف‬ ‫نھاية‬ ‫عن‬ ‫لالعﯩن‬ ‫منقوطة‬ ‫فاصلة‬ ‫ثم‬ ‫الحقل‬ ‫باسم‬ ‫متبوعا‬ ‫الحقل‬ ‫منه‬ ‫يتكون‬ ‫التى‬.‫يتم‬ ‫ھكذا‬ ‫السجل‬ ‫لھذا‬ ‫الحقول‬ ‫جميع‬ ‫تعريف‬. ‫العا‬ ‫التعريف‬ ‫فى‬ ‫ذلك‬ ‫تلخيص‬ ‫ويمكن‬‫التالى‬ ‫م‬: struct structure_name { type1 field1; type2 field2; . . . typen fieldn; }; ‫حيث‬structure_name‫عنه‬ ‫االعالن‬ ‫المراد‬ ‫السجل‬ ‫أسم‬ ‫ھو‬.‫المتغيرات‬ ‫عن‬ ‫االعالن‬ ‫يتم‬ ‫الحالة‬ ‫ھذه‬ ‫وفى‬ var1,var2,…,varn‫النوع‬ ‫من‬ ‫ھى‬ ‫التى‬structure_name‫التالى‬ ‫النحو‬ ‫على‬: struct structure_name var1,var2,…,varn; ‫المثال‬ ‫سبيل‬ ‫على‬:‫التالى‬ ‫السجل‬ struct S { int a; float b; char c; float d char name[20]; }; ‫للبيانات‬ ‫مركب‬ ‫جديد‬ ‫نوع‬ ‫عن‬ ‫اعالن‬ ‫مجرد‬ ‫ھو‬‫أسمه‬ ‫ھيكل‬ ‫عن‬ ‫عبارة‬S‫و‬‫من‬ ‫مكون‬5‫حقول‬‫ھى‬: -a،‫صحيح‬ ‫عددى‬ ‫ونوعه‬ -b،‫كسري‬ ‫عددى‬ ‫ونوعه‬ -c‫حرفى‬ ‫نوعه‬ ‫و‬، -d،‫كسري‬ ‫عددى‬ ‫ونوعى‬ -‫أخيرا‬name‫حرفية‬ ‫سلسلة‬ ‫وھو‬string‫من‬ ‫مكونة‬20‫حرف‬. ‫لإلعالن‬ ‫و‬)‫حجز‬(‫النوع‬ ‫من‬ ‫متغيرات‬ ‫عن‬S‫التالية‬ ‫الجملة‬ ‫نستخدم‬: struct S x,y,z; ‫المنغيرات‬ ‫عن‬ ‫االعالن‬ ‫تم‬ ‫حيث‬x,y,z‫سجالت‬ ‫أنھا‬ ‫على‬.‫أنھا‬ ‫ذلك‬ ‫من‬ ‫أكثر‬ ‫بل‬ ،‫فحسب‬ ‫ھذا‬ ‫ليس‬ ‫ال‬ ‫من‬ ‫سجالت‬‫نوع‬S. ‫المحجوزة‬ ‫الكلمة‬ ‫استخدام‬ ‫طريق‬ ‫عن‬ ‫الثانية‬ ‫الحالة‬ ‫فى‬ ‫السجل‬ ‫تعريف‬ ‫ويتم‬struct‫باسم‬ ‫متبوعة‬ ‫البيانات‬ ‫نوع‬ ‫ذكر‬ ‫طريق‬ ‫عن‬ ‫وذلك‬ ‫السجل‬ ‫ھذا‬ ‫حقول‬ ‫أو‬ ‫عناصر‬ ‫المجموعات‬ ‫قوسى‬ ‫بين‬ ‫يوضع‬ ‫ثم‬ ‫الھيكل‬ ‫تع‬ ‫نھاية‬ ‫عن‬ ‫لالعﯩن‬ ‫منقوطة‬ ‫فاصلة‬ ‫ثم‬ ‫الحقل‬ ‫باسم‬ ‫متبوعا‬ ‫الحقل‬ ‫منه‬ ‫يتكون‬ ‫التى‬‫الحقل‬ ‫ريف‬.‫يتم‬ ‫ھكذا‬ ‫السجل‬ ‫لھذا‬ ‫الحقول‬ ‫جميع‬ ‫تعريف‬.‫النوع‬ ‫من‬ ‫ھى‬ ‫التى‬ ‫المتغيرات‬ ‫جميع‬ ‫المجموعة‬ ‫نھاية‬ ‫قوس‬ ‫،يلى‬ ‫أخيرا‬ ‫المحدد‬.‫التالى‬ ‫العام‬ ‫التعريف‬ ‫فى‬ ‫ذلك‬ ‫تلخيص‬ ‫ويمكن‬: struct structure_name
  • 10. { type1 field1; type2 field2; . . . typen fieldn; } var1,var2,…,varn; ‫حيث‬structure_name‫عنه‬ ‫االعالن‬ ‫المراد‬ ‫السجل‬ ‫أسم‬ ‫ھو‬.‫المتغيرات‬ ‫عن‬ ‫االعالن‬ ‫تم‬ ‫الحالة‬ ‫ھذه‬ ‫وفى‬ var1,var2,…,varn‫النوع‬ ‫تعريف‬ ‫جملة‬ ‫نفس‬ ‫فى‬. ‫المثال‬ ‫سبيل‬ ‫على‬:‫التالى‬ ‫السجل‬ struct S { int a; float b; char c; float d char name[20]; } x,y,z; ‫أسمه‬ ‫ھيكل‬ ‫عن‬ ‫عبارة‬ ‫للبيانات‬ ‫مركب‬ ‫جديد‬ ‫نوع‬ ‫عن‬ ‫اعالن‬ ‫ھو‬S‫من‬ ‫ومكون‬5‫ھى‬ ‫حقول‬: -a،‫صحيح‬ ‫عددى‬ ‫ونوعه‬ -b،‫كسري‬ ‫عددى‬ ‫ونوعه‬ -c‫حرفى‬ ‫نوعه‬ ‫و‬، -d،‫كسري‬ ‫عددى‬ ‫ونوعى‬ -‫أخيرا‬name‫حرفية‬ ‫سلسلة‬ ‫وھو‬string‫من‬ ‫مكونة‬20‫حرف‬. ‫و‬‫عن‬ ‫االعالن‬ ‫تم‬ ‫الوقت‬ ‫نفس‬ ‫فى‬‫المنغيرات‬x,y,z‫سجالت‬ ‫أنھا‬ ‫على‬‫النوع‬ ‫من‬S. ‫المحجوزة‬ ‫الكلمة‬ ‫باستخدام‬ ‫الثالثة‬ ‫الحالة‬ ‫فى‬ ‫السجل‬ ‫تعريف‬ ‫ويتم‬typedef‫الكلمة‬ ‫استخدام‬ ‫مع‬ ‫المحجوزة‬struct‫نوع‬ ‫ذكر‬ ‫طريق‬ ‫عن‬ ‫وذلك‬ ‫السجل‬ ‫ھذا‬ ‫حقول‬ ‫أو‬ ‫عناصر‬ ‫المجموعات‬ ‫قوسى‬ ‫بين‬ ‫يوضع‬ ‫ثم‬ ‫الحقل‬ ‫تعريف‬ ‫نھاية‬ ‫عن‬ ‫لالعﯩن‬ ‫منقوطة‬ ‫فاصلة‬ ‫ثم‬ ‫الحقل‬ ‫باسم‬ ‫متبوعا‬ ‫الحقل‬ ‫منه‬ ‫يتكون‬ ‫التى‬ ‫البيانات‬. ‫السجل‬ ‫لھذا‬ ‫الحقول‬ ‫جميع‬ ‫تعريف‬ ‫يتم‬ ‫ھكذا‬.‫المجموعة‬ ‫نھاية‬ ‫قوس‬ ‫،يلى‬ ‫أخيرا‬‫الھيكل‬ ‫اسم‬.‫ويمكن‬ ‫تل‬‫التالى‬ ‫العام‬ ‫التعريف‬ ‫فى‬ ‫ذلك‬ ‫خيص‬: typedef struct { type1 field1; type2 field2; . . . typen fieldn; } structure_name; ‫حيث‬structure_name‫عنه‬ ‫االعالن‬ ‫المراد‬ ‫السجل‬ ‫أسم‬ ‫ھو‬.‫الحالة‬ ‫ھذه‬ ‫وفى‬‫ي‬‫المتغيرات‬ ‫عن‬ ‫االعالن‬ ‫تم‬ var1,var2,…,varn‫التالى‬ ‫النحو‬ ‫على‬.
  • 11. structure_name var1,var2,…,varn; ‫المثال‬ ‫سبيل‬ ‫على‬:‫التالى‬ ‫السجل‬ typedef struct { int a; float b; char c; float d char name[20]; } S; ‫أسمه‬ ‫ھيكل‬ ‫عن‬ ‫عبارة‬ ‫للبيانات‬ ‫مركب‬ ‫جديد‬ ‫نوع‬ ‫عن‬ ‫اعالن‬ ‫مجرد‬ ‫ھو‬S‫من‬ ‫ومكون‬5‫ھى‬ ‫حقول‬: -a،‫صحيح‬ ‫عددى‬ ‫ونوعه‬ -b،‫كسري‬ ‫عددى‬ ‫ونوعه‬ -c‫حرفى‬ ‫نوعه‬ ‫و‬، -d،‫كسري‬ ‫عددى‬ ‫ونوعى‬ -‫أخيرا‬name‫حرفية‬ ‫سلسلة‬ ‫وھو‬string‫من‬ ‫مكونة‬20‫حرف‬. ‫و‬‫عن‬ ‫لالعالن‬‫المنغيرات‬x,y,z‫النوع‬ ‫من‬ ‫سجالت‬ ‫أنھا‬ ‫على‬S‫الجملة‬ ‫نستخدم‬ S x,y,z; ‫السجل‬ ‫مع‬ ‫التعامل‬ ‫ثالثا‬: ‫لھا‬ ‫المكونة‬ ‫عناصرھا‬ ‫مع‬ ‫التعامل‬ ‫طريق‬ ‫عن‬ ‫السجالت‬ ‫مع‬ ‫التعامل‬ ‫يتم‬.‫أسم‬ ‫ذكر‬ ‫طريق‬ ‫عن‬ ‫ذلك‬ ‫ويتم‬ ‫ھيكل‬ ‫ھو‬ ‫الذى‬ ‫المتغير‬‫نقطة‬ ‫ثم‬.”"‫األ‬ ‫من‬ ‫ذلك‬ ‫سيتضح‬ ‫كما‬ ‫الحقل‬ ‫أسم‬ ‫ثم‬‫التالية‬ ‫مثلة‬: cin>>x.b; ‫الحقل‬ ‫لقراءة‬b‫المتغير‬ ‫من‬x‫النوع‬ ‫من‬ ‫ھيكل‬ ‫نوع‬ ‫من‬ ‫ھو‬ ‫الذى‬S. cout <<y.d; ‫الحقل‬ ‫لطباعة‬d‫المتغير‬ ‫من‬y‫النوع‬ ‫من‬ ‫ھيكل‬ ‫نوع‬ ‫من‬ ‫ھو‬ ‫الذى‬S‫الشاشة‬ ‫غلى‬. z.d=x.b+y.d; ‫للحقل‬ ‫قيمة‬ ‫لتخصيص‬d‫المتغير‬ ‫من‬z‫الحقلين‬ ‫قيم‬ ‫مجموع‬ ‫عن‬ ‫عبارة‬ ‫وھى‬b‫الھيكل‬ ‫من‬S‫الحقل‬ ‫و‬ d‫الھيكل‬ ‫من‬y‫ھما‬ ‫اللذان‬‫نوع‬ ‫من‬‫ال‬‫ھيكل‬S. ‫سجل‬‫داخل‬‫سجل‬. ‫توسيع‬ ‫يمكننا‬ ،‫الھياكل‬ ‫مع‬ ‫التعامل‬ ‫و‬ ‫االعالن‬ ‫كيفية‬ ‫فيه‬ ‫تناولنا‬ ‫الذى‬ ‫الوقت‬ ‫فى‬‫ليكون‬ ‫النقاش‬ ‫نطاق‬ ‫عناصر‬)‫حقول‬(‫بأنواعھا‬ ‫مصفوفات‬ ‫عن‬ ‫عبارة‬ ‫أو‬ ‫ذاتھا‬ ‫حد‬ ‫فى‬ ‫ھياكل‬ ‫عن‬ ‫عبارة‬ ‫الھيكل‬-‫من‬ ‫فليس‬ ‫لذلك‬ ‫ترى‬ ‫أن‬ ‫العجيب‬‫آخر‬ ‫تركيب‬ ‫داخل‬ ً‫ا‬‫تركيب‬.‫من‬ ‫قسم‬ ‫لكل‬ ‫تركيب‬ ‫وضع‬ ‫تريد‬ ‫كنت‬ ‫إذا‬ ‫فمثال‬‫فى‬ ‫األقسام‬ ‫الشركة‬.‫التركيب‬ ‫تضع‬ ‫أن‬ ‫الممكن‬ ‫من‬employee‫تركيب‬ ‫داخل‬ ‫فى‬‫فيه‬ ‫لتخزن‬ ‫القسم‬‫الخاصة‬ ‫المعلومات‬ ‫القسم‬ ‫عن‬ ‫المسئول‬ ‫بالموظف‬. -‫فى‬‫التركيب‬ ‫عن‬ ‫تعلن‬ ‫أن‬ ‫يجب‬ ‫الحالة‬ ‫ھذه‬employeeً‫ال‬‫أو‬
  • 12. struct employee { char name[40]; char address[40]; int age; float salary; } -‫مثل‬ ‫فيه‬ ‫ونضعه‬ ‫األخر‬ ‫التركيب‬ ‫عن‬ ‫نعلن‬ ‫ذلك‬ ‫وبعد‬:- struct dept { int deno; int product; sturct employee emp; } -‫الحظ‬‫التركيب‬ ‫وضعنا‬ ‫كيف‬emp‫التركيب‬ ‫داخل‬ ‫فى‬dept -‫بعد‬‫التركيب‬ ‫عن‬ ‫نعلن‬ ‫ان‬ ‫يمكن‬ ‫ذلك‬dept‫مثل‬ ‫سبق‬ ‫كما‬struct dept dept1; -‫فى‬‫اكتب‬ ‫فرعى‬ ‫تركيب‬ ‫داخل‬ ‫عنصر‬ ‫مع‬ ‫التعامل‬ ‫حالة‬: dept1.emp.age = 25 ‫حيث‬dept1‫اسم‬‫ثم‬ ‫الرئيسى‬ ‫التركيب‬‫نقطه‬ emp‫اسم‬‫نقطه‬ ‫ثم‬ ‫الفرعى‬ ‫التركيب‬ age‫التركيب‬ ‫داخل‬ ‫العنصر‬ ‫اسم‬‫الفرعى‬ ‫وبرامج‬ ‫أمثلة‬: #include <stdio.h> #include <conio.h> #include<iostream.h> void main () { struct data { int num; char stat; }; struct data stud; stud.num = 5; stud. stat='t'; cout<<"n stud.num =”<< stud.num<<” stud.stat="<< stud. stat; getch(); } ‫فيكون‬ ‫الناتج‬
  • 13. strud.num =5, stud.stat=t ‫الثانى‬ ‫البرنامج‬: #include<iostream.h> #include<stdio.h> // ‫حرفية‬ ‫سلسلة‬ ‫تقرأ‬ ‫والتي‬ gets() ‫الدالة‬ ‫استخدام‬ ‫من‬ ‫نتمكن‬ ‫حتى‬ #include<stdlib.h> // ‫رقم‬ ‫الى‬ ‫حرفية‬ ‫سلسلة‬ ‫تحول‬ ‫والتي‬ atoi() ‫الدالة‬ ‫استخدام‬ ‫من‬ ‫نتمكن‬ ‫حتى‬ struct employee { char name[40]; char address[40]; int age; float salary; }; struct department { int depnum; char product[40]; struct employee emp; }; void main(void) { struct deparment dept; char temp[10]; cout<<”enter dept no : “; gets(temp); dept.deptnum = atoi(temp); cout<<”enter dep. Product : “; gets(dept.product); cout<<”enter employee name : “ ; gets(dept.emp.name); cout<<”enter employee address” ; gets(dept.emp.address); cout<<”enter employee age : “ ; gets(temp); dept.emp.age = atoi(temp); cout<<”enter employee salary : “; gets(temp); dept.emp.salary = atof(temp) cout<<”nn you entered nn “ ; cout<<”dept no : tt “<<dept.deptnum<<”n”; cout<<”dept product : tt “<<dept.product<<”n”; cout<<”employee address : tt”<< dept.emp.address<<”n”;
  • 14. cout<<”employee age : tt”<<dept.emp.age<<”n”; cout<<”employee salary: t”<<dept.emp.salary<<”n”; } ‫مالحظات‬:- -‫فى‬‫التركيب‬ ‫عن‬ ‫نعلن‬ ‫البرنامج‬ ‫بداية‬employee‫أوال‬ -‫ثم‬‫التركيب‬ ‫عن‬ ‫نعلن‬department‫التركيب‬ ‫داخله‬ ‫ونضع‬employee -‫الحظ‬، ‫الموظف‬ ‫اسم‬ ‫إدخال‬ ‫المستخدم‬ ‫من‬ ‫نطلب‬ ‫فعندما‬ ‫الفرعى‬ ‫التركيب‬ ‫عناصر‬ ‫مع‬ ‫نتعامل‬ ‫كيف‬‫فإننا‬ ‫نستخدم‬‫اإلجراء‬gets‫الحروف‬ ‫مصفوفه‬ ‫له‬ ‫ونمرر‬name‫الفرعى‬ ‫التركيب‬ ‫فى‬ ‫الموجودة‬emp‫كمايلى‬: gets(dept.emp.name); -‫بعد‬‫االجراء‬ ‫نستخدم‬ ‫المعلومات‬ ‫جميع‬ ‫ادخال‬ ‫من‬ ‫المستخدم‬ ‫ينتھى‬ ‫ان‬printf‫على‬ ‫المعلومات‬ ‫لطبع‬ ‫الشاشة‬. ‫آخر‬ ‫في‬ ‫سجل‬ ‫محتويات‬ ‫وضع‬: ‫مساواة‬ ‫إمكانية‬ ‫قبل‬ ‫من‬ ‫رأينا‬‫و‬ ‫الثاني‬ ‫المتغير‬ ‫في‬ ‫األول‬ ‫المتغير‬ ‫قيمة‬ ‫لوضع‬ ‫ذلك‬ ‫و‬ ‫واحد‬ ‫نوع‬ ‫من‬ ‫متغيرين‬ ‫مساواة‬ ‫يتم‬ ‫بالتالي‬ ‫و‬ ‫آخر‬ ‫مع‬ ‫سجل‬ ‫نوع‬ ‫من‬ ‫متغير‬ ‫مساواة‬ ‫يمكن‬ ‫بحيث‬ ‫السجالت‬ ‫مع‬ ‫ذلك‬ ‫تحقيق‬ ‫يمكن‬ ‫ذلك‬ ‫يوضح‬ ‫التالي‬ ‫البرنامج‬ ‫و‬ ،‫النوع‬ ‫نفس‬ ‫من‬ ‫السجلين‬ ‫يكون‬ ‫أن‬ ‫بشرط‬ ‫السجلين‬ ‫بين‬ ‫العناصر‬ ‫جميع‬ ‫قيم‬: #include<iostream.h> #include <stdio.h> #include <conio.h> void main () { struct data { int no; char name[10]; };
  • 15. struct data stud1, stud2; cout<<”stud1.no = "; cin>> stud1.no; cout<<”stud1.name = "; cin>> stud1.name; stud2 = stud1; cout<<” stud1.no =t”<< stud1. no<<” stud1.name "<< stud1.name <”n”; cout<<” stud2.no =t”<< stud2. no<<” stud2.name "<< stud2.name <”n”; getch(); } ‫لذلك‬‫يكون‬‫الناتج‬ stud1.no= 5 stud1.name= tamer stud2.no= 5 stud2.name= tamer ‫لتوضيح‬ ‫مثال‬‫المتداخلة‬ ‫السجالت‬NestedStructures: ‫وضحنا‬‫أو‬ ‫العناصر‬ ‫تكون‬ ‫أن‬ ‫يمكن‬ ‫بالتالي‬ ‫و‬ ‫العناصر‬ ‫ھذه‬ ‫نوع‬ ‫كان‬ ً‫ا‬‫أي‬ ‫العناصر‬ ‫من‬ ‫مجموعة‬ ‫ھو‬ ‫السجل‬ ‫أن‬ ‫عنصر‬ ‫السجل‬ ‫يكون‬ ‫كيف‬ ‫يوضح‬ ‫التالي‬ ‫البرنامج‬ ‫و‬ ‫المتداخلة‬ ‫بالسجالت‬ ‫يسمى‬ ‫ما‬ ‫ھذا‬ ‫و‬ ‫سجالت‬ ‫بعضھا‬ ‫الحالة‬ ‫ھذه‬ ‫في‬ ‫السجالت‬ ‫عناصر‬ ‫مع‬ ‫التعامل‬ ‫كيفية‬ ‫و‬ ‫آخر‬ ‫سجل‬ ‫في‬. #include <stdio.h> #include <conio.h> #include<iostream.h> void main() { struct person{ int no; char name[10]; }; struct group{ struct person P1;
  • 16. struct person P2; int code; }; struct group G1; cout<<"nn G1.P1.no= "; cin>>G1.P1.no; cout<<”n G1.P1.name= "; cin>>G1.P1.name; cout"n G1.code = "; cin>>G1.code; G1.P2=G1.P1; cout<<"nn The data of Groups :nt"; cout<<”nt G1.P1.no=”<<G1.P1.no; cout<<"nt G1.P1.name="<<G1.P1.name; cout<<"nt G1.code="<<G1.code; cout<<"nt G1.P2.no "<<G1.P2.no; cout<<"nt G1.P2.name=”<<G1.P2.name; } ‫الناتج‬ ‫فيكون‬ G1.P1.no= 10 G1.P1.name= Samer G1.code =199 The data of Groups : G1.P1.no=10 G1.P1.name= Samer G1.code=199 G1.P2.no=10 G1.P2.name= Samer `