إعلان
دورة تطوير التطبيقات باستخدام لغة 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. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    C++ الكلاس array

    تعريف الكلاس array

    تم إضافة هذا الكلاس إبتداءاً من الإصدر c++11 و هو يستخدم لإنشاء كائن يمثل مصفوفة متطورة مقارنةً بالمصفوفة العادية حيث أن التعامل معها مرن أكثر لأنك تستطيع معرفة عدد عناصرها و الحصول على قيمة أول و آخر عنصر فيها بكل سهولة.

    بعد أن يتم تحديد عدد العناصر التي يمكن إضافتها فيه, لا يمكن تغييره كما هو الحال في المصفوفات العادية.

    لاستخدام الكلاس array يجب تضمين الملف #include<array> لأنه موجود فيه.


    بناء الكلاس

    template < class T, size_t N >
    class array
    	

    إذاً عند إنشاء كائن من الكلاس array يجب أن نمرر له نوع البيانات الذي نريد تخزينه فيه مكان الباراميتر T و عدد العناصر الأقصى الذي قد نحتاج تخزينه فيه مكان الباراميتر .N

    دوال الكلاس array

    الجدول التالي يحتوي على دوال الكلاس array الأكثر إستخداماً.

    الدالة مع تعريفها
    T at(size_t n) ترجع العنصر الموجود على الـ index الذي نمرره لها مكان الباراميتر n عند استدعائها.
    ترمي الإستثناء out_of_range في حال كان الـ index المحدد فيها أصغر من 0 أو أكبر من عدد العناصر الموجودة.

    معلومة: يمكنك استخدام العامل [] للوصول للعنصر و لكن عليك معرفة أن استخدام هذا العامل لا يرمي إستثناء في حال تمرير index غير موجود في الكائن.
    bool empty() تستخدم لمعرفة ما إن كان الكائن الذي قام باستدعائها فارغاً أم لا.
    ترجع false في حال كان يوجد فيه عنصر أو أكثر, و ترجع true إن لم يكن كذلك.
    T front() ترجع قيمة أول عنصر موجود في الكائن الذي قام باستدعائها.
    قد تسبب مشكلة في حال كان الكائن لا يملك أي عنصر, لذلك يفضل التأكد من أن الكائن غير فارغ باستخدام الدالة empty() قبل استخدامها.
    T back() ترجع قيمة آخر عنصر موجود في الكائن الذي قام باستدعائها.
    قد تسبب مشكلة في حال كان الكائن لا يملك أي عنصر, لذلك يفضل التأكد من أن الكائن غير فارغ باستخدام الدالة empty() قبل استخدامها.
    void fill(T val) تستخدم لإعطاء قيمة لكل عنصر موجود الكائن الذي قام باستدعائها.
    مكان الباراميتر val يجب أن تمرر قيمة من نفس نوع البيانات التي يمكن للكائن في الأساس أن يخزّنها.
    size_t size() تستخدم للحصول على عدد عناصر الكائن الذي قام باستدعائها.
    القيمة التي ترجعها هي نفسها القيمة التي نمررها مكان الباراميتر الثاني الذي نمرره عند إنشاء الكائن و الذي يمثل عدد عناصره.

    معلومة: الفرق بين الدالة size() و العامل sizeof هو أن هذا الأخير يرجع حجم العناصر في الذاكرة بالوحدة Byte و ليس عددها.
    void swap(array& anotherArray) تستخدم لتبديل قيم عناصر الكائن الذي قام باستدعائها بقيم عناصر الكائن الذي نمرره لها.
    مكان الباراميتر anotherArray نمرر لها كائن من الكلاس array يملك نفس نوع و عدد عناصر الكائن الذي قام باستدعاء.

    أمثلة شاملة حول التعامل مع الكلاس array

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


    في المثال التالي قمنا بتعريف كائن من array مع تحديد أنه يمكن أن يحتوي على 5 عناصر نوعها int.
    بعدها قمنا بوضع 0 كقيمة أولية لجميع عناصره و ثم عرض جميع قيمه باستخدام حلقة.

    ملاحظة: قمنا باستخدام العامل [] للوصول إلى العناصر و الدالة size() لمعرفة حجم المصفوفة.

    المثال الأول

    main.cpp
    #include <iostream>
    #include <array>
    
    using namespace std;
    
    int main()
    {
    	// int يمكنه أن يحتوي على 5 قيم نوعها array هنا قمنا بتعريف كائن من الكلاس
        array<int,5> myArray;
    
    	// هنا قمنا بوضع القيمة 0 كقيمة أولية لجميع عناصره
        myArray.fill(0);
    	
    	// إلى 5 myArray هنا قمنا بتغير قيمة أول عنصر في الكائن
    	myArray[0] = 5;
    	
    	// إلى 7 myArray هنا قمنا بتغير قيمة ثالث عنصر في الكائن
    	myArray[2] = 7;
    
    	// إلى 9 myArray هنا قمنا بتغير قيمة آخر عنصر في الكائن
    	myArray[myArray.size()-1] = 9;
    
        cout << "Array values = ";
    
    	// myArray هنا قمنا بإنشاء حلقة تقوم في كل دورة بطباعة قيمة عنصر جديد من العناصر الموجودة في الكائن
        for(size_t i=0; i<myArray.size(); i++)
        {
            cout << myArray[i] << " ";
        }
    
        return 0;
    }
    		

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

    Array values = 5 0 7 0 9
    		


    في المثال التالي قمنا بتعريف كائن من array أدخلنا فيه 5 عناصر نصية.
    بعدها قمنا بطباعة عدد عناصره و أول و آخر قيمة فيه.

    ملاحظة: قمنا باستخدام الدالة empty() لمعرفة ما إن كانت المصفوفة فارغة أم لا, الدالة front() للحصول على قيمة أول عنصر و الدالة back() للحصول على قيمة آخر عنصر.

    المثال الثاني

    main.cpp
    #include <iostream>
    #include <array>
    
    using namespace std;
    
    int main()
    {
    	// بالإضافة إلى أننا قمنا بوضع قيم أولية في عناصره string يمكنه أن يحتوي على 5 قيم نوعها array هنا قمنا بتعريف كائن من الكلاس
        array<string,5> myArray = {"One", "Two", "Three", "Four", "Five"};
    
    	// size() باستخدام الدالة myArray هنا قمنا بطباعة عدد عناصر الكائن
        cout << "Array size = " << myArray.size() << endl;
    	
    	// و إن لم يكن فارغاً سيتم طباعة أول و آخر قيمة فيه empty() باستخدام الدالة myArray هنا قمنا بالتشييك على عدد عناصر الكائن
    	if (!myArray.empty())
    	{
    		cout << "Array first element value = " << myArray.front() << endl;
    		cout << "Array last element value = " << myArray.back();
    	}
    	
        return 0;
    }
    
    		

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

    Array size = 5
    Array first element value = One
    Array last element value = Five
    		


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

    ملاحظة: قمنا باستخدام الدالة swap() لتبديل قيمهما و الدالة at() للوصول لقيم العناصر الموجودة فيهما.

    المثال الثالث

    main.cpp
    #include <iostream>
    #include <array>
    
    using namespace std;
    
    int main()
    {
    	// مع إعطاؤهما قيم أولية int يحتوي كل منهما على 4 عناصر نوعها array هنا قمنا بتعريف كائنين من الكلاس
        array<int,4> arr1 = {1, 2, 3, 4};
        array<int,4> arr2 = {5, 6, 7, 8};
    	
    	// arr2 مع قيم الكائن arr1 هنا قمنا بتبديل قيم الكائن
    	arr1.swap(arr2);
    
        cout << "arr1 values = ";
    
    	// arr1 هنا قمنا بإنشاء حلقة تقوم في كل دورة بطباعة قيمة عنصر جديد من العناصر الموجودة في الكائن
        for(size_t i=0; i<arr1.size(); i++)
        {
            cout << arr1.at(i) << " ";
        }
    	
        cout << "\narr2 values = ";
    
    	// arr2 هنا قمنا بإنشاء حلقة تقوم في كل دورة بطباعة قيمة عنصر جديد من العناصر الموجودة في الكائن
        for(size_t i=0; i<arr2.size(); i++)
        {
            cout << arr2.at(i) << " ";
        }
    
        return 0;
    }
    		

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

    arr1 values = 5 6 7 8
    arr2 values = 1 2 3 4
    		
    إعلان

    Eqla3Tech.com

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

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

    الدورات

    أدوات مساعدة

    الأقسام

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