
- •2. Основні елементи мови с
- •3.1 Алфавіт мови програмування
- •3.2Лексеми
- •3.3Ключові слова
- •3.4Ідентифікатори
- •3.5 Класифікація типів даних
- •3.6 Літерали
- •3.7 Оператори
- •3.8 Коментарі
- •3.9 Директиви препроцесора
- •3.10 Організація програми
- •3. Операції та вирази
- •4.1 Загальні відомості
- •4.2 Арифметичні операції
- •4.3 Операції приведення типів
- •(Тип) ідентифікатор,
- •4.4 Операції присвоєння
- •4.5 Операції інкремента і декремента
- •4.6 Операції порівняння
- •4.7 Операції зсуву
- •4.8 Порозрядні операції
- •4.9 Логічні операції
- •4.10 Операція sizeof
- •Sizeof ( Вираз ),
- •4.11 Операція послідовного обчислення
- •4.12 Операція умови (?:)
- •Операнд-1 ? Операнд-2 : Операнд-3
- •4.13 Адресні операції
- •Тип * ім'я_покажчика;
- •4. Прості типи даних
- •5.1 Оголошення змінних
- •[ Модифікатори ] тип ім’я_змінної;
- •5.2 Час існування та область видимості змінних
- •5.3 Цілі типи даних
- •5.4 Дійсні типи даних
- •5. Оператори керування
- •5.1 Оператор розгалуження if
- •If ( Вираз ) true-оператор;
- •5.2 Оператор розгалуження if-else
- •If ( Вираз ) true-оператор; else false-оператор;
- •5.3 Оператор множинного розгалуження switch
- •5.4 Оператор циклу for
- •For ( Вираз 1 ; Вираз 2 ; Вираз 3 ) тіло циклу
- •5.5 Оператор циклу while
- •While ( Вираз ) тіло циклу
- •5.6 Оператор циклу do while
- •Тіло циклу while ( Вираз ) ;
- •5.7 Оператор break
- •5.8 Оператор continue
- •6 Введення та виведення даних
- •7.1 Функція виведення printf
- •Int printf( стрічка форматування, змінна1, змінна2, ... );
- •7.2Функція введення scanf
- •Int scanf (стрічка форматування, адреса змінної1, адреса змінної2, ... );
- •9.1 Введення та виведення у файл
- •7 Масиви
- •7.1 Загальні поняття
- •7.2 Одновимірні масиви
- •Тип даних ім’я змінної [n];
- •7.3 Багатовимірні масиви
- •6. Функції
- •6.1 Основні поняття
- •{Тіло функції}
- •6.2 Область видимості
- •6.3 Порожній тип void
- •6.4 Передача аргументів у функцію
- •6.5 Рекурсивні функції
- •6.6 Прототипи функцій
- •8. Рядки в с
- •4.1 Прототипи
- •4.2 Функції перетворення буферів
- •4.3 Функції перевірки літер
- •4.4 Рядок символів
- •4.5 Операції з рядками:
- •4.6 Символьні константи
- •9. Покажчики
- •5.1 Визначення та ініціалізація покажчиків
- •5.2 Визначення покажчиків:
- •5.3 Масиви
- •5.6 Копіювання рядка
- •5.7 Посилання та оператор &
- •5.9 Посилання в якості результатів функції
- •5.10 Покажчики на функцію
- •Тип_функціі (* імя_покажчика) (специфікація_параметрів);
- •5.11 Покажчики на void
- •5.12 Арифметика покажчиків
- •10. Структури, об’єднання, перерахування
- •7.1 Структури
- •7.2 Ключове слово typedef
- •7.3 Об’єднання
- •7.4Перераховуваний тип (Enum)
- •Enum dataType
- •Enum day
- •11 Динамічне виділення пам'яті
3.7 Оператори
Оператор (statement) у С визначає дію, яка має бути виконана. Оператори можна класифікувати на такі групи:
- оператори мітки;
- оператор вираз;
- порожній оператор;
- складений оператор;
- ітераційні оператори;
- оператори переходу;
- оператори вибору.
Оператор міткивикористовується разом з оператором переходуgoto, для безумовного переходу з точки програми позначеної операторомgotoв точку програми позначену оператором мітки.
Оператор виразпредставляє собою будь-який вираз, в кінці цього оператора обов’язково має бути символ крапка з комою «;».
Порожнійоператор складається з єдиного символу «;». Цей оператор використовується в інших операторах коли по синтаксису потрібно використати оператор але жодних дій виконувати не потрібно.
Складенийоператор являє собою нуль або більше операторів, об’єднаних за допомогою фігурних дужок. Відмінною рисою складеного оператора мови C від інших (наприклад, Pasсal) полягає в тому, що він визначає нову область дії, тобто змінні, визначені усередині складеного оператора, є локальними.
Ітераційніоператори призначені для виконання частини коду програми декілька разів при можливій зміні значень змінних у цій частині коду.
Оператори виборупризначені для умовного переходу до виконання частини коду програми.
Оператори переходупризначені для безумовного переходу. Операторreturnповертає значення з функції, операторbreakприпиняє виконання ітераційних операторів і оператораswitch, операторcontinueпереходить на наступну ітерацію у ітераційних операторах.
Класифікація операторів мови С наведена на рис. 3.2.
Рисунок 3.2 – Класифікація операторів
Згідно синтаксису операторів представлених на рис. 3.2 на місці слова «оператор» може знаходитися будь-який оператор. Наприклад, оператор if може містити оператор while, який, в свою чергу, може містити оператор вираз. Винятком з правила є операториcontinueі break, які можуть використовуватися тільки в ітераційних операторах. Це правило не розповсюджується на операторswitch, синтаксис якого є особливим і визначено нижче.
3.8 Коментарі
Коментар– це набір символів, що ігноруються компілятором, і використовується для написання пояснень до коду програми. Початок та кінець коментарю позначається відповідно лексемами (/*) та (*/). Коментарі можуть бути як однострічковими так і багатострічковими. Коментарі розглядаються компілятором як розділові символи.
Коментарі можуть використовуватися при відлагодженні програми коли потрібно зробити недоступною для компілятора проблемну (не робочу) частину коду програми.
Наявність коментарів у тексті програми робить її зрозумілішою і дозволяє легко пригадати особливості програми після звертання до неї через тривалий проміжок часу.
Приклад 7. Синтаксис коментаря.
int a=2, b=7; /* ініціалізація змінних */
/* однострічковий коментар */
/* при використанні багатострічкових коментарів потрібно бути обережним, щоб усередині послідовності, що ігнорується компілятором, не потрапили оператори програми, що також будуть ігноруватися */
3.9 Директиви препроцесора
При запуску компіляції програми на С, починає діяти спеціальна програма – препроцесор.
Препроцесор- це попередній обробник тексту програми на С, який знаходить директиви препроцесора та виконує їх. Кожна директива препроцесора починається з символа #. Тільки після виконання препроцесором всіх своїх директив, починається трансляція тексту з мови С на мову машинних команд.
Найбільш частіше використовуються такі директиви препроцесора:
- #include ( включає файл у текст програми );
- #define ( замінює ідентифікатор на літерал ).
Директива #include має два формати:
1. #include "ім'я_файлу".
2. #include <ім'я_файлу>.
Якщо ім'я файла вказане в лапках, то його пошук здійснюється в поточному каталозі користувача. Якщо ім'я файла задане в кутових дужках, то його пошук проводиться в стандартних директоріях операційної системи, наприклад, для компілятора DevC++ це «C:\Dev-C++\Include\».
Приклад 8. Синтаксис бібліотек
# include <stdio.h> /* підключення стандартної бібліотеки введення-виведення stdio.h */
# include <stdlib.h> /* підключення стандартної бібліотеки stdlib.h */
# include «myfync.h» /*підключення файлу користувача myfync.h */
Формат директиви # define:
# define стрічка_1 стрічка_2
де стрічка_1– ідентифікатор,стрічка_2 – літерал.
Директива #define замінить всі появи ідентифікатора "стрічка_1"у вихідному файлі на літерал«стрічка_2». Заміна ідентифікатора буде здійснена тільки тоді, коли він формує лексему. Наприклад, ідентифікатор«стрічка_1»не буде замінений, якщо він присутній у стрічковому літералі чи є частиною довшого ідентифікатора.
Приклад 9. Запис Директиви #define
# define SIZE 12 /* У тексті програмі всі лексеми SIZE будуть замінені на цілий літерал 12. */
Варто відмітити що при використанні # define немає необхідності у використанні оператора «;» .
Файли заголовків мають розширення ".h", а файли коду — розширення ".с" або ".срр".
Файли коду містять реалізацію програми користувача і мають розширення ".с" або ".срр". Вони складаються з однієї або більше функцій. Одна з функцій, з яких починається виконання програми, повинна мати ім'я main. Функціяmainвідрізняється від інших функцій тим, що її не можна викликати зсередини програми, а її параметри задаються операційною системою. Параметри у функціїmainможуть бути відсутні.
Виклик функції (активізація) виконується двома способами: класичним — за іменем; побічно — через покажчик на функцію (див. тему "Покажчики"). Класичний спосіб виклику функції проводиться за допомогою вказівки імені в дужках, за яким указується список параметрів (аргументів). Список параметрів являє собою значення (змінних, констант, покажчиків констант або адрес), які необхідно передати функції для успішного розв'язання задачі. Функція активізується завжди, коли в керуючій програмі зустрічається ім'я функції.
Після виконання відповідної функції управління передається назад у середовище програми (за винятком особливих ситуацій), яка продовжує свою роботу.