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

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

    المطلوب

    هذا التمرين مقسّم إلى أربع أفكار رئيسية, عليك اتباع التقسيم التالي خطوة خطوة حتى تنجز البرنامج.

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

    النتيجة المطلوبة

    لنفترض أن المستخدم أدخل 5 قيم كما في الصورة التالية.

    تحليل النتيجة

    لنفترض أن المستخدم أدخل 5 عناصر كما في الصورة السابقة.

    الخوارزمية

    كود الجافا

    import java.util.Scanner;
     
    public class Vector {
     
        public static void main (String[] args) {
     
            Scanner input = new Scanner(System.in);
     
            int[] vector = new int[5];
            int temp;
     
            for (int i=0; i<vector.length; i++)
            {
                System.out.print("Enter vector[" +i+ "]: ");
                vector[i] = input.nextInt();
            }
     
            System.out.print("\nBefore arrangement: \n");
     
            for (int i=0; i<vector.length; i++)
            {
                System.out.print("vector[" +i+ "]: " + vector[i] +"\n");
            }
     
            for (int i=0; i<vector.length-1; i++)
            {
                for (int j=i+1; j<vector.length; j++)
                {
                    if ( vector[i] > vector[j] )
                    {
                             temp = vector[i];
                        vector[i] = vector[j];
                        vector[j] = temp;
                    }
                }
            }
     
            System.out.print("\nAfter arrangement: \n");
     
            for (int i=0; i<vector.length; i++)
            {
                System.out.print("vector[" +i+ "]: " + vector[i] +"\n");
            }
     
            System.out.print("\n");
     
        }
     
    }
    		

    شرح الكود


    		int[] vector = new int[5];
    		int temp;
    			
    • هنا قمنا بتجهيز المصفوفة vector التي سنضع فيها القيم التي يدخلها المستخدم و حددنا عند إنشائها أن عدد عناصرها يساوي 5.
    • و المتغير temp الذي سنستخدمه بشكل مؤقت أثناء عملية ترتيب العناصر من الأصغر إلى الأكبر.


    		for (int i=0; i<vector.length; i++)
    		{
    			System.out.print("Enter vector[" +i+ "]: ");
    			vector[i] = input.nextInt();
    		}
    			
    • هنا أنشأنا حلقة تبدأ من index العنصر الأول في المصفوفة إلى آخر عنصر موجود فيها.
    • في كل دورة من دورات الحلقة i سيحدث التالي:
      • سيطلب من المستخدم إدخال قيمة لعنصر محدد من عناصر المصفوفة.
      • بعدها سيتم تخزين العدد الذي سيدخله في هذا العنصر.


    		System.out.print("\nBefore arrangement: \n");
    		
    		for (int i=0; i<vector.length; i++)
    		{
    			System.out.print("vector[" +i+ "]: " + vector[i] +"\n");
    		}
    			
    • هنا أنشأنا حلقة تبدأ من index العنصر الأول في المصفوفة إلى آخر عنصر موجود فيها لعرض جميع قيم المصفوفة قبل أن نرّتب قيمها من الأصغر إلى الأكبر.


    		for (int i=0; i<vector.length-1; i++)
    		{
    			for (int j=i+1; j<vector.length; j++)
    			{
    				if ( vector[i] > vector[j] )
    				{
    						temp = vector[i];
    					vector[i] = vector[j];
    					vector[j] = temp;
    				}
    			}
    		}
    			
    • هنا عندنا حلقتين متداخلتين, الحلقة i و الحلقة j.
    • الحلقة i تبدأ من أول عنصر إلى العنصر ما قبل الأخير, أي من 0 إلى 3.
    • الحلقة j تبدأ من أول عنصر بعد العداد i إلى آخر عنصر, أي من i+1 إلى 4.
    • إذاً هنا في كل دورة من دورات الحلقة i سيتم مقارنة قيمة عنصر جديد في المصفوفة, مع قيمة جميع العناصر التي تليه في المصفوفة عن طريق الحلقة j.
    • إذا كانت قيمة العنصر vector[i] أكبر من قيمة أي عنصر بعده من العناصر vector[j] سيتم تبديل قيمهم.
    • هذا الكود معقد قليلاً و ستجد بعض الصعوبة للإقتناع به, لذلك ننصحك بمشاهدة الفيديو لتفهم طريقة عمله.


    		System.out.print("\nAfter arrangement: \n");
    		
    		for (int i=0; i<vector.length; i++)
    		{
    			System.out.print("vector[" +i+ "]: " + vector[i] +"\n");
    		}
    			
    • في الأخير سيتم إنشاء حلقة تبدأ من index العنصر الأول في المصفوفة إلى آخر عنصر موجود فيها لعرض قيم المصفوفة من جديد حتى نتأكد إذا تم ترتيب قيم عناصرها من الأصغر إلى الأكبر أم لا.


    ملاحظات مهمة حول عدد عناصر المصوفة

    في هذا التمرين قمنا بإنشاء مصفوفة vector مع تحديد أنها تتألف من 5 عناصر لحظة إنشاءها.
    هذا يعني أن الكود vector.length سيعطينا الرقم 5 لأن عدد عناصر المصفوفة يساوي 5.


    لاحظ كم طريقة يمكنك إعتمادها لكتابة حلقة for للوصول إلى جميع عناصر المصفوفة vector.
    ركز على الشرط الذي سيجعل الحلقة تتوقف عن التنفيذ فقط.

    أمثلة

    الطريقة الأولى

    for (int i=0; i<vector.length; i++)
    			

    هذه الحلقة تبدأ من 0 إلى ما قبل عدد عناصر المصفوفة, أي من 0 إلى 4.
    هذه الطريقة تعتبر أفضل طريقة بينهم, لأنك بواسطتها قادر على المرور على جميع عناصر المصفوفة مهما كان حجمها بأصغر كود ممكن.


    الطريقة الثانية

    for (int i=0; i<=vector.length-1; i++)
    			

    هذه الحلقة تبدأ من 0 إلى ما قبل عدد عناصر المصفوفة, أي من 0 إلى 5-1, أي من 0 إلى 4.
    هذه الطريقة تشبه الطريقة الأولى لكن لا ننصح بها لأنه بإمكانك تقليل حجم الكود كما في الطريقة الأولى.


    الطريقة الثالثة

    for (int i=0; i<5; i++)
    			

    هذه الحلقة تبدأ من 0 إلى ما قبل الرقم 5, أي من 0 إلى 4.
    المشكلة الوحيد في هذه الطريقة أنه لا يمكنك إعتمادها إلا إذا كنت تعرف حجم المصفوفة.


    الطريقة الرابعة

    for (int i=0; i<=5-1; i++)
    			

    هذه الحلقة تبدأ من 0 إلى ما قبل الرقم 5-1, أي من 0 إلى 4.
    لا تستخدم هذه الطريقة لأنه لا يمكنك إعتمادها إلا إذا كنت تعرف حجم المصفوفة و لأنه بإمكانك تقليل حجم الكود كما في الطريقة الثالثة.


    خلاصة

    من الآن فصاعداً حاول دائماً استخدام الخاصية length بدل كتابة عدد ثابت عند كتابة شرط إيقاف الحلقة حتى يكون برنامجك مرن.
    فمثلاً لو عدت للبرنامج و أردت تغيير عدد عناصر المصفوفة من 5 إلى 10 و كنت قد إستخدمت الطريقة الثالثة في الوصول إلى عناصر المصفوفة, لكان عليك الدخول لجميع الحلقات و كتابة الرقم 10 بدل كل رقم 5 حتى يعمل البرنامج بشكل صحيح.
    بينما لو استخدمت الخاصية length كما فعلنا لما كنت ستضطر إلى تعديل كود أي حلقة.

    إعلان

    Eqla3Tech.com

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

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

    الدورات

    أدوات مساعدة

    الأقسام

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