Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Розділ 11. Модульне програмування частина 1.docx
Скачиваний:
7
Добавлен:
20.08.2019
Размер:
213.82 Кб
Скачать

3. Виклик функцій користувача

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

<назва функції>(<список фактичних параметрів>)

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

Надалі розглянемо приклад програми, що розв'язує відоме тривіальне завдання - обчислює корені звичайного квадратного рівняння, проте із застосуванням функціонального підходу:

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <math.h>

float A,B,C;

/*функція прийому даних*/

void GetData()

{

       clrscr();

       printf("Input A,B,C:");

       scanf("%f%f%f",&A,&B,&C);

}

/*функція запуску основних обчислень*/

void Run()

{

       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()

{

       GetData();

       Run();

}

Самостійна робота. Звернення до даних за допомогою посилань

До даних можна звертатися за допомогою імен або посилань. Посилання слугує для надання ще одного імені даному. Посилання утворюється наступним чином:

<тип даного>&<назва посилання>=<назва змінної>;

Наприклад: float &cina=suma;

У цьому випадку посилання cina і змінна suma вказуватимуть на одну і ту саму адресу в пам’яті комп’ютера. Для посилань не резервується додаткова оперативна пам’ять.

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

Під час зміни значення посилання змінюється значення змінної, на яке це посилання вказує.

Змінювати (переадресовувати) посилання у програмі не можна. Посилання завжди вказує на одну і ту саму адресу в оперативній пам’яті. Це використовується під час створення та виклику функцій. Під час виклику функції копії усіх її фактичних параметрів заносяться у спеціально організовану область пам’яті. Потім виконуються відповідні оператори функції і результат повертається у програму командою return. Оскільки всі дії відбуваються з копіями параметрів не з самими параметрами, то значення фактичних параметрів в основній програмі не змінюються. Як параметри функції можна використовувати посилання або вказівники. Тоді значення фактичних параметрів в основній програмі буде змінюватися.

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