تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
دورة في اساسيات c++ - الدرس الخامس
#1
الدرس الخامس

* المصفوفات :

درس اليوم هو درس بسيط و جميل و لا يحتوي على الكثير من التعقيد  ، المصفوفات  و كما درسناها في الرياضيات على انها مجموعة من الاعداد  التي يطبق عليها مجموعة من القوانين  ، هنا أيضا المصفوفات  مجموعة  لكن ليس من الأرقام بل من أي نوع من البيانات  ، بمعنى ان  المصفوفة  مثل المتغير  لكن بعدة نسخ  يعني  في المتغير العادي  لدينا x   بينما في المصفوفات فلدينا  x0   و   x1   و  x2  .......... الى  xn   ،  قد تتسائل عن فائدة هذا الامر فاجيبك بمثال الالف طالب  لو فرضنا انك تريد تخزين درجاتهم في مادة الرياضيات  امامك حل من اثنين  اما انك  تطفي البرنامج و تشغله الف مرة كي توفر المتغيرات او انك تفرض الف متغير  و  الله  يعينك على بقية المواد Tongue    طبعا الحل الثاني  هو الأقرب لما سنفعله فنحن  هنا سنفرض الف متغير لكن في سطر واحد  و باسم واحد   و طبق عليهم  اكوادك  و يجب مراعاة الآتي :

1 -  المصفوفات و حلقات التكرار  شيء واحد  فبدون التكرار  انت هكذا فرضت الف متغير و ستخزن الدرجات بيديك Exclamation

2 -  أول عنصر في أي مصفوفة في ++c  يكون دليله  صفر  ، يعني  في مثال الالف طالب نحن لدينا  طلاب من 0 الى 999

3 - العناصر هي المتغيرات التي في المصفوفة  ، بينما الدليل فهو ترتيب العنصر داخل المصفوفة 

4 - المصفوفة قد تكون من  أي نوع من أنواع البيانات  int , float , double , char , bool

5 - المصفوفات محددة الحجم  حتى هذه اللحظة  بمعنى ان  أي مصفوفة ستفرضها الآن هي معروف عدد عناصرها  لكن في المستقبل سوف تتعلم  انه يمكنك  تعريف  مصفوفة  غير محددة الحجم  لكن في الوقت الحالي لا تجربها  .


الصيغة العامة :

كود :
DataType  ArrayName[n];

كل ما جد علينا هو [n]   فهو يعني  "  عرف  عدد n  من هذا المتغير  "  .

 - امثلة :
كود :
int x[10];

double y[36];

char  z[50];

كل هذه تعريفات مصفوفات سليمة .


- دمج المصفوفات  بالتكرار  :

الفكرة في الدمج هي باستغلال العداد i   بتمرير عناصر المصفوفة عليه و تنفيذ ما نريد على العناصر .

كود :
int main(){
int x[10];

for(int i = 0; i < 10 ; i++){
    x[i] = i + 1 ;
}

for(int j = 0; j < 10 ; j++){
    cout<<x[j] << endl ;
}

return 0;
}


1 -  عرفنا مصفوفة  من 10 عناصر   تبدأ  من 0 و تنتهي  عند  9   !!!!

2 -  في اول حلقة تكرارية  نقوم بمليء  العناصر بالأرقام  من 1 الى 10  ، لذا بدانا الحلقة من 0 و اوقفناها عند I < 10  يعني  9
لو كتبنا   I <= 10   البرنامج سيعمل  لكن  في الحقيقة البرنامج قام بإضافة عنصر جديد  و هذا غير مستحب فقد يسبب بعض المشاكل خاصة لو كان البرنامج كبير لذا يستحب الالتزام و التشديد على هذه النقطة .

3 - استعملنا  I +1  لأننا نريد ان نطبع  من 1 الى 10 و ليس من 0 الى 9  طيب لو اردنا  ان نطبع من 2 الى 11 ماذا سنفعل ؟ Big Grin


4 -  كتبنا حلقة تكرار أخرى  لطباعة العناصر  .

بس هذه هي كل الفكرة  .

-------------------------------------------

- تهيئة عناصر المصفوفة :

يمكن بدل ان نستعمل الحلقات في فرض القيم ان نستعمل  الطريقة التالية :

كود :
int x[5] = {1,2,3,4,5};

هذا التعريف   يمنحك حرية اكبر في وضع القيم الت تريدها و لاحظ انك لو تركت أي عنصر بلا قيمة فان المترجم يفرض له القيمة 0
مباشرة

لنرى المثال  :

كود :
int main(){

    int x[6] = {500,444,368,5569};
    for(int i = 0 ; i < 6 ; i++){
        cout<<x[i]<<endl;
    }

return 0;
}


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


 - أيضا يمكنك استعمال التكنولوجيا التالية  Tongue

كود :
int main(){
    int x[6];
    for(int i = 0 ; i < 6 ; i++){
        cin>> x[i];
    }

    for(int j = 0 ; j < 6 ; j++){
        cout<<x[j]<<endl;
    }

return 0;
}

طبعا هذه  التكنولوجيا تمكن المستخدم  من ادخال القيم التي يريدها  مثل  درجات  الطلاب .

------------------------------
المثال الشامل

البحث عن قيمة داخل مصفوفة

كود :
int main(){
    const int y = 66;
    int x[10] = { 1 , 55, 88 , 969 , 66 , 3 , 4 , 45 , 87 , 27};
    for(int i = 0 ; i < 10 ; i++){
        if( x[i] == y){
            cout<< i << endl;
            break;
        }
    }

return 0;
}
الشرح :

1 - عرفنا مصفوفة بها 10 قيم .

2- ثابت به القيمة التي نريد  البحث عنها  .

3 - داخل حلقة تكرار   اضفنا عبارة شرط بحيث انه عند تساوي قيمة  احد العناصر مع الثابت يتوقف و يطبع ترتيب (دليل) ذلك العنصر  .

-------------------------------------------
  عبارة break  تستخدم  لايقاف حلقة التكرار عند الحصول على ما نريد  او  عند تحقق شرط معين .
-------------------------------------------
الخلاصة

 في المستقبل  ان شاء الله ستكون الفكرة هي نفسها  لكن قيم عناصر المصفوفة  ستجلبها من قاعدة بيانات  و الثابت سنستبدله  بمتغير يحدد المستخدم قيمته  ........ الموضوع كله متشابك .

--------------------------------------------

يكفينا هذا في المصفوفات و ان شاء الله في المستقبل ربما نتحدث اكثر و نتعمق
فيها و الى الدرس  القادم ارجوا ان ننفذ بعض  الاكواد كتدريب نستعمل  جوجل في 
 البحث عن امثلة و أي شيء غير واضح  غير مفهوم انا موجود في الخدمة للرد على
أي استفسار

و  شكرا
 

العاب من برمجتي  

Smile
الرد }}}
تم الشكر بواسطة: amir9
#2
بارك الله فيك اخي على ما تقدمه لنا من معلومات مفيدة
واقل ما يقال فيك بانك مبدع ومميز
شكرا لك ونفع الله بك الامة
الرد }}}
تم الشكر بواسطة: AGASHE , rnmr



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم