تمرين - فهم نطاق الأسلوب

مكتمل

for تمثل الحلقات والعبارات if-else والأساليب جميعها أنواعا مختلفة من كتل التعليمات البرمجية. كل كتلة تعليمة برمجية لها "النطاق" الخاص بها. "النطاق" هو منطقة البرنامج حيث يمكن الوصول إلى بيانات معينة. لا يمكن الوصول إلى المتغيرات المعلن عنها داخل أسلوب أو أي كتلة تعليمات برمجية إلا داخل تلك المنطقة. مع تزايد تعقيد البرامج، يساعد هذا النمط المبرمجين على استخدام المتغيرات المسماة بوضوح باستمرار والحفاظ على التعليمات البرمجية سهلة القراءة.

في هذا التمرين، ستتعرف على المزيد حول نطاق الأسلوب من خلال العمل مع أنواع مختلفة من الأساليب والمتغيرات.

اختبار نطاق المتغير

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

  1. في محرر Visual Studio Code، احذف أي تعليمة برمجية موجودة من التدريبات السابقة.

  2. أدخل التعليمات البرمجية التالية في محرر التعليمات البرمجية Visual Studio:

    string[] students = {"Jenna", "Ayesha", "Carlos", "Viktor"};
    
    DisplayStudents(students);
    DisplayStudents(new string[] {"Robert","Vanya"});
    
    void DisplayStudents(string[] students) 
    {
        foreach (string student in students) 
        {
            Console.Write($"{student}, ");
        }
        Console.WriteLine();
    }
    

    في هذه التعليمة البرمجية، يمكنك إنشاء صفيف عمومي students ، وأسلوب DisplayStudents يقبل معلمة بنفس الاسم.

  3. احفظ التعليمات البرمجية وشغلها لمراقبة الإخراج التالي:

    Jenna, Ayesha, Carlos, Viktor, 
    Robert, Vanya, 
    

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

  4. حذف التعليمات البرمجية السابقة.

  5. أدخل التعليمات البرمجية التالية في المحرر:

    PrintCircleArea(12);
    
    void PrintCircleArea(int radius)
    {
        double pi = 3.14159;
        double area = pi * (radius * radius);
        Console.WriteLine($"Area = {area}");
    }
    

    تحسب هذه التعليمة البرمجية منطقة الدائرة وتعرضها.

  6. حاول الرجوع إلى المتغيرات داخل PrintCircleArea الأسلوب عن طريق تحديث التعليمات البرمجية الخاصة بك كما يلي:

    PrintCircleArea(12);
    double circumference = 2 * pi * radius;
    

    تظهر رسائل الخطأ لإعلامك بأن الأسماء pi وغير radius موجودة في النطاق الحالي. هذه المتغيرات موجودة فقط ضمن PrintCircleArea نطاق الأسلوب.

  7. احذف التعليمات البرمجية غير الصحيحة وأضف التعليمات البرمجية التالية:

    void PrintCircleCircumference(int radius)
    {
        double pi = 3.14159;
        double circumference = 2 * pi * radius;
        Console.WriteLine($"Circumference = {circumference}");
    }
    

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

  8. تحديث التعليمات البرمجية الخاصة بك إلى ما يلي:

    double pi = 3.14159;
    
    void PrintCircleArea(int radius)
    {
        double area = pi * (radius * radius);
        Console.WriteLine($"Area = {area}");
    }
    
    void PrintCircleCircumference(int radius)
    {
        double circumference = 2 * pi * radius;
        Console.WriteLine($"Circumference = {circumference}");
    }
    

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

  9. أضف أسلوبا جديدا إلى التعليمات البرمجية الخاصة بك كما يلي:

    double pi = 3.14159;
    PrintCircleInfo(12);
    PrintCircleInfo(24);
    
    void PrintCircleInfo(int radius) 
    {
        Console.WriteLine($"Circle with radius {radius}");
        PrintCircleArea(radius);
        PrintCircleCircumference(radius);
    }
    

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

  10. احفظ التعليمات البرمجية وشغلها لمراقبة الإخراج التالي:

    Circle with radius 12
    Area = 452.38896
    Circumference = 75.39815999999999
    Circle with radius 24
    Area = 1809.55584
    Circumference = 150.79631999999998
    

خلاصة

إليك ما تعلمته حول نطاق الأسلوب حتى الآن:

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