انواع تابع در برنامه نویسی C

رتبه: 0 ار 0 رای sssss
انواع تابع سی
نویسنده: میلاد حیدری زمان مطالعه 1 دقیقه
Banner Image

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

در اینجا این ۴ برنامه بررسی می کنند که آیا عدد ورودی توسط کاربر عدد اول است یا خیر.

خروجی همه این برنامه ها یکسان است و در هر مثال یک تابع تعریف شده است. با این حال رویکرد هر مثال متفاوت است.

نکته: در این برنامه ها فرض شده عدد ورودی توسط کاربر یک عدد مثبت است چراکه عدد اول یک عدد طبیعی بزرگتر از یک است که به غیر از خودش و عدد ۱ مقسوم علیه ای دیگری نداشته باشد. البته شرط عدم برابری با ۱ در برنامه ها بررسی شده است.

مثال ۱: بدون آرگومان ارسالی و بدون مقدار بازگشتی

#include <stdio.h>

void checkPrimeNumber();

int main()

{

checkPrimeNumber(); // بدون آرگومان ارسالی

return 0;

}

// نشان می دهد که این تابع هیچ مقدار بازگشتی ندارد void

void checkPrimeNumber()

{

int n, i, flag = 0;

printf(“Enter a positive integer: “);

scanf(“%d”,&n);

if(n == 1){

flag = 1;

}

else{

for(i=2; i <= n/2; ++i)

{

if(n%i == 0)

{

flag = 1;

}

}

}

if (flag == 1)

printf(“%d is not a prime number.”, n);

else

printf(“%d is a prime number.”, n);

}

در تابع ()checkPrimeNumber ورودی از کاربر گرفته می شود سپس بررسی می کند آیا عدد اول است یا نه، در نهایت یک پیام روی صفحه نمایش می دهد.

پرانتزهای خالی در فراخوانی تابع ;()checkPrimeNumber در تابع ()main نشان می دهد که هیچ آرگومانی به تابع ارسال نمیشود.

نوع بازگشتی از تابع نیز void است. یعنی این تابع هیچ مقداری را بر نمی گرداند.

مثال ۲: بدون آرگومان ارسالی اما با مقدار بازگشتی

#include <stdio.h>

int getInteger();

int main()

{

int n, i, flag = 0;

// بدون آرگومان ارسالی

n = getInteger();

if(n == 1){

flag = 1;

}

else{

for(i=2; i<=n/2; ++i)

{

if(n%i==0){

flag = 1;

break;

}

}

}

if (flag == 1)

printf(“%d is not a prime number.”, n);

else

printf(“%d is a prime number.”, n);

return 0;

}

// عدد صحیح ورودی را برمی گرداند

int getInteger()

{

int n;

printf(“Enter a positive integer: “);

scanf(“%d”,&n);

return n;

}

پرانتزهای خالی در فراخوانی تابع

n = getInteger();

نشان می دهد که هیچ آرگومانی به تابع ارسال نمی شود. مقدار بازگشتی از تابع در متغیر n ذخیره می شود.

در اینجا تابع ()getInteger یک عدد از کاربر می گیرد و همان را برمی گرداند. در تابع ()main بررسی می شود که آیا عدد اول است یا نه.

مثال ۳: با آرگومان ارسالی اما بدون مقدار بازگشتی

#include <stdio.h>

void checkPrimeAndDisplay(int n);

int main()

{

int n;

printf(“Enter a positive integer: “);

scanf(“%d”,&n);

// به عنوان آرگومان به تابع ارسال می شود nمقدار

checkPrimeAndDisplay(n);

return 0;

}

// نشان می دهد که این تابع هیچ مقدار بازگشتی ندارد void

void checkPrimeAndDisplay(int n)

{

int i, flag = 0;

if(n == 1){

flag = 1;

}

else{

for(i=2; i <= n/2; ++i)

{

if(n%i == 0){

flag = 1;

break;

}

}

}

if(flag == 1)

printf(“%d is not a prime number.”,n);

else

printf(“%d is a prime number.”, n);

}

مقدار صحیح ورودی توسط کاربر به تابع ()checkPrimeAndDisplay ارسال می شود.

در اینجا تابع ()checkPrimeAndDisplay بررسی می کند آیا آرگومان ارسالی یک عدد اول است یا خیر و در انتها نیز یک پیام نمایش می دهد.

مثال ۴: با آرگومان ارسالی و با مقدار بازگشتی

#include <stdio.h>

int checkPrimeNumber(int n);

int main()

{

int n, flag;

printf(“Enter a positive integer: “);

scanf(“%d”,&n);

// به عنوام آرگومان به تابع ارسال می شود nمقدار

// ذخیره می شود flag مقدار بازگشتی از تابع در متغیر

flag = checkPrimeNumber(n);

if(flag == 1)

printf(“%d is not a prime number”,n);

else

printf(“%d is a prime number”,n);

return 0;

}

// از تابع برگشت داده می شود int نوع داده

int checkPrimeNumber(int n)

{

int i;

if(n == 1)

return 1;

for(i=2; i <= n/2; ++i)

{

if(n%i == 0)

return 1;

}

return 0;

}

عدد ورودی از کاربر به تابع ()checkPrimeNumber ارسال می شود. این تابع بررسی می کند آیا آرگومان ارسال شده عدد اول است یا خیر. اگر عدد اول باشد، تابع ۰ برمی گرداند در غیر اینصورت ۱ برمی گرداند. مقدار بازگشتی از تابع در متغیر flag ذخیره می شود. براساس ۰ یا ۱ بودن مقدار متغیر flag ، یک پیام مناسب در تابع ()main چاپ می شود.

کدام روش بهتر است؟

این به مسئله بستگی دارد. در این مسئله، ارسال آرگومان و بازگشت مقدار از تابع (مثال ۴) بهتر است.

هر تابع باید یک کار خاصی انجام دهد. تابع ()checkPrimeNumber ورودی را از کاربر نمی گیرد و یا یک پیام نمایش نمی دهد. بلکه این تابع فقط بررسی می کند که آیا عدد اول است یا خیر.

profile name
میلاد حیدری

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

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه

دیدگاهتان را بنویسید

1 2 3 4 5

0 نظر درباره «انواع تابع در برنامه نویسی C»

    هنوز نظری برای این بخش ثبت نشده است
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید