- •1 Основні елементи мови с
- •1.1 Алфавіт мови програмування
- •1.2 Лексеми
- •1.3 Ключові слова
- •1.4 Ідентифікатори
- •1.5 Класифікація типів даних
- •1.6 Літерали
- •1.7 Оператори
- •1.8 Коментарі
- •1.9 Директиви препроцесора
- •1.10 Організація програми
- •2 Операції та вирази
- •2.1 Загальні відомості
- •2.2 Арифметичні операції
- •2.3 Операції приведення типів
- •2.4 Операції присвоєння
- •2.5 Операції інкремента і декремента
- •2.6 Операції порівняння
- •2.7 Операції зсуву
- •2.8 Порозрядні операції
- •2.9 Логічні операції
- •2.10 Операція sizeof
- •2.11 Операція послідовного обчислення
- •2.12 Операція умови (?:)
- •2.13 Адресні операції
- •3 Прості типи даних
- •3.1 Оголошення змінних
- •3.2 Час існування та область видимості змінних
- •3.3 Цілі типи даних
- •3.4 Дійсні типи даних
- •4 Оператори керування
- •4.1 Оператор розгалуження if
- •4.2 Оператор розгалуження if-else
- •4.3 Оператор множинного розгалуження switch
- •4.4 Оператор циклу for
- •4.5 Оператор циклу while
- •4.6 Оператор циклу do while
- •4.7 Оператор break
- •4.8 Оператор continue
- •5 Функції
- •5.1 Основні поняття
- •5.2 Види виклику функцій
- •5.3 Область видимості
- •5.4 Порожній тип void
- •5.5 Передача аргументів у функцію
- •5.6 Рекурсивні функції
- •5.7 Прототипи функцій
- •6 Покажчики
- •6.1 Визначення та ініціалізація покажчиків
- •6.2 Визначення покажчиків
- •6.3 Масиви
- •6.4 Операції порівняння
- •6.5 Копіювання рядка
- •6.6 Покажчики на функцію
- •6.7 Покажчики на void
- •6.8 Арифметика покажчиків
- •7 Масиви
- •7.1 Загальні поняття
- •7.2 Одновимірні масиви
- •7.3 Багатовимірні масиви
- •8 Рядки в с
- •8.1 Рядки
- •8.2.Створення рядків
- •8.3 Прототипи
- •8.3 Функції перетворення буферів
- •8.4 Функції перевірки літер
- •8.5 Операції з рядками
- •9 Структури, об’єднання, перерахування
- •9.1 Структури
- •9.2 Бітові поля
- •9.3 Ключове слово typedef
- •9.4 Об’єднання
- •9.5 Перераховуваний тип
- •10 Введення та виведення даних
- •10.1 Функція виведення printf
- •10.2Функція введення scanf
- •10.3 Введення та виведення у файл
- •11 Динамічне виділення пам'яті
1.4 Ідентифікатори
Ідентифікатор – це лексема, що складається з літер, цифр і знаків підкреслення. Ідентифікатори використовуються в якості імен змінних, функцій, структур тощо.
Першим символом ідентифікатора має бути буква чи знак підкреслення. Для утворення ідентифікаторів можуть бути використані малі чи великі букви латинського алфавіту. Мовою C допускається довільна довжина ідентифікатора, однак значимі тільки перші 31 символ. Два ідентифікатори для утворення яких використовуються співпадаючі малі та великі букви, вважаються різними.
Ідентифікатори не можуть складатися з декількох слів (не можна використовувати пробіл усередині ідентифікатора) чи містити в собі символи кирилиці (український або російський алфавіт). Створюючи ідентифікатор потрібно пам’ятати що він не повинен збігатися з ключовими словами й іменами функцій бібліотеки компілятора
Приклад 1.1. Ідентифікатори.
abc, ABC, A128B, a128b.
1.5 Класифікація типів даних
Типи даних мови С відіграють важливу роль в обробці даних. Під типом даних розуміють множину припустимих значень цих даних і множину дозволених операцій над ними. Водночас тип даних визначає і розмір пам'яті, що займають змінні і літерали даного типу. Кожен тип даних має ім'я. Пам'ять не виділяється для типу даних, а виділяється для розміщення змінної або літерала.
У мові С виділяють наступні категорії типів:
прості типи даних;
похідні типи даних.
Прості типи мають імена, які є ключовими словами мови.
До простих типів належать: скалярні типи і порожній тип – void.
Тип void не має значення і введений для опису функцій, які не повертають значень, та для деяких інших цілей.
Скалярні типи поділяються на цілочисельні та дійсні типи.
Cимвольні і цілі типи даних є цілочисельним типом, для якого визначені всі операції з цілими числами.
Похідні типи визначаються на основі простих типів. Похідні типи поділяються на скалярні і структурні (агрегатні).
До скалярних похідних типів належать:
перерахування (enum) – множина поіменованих цілих значень;
покажчики (ім'я_типу *);
посилання (ім'я_типу &).
І’мя типу у покажчиках та посиланнях це один з простих типів.
Структурні похідні типи:
масиви (тип_елементу ім'я_масиву [число_елементів]);
структури (struct);
об'єднання (union).
Ім’ям структурних похідних типів є ідентифікатор визначений користувачем.
На рис. 1.1 зображена класифікація типів даних мови С.
1.6 Літерали
Літерал – це число, символ чи стрічка символів, які задаються в програмі у вигляді значення. Літерали називають також константами.
У мові С розділяють чотири типи літералів: цілі, дійсні, символьні та стрічкові літерали.
Цілий літерал може представляти число в одній з форм: десятковій, вісімковій чи шістнадцятковій.
Рисунок
1.1 – Класифікація типів даних
Десятковий літерал складається з однієї чи декількох десяткових цифр, причому перша цифра не повинна бути нулем (у противному випадку число буде сприйнято як вісімкове).
Першим символом вісімкового літерала є нуль, наступними символами є вісімкові цифри (0, 1, 2, 3, 4, 5, 6, 7, 8).
Шістнадцятковий літерал починається з обов'язкової послідовності 0х чи 0Х, наступними символами є шістнадцяткові цифри (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F). Приклади цілих літералів наведені у табл. 1.3.
Таблиця 1.3 – Цілі літерали
Десяткові літерали |
Вісімкові літерали |
Шістнадцяткові літерали |
16 |
020 |
0x10 |
63 |
077 |
0x3F |
171 |
0253 |
0xAB |
Створюючи ідентифікатор потрібно пам’ятати що він не повинен збігатися з ключовими словами й іменами функцій бібліотеки компілятора
Для того щоб цілий літерал визначити типом long, досить наприкінці літерала поставити букву "l" чи "L".
Приклад 1.2. Цілі літерали типу long.
5l, 6l, 128L, 0105L, OX2A11L.
Дійсний літерал – десяткове число, представлене у вигляді дійсної величини з десятковою точкою чи експонентою, має наступний формат:
[ціла частина ].[дробова частина ] [ Е|е [+|-] експонента ] .
Дійсне число, складається з цілої і дробові частини і (чи) експоненти. Дійсні літерали, представляють додатні величини подвоєної точності (мають тип double).
Приклад 1.3. Дійсні літерали типу double.
115.75, 1.5Е-2, -0.025, .075, -0.85Е2
Для того щоб дійсний літерал визначити типом float, досить наприкінці літералу поставити букву "f" чи "F".
Приклад 1.4. Дійсні літерали типу float
115.75f, 1.5Е-2f, -0.025F, .075F, -0.85Е2f
Символьний літерал – представляє собою символ заключений у одинарні кавички (‘’). Керуюча послідовність розглядається як одиночний символ, тому вона є символьним літералом. Значенням символьного літералу є числовий код символу.
Приклад 1.5. Символьні літерали.
‘ ’ – пробіл,
‘Q’ - буква Q,
‘\n’ – символ нового рядка,
‘\’ – зворотна дробова риса,
‘\t’ – горизонтальна табуляція.
Символьні літерали мають тип int і при перетворенні типів доповнюються знаком.
Стрічковий літерал – послідовність символів (включаючи малі та великі букви російського і латинського алфавітів а також цифри) заключені в подвійні лапки (“”) .
Приклад 1.6. Стрічкові літерали.
“Бамбарабия Кергуду”, “місто Вінниця”, “Hello world!”.
У кінець кожного стрічкового літерала компілятором додається нульовий символ, що відповідає керуючій послідовності \0.
Стрічковий літерал має тип char[]. Це означає, що рядок розглядається як масив символів. Відзначимо важливу особливість, число елементів масиву дорівнює числу символів у рядку плюс 1, тому що нульовий символ (символ кінця рядка) також є елементом масиву.
