- •Функції
- •Int swap(int, int) ;
- •Void func() ;
- •Int main()
- •Int main()
- •Int main()
- •Void func1(void); void func2(void); main() { func1(); func2(); return 0; } void func1(void) { /* тіло */ } void func2(void) { /* тіло */ }
- •Void fn(int I) { ... Fn(I); ... }
- •Void f(int I, int* j, int& k);
- •Int main()
- •Void f(int і, int* j, int& k)
- •Int anyfunc(void) { char item; ........ }
Int main()
{
int Variable = 5;
cout << MySquare (Variable) ;
return 0;
}
Приклад 2.
long MySquare(int) ;
Int main()
{
int Variable = 5;
cout << MySquare (Variable) ;
return 0;
}
long MySquare(int x)
{
long y = x*x;
return y;
}
Приклад 3.
// файл header1.h
long MySquare(int) ;
// головний файл програми
#include "header1.h"
Int main()
{
int Variable = 5;
cout << MySquare (Variable) ;
return 0;
}
long MySquare(int x)
{
return x*x;
}
Самостійно!
Розробити програму, яка отримує границі інтервалу (a, b), а повертає значення випадкового цілого числа на цьому інтервалі.
Розробити програму, яка приймає два (три) дійсних числа, а повертає значення максимального з них.
Розробити програму, яка приймає ціле число, а повертає значення true, якщо число парне, і false – непарне.
Функції, що не повертають значення
Функції типу void - ті, що не повертають значення - можуть розглядатися як деякий різновид команд, реалізований особливими програмними операторами. Оператор func(); виконує функцію void func() , тобто передасть керування функції, доки не виконаються усі її оператори. Коли функція поверне керування в основну програму, тобто завершить свою роботу, програма продовжить своє виконання з того місця, де розташовується наступний оператор за оператором func().
Void func1(void); void func2(void); main() { func1(); func2(); return 0; } void func1(void) { /* тіло */ } void func2(void) { /* тіло */ }
Надалі розглянемо приклад програми, що розв'язує відоме тривіальне завдання - обчислює корені звичайного квадратного рівняння, проте із застосуванням функціонального підходу:
/*функція запуску основних обчислень*/ void Run(float A, float B, float C) { float D; float X1, X2; if ((A==0) && (B!=0)) { X1 = (-C)/B; printf("\nRoot: %f",X1); exit(0); } D = B*B - 4*A*C; if (D<0) printf("\nNo roots..."); if (D==0) { X1=(-B)/(2*A); printf("\nTwo equal roots: X1=X2=%f",X1); } if (D>0) { X1 = (-B+sqrt(D))/(2*A); X2 = (-B-sqrt(D))/(2*A); printf("\nRoot X1: %f\nRoot X2: %f",X1,X2); } } /*головна функція програми/ void main() { float a,b,c; clrscr(); printf("Input a,b,c:"); scanf("%f%f%f",&a,&b,&c); Run(a,b,c); }
Якщо вказано, що функція повертає значення типу void, то її виклик слід організовувати таким чином, аби значення, що повертається, не використовувалося б. Просто кажучи, таку функцію неможливо використовувати у правій частині виразу.
Самостійно (на лекції)!
Розробити функцію, яка приймає натуральнее число n і виводить на екран n чисел з послідовності Фібоначчі.
Розробити функцію, яка виводить в центрі екрану номер N лабораторної роботи, в центрі наступного рядка – відомості про розробника (name).
Рекурсивні функції
Рекурсія - це спосіб організації обчислювального процесу, при якому функція в ході виконання операторів звертається сама до себе.
Функція називається рекурсивною, якщо під час її виконання можливий повторний її виклик безпосередньо (прямий виклик) або шляхом виклику іншої функції, в якій міститься звертання до неї (непрямий виклик).
Прямою (безпосередньою) рекурсією називається рекурсія, при якій всередині тіла деякої функції міститься виклик тієї ж функції.