(Python) الروتينات الفرعية: الإجراءات والوظائف - 1


الإجراءات الفرعية
الإجراء الفرعي هو جزء منفصل من البرنامج له اسم ويقوم بحل المهمة المنفصلة الخاصة به. يقع الروتين الفرعي في بداية البرنامج الرئيسي ويمكن إطلاقه (يسمى) من البرنامج الرئيسي عن طريق تحديد الاسم.
يتيح لك استخدام الإجراءات الفرعية تجنب تكرار الكود ، إذا كنت بحاجة إلى كتابة نفس الرمز في أماكن مختلفة في البرنامج. & nbsp ؛
تتكون المكتبات التي يتم استيرادها إلى أحد البرامج (على سبيل المثال ، مكتبة الرياضيات الرياضية) من إجراءات فرعية قام شخص ما بتجميعها بالفعل. لا يحتاج المبرمجون إلى التفكير في الخوارزميات التي ينفذونها ، لكنهم ببساطة يطبقونها ، ويفكرون فقط في ما يفعلونه بالضبط. هذا هو توفير كبير للوقت. ليست هناك حاجة لكتابة خوارزمية سبق أن كتبها شخص آخر.

يجب أن يقوم كل روتين فرعي بمهمة واحدة فقط ، & nbsp؛ إما حساب شيء ما ، أو إخراج بعض البيانات ، أو القيام بشيء آخر. & nbsp؛

هناك نوعان من الإجراءات الفرعية - الإجراءات و الوظائف.

تؤدي الإجراءات الفرعية بعض الإجراءات ، مثل عرض نتيجة على الشاشة في نموذج معين (مثال بسيط ، عبارة print () هي إجراء فرعي قياسي يطبع البيانات على الشاشة).

الإجراءات الفرعية للوظيفة تُرجع نتيجة (رقم ، سلسلة أحرف ، إلخ.) يمكننا استخدامها في البرنامج الرئيسي.

دعنا نحاول كتابة إجراء بسيط:
لنفترض أننا بحاجة إلى عرض السلسلة "خطأ" على الشاشة في كل مرة يمكن أن يحدث خطأ في الكود بسبب خطأ من المستخدم. على سبيل المثال ، عندما يقوم بإدخال بيانات غير صحيحة.
يمكن القيام بذلك عن طريق كتابة البيان طباعة (& quot؛ خطأ & quot؛) والآن تخيل أن مثل هذا الخط يحتاج إلى إدخاله في العديد من الأماكن في البرنامج. بالطبع ، يمكنك كتابتها في كل مكان. لكن هذا الحل له عيبان.
1) سيتم تخزين هذه السلسلة في الذاكرة عدة مرات.
2) إذا أردنا تغيير الناتج عند الخطأ ، فسيتعين علينا تغيير هذا الخط في جميع أنحاء البرنامج ، وهو أمر غير مريح إلى حد ما

لمثل هذه الحالات ، هناك حاجة إلى إجراءات.
قد يبدو البرنامج الذي يحتوي على إجراء كما يلي:
نبسب ؛ def printError (): # وصف الإجراء طباعة (& quot؛ خطأ & quot؛) ... printError () # بدء إجراء التنفيذ. # فقط حدد اسم الإجراء الذي نريد تنفيذه ... خطأ طباعة ()
بحاجة إلى التذكر!
  1. يبدأ الإجراء بالكلمة def (من الإنجليزية - تعريف - للتعريف). & nbsp؛ بعد اسم الإجراء ، تتم كتابة الأقواس الفارغة ونقطتين . يمكن تحديد المعلمات داخل الأقواس (سنتحدث عن هذا لاحقًا).
  2. يتم وضع مسافة بادئة لجميع العبارات التي يتم تنفيذها في إجراء. & nbsp؛
  3. لتنفيذ إجراء ، في البرنامج الرئيسي تحتاج إلى تسميته بالاسم وتذكر كتابة الأقواس !
  4. يمكنك استدعاء إجراء في برنامج ما عدد المرات التي تريدها.

المعلمات والحجج الآن دعنا نتخيل أننا بحاجة إلى عرض رسائل مختلفة ردًا على خطأ المستخدم ، اعتمادًا على نوع الخطأ الذي ارتكبه.
في هذه الحالة ، يمكنك كتابة الإجراء الخاص بك لكل خطأ: & nbsp؛ <قبل> def printErrorZero (): طباعة (& quot؛ خطأ. القسمة على صفر! & quot؛) <قبل> def printErrorInput (): طباعة (& quot؛ خطأ في الإدخال! & quot؛)
ماذا لو كان هناك العديد من الأخطاء المحتملة؟ هذا الحل لن يناسبنا!
نحتاج إلى معرفة كيفية التحكم في الإجراء من خلال إخباره برسالة الخطأ التي سيتم عرضها.
للقيام بذلك ، نحتاج إلى معلمات نكتبها بين قوسين بعد اسم الإجراء <قبل> خطأ طباعة خطأ (أخطاء): طباعة (& quot؛ s & quot؛)
في هذا الإجراء ، s هي معلمة - متغير خاص يسمح لك بالتحكم في الإجراء.
نبسب ؛
المعلمة هي متغير يحدد كيفية عمل الإجراء الفرعي. أسماء المعلمات مفصولة بفواصل في رأس الروتين الفرعي.

الآن ، عند استدعاء الإجراء ، تحتاج إلى الإشارة بين قوسين إلى القيمة الفعلية التي سيتم تعيينها للمعامل (المتغير s ) داخل الإجراء الخاص بنا <قبل> printError (& quot؛ خطأ! القسمة على الصفر! & quot؛)
هذه القيمة تسمى وسيطة.
نبسب ؛
الوسيطة هي قيمة المعلمة التي يتم تمريرها إلى الروتين الفرعي عندما يتم استدعاؤها.
لا يمكن أن تكون الوسيطة قيمة ثابتة فحسب ، بل يمكن أن تكون أيضًا متغيرًا أو تعبيرًا حسابيًا.

المتغيرات المحلية والعالمية
المتغيرات التي يتم تقديمها في البرنامج الرئيسي تسمى global ( أو Shared).

يمكنك الوصول إلى المتغيرات العامة من أي روتين فرعي. & nbsp؛

غالبًا ما يكون من الضروري إدخال متغيرات إضافية سيتم استخدامها فقط في الروتين الفرعي. تسمى هذه المتغيرات محلي (أو محلي). يمكنك العمل معهم فقط داخل الروتين الفرعي الذي تم إنشاؤه فيه. بقية الأعمال الروتينية لا تعرف شيئًا عنها.

وبالتالي ، من الممكن قصر نطاق (نطاق) المتغير فقط على الروتين الفرعي حيث يكون مطلوبًا بالفعل. في البرمجة ، تسمى هذه التقنية encapsulation & nbsp؛ - إخفاء المتغير من التغيير من الخارج.

حلل ثلاثة برامج: <الجسم>
الوصف البرنامج
1) في هذا البرنامج ، المتغير i محلي. إذا لم يكن هناك متغير i في البرنامج الرئيسي ، فسنحصل على رسالة خطأ. وإذا كان هناك مثل هذا المتغير (فهو متغير عام) ، فسيتم عرض قيمته على الشاشة. <قبل> اختبار def (): print (i)
2) هنا ، حتى إذا كان هناك متغير عام i ، سيتم إنشاء متغير محلي جديد i بقيمة 2 ، وسيظهر 2 على الشاشة. <قبل> اختبار def (): نبسب ؛ أنا = 2 print (i)
3) في هذا البرنامج ، يوجد متغير عالمي i بقيمة 15. يمكن تغيير قيمته داخل الروتين الفرعي ، لذلك من الضروري التصريح صراحة أنه عالمي ( استخدم الأمر global ).
سيعمل الإجراء مع المتغير العام i وسيتم تعيين قيمة جديدة له 2. يتم عرض القيمة 2.
<قبل> اختبار def (): نبسب ؛ عالمي i أنا = 2 # البرنامج الرئيسي أنا = 15 طباعة (ط)


على & nbsp؛