Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 7 (Функції).docx
Скачиваний:
18
Добавлен:
16.05.2015
Размер:
74.76 Кб
Скачать

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;

}

Самостійно!

  1. Розробити програму, яка отримує границі інтервалу (a, b), а повертає значення випадкового цілого числа на цьому інтервалі.

  2. Розробити програму, яка приймає два (три) дійсних числа, а повертає значення максимального з них.

  3. Розробити програму, яка приймає ціле число, а повертає значення 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, то її виклик слід організовувати таким чином, аби значення, що повертається, не використовувалося б. Просто кажучи, таку функцію неможливо використовувати у правій частині виразу.

Самостійно (на лекції)!

  1. Розробити функцію, яка приймає натуральнее число n і виводить на екран n чисел з послідовності Фібоначчі.

  2. Розробити функцію, яка виводить в центрі екрану номер N лабораторної роботи, в центрі наступного рядка – відомості про розробника (name).

Рекурсивні функції

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

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

      Прямою (безпосередньою) рекурсією називається рекурсія, при якій всередині тіла деякої функції міститься виклик тієї ж функції.