You are on page 1of 3

ЛЕКЦІЯ № 4

СТРУКТУРА ПРОГРАМИ НА МОВІ С

Програма на мові С – сукупність підпрограм-функцій. Функція являє собою


незалежний фрагмент програми, котрий має ім’я та виконує певну задачу. Код функції
виконується шляхом її виклику по імені в програмі. Програма може передавати у функцію
дані, котрі називаються аргументами, та функція може повертати інші дані в основну
частину програми.
Існує два основних різновиди функцій:
− бібліотечні (стандартні), входять в склад пакету компілятора;
− функції користувача, які створюються програмістом.

4.1 Директиви препроцесора

Препроцесор входить до складу мов програмування С/С++. В більшості версії мови


програмування препроцесор безпосередньо входить до складу компілятора. При запуску
програми на компіляцію препроцесор стартує автоматично та перший виконує свої
функції.
Препроцесор модифікує вхідний код програми на основі інструкцій або директив
препроцесора, включених до складу коду. На виході препроцесора отримується
модифікований файл вхідного коду, котрий надходить на подальшу компіляцію. Зазвичай
програміст не бачить цього файлу, тому що компілятор видаляє його безпосередньо після
перетворення в об’єктний код (щоб побачити його, необхідні спеціальні засоби). Всі
директиви препроцесору починаються з символу #.
Директива #include вказує компілятору додати вміст включеного файлу в програму
під час компіляції. Включений (заголовний) файл – це окремий файл на диску, котрий
містить інформацію, яка необхідна програмі або компілятору. Заголовні файли мають
розширення *.h (наприклад, stdio.h) . Вносити зміни в такі файли не рекомендується.
Директива #define – використовується для створення символьних констант та
функціональних макровизначень. Директива #undef (протилежна #define) – робить
ідентифікатор невизначеним.

4.2 Поняття «функції» мови програмування

Кожна функція має ім’я, яке використовується для її виклику. Жодна з функцій не
може бути вбудована в іншу. Ім’я функції закінчується парою круглих дужок.
Кожна програма на мові програмування С повинна містити тільки одну функцію з
іменем main(). Функція main() − спеціальна, оскільки це перша функція, котра
викликається при виконані програми. На відміні від інших мов програмування, в яких
виконання програми завжди починається «з верху», тобто з першого рядку коду, кожна С-
програма починається з виклику функції main() незалежно від її розположення в програмі
(зазвичай функцію main() розміщують першою).
Синтаксис функції main():
<тип значення, що повертається функцією> main()
{
<тіло функції>
}

За допомогою елементу <тип значення, що повертається> вказується тип


значення, котрий повертає функція. Якщо функція не повертає ніякого значення,
необхідно вказати тип void. Наприклад:
void main()
{
<тіло функції>
}
Загальний синтаксис С-функції:
<тип значення, що повертається> <ім’я функції>(<тип даних>:<ім’я параметру 1>,
<тип даних> : < ім’я параметру 2>, …)
{
<тіло функції>
}
В фігурних дужках стоять оператори, котрі утворюють тіло функції. Згідно зі
стандартом ANSI єдиний оператор, який обов’язково повинен бути в тілі функції – це
оператор return, він використовується для повернення значення із функції. Для більшості
операційних систем, при нормальному завершенні програми, повертається нульове
значення. Закриваюча фігурна дужка в кінці програми формально завершає її (навіть при
відсутності оператора return).
В С-програмі кожна функція (крім main()) повинна бути оголошена до її
визначення та використання. Для цього вводиться таке поняття, як прототип функції.
Прототип оголошує функцію до її першого використання. Прототип дозволяє компілятору
дізнатися тип значення, котрий повертає дана функція, а також кількість та тип
параметрів, котрі вона може мати.
Прототип функції слід відрізняти від фактичного визначення функції. Визначення
функції містить всі оператори, котрі складають тіло функції. Оператори мови
програмування відображають інформацію, здійснюють введення та виведення даних,
виконують математичні обчислення, викликають функції і т.п. Оператор записується в
окремому рядку програмного коду, в кінці оператору ставиться символ «точка с запятой».
Приклад.
/*Програма, котра обчислює добуток двох чисел */
#include <stdio.h>
int val1, val2, val3;
int product(int x, int y); //оголошення(прототип) функції product
int main(void)
{
/*Введення першого числа */
printf (“Enter a number between 1 and 100: ”);
scanf(“%d”,&val1);
/*Введення другого числа */
printf(“Enter another number between 1 and 100: ”);
scanf(“%d”,&val2);
/* Обчислення та виведення результату множення */
val3=product(val1,val2);//виклик функції product
printf(%d times%d=%d \n”, val1, val2, val3);
return 0;
}
//визначення функції product
int product(int x, int y)
{
/*Функція повертає добуток двох чисел */
return (x*y);
}
4.3 Оголошення змінних

Змінна (ідентифікатор) – це ім’я, яке присвоєне місцю в пам’яті, відведеному для


збереження даних. В мові С змінну (ідентифікатор) необхідно спочатку оголосити, щоб
нею можна було скористатися в програмі.
Загальний синтаксис оголошення змінної:
<тип даних> <ім’я змінної 1>,< ім’я змінної 2>…;
Важливо правильно розташувати оголошення змінних у вхідному коді, оскільки їх
місцезнаходження впливає на спосіб використання змінних в програмі.
Розрізняють:
− глобальні змінні – оголошення поза функцією, та поза функцією main() (в
програмному коді розташовуються перед функцією main()). Область дії глобальних
змінних розповсюджується на всю програму;
− локальні змінні – оголошуються всередині функції. Область дії – тільки в
середині даної функції.

Контрольні питання:
1. Визначте поняття «функція».
2. Яким чином визначається функція в програмі на мові С.
3. Визначте синтаксис опису змінних в програмі на мові С.
4. В чому полягає принципова різниця між глобальними та локальними змінними.

You might also like