Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C лекції / 5.Функц_ї в С.docx
Скачиваний:
36
Добавлен:
05.03.2016
Размер:
53.42 Кб
Скачать

Функції, що не повертають значення

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

/*демонстраційна програма*/

#include

void func1(void);

void func2(void);

main()

{

  func1();

  func2();

  return 0;

}

void func1(void)

{

  /* тіло */

}

void func2(void)

{

  /* тіло */

}

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

 

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

 

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

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

Приклад 4Розглянемо сигнатуру з прикладу 3.

float perymetr (int k = 4, float r = 2.5);

До цієї функції можна звернутись одним із способів:

perymetr (7, 2.8); perymetr (8); perymetr ();

У першому випадку змінній буде присвоєне значення 7, а змінній r- 2,8; у другому випадку k = 8, r — 2,5; втретьому k = 4, r = 2,5.

Зауваження. У списку фактичних параметрів не можна пропускати змінні з середини списку, тобто не можна функціюMyfunc() ви­кликати так: Myfunc(1.65);, оскільки тут пропущено ініціалізацію першої  змінної k.

 

Приклад програми на використання функції

Вираз

Функція

a

x

y

z

 

2,11

1,00

0,93

1,00

 

 

 

 

 

 

 

 

#include <iostream.h>

#include <math.h>

 

const float a=2.11;

 

double p(double k)

{   double p1;

       p1= sin(a*k)+cos(a*k)/(a*k);

       return(p1);

       }

int main()

{

    double x,y,z,F;

    cout << "x, y, z =" << endl;

    cin >> x >> y >> z;

    F=(sqrt(p(x))+pow(p(y),1.0/3))*exp(p(z));

    cout << "F=" << F << endl;

    system("PAUSE");

    return 0;

}