برمجة الكمبيوتر - الوظائف او الدوال functions

برمجة الكمبيوتر - الوظائف او الدوال  functions 




 عبارة عن كتلة من التعليمات البرمجية المنظمة القابلة لإعادة الاستخدام والتي يتم استخدامها لتنفيذ إجراء واحد ذي صلة. توفر الوظائف نمطية أفضل لتطبيقك ودرجة عالية من إعادة استخدام الكود. لقد رأيت بالفعل وظائف مختلفة مثل printf () و main () . تسمى هذه الوظائف المضمنة التي توفرها اللغة نفسها ، ولكن يمكننا كتابة وظائفنا الخاصة أيضًا وسيعلمك هذا البرنامج التعليمي كيفية كتابة هذه الوظائف واستخدامها في لغة البرمجة C.

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

لنبدأ ببرنامج حيث سنحدد صفيفتين من الأرقام ، ثم من كل مصفوفة ، سنجد أكبر رقم. فيما يلي الخطوات لمعرفة الحد الأقصى لعدد من مجموعة معينة من الأرقام -

1. Get a list of numbers L1, L2, L3....LN
2. Assume L1 is the largest, Set max = L1
3. Take next number Li from the list and do the following
4.    If max is less than Li
5.       Set max = Li
6.    If Li is last number from the list then
7.       Print value stored in max and come out
8. Else prepeat same process starting from step 3

دعنا نترجم البرنامج أعلاه بلغة البرمجة C -

#include <stdio.h>

int main() {
   int set1[5] = {10, 20, 30, 40, 50};
   int set2[5] = {101, 201, 301, 401, 501};
   int i, max;
   
   /* Process first set of numbers available in set1[] */
   max = set1[0];
   i = 1;    
   while( i < 5 ) {
      if( max <  set1[i] ) {
         max = set1[i];
      }
      i = i + 1;
   }
   
   printf("Max in first set = %d\n", max );
    
   /* Now process second set of numbers available in set2[] */
   max = set2[0];
   i = 1;    
   while( i < 5 ) {
      if( max <  set2[i] ) {
         max = set2[i];
      }
      i = i + 1;
   }
   printf("Max in second set = %d\n", max );
}

عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنتج النتيجة التالية -

Max in first set = 50
Max in second set = 501

إذا كنت واضحًا بشأن المثال أعلاه ، فسيكون من السهل فهم سبب حاجتنا إلى وظيفة. في المثال أعلاه ، هناك مجموعتان فقط من الأرقام ، المجموعة 1 والمجموعة 2 ، ولكن ضع في اعتبارك موقفًا يكون لدينا فيه 10 مجموعات متشابهة من الأرقام أو أكثر لمعرفة الحد الأقصى من الأرقام من كل مجموعة. في مثل هذه الحالة ، سيتعين علينا التكرار والمعالجة 10 مرات أو أكثر ، وفي النهاية ، سيصبح البرنامج كبيرًا جدًا مع تكرار التعليمات البرمجية. للتعامل مع مثل هذا الموقف ، نكتب وظائفنا حيث نحاول الاحتفاظ بالشفرة المصدرية التي سيتم استخدامها مرارًا وتكرارًا في برامجنا.

الآن ، دعنا نرى كيفية تحديد وظيفة في لغة البرمجة C ثم في الأقسام التالية ، سنشرح كيفية استخدامها.

تحديد الوظيفة

الشكل العام لتعريف الوظيفة في لغة البرمجة C هو كما يلي -

return_type function_name( parameter list ) {
   body of the function
   
   return [expression];
}

