Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
О.О.П / 3_кол / Лекції / лекции_C++ (14)у.doc
Скачиваний:
8
Добавлен:
30.05.2020
Размер:
124.93 Кб
Скачать

Лекція 15. Функції. Зона дії. Передача змінних і масивів у функціїЇ

План

1. Функції.

2. Локальні и глобальні змінні.

3. Область дії функції.

4. Передача параметрів у функцію.

5. Передача масивів в функцію.

1. Функції

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

Функція – це автономна програма з ім'ям. Вона має наступний загальний вигляд:

<тип> <ім'я> (<список параметрів>)

{

тіло функції

}

Тут <тип> визначає тип значення, яке повертає функція. Функція, яка не повертає значення, має тип void. Значення, яке повертається функцією, називається результатом. Функція може повертати лише одне значення, але будь-якого типа даних. Якщо функція повертає значення, то в тілі функції обов'язково присутня директива return <вираз>. Як вираження може бути ім'я однієї змінної, тип якої відповідає типові повертаного значення;

<ім'я> – ідентифікатор, який визначає користувач;

<список параметрів> – це список елементів, які відділяються один від одного коми. Кожен такий елемент складається з імені змінної і її типа. У загальному випадку список параметрів має вигляд (<тип1> <ім'я1>, <тип2> <ім'я2>, <типk> <ім'яk>). У список параметрів включаються змінні, які функція використовує при своїй роботі. Ці параметри називаються формальними параметрами функції. Функція може бути і без параметрів.

Тіло функції – це програма, структура якої повністю відповідає структурі головної програми void main().

Нижче наведений приклад функції, яка виводить на екран текст «Добрий ранок, СТУДЕНТ!!!»

Програма fun_1

void vivod()

{ cout << “Добрий ранок, СТУДЕНТ !!!\n”; }

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

Програма fun_2

void vivod()

{

cout << “Добрий ранок, СТУДЕНТ !!!\n”;

}

void main() { clrscr();

vivod(); // Виклик функції vivod().

getch(); }

Після виконання цієї програми на екрані монітора з'явиться повідомлення:

Добрий ранок, СТУДЕНТ !!!

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

Програма fun_3

float ymn(float x, float в)

{ float z;

z = y*x;

return z; }

Програма fun_3а

float ymn(float x, float y)

{ return x*y; }

Зауваження 1. Рядок <тип> <ім'я> (<список параметрів>) зазвичай називають заголовком функції. Вважається хорошим стилем при оформленні програми, коли код функції слідує за кодом програми, що викликає.

Зауваження 2. Якщо код функції розташований нижче за код викликаючої програми, то функція має бути оголошена перед нею. Для цього заголовок функції повинен бути перед заголовком програми. Код заголовка, який записується перед викликаючою програмою, називається прототипом функції. Код прототипу функції закінчується символом ; (крапка з комою).

Програма fun_4

float ymn(float а, float b); // Прототип функції.

void main()

{ int x=2, y=5;

cout << x << “*“ << y << “= “ << ymn(x,y) << “\n”;

getch(); }

float ymn(float z, float w) // Функція обчислює добуток двох чисел.

{

return z*w;

}

Імена параметрів в прототипі можуть не збігатися з іменами, які використовуються в коді функції.

Соседние файлы в папке Лекції