Типи користувацьких функцій у програмуванні на C.

У цьому підручнику ви дізнаєтесь про різні підходи, які можна застосувати для вирішення однієї і тієї ж проблеми за допомогою функцій.

Ці 4 програми нижче перевіряють, чи є ціле число, введене користувачем, простим числом чи ні.

Висновок усіх цих програм нижче однаковий, і ми створили користувацьку функцію в кожному прикладі. Однак підхід, який ми застосували в кожному прикладі, різний.

Приклад 1: Не передано аргументи і не повертається значення

 #include void checkPrimeNumber(); int main() ( checkPrimeNumber(); // argument is not passed return 0; ) // return type is void meaning doesn't return any value void checkPrimeNumber() ( int n, i, flag = 0; printf("Enter a positive integer: "); scanf("%d",&n); 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. Отже, з функції не повертається значення.

Приклад 2: Не передано аргументів, але повертається значення

 #include int getInteger(); int main() ( int n, i, flag = 0; // no argument is passed n = getInteger(); 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; ) // returns integer entered by the user int getInteger() ( int n; printf("Enter a positive integer: "); scanf("%d",&n); return n; ) 

Порожні дужки в n = getInteger();операторі вказують на те, що функції не передано жодного аргументу. І значення, яке повертається з функції, присвоюється n.

Тут getInteger()функція бере вхідні дані від користувача і повертає їх. Код для перевірки, чи є число простим чи ні, знаходиться всередині main()функції.

Приклад 3: Аргумент передано, але не повертає значення

 #include void checkPrimeAndDisplay(int n); int main() ( int n; printf("Enter a positive integer: "); scanf("%d",&n); // n is passed to the function checkPrimeAndDisplay(n); return 0; ) // return type is void meaning doesn't return any value void checkPrimeAndDisplay(int n) ( int i, flag = 0; 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()функція перевіряє, чи переданий аргумент є простим числом чи ні, і відображає відповідне повідомлення.

Приклад 4: Аргумент передано та повертається значення

 #include int checkPrimeNumber(int n); int main() ( int n, flag; printf("Enter a positive integer: "); scanf("%d",&n); // n is passed to the checkPrimeNumber() function // the returned value is assigned to the flag variable 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 is returned from the function int checkPrimeNumber(int n) ( int i; for(i=2; i <= n/2; ++i) ( if(n%i == 0) return 1; ) return 0; ) 

Вхідні дані користувача передаються checkPrimeNumber()функції.

У checkPrimeNumber()функції перевіряє , є чи переданий аргумент є простим чи ні.

Якщо переданий аргумент є простим числом, функція повертає 0. Якщо переданий аргумент не є простим числом, функція повертає 1. Значення повернення присвоюється змінній прапора.

Залежно від того, чи є прапор 0 чи 1, із main()функції надруковується відповідне повідомлення .

Який підхід кращий?

Ну, це залежить від проблеми, яку ви намагаєтесь вирішити. У цьому випадку краще передавати аргумент і повертати значення з функції (приклад 4).

Функція повинна виконувати конкретне завдання. checkPrimeNumber()Функція не приймає вхідні дані від користувача і не відображається відповідне повідомлення. Він лише перевіряє, чи є число простим чи ні.

Цікаві статті...