البرمجة بلغة السى – الجزء الرابع – المصفوفات والسلاسل النصية -1- المصفوفات Arrays :

استعرض الموضوع السابق استعرض الموضوع التالي اذهب الى الأسفل

البرمجة بلغة السى – الجزء الرابع – المصفوفات والسلاسل النصية -1- المصفوفات Arrays :

مُساهمة من طرف Admin في السبت فبراير 01, 2014 5:47 pm


البرمجة بلغة السى – الجزء الرابع – المصفوفات والسلاسل النصية -1- المصفوفات Arrays :

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

المصفوفات هى سلسة من عناصر بيانات لقيم متجانسة (نفس النوع) . تصنف المصفوغات إلى نوعين :
1- مصفوفات البعد الواحد .
2- مصفوفات متعددة الأبعاد ( سوف يتم تناولها لاحقا) .

إعلان مصفوفة البعد الواحد :


الكود:

data_type array_name[array_size];


على سبيل المثال :


الكود:

int age[5];


هنا : اسم الدالة هو "age" . وحجم المصفوفة "5" أى يوجد خمس عناصر فى المصفوفة age . جميع عناصر المصفوفة من نفس النوع ، وهو فى هذه الحالة نوع العدد الصحيح int .

عناصر المصفوفة :

حجم المصفوفة يعرف عدد العناصر فى المصفوفة . كل عنصر بالمصفوفة يمكن الوصول إليه واستخدامه بمعرفة المستخدم وفقا لحاجة البرنامج .
على سبيل المثال :


الكود:

int age[5];


لاحظ : العنصر الأول يرقم بصفر وهكذا .

هنا : حجم المصفوفة age هو 5 عناصر من نوع int لأن هناك 5 عناصر .
افترض ، عنوان البداية للعنصر age[0[ هو 2120d وأن حجم النوع int هو 4 بايت ، عندئذ يكون العنوان التالى (عنوان العنصر age[1] ) سوف يكون 2124d ، وعنوان العنصر age[2] سوف يكون 2128d وهكذا .

تهيئة مصفوفات البعد الواحد :

يمكن تهيئة المصفوفات عند وقت إعلانها بالصيغة التالية :


الكود:

int age[5]={2,4,34,3,4};


ليس من الضرورى تعريف حجم المصفوفات أثناء التهيئة كما يلى :


الكود:

int age[]={2,4,34,3,4};


فى هذه الحالة ، يحدد المترجم حجم المصفوفة بواسطة حساب عدد عناصر المصفوفة .


الوصول لعناصر المصفوفة :

فى البرمجة بلغة السى ، يمكن الوصول للمصفوفة ومعالجتها مثل المتغير فى لغة السى .
على سبيل المثال :


الكود:


scanf("%d",&age[2]);
/* statement to insert value in the third element of array age[]. */

scanf("%d",&age[i]);
/* Statement to insert value in (i+1)th element of array age[]. */
/* Because, the first element of array is age[0], second is age[1], ith is age[i-1] and (i+1)th is age[i]. */

printf("%d",age[0]);
/* statement to print first element of an array. */

printf("%d",age[i]);
/* statement to print (i+1)th element of an array. */






مثال على المصفوفة :


الكود:


/* C program to find the sum marks of n students using arrays */

#include <stdio.h>
int main(){
   int marks[10],i,n,sum=0;
   printf("Enter number of students: ");
   scanf("%d",&n);
   for(i=0;i<n;++i){
        printf("Enter marks of student%d: ",i+1);
        scanf("%d",&marks[i]);
        sum+=marks[i];
   }
   printf("Sum= %d",sum);
return 0;
}




الخرج :


الكود:


Enter number of students: 3
Enter marks of student1: 12
Enter marks of student2: 31
Enter marks of student3: 2
sum=45





تحذير :

افترض ، أنك أعلنت مصفوفة لعشر طلبة  ، على سبيل المثال : arr[10] . يمكنك عناصر المصفوفة من arr[0] إلى arr[9] . ولكن ، ماذا لو أردت استخدام العنصر [10] أو العنصر [13] . قد لا يبدى المترجم خطأ استخدام هذه العناصر ولكن قد يتسبب فى خطأ قاتل أثناء تنفيذ البرنامج .

Admin
Admin

عدد المساهمات : 935
تاريخ التسجيل : 28/01/2014

معاينة صفحة البيانات الشخصي للعضو http://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

استعرض الموضوع السابق استعرض الموضوع التالي الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى