الوظيفة عبارة عن روتين فرعي يعرض نتيجة (رقم ، سلسلة أحرف ، إلخ.) strong>
تخيل أنك طلبت منتجًا من متجر على الإنترنت. من وجهة نظر البرمجة ، قمت باستدعاء روتين فرعي معين ، وعلى عكس الإجراء ، يجب أن يعرض هذا الروتين نتيجة - تسليم المنتج الذي طلبته. تسمى هذه الإجراءات الفرعية وظائف strong>.
يتم تنسيق الوظيفة بنفس طريقة تنسيق الإجراء إلى حد كبير:
<قبل>
دالة & lt ؛ اسم الوظيفة & GT ؛ (قائمة المعلمات مثل العلامة & lt ؛ اسم المتغير & GT ؛: & lt ؛ نوعه & GT ؛ مفصولة بفواصل منقوطة): & lt ؛ نوع قيمة الإرجاع & GT ؛؛
يبدأ
العلامة & lt ؛ وظيفة الجسم & GT.
النهاية ؛ pre>
الفرق بين الوظيفة والإجراء هو أن الدالة يجب أن ترجع قيمة. للقيام بذلك ، تحتاج إلى استخدام اسم الوظيفة كمتغير أو نتيجة المتغير الخاص:
<قبل>
دالة مجموع (أ ، ب: عدد صحيح): عدد صحيح ؛
يبدأ
المجموع: = أ + ب ؛
النهاية ؛ pre>
أو
<قبل>
دالة مجموع (أ ، ب: عدد صحيح): عدد صحيح ؛
يبدأ
النتيجة: = أ + ب ؛
النهاية ؛ pre>
ستبدو الدالة التي تُرجع الوسط الحسابي لعددين صحيحين كما يلي:
<قبل>
متوسط الوظيفة (أ ، ب: عدد صحيح): حقيقي ؛
يبدأ
نبسب ؛ المتوسط: = (أ + ب) / 2 ؛
نهاية؛
يبقى أن نفهم كيفية استدعاء هذه الوظيفة في البرنامج الرئيسي:
لا يجب استدعاء وظيفة بنفس الطريقة التي تستدعي بها الإجراء: strong>
<قبل>
متوسط (10 ، 5) ؛
ستفقد القيمة التي تم إرجاعها بواسطة الوظيفة. يبدو الأمر كما لو أن البضائع من المتجر عبر الإنترنت لم يتم تسليمها لأي شخص ، ولكن تم التخلص منها. من غير المحتمل أن ينال إعجاب العميل.
من الأصح حفظ النتيجة في متغير strong> (أو طباعتها على الشاشة strong>):
<قبل>
أ: = متوسط (10 ، 5) ؛
أو
<قبل>
writeln (متوسط (10 ، 5)) ؛