У цьому підручнику ви дізнаєтесь про різні підходи, які можна застосувати для вирішення однієї і тієї ж проблеми за допомогою функцій.
Ці 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()
Функція не приймає вхідні дані від користувача і не відображається відповідне повідомлення. Він лише перевіряє, чи є число простим чи ні.