Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Архив WinRAR / 2_Посібник_С_002.doc
Скачиваний:
39
Добавлен:
17.05.2015
Размер:
2.7 Mб
Скачать

3.10 Організація програми

Програма на мові С складається з файлів двох типів – файлів заголовків і файлів коду. Файли заголовків мають розширення ".h", а файли коду – розширення ".с".

Програма мовою C складається із файлів двох типів – файлів заголовків і файлів коду. Файли заголовків мають розширення ".h", а файли коду – розширення ".с" або ".срр". Файли заголовків містять класи, шаблони, структури, об'єднання, перерахуван­ня, оголошення функцій, описиtypedef, визначення констант, функціїinlineі директиви препроцесора.

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

^include"ім'я заголовкового файла" #include<ім' я заголовкового файла>

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

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

КОНТРОЛЬНІ ЗАПИТАННЯ

  1. Що таке алфавіт мови програмування?

  2. Яка важлива відмінність мови С пов’язана з алфавітом?

  3. Що таке лексема?

  4. Що таке ключові слова?

  5. Наведіть приклад деяких ключових слів.

  6. Що таке ідентифікатор?

  7. Що таке тип даних?

  8. Які існують категорії типів даних?

  9. Наведіть класифікацію типів даних.

  10. Охарактеризуйте тип void.

  11. Що таке літерал?

  12. Які існують види літералів?

  13. Які ескейп-послідовності ви знаєте?

  14. Який розмір має літерал “abcd”? (5 байт)

  15. Опишіть формат дійсного літералу.

  16. Що таке оператор?

  17. Чим відрізняються оператори (охарактеризуйте кожен з них)?

  18. Що таке коментар?

  19. Для чого потрібні коментарі?

  20. Що таке препроцесор?

  21. Що таке директива препроцесора?

  22. Які директиви найчастіше використовуються?

  23. Опишіть формат директиви #define.

  24. З яких файлів складається програма мови С?

3. Операції та вирази

4.1 Загальні відомості

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

Операнд– це те, над чим виконуються операції. У мові С у якості операндів можуть виступати літерали, змінні, елементи масиву, результати визову функції, вирази. Будь-який операнд, що має константне значення, називається константним виразом. Кожен операнд має тип.

Знаки операційвизначають дії, що повинні бути виконані над операндами. Кожен операнд у виразі може бути виразом. Значення виразу залежить від розташування знаків операцій і круглих дужок у виразі, а також від пріоритету виконання операцій. Пріоритет виконання операцій представлений у таблиці 4.1.

Таблиця 4.1 – Пріоритет виконання операцій

Пріоритет

Операція

Типи операції

Порядок виконання

1

() [] .

Вираз

Зліва направо

2

->-~ ! * & ++ -- sizeof

Унарні

Справа на ліво

3

приведення типу ()

Унарний

Справа на ліво

4

* / %

Мультиплікативні

Зліва направо

5

+ -

Адитивні

6

<< >>

Зсув

7

< > <= >=

Відношення

8

== !=

Відношення (рівність)

9

&

Порозрядне «І»

10

^

Порозрядне виключне «АБО»

11

|

Порозрядне «АБО»

12

&&

Логічне «І»

13

||

Логічне «АБО»

14

?:

Умовна

15

= *= /= %= += -= &= |= >>= <<= ^=

Просте і складене присвоєння

Справа на ліво

16

,

Послідовне обчислення

Зліва на право

Приклад 1. Приорітет операцій

int a=2, b=3, c=4, d=7, e, f;

e = a + b/c + d & a * b - d % a; /*e = 1*/

Порядок виконання операцій у виразі визначається пріоритетом операцій, для прикладу 4.1 зображений на рис. 4.1.

Рисунок 4.1 – Порядок виконання операцій у виразі

Спочатку буде виконані операції з найвищим пріоритетом, тобто b/c (3/4 = 0) , a*b (2*3 = 6) та d%a (7%2 = 1). Вираз можна переписати, як:

e = a + 0 + d & 6 - 1;

Наступними виконаються адитивні операції a + 0 + d (2+0+7 = 9) та6 - 1(=5) і вираз можна переписати як:

e = 9 & 5;

Наступною виконається операція порозрядного «І» 9 & 5 (=1) і останньою операція присвоювання e = 1, в результаті якої змінна eбуде містити число 1.

Так як операція «()» має найвищий пріоритет для зміни пріоритету частини виразу, його можна взяти у дужки, таким чином ця частина виразу виконається впершу чергу. У випадку вкладених дужок в першу чергу виконається вираз у внутрішніх дужках.

Приклад 2. Приорітет операцій

int a = 2, b = 3, c = 4, d;

d = a + b * c; /* спочатку виконається вираз b * c, потім результат цього виразу буде доданий до a, тобто d = 14 */

d = (a + b) * c; /*спочатку виконається вираз a + b, потім результат цього виразу буде помножений на с, тобто d = 20 */

Соседние файлы в папке Архив WinRAR