وهناك تعريف وظيفة في البرمجة C يتكون من رأس وظيفة و ظيفة الجسم . فيما يلي جميع أجزاء الوظيفة -

  • نوع الإرجاع - قد ترجع الدالة قيمة. نوع return هو نوع البيانات للقيمة التي تُرجعها الدالة. تقوم بعض الوظائف بتنفيذ العمليات المطلوبة بدون إرجاع قيمة. في هذه الحالة ، فإن return_type هي الكلمة الأساسية void .

  • اسم الوظيفة - هذا هو الاسم الفعلي للوظيفة. يشكل اسم الوظيفة وقائمة المعلمات معًا توقيع الوظيفة.

  • قائمة المعلمات - تشبه المعلمة عنصرًا نائبًا. عندما يتم استدعاء دالة ، تقوم بتمرير قيمة كمعامل. يشار إلى هذه القيمة على أنها المعلمة الفعلية أو الوسيطة. تشير قائمة المعلمات إلى نوع معلمات الوظيفة وترتيبها ورقمها. المعلمات اختيارية ؛ بمعنى ، قد لا تحتوي الوظيفة على معلمات.

  • جسم الوظيفة - يحتوي جسم الوظيفة على مجموعة من العبارات التي تحدد وظيفة الوظيفة.

استدعاء وظيفة

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

الآن ، دعنا نكتب المثال أعلاه بمساعدة دالة -

#include <stdio.h>

int getMax( int set[] ) {
   int i, max;
   
   max = set[0];
   i = 1;    
   while( i < 5 ) {
      if( max <  set[i] ) {
         max = set[i];
      }
      i = i + 1;
   }
   return max;
}
main() {
   int set1[5] = {10, 20, 30, 40, 50};
   int set2[5] = {101, 201, 301, 401, 501};
   int max;

   /* Process first set of numbers available in set1[] */
   max = getMax(set1);
   printf("Max in first set = %d\n", max );
    
   /* Now process second set of numbers available in set2[] */
   max = getMax(set2);
   printf("Max in second set = %d\n", max );
}

عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنتج النتيجة التالية -

Max in first set = 50
Max in second set = 501

وظائف في جافا

إذا كنت واضحًا بشأن الوظائف في برمجة C ، فمن السهل فهمها في Java أيضًا. أسماء برمجة جافا بأنها الأساليب لا تزال، ولكن بقية المفاهيم أكثر أو أقل نفسه.

فيما يلي البرنامج المكافئ المكتوب بلغة جافا. يمكنك محاولة تنفيذه لرؤية الإخراج -

public class DemoJava {
   public static void main(String []args) {
      int[] set1 = {10, 20, 30, 40, 50};
      int[] set2 = {101, 201, 301, 401, 501};
      int max;

      /* Process first set of numbers available in set1[] */
      max = getMax(set1);
      System.out.format("Max in first set = %d\n", max );

      /* Now process second set of numbers available in set2[] */
      max = getMax(set2);
      System.out.format("Max in second set = %d\n", max );
   }
   public static int getMax( int set[] ) {
      int i, max;
      max = set[0];
      i = 1;    
      
      while( i < 5 ) {
         if( max <  set[i] ) {
            max = set[i];
         }
         i = i + 1;
      }
      return max;
   }
}

عند تنفيذ البرنامج أعلاه ، فإنه ينتج النتيجة التالية -

Max in first set = 50
Max in second set = 501

الوظائف في بايثون

مرة أخرى ، إذا كنت تعرف مفهوم الوظائف في برمجة C و Java ، فإن Python لا تختلف كثيرًا. فيما يلي الصيغة الأساسية لتعريف دالة في Python -

def function_name( parameter list ):
   body of the function
   
   return [expression]

باستخدام صيغة الوظيفة هذه في Python ، يمكن كتابة المثال أعلاه على النحو التالي -

def getMax( set ):
   max = set[0]
   i = 1   
   
   while( i < 5 ):
      if( max <  set[i] ):
         max = set[i]
      
      i = i + 1
   return max

set1 = [10, 20, 30, 40, 50]
set2 = [101, 201, 301, 401, 501]

# Process first set of numbers available in set1[]
max = getMax(set1)
print "Max in first set = ", max
    
# Now process second set of numbers available in set2[]
max = getMax(set2)
print "Max in second set = ", max

عندما يتم تنفيذ الكود أعلاه ، فإنه ينتج النتيجة التالية -

Max in first set =  50
Max in second set =  501