Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

الخوارزمياتالتعامل مع الباراميترات - التمرين الثالث

المطلوب

أكتب دالة إسمها Average, يعطيها المستخدم علاماته المدرسية, فتحسب له معدله, ثم تطبع له نتيجته كالتالي:
- إذا كان معدله بين 10 و 20 ستطبع أنه ناجح.
- إذا كان معدله بين 0 و 9 ستطبع أنه راسب.
- إذا لم يكن معدله بين 0 و 20 ستطبع أن هناك خطأ في العلامات المدخلة.

في البرنامج, قم بتخزين أسماء المواد في مصفوفة إسمها Methods.
ثم أطلب من المستخدم إدخال علامة بين 0 و 20 لكل مادة و خزّن العلامات التي سيدخلها المستخدم في مصفوفة إسمها Notes.
في الأخير قم باستدعاء الدالة Average() لطباعة معدل و نتيجة المستخدم.


إرشادات

لنفترض أن المستخدم عنده 5 مواد (Algorithm, Java, Android, Linux, Networks) و سيدخل علامة لكل مادة منهم كالتالي.

تذكر: أسماء المواد يجب أن يتم وضعها في المصفوفة Methods و علامة كل مادة يجب أن يتم تخزينها في المصفوفة Notes.


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

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

الخوارزمية

كود الجافا

import java.util.Scanner;
 
public class Parameters {
 
/* ------------------------------- هنا قمنا بتعريف الدالة ------------------------------ */
 
    public static void Average (double[] a)
    {
        double S = 0;
 
        for(int i=0; i<a.length; i++)
        {
            S = S + a[i];
        }
 
        S = S/a.length;
 
        System.out.print("Your average is: " +S+ "\n");
 
        if( S >= 10 && S <= 20 )
        {
            System.out.print("Congratulations you have succeeded \n");
        }
        else if( S >= 0 && S < 10 )
        {
            System.out.print("Sorry you failed");
        }
        else
        {
            System.out.print("Impossible result! Please enter notes between 0 and 20 \n");
        }
    }
 
/* --------------------------- من هنا يبدأ البرنامج بالتنفيذ --------------------------- */
 
    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
 
        double[] Notes = new double[5];
        String[] Methods = {"Algorithm", "Java", "Android", "Linux", "Networks"};
 
        for( int i=0; i<Notes.length; i++ )
        {
            do
            {
                System.out.print(Methods[i] + ": ");
                Notes[i] = input.nextDouble();
            }
            while( Notes[i] < 0 || Notes[i] > 20 );
        }
 
        System.out.print("------------------------- \n");
        Average(Notes);
    }
 
}

شرح الكود


    public static void Average (double[] a)
    {
        double S = 0;
    
        for(int i=0; i<a.length; i++)
        {
            S = S + a[i];
        }
    
        S = S/a.length;
    
        System.out.print("Your average is: " +S+ "\n");
    
        if( S >= 10 && S  <= 20 )
        {
            System.out.print("Congratulations you have succeeded \n");
        }
        else if( S >= 0 && S < 10 )
        {
            System.out.print("Sorry you failed");
        }
        else
        {
            System.out.print("Impossible result! Please enter notes between 0 and 20 \n");
        }
    }
  • هنا أنشأنا الدالة Average() و حددنا أن نوعها void لأننا لا نريدها أن ترجع قيمة, و وضعنا لها باراميتر عبارة عن مصفوفة نوعها double.
  • إذاً, عند إستدعاء هذه الدالة يجب أن نمرر لها مصفوفة ذات بعد واحد نوعها double.
  • في السطر 10 قمنا بتجهيز المتغير S و أعطينها القيمة 0 لأننا سنستخدمه لتخزين المعدل النهائي لقيم المصفوفة a.
  • من السطر 12 إلى السطر 15 أنشأنا الحلقة for للوصول إلى جميع قيم عناصر المصفوفة a.
    في كل دورة من دورات هذه الحلقة سيتم إضافة قيمة عنصر من عناصر المصفوفة a على قيمة المتغير S.
  • في السطر 17 قسمنا قيمة المتغير S على عدد عناصر المصفوفة a. إذاً, هنا أصبحت قيمة المتغير S تمثل معدل القيم الموجودة في المصفوفة a.
  • في السطر 19 سيتم عرض المعدل المخزن في المتغير S.
  • من السطر 21 إلى السطر 32 سيتم فحص المعدل المخزن في المتغير S كالتالي:
    • إذا كان المعدل بين 10 و 20 ( مثل 13.5) سيتم طباعة الجملة congartulation you did it !!!
    • إذا كان المعدل أكبر من 0 و أصغر من 10 (أي حتى و لو كان 9.9) سيتم طباعة الجملة sorry you failed
    • إذا كان المعدل ليس بين 0 و 20 ( =مثل 5- أو 38) سيتم طباعة الجملة you didn't enter your note correctly, please try again
      لأنه من المستحيل أن يكون معدله عبارة عن عدد سلبي أو أكبر من أعلى معدل ممكن (أي أكبر من 20).
      ملاحظة: في المنطق هذا الخطأ لا يمكن أن يحدث في جميع الأحوال عند إستدعاء هذه الدالة من الدالة main() لأننا في الدالة main() تأكدنا من كل علامة قام بإدخالها المستخدم قبل إستدعاء هذه الدالة.


    public static void main(String[] args)
    {
        Scanner input = new Scanner(System.in);
    
        double[] Notes = new double[5];
        String[] Methods = {"Algorithm", "Java", "Android", "Linux", "Networks"};
    
        for( int i=0; i<Notes.length; i++ )
        {
            do
            {
                System.out.print(Methods[i] + ": ");
                Notes[i] = input.nextDouble();
            }
            while( Notes[i] < 0 || Notes[i] > 20 );
        }
    
        System.out.print("------------------------- \n");
        Average(Notes);
    }
  • في السطر 43 قمنا بتجهيز المصفوفة Notes لتخزين العلامات التي سيدخلها المستخدم و حددنا أنها تتألف من 5 عناصر لأننا سندخل فيها فقط 5 قيم, و حددنا أن نوعها double لأننا نريد الأخذ بعين الإعتبار الأرقام الموجود بعد الفاصلة.
  • في السطر 44 قمنا بتجهيز المصفوفة Methods لتخزين أسماء المواد التي سيطلب من المستخدم إدخال علامتها.
  • من السطر 46 إلى السطر 54 قمنا بإنشاء حلقتين متداخلتين يعملان كالتالي:
    • بما أن أسماء المواد موجودة في المصفوفة Methods و المصفوفة Notes مجهزة لتخزين علامات المستخدم, أنشأنا الحلقة i للمرور على قيم المصفوفتين بشكل متوازي, بحيث في كل دورة سيطلب من المستخدم إدخال علامة لمادة موجودة في عنصر من عناصر المصفوفة Methods و القيمة التي يدخلها المستخدم ستخزن في نفس index العنصر الموجود في المصفوفة Methods.
    • إذاً بواسطة الحلقة for سيتم المرور على عناصر المصفوفتين Methods و Notes بشكل متوازي.
    • و بواسطة الحلقة do while سيستمر الكمبيوتر في الطلب من المستخدم بإدخال علامة مادة معينة من المواد طالما أن العلامة التي يدخلها ليست بين 0 و 20.
  • في السطر 57 قمنا باستدعاء الدالة Average() و مررنا لها المصفوفة التي تحتوي على العلامات التي أدخلها المستخدم و التي تم تخزينها في المصفوفة Notes حتى يتم طباعة معدل المستخدم.

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


دورة تعلم البرمجة للمبتدئين >