أهلاً وسهلاً بكم في الدرس الخامس عشر من دورة تعلم لغة البرمجة C . في هذا الدرس سنتعلم موضوع جديد وهو موضوع المصفوفات ( Arrays ) وقبل الدخول في تفاصيل هذا الدرس والطرق البرمجية لابد من تقديم تعريف بسيط بهذه الموضوع ولابد من تعلم مالمقصود بالمصفوفات ؟
ماهي المصفوفة : أبسط تعريف للمصفوفة (هي مجموعة من البيانات من نفس النوع ) . حيث تستعمل المصفوفات لإدارة مجموعة كبيرة من البيانات التي تحمل نفس النوع وبإستخدام إسم واحد فقط .
اذا لم تتوضح الفكرة من خلال التعريف سنوضحها بالمثال التالي :
مثلا نريد إنشاء برنامج يحتوي على 20 متغير من النوع الصحيح فمن غير المعقول أن نقوم بتعريفها بالصورة التالية :
ماهي المصفوفة : أبسط تعريف للمصفوفة (هي مجموعة من البيانات من نفس النوع ) . حيث تستعمل المصفوفات لإدارة مجموعة كبيرة من البيانات التي تحمل نفس النوع وبإستخدام إسم واحد فقط .
اذا لم تتوضح الفكرة من خلال التعريف سنوضحها بالمثال التالي :
مثلا نريد إنشاء برنامج يحتوي على 20 متغير من النوع الصحيح فمن غير المعقول أن نقوم بتعريفها بالصورة التالية :
; int num1,num2,num3,num4 .......num20
وخاصة اذا كنا نريد أن يقوم المستخدم بإعطاء قيم لهذه المتغيرات . وذلك لاننا سنحتاج الى عشرون جملة إدخال ( scanf ) وكذلك سنلاقي صعوبة بالغة بالتعامل مع هذه المتغيرات الكثيرة لإن الكود سيكون طويل والمبرمج الناجح يلجأ دائما الى اقل كود ممكن لهذا ولحل هكذا مشاكل سنتجه الى التعامل مع موضوع المصفوفات .
أنواع المصفوفات :
تقسم المصفوفات الى ثلاث اقسام وهي :
1- مصفوفات احادية البعد One-dimensional arrays
أنواع المصفوفات :
تقسم المصفوفات الى ثلاث اقسام وهي :
1- مصفوفات احادية البعد One-dimensional arrays
2- مصفوفات متعددة الابعاد ( اكثر من بعد واحد ) Multidimensional arrays
3- مصفوفات السلاسل الحرفية string arrays
وسوف نتكلم عن كل نوع من هذه الانواع نبدأ بالمصفوفة الاحادية , لتعريف مصفوفة أُحادية نتبع الصيغة التالية :
وسوف نتكلم عن كل نوع من هذه الانواع نبدأ بالمصفوفة الاحادية , لتعريف مصفوفة أُحادية نتبع الصيغة التالية :
int ( or any other data type) array name [array size];
الصيغة أعلاه هي الصيغة العامة لتعريف مصفوفة احادية وهي مشابه لتعريف متغير بإستثناء وجود حجم المصفوفة . أي لو أردنا تعريف مصفوفة من نوع العدد الصحيح واسمها (num) ونريد ان يكون عدد عناصرها عشرين فستكون بالصيغة التالية :
int num[20];
إن هذا التعريف البسيط يعادل السطر الكامل الذي في الاعلى فبدلاً من تعريف عشرين متغير قمنا بتعريف مصفوفة تتكون من عشرين عنصر لكي تمثل لنا العشرين متغير الذي سنحتاجه .
مثال اخر : سنقوم بتعريف مصفوفة من نوع float وتحتوي على اربع عناصر :
float aa[4];
أي إننا قمنا بتعريف مصفوفة إسمها aa ( الأسم حسب رغبتنا ولكنه يخضع لشروط تسمية المتغيرات التي سبق وشرحناها ) وهذه المصفوفة تحتوي أربع عناصر أو أربع متغيرات أو بصيغة اخرى حجزت في الذاكرة أربعة أماكن خالية وهي
aa[0]
aa[1]
aa[2]
aa[3]
وهذه الأماكن تعتبر متغيرات وبإمكاننا معاملتها معاملة المتغير ودائما تبدأ من الرقم صفر .
طريقة إعطاء قيم لعناصر المصفوفة :
ذكرنا أعلاه إن المصفوفة تشكل مجموعة من الاماكن الخالية في الذاكرة أو تشكل مجموعة من المتغيرات والغرض منها استغلالها والاستفادة منها , ومن الطبيعي أن يكون لهذه المتغيرات التي تتمثل بعناصر المصفوفة قيم معينة نستخدمها في برامجنا وحسب حاجتنا لها وهذه القيم أما تعطى مباشرة من قبل المبرمج أو يتم إدخالها من قبل المستخدم ( وهي الاكثر استخداماً ) أو تأتي من ناتج لعملية حسابية .
اما طريقة إعطاء القيم لعناصر المصفوفة مباشرة يكون بالصيغة التالية :
اما طريقة إعطاء القيم لعناصر المصفوفة مباشرة يكون بالصيغة التالية :
aa[4]={ 5,3,1,4};
ويمكن إعطاء القيم بالطريقة التالية :
وكلا الطريقتين اعلاه متكافئة . أي يمكن اعطاء قيمة لكل عنصر من عناصر المصفوفة لوحدة وكذلك يمكن إسناد القيم جميعها بسطر واحد وهي تتوزع على عناصر المصفوفة وبالترتيب وكما ذكرنا إن أول عنصر بالمصفوفة يكون صفر وليس واحد .
أما طريقة قراءة المصفوفة وإدخالها من قبل المستخدم فيتم بإستعمال جملة for وكذلك طريقة طباعة المصفوفة فأيضا نستعمل جملة for وفي الحالتين يكون التكرار بنفس حجم المصفوفة وكما بالمثال التالي :
مثال برمجي : برنامج يطلب من المستخدم إدخال مصفوفة احادية تتكون من عشرة عناصر وطباعة هذه العناصر
في الصورة الاولى .. المربع الاخضر يمثل طريقة قراءة المصفوفة أي طلب من المستخدم ادخال مصفوفة والمربع الاحمر يمثل الكود الخاص بطباعة المصفوفة .
في الصورة الثانية .. هي نتيجة لتنفيذ الكود الموجود في الصورة الاولى وفي بداية التنفيذ تضهر شاشة سوداء فارغة الى أن تقوم بإدخال عشرة أعداد وبعدها سيتم التنفيذ وطباعة هذه الاعداد .
الى هنا نأتي الى نهاية درسنا .. نلتقي في الدرس القادم
aa[0]=5;
aa[1]=3;
aa[2]=1;
aa[3]=4;
وكلا الطريقتين اعلاه متكافئة . أي يمكن اعطاء قيمة لكل عنصر من عناصر المصفوفة لوحدة وكذلك يمكن إسناد القيم جميعها بسطر واحد وهي تتوزع على عناصر المصفوفة وبالترتيب وكما ذكرنا إن أول عنصر بالمصفوفة يكون صفر وليس واحد .
أما طريقة قراءة المصفوفة وإدخالها من قبل المستخدم فيتم بإستعمال جملة for وكذلك طريقة طباعة المصفوفة فأيضا نستعمل جملة for وفي الحالتين يكون التكرار بنفس حجم المصفوفة وكما بالمثال التالي :
مثال برمجي : برنامج يطلب من المستخدم إدخال مصفوفة احادية تتكون من عشرة عناصر وطباعة هذه العناصر
في الصورة الاولى .. المربع الاخضر يمثل طريقة قراءة المصفوفة أي طلب من المستخدم ادخال مصفوفة والمربع الاحمر يمثل الكود الخاص بطباعة المصفوفة .
في الصورة الثانية .. هي نتيجة لتنفيذ الكود الموجود في الصورة الاولى وفي بداية التنفيذ تضهر شاشة سوداء فارغة الى أن تقوم بإدخال عشرة أعداد وبعدها سيتم التنفيذ وطباعة هذه الاعداد .
الى هنا نأتي الى نهاية درسنا .. نلتقي في الدرس القادم
0 التعليقات :
إرسال تعليق