شنبه ۲۹ دي ۱۴۰۳
Tut24 آموزش برنامه نویسی و مجله تخصصی فناوری ورود/عضویت

آموزش مبانی برنامه نویسی - توابع

تابع یک بلوک از کد قابل استفاده و سازماندهی شده است که برای انجام یک عملیات مرتبط و تکی استفاده می‌شود. توابع بهترین قابلیت تقسیم کار را به برنامه‌ی شما می‌دهند و درجه بالایی از باز استفاده‌پذیری کد را فراهم می‌کنند. شما قبلاً توابع مختلفی مانند printf() و main() را دیده‌اید. این‌ها توابع داخلی هستند که توسط خود زبان فراهم شده‌اند، اما ما همچنین می‌توانیم توابع خودمان را بنویسیم و این آموزش به شما یاد خواهد داد که چگونه توابع خود را در زبان برنامه‌نویسی C بنویسید و استفاده کنید.

چیز خوب در مورد توابع این است که با چندین نام مشهور هستند. زبان‌های برنامه‌نویسی مختلف آن‌ها را به نام‌های مختلفی می‌نامند؛ مثلاً، توابع، متد‌ها، زیربرنامه‌ها، روش‌ها، و غیره. اگر با هر چنین اصطلاحی روبه‌رو شدید، فقط درباره‌ی همان مفهومی که در این آموزش درباره‌ی آن صحبت خواهیم کرد، تصور کنید.

بیایید با یک برنامه شروع کنیم که در آن دو آرایه از اعداد تعریف کرده و سپس از هر آرایه، بزرگترین عدد را پیدا خواهیم کرد. در زیر مراحلی برای پیدا کردن بیشترین عدد از مجموعه‌ای از اعداد داده شده است −

۱. لیستی از اعداد L1, L2, L3....LN بگیرید
۲. فرض کنید L1 بزرگترین است و ماکس را برابر با L1 قرار دهید
۳. عدد بعدی Li را از لیست بگیرید و این کار را انجام دهید:
۴.    اگر ماکس از Li کوچکتر است
۵.       ماکس را برابر با Li قرار دهید
۶.    اگر Li آخرین عدد از لیست است، آنگاه
۷.       مقداری که در ماکس ذخیره شده است را چاپ کنید و خارج شوید
۸. در غیر این صورت این فرآیند را با شروع از مرحله ۳ تکرار کنید

بیایید برنامه بالا را به زبان برنامه نویسی 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، اما در نظر بگیرید که در موقعیتی که ما باید ۱۰ یا بیشترین مجموعه های مشابه را بررسی کنیم تا بزرگترین عدد ها را پیدا کنیم. در چنین موقعیتی، ما باید ۱۰ بار یا بیشتر روی کد تکرار کنیم و در نهایت، برنامه با کد تکراری خیلی بزرگ خواهد شد. برای رفع چنین موقعیتی، توابع خود را نوشته و سعی می کنیم کد منبعی را که مجدداً در برنامه نویسی خود استفاده خواهیم کرد را حفظ کنیم.

حالا، بیایید ببینیم چگونه تابع را در زبان برنامه نویسی سی تعریف کنیم و سپس در بخش های بعدی، توضیح خواهیم داد که چگونه از آن ها استفاده کنیم.

تعریف تابع

فرم عمومی تعریف تابع در زبان برنامه نویسی سی به شکل زیر است −

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

تعریف یک تابع در زبان برنامه نویسی سی شامل سرآیند تابع و بدنه تابع است. در ادامه تمام بخش‌های یک تابع آمده است −

  • نوع بازگشتی − یک تابع ممکن است یک مقدار بازگرداند. نوع_بازگشتی نوع داده مقداری است که تابع باز می گرداند. برخی توابع بدون بازگرداندن مقدار، عملیات مورد نظر را انجام می دهند. در این حالت، نوع_بازگشتی کلمه کلیدی 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 واضح هستید، آنگاه درک آن‌ها در جاوا نیز آسان است. در برنامه‌نویسی جاوا، آن‌ها را به عنوان متد نامگذاری می‌کنند، اما سایر مفاهیم بیشتر یا کمتر همانند هم هستند.

در ادامه، برنامه معادل آن در جاوا نوشته شده است. شما می‌توانید سعی کنید آن را اجرا کنید تا خروجی را مشاهده کنید −

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 می‌دانید، پایتون تفاوت زیادی ندارد. در زیر، نحوه تعریف یک تابع در پایتون نشان داده شده است −

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

استفاده از این نحو عملکرد در پایتون، مثال بالا به شکل زیر نوشته می‌شود:

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