Комп’ютерна програма — це послідовність інструкцій, які повідомляють комп’ютеру, що йому потрібно зробити.
Стейтменти
Cтейтмент (англ. “statement”) — це найбільш поширений тип інструкцій у програмах. Це і є та сама найменша незалежна одиниця в мові програмування С++. Стейтмент в програмуванні — це те ж саме, що і “речення” в українській мові. Ми використовуємо речення для того, щоб виразити якусь думку/ідею. У C++ ми пишемо стейтменти, щоб виконати якесь завдання. Всі стейтменти в C++ закінчуються крапкою з комою.
Є дуже багато різних видів стейтментів в C++. Переглянемо найбільш поширені з них:
1 2 3 |
int x; x = 5; std::cout << x; |
int х
— це стейтмент оголошення (англ. “statement declaration”). Він повідомляє компілятору, що х
є змінною. У програмуванні кожна змінна має свою комірку в пам’яті. Всі змінні в програмі перед їх фактичним використанням, повинні бути оголошені. Ми детально поговоримо про змінні на наступних уроках
х = 5
— це стейтмент присвоювання (англ. “assignment statement”). Тут ми присвоюємо значення 5
змінній х
.
std::cout << x;
— це стейтмент виводу (англ. “output statement”). Ми виводимо значення змінної х
на екран.
Вирази
Компілятор також здатний опрацьовувати вирази. Вираз (англ. “expression”) — це математичний об’єкт, який генерує певне значення. Наприклад, в математиці вираз 2 + 3
генерує значення 5
.
Виразами можуть бути:
значення (наприклад, 2
, 4
);
змінні (наприклад, х
, у
);
оператори (наприклад, +
, -
);
функції.
Вони можуть бути як одним значенням (наприклад, 2
чи х
), так і комбінацією значень (наприклад, 2 + 3
, 2 + х
, х + у
чи (2 + х) * (y - 3)
). Наприклад, х = 2 + 3;
— це коректний стейтмент присвоювання. Вираз 2 + 3
генерує результат: значення 5
, яке потім присвоюється змінній х
.
Функції
В C++ стейтменти об’єднуються в блоки — функції. Функція — це послідовність стейтментів. Кожна програма в C++ повинна містити головну функцію main(). Саме з першого стейтмента в main() і починається виконання програми. Функції, як правило, виконують конкретне завдання. Наприклад, функція max() може містити стейтменти, які визначають максимальне число з двох переданих їй, а функція calculateGrade() може обчислювати оцінку студента.
Порада: Завжди розміщуйте функцію main() в .cpp-файлі з тим же іменем, що має проект. Наприклад, якщо ви пишете програму Chess, то помістіть вашу функцію main() в chess.cpp.
Бібліотеки
Бібліотека — це набір скомпільованого коду (наприклад, функцій), який був “упакований” для повторного використання в інших програмах. За допомогою бібліотек можна розширити функціонал програм. Наприклад, якщо ви пишете гру, то вам доведеться підключити бібліотеку звуку або графіки (якщо ви самостійно не хочете їх писати з нуля).
Мова C++ не така вже й велика, як ви могли б подумати. Проте, вона поставляється в комплекті зі Стандартною бібліотекою С++, яка надає додатковий функціонал. Однією з найбільш часто використовуваних частин Стандартної бібліотеки C++ є бібліотека iostream, яка дозволяє виводити інформацію на екран і опрацьовувати дані, які вводить користувач.
Приклад простої програми в С++
Тепер, коли у вас є загальне уявлення про те, що таке стейтменти, функції та бібліотеки, давайте розглянемо ще раз програму “Hello, world!”:
1 2 3 4 5 6 7 |
#include <iostream> int main() { std::cout << "Hello, world!"; return 0; } |
Рядок №1: Спеціальний тип інструкції, який називається директивою препроцесора. Директиви препроцесора повідомляють компілятору, що йому потрібно виконати певне завдання. В цьому випадку ми повідомляємо компілятору, що хотіли б підключити вміст заголовкового файлу iostream до нашої програми. Заголовковий файл iostream дозволяє нам отримати доступ до функціоналу бібліотеки iostream для можливості виведення інформації на екран.
Рядок №2: Порожній простір, який ігнорується компілятором.
Рядок №3: Оголошення головної функції main().
Рядок №4 і №7: Вказуємо компілятору область функції main(). Все, що знаходиться між відкриваючою фігурною дужкою в рядку №4 і закриваючою фігурною дужкою в рядку №7, — вважається частиною функції main().
Рядок №5: Наш перший стейтмент (який закінчується крапкою з комою) — стейтмент виводу. std::cout
— це спеціальний об’єкт за допомогою якого ми можемо виводити дані на екран. <<
— це оператор виводу. Все, що ми відправляємо в std::cout, — виводиться на екран. Тут ми виводимо текст "Hello, world!"
.
Рядок №6: Оператор повернення return. Коли програма завершує своє виконання, функція main() передає значення, яка вказує на результат виконання програми (успішно чи ні), назад в операційну систему. Якщо оператор return повертає значення 0
, то це означає, що все добре! Будь-які ненульові числа використовуються для того, щоб вказати, що щось пішло не так.
Синтаксис і синтаксичні помилки
Як ви, мабуть, знаєте, в українській мові всі речення слідують правилам граматики. Наприклад, кожне речення повинно закінчуватися крапкою. Правила, які регулюють побудову речень, називаються синтаксисом. Якщо ви не поставили крапку і записали два речення підряд, то це є порушенням синтаксису української мови.
C++ також має свій синтаксис: правила написання коду/програм. При компіляції вашої програми, компілятор перевіряє код вашої програми на відповідність правилам синтаксису мови C++. Якщо ви порушили правила, то компілятор лаятиметься і видасть вам помилку.
Наприклад, давайте подивимось, що відбудеться, якщо ми не вкажемо крапку з комою в кінці стейтменту:
1 2 3 4 5 6 7 |
#include <iostream> int main() { std::cout << "Hello world!" return 0; } |
Результат:
E0065: требуется точка с запятой ";"
C2143: синтаксическая ошибка: отсутствие ";" перед "}"
Допущена синтаксична помилка в рядку №6: забули поставити крапку з комою перед оператором return. У цьому випадку помилка насправді в кінці рядка №5. У більшості випадків компілятор правильно визначає рядок з помилкою, але є ситуації, коли помилка не помітна аж до початку наступного рядка.
Синтаксичні помилки нерідко відбуваються при написанні програм. На щастя, більшість з них можна легко знайти і виправити. Але слід пам’ятати, що програма може бути повністю скомпільована і виконана тільки при відсутності помилок.
Тест
Тепер давайте перевіримо, наскільки добре ви засвоїли матеріал уроку. Дайте відповідь на наступні питання:
У чому різниця між стейтментом і виразом?
У чому різниця між функцією і бібліотекою?
Чим повинні закінчуватися стейтменти в С++?
Що таке синтаксична помилка?
Відповіді
Щоб переглянути відповідь, клікніть на неї мишкою.
Відповідь №1
Стейтмент — це “повне речення”, яке повідомляє компілятору виконати певне завдання. Вираз же генерує результат і використовується всередині стейтментів.
Відповідь №2
Функція — це послідовність стейтментів. Бібліотека — це послідовність функцій, які можуть повторно використовуватися в інших програмах.
Відповідь №3
Крапкою з комою (;
).
Відповідь №4
Синтаксична помилка — це помилка, яка вказує на порушення правил граматики мови С++.
Строго кажучи, це не завжди так. Перед виконанням main() відбувається ініціалізація глобальних змінних. Під час цього може багато чого статися. Наприклад:
Результат:
Initialization of global objects
main()