1. Змінні та коробки
Змінні — це спеціальні сутності для зберігання даних. Будь-яких. Майже всі дані в C++ так чи інакше потрапляють у змінні. Найпростіше уявити змінну як звичайну коробку.
Припустімо, ви написали на аркуші число 13 і поклали цей аркуш у коробку. Тоді можна сказати, що «коробка зберігає значення 13».
Кожна змінна в C++ має три важливі властивості: тип, імʼя і значення.
Імʼя потрібне, щоб відрізняти одну змінну від іншої. Це як напис на коробці.
Тип змінної визначає, які дані можна в ній зберігати. У коробці для торта зберігають торт, у коробці для взуття — туфлі тощо.
Значення — це дані, обʼєкт або інша інформація, яка зберігається у змінній.
Кожен обʼєкт у мові C++ має свій тип. Наприклад, є такі типи даних: ціле число, дробове число, текст, тип Cat, тип House тощо.
У кожної змінної теж є свій тип. Вона може зберігати лише значення того самого типу, що й сама. Для різних речей використовують різні коробки: коробку цукерок, коробку для десятка яєць тощо. Усе як у житті.
2. Створення змінної
У мові C++ змінну створюють командою такого вигляду:
тип імʼя;
Тут тип — це тип змінної, тобто тип значень, які вона зможе зберігати. А імʼя — це назва змінної.
Приклади:
| Оголошення змінної: спочатку тип, потім імʼя. | Опис |
|---|---|
|
Створюємо змінну з імʼям a типу int. |
|
Створюємо змінну з імʼям s типу std::string. |
|
Створюємо змінну з імʼям c типу double. |
Два найуживаніші типи — це цілі числа (їх позначають словом int) і текст (у C++ зазвичай використовують std::string). Також популярний тип double — це дробові, або дійсні, числа.
3. Присвоювання
Як ми вже зʼясували, змінна має імʼя, тип і значення. Імʼя та тип ми вже розібрали. А що зі значенням? Як записати його у змінну?
Для цього існує спеціальна операція — операція присвоювання. Вона копіює значення з однієї змінної в іншу. Не переносить, а саме копіює. Як файл на диску. Це роблять так:
імʼя = значення;
Тут імʼя — це імʼя змінної, а значення — те, що буде записано до змінної. Праворуч можна вказати конкретне значення, імʼя іншої змінної або навіть вираз із використанням змінних.
Приклади:
int main() {
int i; // Створюємо змінну i
int a, b; // Створюємо змінні a і b
int x; // Створюємо змінну x
i = 3; // Записуємо у змінну i значення 3.
a = 1; // Записуємо у змінну a значення 1.
b = a + 1; // Записуємо у змінну b значення 2.
x = 3; // Записуємо у змінну x значення 3.
x = x + 1; // У цьому рядку значення x збільшується на 1: тепер x дорівнює 4.
}
Знак дорівнює
Для операції присвоювання використовують знак дорівнює =. Це не порівняння і не рівність. Це саме команда скопіювати значення, яке стоїть праворуч від знака дорівнює, у змінну ліворуч. Для порівняння в мові C++ використовують подвійний знак дорівнює ==.
4. Імʼя змінної: що можна, а що не можна
Ось що корисно знати, коли ви створюєте змінні:
- Імʼя змінної може бути будь-яким (наприклад, temperature, score, userAge).
- Але є обмеження: воно не може починатися з цифри й не може збігатися зі службовими словами C++ (наприклад, не можна назвати змінну int або if).
- Воно не може містити спеціальних символів, окрім _.
- Регістр має значення: Age і age — це різні змінні.
- Зазвичай використовують стиль camelCase: перша літера — мала, а кожне наступне слово починається з великої (userAge, maxScore).
Приклади дозволених імен:
#include <string>
int main() {
int x123 = 1;
std::string koteyka;
double PI = 3.14;
std::string MAIN_PATH = "c:/";
}
Приклади заборонених імен:
int 1first = 1; // імʼя не може починатися з цифри
int number# = 25; // символ # не можна використовувати в імені
std::string name" = "John"; // лапки в імені неприпустимі
double pi+e = 5.123'; // імʼя не може містити символ +
Про решту ви дізнаєтеся в наступних лекціях. А тепер запитання на логіку: за скільки кроків можна спіймати кота й посадити його в коробку?
5. Коти та коробки
Як спіймати кота:
- Візьміть порожню коробку.
- Чекайте.
Жарт 🙂
Ну, може, в коробку й можна посадити скільки завгодно котів, але у змінну можна покласти лише одне значення. Саме на цьому й будуть побудовані завдання наприкінці лекції.
6. Коротка історія C++
Щоб зрозуміти деякі речі в C++, варто трохи повернутися в минуле — до мови C.
Мова C зʼявилася на початку 1970-х років у Bell Labs. Її створив Денніс Рітчі. Це була компактна, швидка й дуже практична мова, яка давала змогу писати системні програми і навіть операційні системи. Вона надавала програмісту великий контроль над памʼяттю та будовою програми. Саме тому C стала фундаментом для величезної кількості технологій.
На початку 1980-х Бʼярн Страуструп вирішив розширити C і додати до неї нові можливості, насамперед підтримку класів. Спочатку мову назвали «C with Classes», а пізніше вона отримала назву C++. Ідея була простою: зберегти ефективність C, але зробити мову зручнішою для створення великих і складних програм.
Відтоді C++ розвивається майже 50 років. Її регулярно оновлюють, і кожна нова версія стандарту додає нові можливості. Сьогодні існують стандарти C++11, C++14, C++17, C++20, C++23 — і робота над наступними версіями вже триває. У результаті мова стала дуже потужною й багатогранною.
Проте в C++ нерідко є кілька способів зробити одне й те саме. Наприклад, навіть ініціалізувати змінну можна по-різному:
int a = 5;
int b(5);
int c{5};
Усі три варіанти коректні. Просто зʼявилися вони в різні періоди розвитку мови. Подібна ситуація і з рядками: є різні форми створення, різні способи обʼєднання, форматування та перетворення значень. Це наслідок тривалої еволюції мови.
Важливо розуміти: C++ не переписували заново кожні 10 років. Її обережно розширювали, зберігаючи сумісність зі старим кодом. Саме тому в ній накопичилося так багато можливостей.
Але це не означає, що нам потрібно вивчати все підряд. Ми використовуватимемо сучасні й актуальні стандарти — C++20 і C++23. Ми писатимемо код у сучасному стилі, обиратимемо безпечніші й зрозуміліші конструкції та поступово розбиратимемося в мові, не перевантажуючи себе історичними деталями.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