إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    البرمجة للمبتدئين المصفوفات الأحادية

    مفهوم المصفوفات الأحادية

    المصفوفة الأحادية ( One Dimensional Array ) عبارة عن سلسلة من العناصر و كل عنصر فيها يملك قيمة و رقم فهرس يحدد موقعه في المصفوفة.

    في هذا الدرس ستتعلم كيف تعرّف مصفوفة جديدة، كيف تضيف قيم فيها، كيف تعرف عدد القيمة الموجودة فيها و كيف تمر على جميع قيمها بواسطة حلقة خطوة خطوة.


    ملاحظة

    طرق تعريف المصفوفات و التعامل معها تختلف قليلاً من لغة برمجة لأخرى و لكن فكرتها هي نفسها تماماً. في محرر هرمش قمنا بتوفير طرق شبيهة جداً بالطرق المتاحة في معظم لغات البرمجة.

    تعريف مصفوفة أحادية

    هناك طريقتين أساسيتين لتعريف المصفوفات:

    • تعريف المصفوفة مع تحديد عدد العناصر المراد تخزينها فيها و هذا الأمر نفعله بواسطة الدالة array().
    • تعريف المصفوفة و تمرير القيم التي تريد تخزينها فيها بشكل مباشر، و في هذه الحالة عدد عناصرها يساوي عدد القيم التي نمررها لها.

    إنشاء مصفوفة أحادية بواسطة الدالة array()

    لإنشاء مصفوفة أحادية بواسطة الدالة array() يجب أن تحدد عدد العناصر الذي تريدها أن تحتويه بين أقواسها، و كذلك يجب أن تضعها في متغير لكي تستطيع التعامل معها لاحقاً.

    مثال

    var a = array(3);
            

    إذاً المصفوفة a تحتوي 3 عناصر و كل عنصر فيها يملك رقم فهرس يحدد موقعه فيها كالتالي.


    إنشاء مصفوفة أحادية و إعطاءها قيم أولية

    يمكنك إنشاء مصفوفة أحادية و تمرير قيم لها بواسطة الرمز [] و عندها عدد القيم الذي تضعه فيها يعتبر عدد عناصرها.

    مثال

    var a = [10, 20, 30];
            

    إذاً المصفوفة a تحتوي 3 عناصر و كل عنصر فيها يملك رقم فهرس و قيمة كالتالي.

    عرض قيم المصفوفة

    لعرض جميع القيم التي تحتويها المصفوفة بشكل سهل في محرر هرمش، يمكنك تمرير إسم المصفوفة للدالة write() و هي ستعرض لك قيمها.

    مثال

    var a = [10, 20, 30];
    write(a);
            

    سنحصل على النتيجة التالية عند التشغيل.

    [10, 20, 30]

    جرب الكود


    تنبيه

    في حال كان العنصر فارغ، بمعنى أنه لا يوجد فيه أي قيمة و حاولت طباعة قيمته سيظهر لك أن قيمته undefined للإشارة إلى أنه بالأساس لا يحتوي أي شيء.


    في المثال التالي قمنا بتعريف مصفوفة تحتوي ثلاث عناصر و لم نضع أي قيم فيها.
    بعدها قمنا بعرض جميع قيم العناصر الموجودة فيها حتى تلاحظ أنه سيظهر لك undefined عند محاولة طباعة قيمة أي عنصر لا يملك أساساً أي قيمة.

    مثال

    var a = array(3);
    write(a);
            

    سنحصل على النتيجة التالية عند التشغيل.

    [undefined, undefined, undefined]

    جرب الكود


    عرض قيمة عنصر محدد

    لعرض قيمة عنصر محدد في المصفوفة عليك تمرير إسم المصفوفة و رقم فهرس العنصر الذي تريد عرض قيمته كالتالي.

    مثال

    var a = [10, 20, 30];
    
    write("a[0] = " + a[0] + "\n");
    write("a[1] = " + a[1] + "\n");
    write("a[2] = " + a[2]);
            

    سنحصل على النتيجة التالية عند التشغيل.

    a[0] = 10
    a[1] = 20
    a[2] = 30

    جرب الكود

    تغيير قيم عناصر المصفوفة

    يمكنك تغيير قيمة أي عنصر في المصفوفة من خلال رقم الفهرس الخاص به كالتالي.

    مثال

    var a = array(3);
    
    write("Before a = " + a);
    
    a[0] = 10;
    a[1] = 20;
    a[2] = 30;
    
    write("\nAfter a = " + a);
            

    سنحصل على النتيجة التالية عند التشغيل.

    Before a = [undefined, undefined, undefined]
    After a = [10, 20, 30]

    جرب الكود

    الحصول على عدد عناصر المصفوفة

    أي مصفوفة يتم تعريفها تملك بشكل تلقائي خاصيّة ( property ) إسمها length يمكن من خلالها معرفة عدد عناصر المصفوفة كالتالي.

    مثال

    var a = [10, 20, 30];
    
    write("Number of elements is " + a.length);
            

    سنحصل على النتيجة التالية عند التشغيل.

    Number of elements is 3

    جرب الكود


    قاعدة

    رقم الفهرس الخاص بآخر عنصر في المصفوفة يساوي دائماً عدد عناصر المصفوفة ناقص واحد. فمثلاً إذا كان عندك مصفوفة تتألف من 3 عناصر فإن رقم فهرس العنصر الأخير سيكون 2.

    مثال

    var a = [10, 20, 30];
    
    write("a[2] = " + a[a.length -1]);
            

    سنحصل على النتيجة التالية عند التشغيل.

    a[2] = 30

    جرب الكود

    التعامل مع المصفوفة بواسطة حلقة

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

    مثال

    var a = [10, 20, 30];
    
    for (var i=0; i<a.length; i++)
    {
        write(a[i] + "\n");
    }
            

    سنحصل على النتيجة التالية عند التشغيل.

    10
    20
    30

    جرب الكود


    في المثال السابق سواء قلنا i<a.length أو i<=a.length-1 فالنتيجة هي نفسها تماماً:

    • i<a.length تعني أن الحلقة ستتكرر من 0 إلى ما قبل 3 و هذا يعني من 0 إلى 2.
    • i<=a.length-1 تعني أن الحلقة ستتكرر من 0 إلى ما قبل 3-1 و هذا يعني من 0 إلى 2 أيضاً.

    بما أن النتيجة هي نفسها تماماً سنستخدم الأسلوب المختصر عند حل التمارين.

    مشاكل شائعة عند التعامل مع المصفوفات

    من الأخطاء الشائعة التي يقع فيها المبتدئين عند استخدام الخاصية length هو نسيان إنقاص واحد عندما يريدون الوصول للعنصر الأخير في المصفوفة.

    في محرر هرمش، إن حاولت طباعة قيمة عنصر هو أساساً غير موجود في المصفوفة فإنه سيظهر لك undefined بمعنى أنه لا يوجد عنصر في المصفوفة حتى يتم طباعة قيمته.


    ماذا يحدث في حال إعطاء قيمة لعنصر غير موجود في المصفوفة؟

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

    إذا كان لديك مصفوفة تتألف من 3 عناصر على سبيل المثال و قمت أنت بإعطاء قيمة للعنصر السابع فيها (الغير موجود) فهنا سيقوم محرر هرمش بتمديد حجم المصفوفة ليصبح عدد عناصرها يساوي 7 و سيقوم بإعطاء العنصر السابع القيمة التي أردت وضعها فيه.

    مثال

    var a = [10, 20, 30];
    
    a[6] = 70;
    
    write(a);
            

    بعد إضافة العنصر السابع على المصفوفة a أصبحت تحتوي 7 عناصر كالتالي.

    سنحصل على النتيجة التالية عند التشغيل.

    [10, 20, 30, undefined, undefined, undefined, 70]

    جرب الكود


    ملاحظة

    في بعض لغات البرمجة إن حاولت الوصول لعنصر غير موجود في المصفوفة فإنه يظهر لك خطأ عند تشغيل البرنامج مفاده أنك تحاول التعامل مع عنصر غير موجود أساساً.

    لا تشغل بالك بهذا الأمر فهذا الشيء يمر معك أثناء تعلمك للغة برمجة.

    تمارين شاملة حول المصفوفات ذات البعد الواحد


    التمرين الأول

    1. أكتب برنامج يطلب من المستخدم إعطائه عدد عناصر مصفوفة إسمها arr و يخزنه في متغير إسمه n مع الإشارة إلى أن العدد الذي يدخله يجب أن يكون أكبر من صفر.
    2. ثم ينشئ المصفوفة arr و يحدد أن عدد عناصرها هو العدد الذي أدخله المستخدم.
    3. ثم يطلب من المستخدم إدخال قيمة لكل عنصر من عناصر المصفوفة arr.
    4. ثم يعرض عدد عناصر المصفوفة arr للمستخدم باستخدام الخاصية length.
    5. ثم يعرض للمستخدم جميع قيم عناصر المصفوفة arr.

    الحل و التفسير »


    التمرين الثاني

    1. أكتب برنامج يطلب من المستخدم إعطائه عدد عناصر مصفوفة إسمها arr و يخزنه في متغير إسمه n مع الإشارة إلى أن العدد الذي يدخله يجب أن يكون أكبر من صفر.
    2. ثم يطلب من المستخدم إدخال قيمة لكل عنصر من عناصر المصفوفة arr.
    3. ثم يعرض للمستخدم ناتج جمع جميع قيم عناصر المصفوفة arr.

    الحل و التفسير »


    التمرين الثالث

    1. أكتب برنامج يطلب من المستخدم إعطائه عدد عناصر مصفوفة إسمها arr و يخزنه في متغير إسمه n مع الإشارة إلى أن العدد الذي يدخله يجب أن يكون أكبر من صفر.
    2. ثم يطلب من المستخدم إدخال قيمة لكل عنصر من عناصر المصفوفة arr.
    3. في الأخير يعرض للمستخدم عدد العناصر التي تملك قيم أكبر من صفر، و عدد العناصر التي تملك قيم أصغر من صفر, و عدد العناصر التي تملك قيم تساوي صفر.

    الحل و التفسير »


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

    1. أكتب برنامج يطلب من المستخدم إدخال 5 قيم و يخزنهم في مصفوفة إسمها arr تتألف من 5 عناصر.
    2. بعدها يقوم بترتيب قيم عناصر المصفوفة من الأصغر إلى الأكبر.
    3. في الأخير يعرض للمستخدم قيم المصفوفة بعد أن تم ترتيبها.

    الحل و التفسير »


    التمرين الخامس

    1. أكتب برنامج يطلب من المستخدم إعطائه عدد عناصر مصفوفة إسمها arr و يخزنه في متغير إسمه n مع الإشارة إلى أن العدد الذي يدخله يجب أن يكون أكبر من صفر.
    2. ثم يطلب من المستخدم إدخال قيمة لكل عنصر من عناصر المصفوفة arr.
    3. بعدها يقوم بالمرور على جميع عناصر المصفوفة و يفعل التالي: كل قيمة يجدها أكبر من صفر يحولها إلى 1 و كل قيمة يجدها أصغر من صفر يحولها إلى -1.
    4. في الأخير يعرض للمستخدم قيم المصفوفة الجديدة.

    الحل و التفسير »


    التمرين السادس

    1. أكتب برنامج يقوم بتعريف ثلاث مصفوفات A و B و C.
    2. ثم يطلب من المستخدم إدخال عدد يمثل عدد عناصر المصفوفات الثلاثة مع الإشارة إلى أن العدد الذي يدخله يجب أن يكون أكبر من صفر، لأن عدد عناصر المصفوفات لا يمكن أن يكون صفر أو أقل من صفر.
    3. بعدها يطلب من المستخدم إدخال قيمة لجميع عناصر المصفوفتين A و B و يجمعهم في المصفوفة C.
    4. في الأخير يعرض للمستخدم القيم التي أصبحت تحتويها المصفوفة C.

    الحل و التفسير »

    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب