إعلان
دورة تطوير التطبيقات باستخدام لغة 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. أكتب برنامج يعرّف مصفوفة إسمها matrix تتألف من 3 أسطر و 3 أعمدة.
    2. ثم يطلب من المستخدم إدخال قيم لها.
    3. ثم يعرض له ناتج جمع قيم عناصر كل عامود فيها.

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

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

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

    الخوارزمية

    كود الجافا

    import java.util.Scanner;
     
    public class Matrix {
     
        public static void main (String[] args) {
     
            Scanner input = new Scanner(System.in);
     
            int[][] matrix = new int[3][3];
            int S;
     
            for (int i=0; i<3; i++)
            {
                for (int j=0; j<3; j++)
                {
                    System.out.print("Enter matrix["+i+"]["+j+"]: ");
                    matrix[i][j] = input.nextInt();
                }
                System.out.print("\n");
            }
     
            for (int i=0; i<3; i++)
            {
                S = 0;
     
                for (int j=0; j<3; j++)
                {
                    S = S + matrix[j][i];
                }
     
                System.out.print("the sum of elements in column ["+i+"] is : " +S+ "\n");
            }
     
            System.out.print("\n");
     
        }
    
    }
    		

    شرح الكود


    		int[][] matrix = new int[3][3];
    		int S;
    			
    • هنا قمنا بتجهيز المصفوفة matrix و حددنا أنها تتألف من 3 أسطر و 3 أعمدة.
    • و المتغير S الذي سنستخدمه لاحقاً لتخزين ناتج جمع القيم الموجودة في كل عامود.
      ملاحظة: لم نضع القيمة 0 كقيمة أولية للمتغير S الآن لأننا قبل حساب ناتج قيمة العناصر الموجودة في كل عامود سنضع فيه القيمة 0 كقيمة أولية.


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


    		for (int i=0; i<3; i++)
    		{
    			S = 0;
    		
    			for (int j=0; j<3; j++)
    			{
    				S = S + matrix[j][i];
    			}
    		
    			System.out.print("the sum of elements in column ["+i+"] is : " +S+ "\n");
    		}
    			
    • هنا قمنا بإنشاء الحلقتين i و j للوصول إلى جميع قيم عناصر المصفوفة.
      ملاحظة: الإختلاف الوحيد بين هذا التمرين و التمرين الثالث, هو أننا كتبنا matrix[j][i] بدلاً من matrix[i][j] مما جعلنا نمر على عناصر المصفوفة عاموداً عاموداً.
    • إذاً هنا سيتم الإنتقال من من سطر إلى آخر بواسطة الحلقة j و من عامود إلى آخر بواسطة الحلقة i.
    • في كل دورة من دورات الحلقة i سيتم حساب ناتج جمع القيم الموجودة في نفس العامود, ثم طباعة الناتج كالتالي:
      • سيتم تصفير قيمة المتغير S قبل البدء بحساب ناتج جمع قيم العناصر الموجودة في نفس العامود حتى لا يتم إضافة ناتج جمع القيم الموجودة في العامود القديم على ناتج القيم الموجودة في العامود الحالي في كل مرة يتم فيها الإنتقال إلى عامود جديد.
      • بعدها سيتم إنشاء الحلقة j للمرور على جميع العناصر الموجودة في نفس العامود.
      • في كل دورة من دورات الحلقة j سيتم إضافة قيمة عنصر من العناصر الموجودة في نفس العامود على قيمة المتغير S.
      • عند توقف الحلقة j سيكون ناتج جمع جميع العناصر الموجودة في نفس العامود موجود في المتغير S.
      • لذلك سيتم عرض قيمة المتغير S كناتج جمع جميع العناصر الموجودة في نفس العامود.

    • لاحظ كيف سيتم إضافة قيم العناصر الموجودة في نفس العامود على قيمة المتغير S :
      • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 0 سيتم إضافة قيمة العنصر matrix[0][0] على قيمة المتغير S.
      • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 1 سيتم إضافة قيمة العنصر matrix[1][0] على قيمة المتغير S.
      • عندما تكون قيمة العداد i تساوي 0 و قيمة العداد j تساوي 2 سيتم إضافة قيمة العنصر matrix[2][0] على قيمة المتغير S.
        إلى هنا يكون قد تم حساب ناتج جمع قيم العناصر الموجودة في العامود الأول.
      • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 0 سيتم إضافة قيمة العنصر matrix[0][1] على قيمة المتغير S.
      • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 1 سيتم إضافة قيمة العنصر matrix[1][1] على قيمة المتغير S.
      • عندما تكون قيمة العداد i تساوي 1 و قيمة العداد j تساوي 2 سيتم إضافة قيمة العنصر matrix[2][1] على قيمة المتغير S.
        إلى هنا يكون قد تم حساب ناتج جمع قيم العناصر الموجودة في العامود الثاني.
      • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 0 سيتم إضافة قيمة العنصر matrix[0][2] على قيمة المتغير S.
      • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 1 سيتم إضافة قيمة العنصر matrix[1][2] على قيمة المتغير S.
      • عندما تكون قيمة العداد i تساوي 2 و قيمة العداد j تساوي 2 سيتم إضافة قيمة العنصر matrix[2][2] على قيمة المتغير S.
        إلى هنا يكون قد تم حساب ناتج جمع قيم العناصر الموجودة في العامود الثالث.

    الدورات

    أدوات مساعدة

    الأقسام

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