1 / 23

C++ Programming

C++ Programming. L6 . Arrays. Array :. المصفوفة هي بنية تمكننا من تخزين سلسلة من العناصر من نفس النمط بحيث تتوضع هذه العناصر بأماكن متجاورة في الذاكرة . بحيث يكون اسم المصفوفة يشير إلى أول عناصر من عناصرها. كل عنصر من عناصر المصفوفة له دليل index .

Download Presentation

C++ Programming

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C++ Programming L6 . Arrays

  2. Array : • المصفوفة هي بنية تمكننا من تخزين سلسلة من العناصر من نفس النمط بحيث تتوضع هذه العناصر بأماكن متجاورة في الذاكرة . • بحيث يكون اسم المصفوفة يشير إلى أول عناصر من عناصرها. • كل عنصر من عناصر المصفوفة له دليل index . • أول عنصر في المصفوفة له الدليل 0 وثاني عنصر له الدليل 1 وهكذا ..... • العنصر n يكون له الدليل n-1 . • لمعرفة القيمة الموجودة في دليل ما عن طريق ArrayName [ index ] .

  3. Array : • يكون الـ syntax لتعريف المصفوفة بالشكل التالي :

  4. Array : • مثلاً لتعريف مصفوفة من 100 عنصر من النمط int يكون بالشكل التالي : • تعريف مصفوفتين من النمط int .

  5. Array Initialization : • في حال تعريف مصفوفة عن طريق التعليمة int n [5] ; نميز الحالات الثلاث التالية : • في حال كانت n هي متحول عام global فإن جميع عناصر المصفوفة ستأخذ قيمة افتراضية هي الصفر . • في حال كانت n هي متحول ساكنstatic فإن جميع عناصر المصفوفة ستأخذ قيمة افتراضية هي الصفر . • في حال كانت n هي متحول محلي local فإن جميع العناصر لم يتم تهيئتها إلى الآن !! وإن محاولة طباعة أحد عناصر المصفوفة سيعطينا خطأ أثناء التنفيذ runtime error . • هل تعلم أن هذا الأمر ينطبق أيضاً على المتحولات !!! Try it please .

  6. Array Initialization : • يوجد عدة طرق لتهيئة المصفوفة : • تهيئة عناصر المصفوفة يدوياً عنصر تلو الآخر . • إذا كانت العناصر المدخلة غير كافية فإن باقي العناصر ستأخذ القيمة صفر .... ففي المثال التالي سيأخذ العنصران الرابع والخامس القيمة صفر . • وأيضاً في حال عدم إدخال أي قيمة ستأخذ جميع العناصر القيمة صفر .

  7. Array Initialization : • في حال كانت القيم المدخلة عددها أكبر من عدد عناصر المصفوفة فإنه سينتج لدينا compiler error . • يمكننا أيضاً تهيئة المصفوفة باستخدام loop عن طريق المرور على كل عنصر من عناصر المصفوفة وإسناد قيمة معينة لهذا العنصر .

  8. Array Size : • يجب أن يكون حجم المصفوفة ثابت . • إما قيمة ثابتة . • أو متحول معرف على أنه ثابت . • الثابت باستخدام const • الثابت باستخدام #define

  9. Array Size : • في هذه الحالة لم نقوم بإدخال بعد المصفوفة ... عندها يقوم المترجم بمعرفة بُعد المصفوفة من خلال عدد العناصر المدخلة .

  10. Array of Chars (string): • يمكن تعريف نص ما على أنه سلسلة من المحارف . • جميع السلاسل النصية تنتهي بالمحرف ‘\0’ كدلالة على انتهاء السلسلة . • في حال تعريف مصفوفة من النمط char وإسناد سلسلة نصية لها عندها تتم إضافة \0 إلى نهاية السلسلة تلقائياً . • عند طباعة سلسلة نصية نتوقف عن الطباعة عندما نصل لـ \0

  11. Array of Chars (string): • يمكن تعريف نص ما على أنه سلسلة من المحارف . • جميع السلاسل النصية تنتهي بالمحرف ‘\0’ كدلالة على انتهاء السلسلة .

  12. Array of Chars (string): • يمكن تعريف نص ما على أنه سلسلة من المحارف . • جميع السلاسل النصية تنتهي بالمحرف ‘\0’ كدلالة على انتهاء السلسلة .

  13. Static Array : • نتذكر أن المتحول الـ static داخل تابع يكون على مستوى التابع وليس على مستوى الاستدعاء إذ تتم عملية التهيئة لمرة واحدة فقط .

  14. Arrays : passing elements of array • تمرير عنصر من عناصر المصفوفة لتابع يكون تمرير بالقيمةby value . • أي أنه سيتم أخذ نسخة من العنصر وإدخاله للتابع . • أي تعديل داخل التابع سيتم على النسخة وليس على الأصل .

  15. Arrays : array passing • تمرير المصفوفة لتابع يكون تمرير بالعنوان by reference . • اسم المصفوفة هو عنوان أول عنصر فيها . • أي أنه سيتم أخذ المصفوفة نفسها وإدخالها للتابع . • الذي يحدث فعلاً هو إدخال عنوان أول عنصر فقط (اسم المصفوفة). • أي تعديل داخل التابع سيتم على الأصل.

  16. Constant Array : • يمكننا وضع مصفوفة الدخل على أنها const بحيث نضمن بأن المبرمج لن يخطئ بتعديل قيم المصفوفة ... • في حال تعديل قيم المصفوفة سينتج لدينا compiler error لأننا نحاول تعديل قيمة const . • التابع print وظيفته طباعة عناصر مصفوفة فهو لن يقوم بتعديل عناصرها لذلك يفضل أن تكون المصفوفة كدخل ثابت .

  17. Constant Array : • هنا ينتج لدينا compiler error لأننا نحاول تعديل قيمة ثابتة وهذا خطأ .

  18. Multidimensional Arrays : • يمكن تعريف مصفوفة ثنائية على أنها مصفوفة مصفوفات . • المثال التالي يقوم بتعريف مصفوفة ثنائية تحوي 3 أسطر و 5 أعمدة . • كل سطر من أسطر المصفوفة الثنائية هو مصفوفة أحادية (شعاع) .

  19. Multidimensional Arrays : • للوصول إلى العنصر الموجود في السطر الثاني والعمود الرابع نستخدم التعليمة التالية : • يمكن تعريف مصفوفة من أكثر من بعدين ... لاحظ المثال التالي يقوم بتعريف مصفوفة من خمس أبعاد.

  20. Multidimensional Arrays : • يمكن للمبرمج أحياناً أن يقوم باستخدام شعاع (مصفوفة أحادية) عوضاً عن مصفوفة ثنائية ، أي :

  21. Multidimensional Arrays :

  22. اكتب برنامج يقوم بالتعامل مع مصفوفات ثنائية بحيث يمكنه أن يجمع مصفوفتين ثنائيتين ويعطينا النتيجة في مصفوفة جديدة

  23. The End

More Related