Ви вже вмієте виводити текст на екран. Але програми існують не лише для показу надписів — вони обробляють дані: рахують зарплати, аналізують інформацію, конвертують одиниці виміру. Для цього дані потрібно десь зберігати.
Уявіть, що оперативна пам'ять комп'ютера — це величезна шафа з ящиками різних розмірів. Перш ніж покласти щось у ящик, ви повинні вибрати правильний розмір: ви ж не будете наливати молоко в сірникову коробку або ховати велосипед у шухляду.
Тип даних (data type) — поняття, що визначає максимальний розмір (у байтах) та вид інформації, яка буде зберігатися.
Усі базові типи в C++ можна розділити на три групи:
Кожен тип даних займає певну кількість байтів. Один байт складається з 8 бітів (одиничок та нулів). Для зручності ми часто дивимося на пам'ять у шістнадцятковому (HEX) форматі.
Ціле число (int): займає 4 байти. Наприклад, число 10 у пам'яті:
Символ (char): займає 1 байт. Символ 'A' (код 65 або 0x41):
Логічний (bool): займає 1 байт. true зазвичай зберігається як 1:
Цілі числа — це числа без дробової частини: вік, кількість, рік, номер кімнати тощо.
| Тип | Розмір | Діапазон значень | Приклад використання |
|---|---|---|---|
short | 2 байти | від -32 768 до 32 767 | Короткі лічильники |
int | 4 байти | від -2 147 483 648 до 2 147 483 647 | Вік, кількість, більшість цілих чисел |
long | 4 байти | від -2 147 483 648 до 2 147 483 647 | Аналогічно int (на більшості платформ) |
long long | 8 байтів | від -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 | Дуже великі числа (населення планети) |
int — це стандартний тип для цілих чисел. short — якщо потрібна економія пам'яті, long long — якщо число може перевищити 2 мільярди.Дійсні числа — це числа з дробовою частиною: температура, вага, відстань, ціна тощо.
7.8, а не 7,8.| Тип | Розмір | Точність | Приклад використання |
|---|---|---|---|
float | 4 байти | ~7 значущих цифр (одинарна точність) | Швидкі обчислення, графіка |
double | 8 байтів | ~15 значущих цифр (подвійна точність) | Наукові обчислення, фінанси |
Що таке «точність»? Це кількість значущих цифр, які тип може зберегти. Наприклад, float зберігає приблизно 7 цифр: число 123456789.0 буде збережено як 123456792.0 — останні цифри «загубляться».
Для дуже великих або дуже малих чисел використовують експоненційну форму:
double weightAtom = 2.5194e+017;
// Це означає: 2.5194 × 10^17 = 251 940 000 000 000 000
| Запис | Розшифровка | Звичайний вигляд |
|---|---|---|
3.4E-008 | 3.4 × 10⁻⁸ | 0.000000034 |
-1.5E+003 | -1.5 × 10³ | -1500 |
2.5e+017 | 2.5 × 10¹⁷ | 250 000 000 000 000 000 |
| Тип | Розмір | Призначення |
|---|---|---|
char | 1 байт | Зберігання одного символу |
char symbol = 'A'; // Один символ — в одинарних лапках!
' ' — для одного символу (char).
Подвійні лапки " " — для рядка тексту (набору символів).char letter = 'A'; // ✅ Один символ
cout << "Hello"; // ✅ Рядок тексту
char wrong = "A"; // ❌ Помилка! Подвійні лапки для char
Escape-послідовність трактується компілятором як один символ і може бути записана в змінну типу char:
const char NEW_LINE = '\n';
cout << NEW_LINE; // Виведе порожній рядок
| Тип | Розмір | Можливі значення |
|---|---|---|
bool | 1 байт | true (істина) або false (хибність) |
bool isStudent = true;
bool hasDiploma = false;
Логічний тип використовується для зберігання результатів перевірок та умов. Детальніше ви познайомитеся з ним, коли вивчите розгалуження та цикли.
Тепер, коли ви знаєте, які бувають «ящики» (типи даних), розберемося, як їх створювати та використовувати.
Змінна (variable) — область оперативної пам'яті, що має власне ім'я і призначена для зберігання даних, які можуть бути змінені.
Аналогія: Змінна — як рюкзак з биркою. Ви можете покласти в нього книгу, а потім замінити книгу на ноутбук. Бирка (ім'я) залишається тією самою, а вміст змінюється.
Приклад: ваш вік — змінна. Сьогодні комусь 26, а через рік буде 27.
Константа (constant) — область оперативної пам'яті, що має власне ім'я і призначена для зберігання постійних даних. Її значення неможливо змінити після створення.
Аналогія: Константа — як табличка на двері з номером кімнати. Номер визначається один раз і ніколи не міняється.
Приклад: кількість днів у тижні — 7, кількість місяців у році — 12. Ці значення не змінюються.
Існує два способи створити змінну:
// Спосіб 2: Оголошення з ініціалізацією (рекомендовано)
int age = 25; // Створили змінну і одразу задали значення
::debugger-view{title="State: Initialization" :variables='[{"name": "age (uninitialized)", "type": "int", "value": " -858993460 (сміття)"}, {"name": "age (initialized)", "type": "int", "value": "25"}]'}
::
int age;), у ній буде випадкове число, яке визначається операційною системою. Завжди ініціалізуйте змінні при створенні!const int DAYS_IN_WEEK = 7;
const — ключове слово, що робить значення незміннимint — тип данихDAYS_IN_WEEK — ім'я константи= 7 — значенняconst int PI = 3;
PI = 4; // ❌ Помилка! Неможливо змінити константу
Знак = у C++ — це оператор присвоєння (assignment operator). Він записує значення з правого боку в змінну зліва:
int age;
age = 34; // Змінній age ПРИСВОЇТИ значення 34
Зверніть увагу: це не рівняння з математики! Зліва — куди записати, справа — що записати.
// Вивід значення змінної (без лапок!)
cout << age;
// Вивід кількох змінних
cout << age << height;
// Комбінування тексту та змінних
cout << "Вік: " << age << ", Зріст: " << height << "\n";
cout << "age", на екрані з'явиться текст age, а не значення змінної.Ім'я змінної (ідентифікатор) — це бирка, за якою ви знаходите дані в пам'яті. Є обов'язкові правила, яких неможливо порушити:
🔤 Тільки латиниця
age та Age — це дві різні змінні.🔢 Цифри, але не першим
name1 — допустимо, 1name — ні.➖ Знак підкреслення
_ використовується замість пробілу: ageOfMan або age_of_man замість Age of Man. Пробіли в іменах заборонені.🚫 Не ключові слова
int, float, return, if тощо. Visual Studio підсвічує їх синім кольором.⚠️ Унікальні імена
💡 Інтуїтивні назви
studentAge зрозуміліше, ніж x або a1.int a = 34; — що таке a? Незрозуміло.int ageofman = 34; — важко читати.int ageOfMan = 34; — зрозуміло та зручно (camelCase).Розробимо програму, що обчислює кількість годин у 2000 році (366 днів × 24 години).
Алгоритм:
#include <iostream>
using namespace std;
int main()
{
// Оголошуємо константи
const int DAYS_IN_2000 = 366;
const int HOURS_IN_DAY = 24;
// Оголошуємо змінну для результату
int hoursInYear;
// Обчислюємо
hoursInYear = DAYS_IN_2000 * HOURS_IN_DAY;
// Виводимо результат
cout << "\t\t In 2000 year " << hoursInYear;
cout << " hours\n";
return 0;
}
Розберемо ключові рядки:
* — знак множення в C++ (комбінація Shift + 8)366 × 24 = 8784 та зберігаємо результат в hoursInYear| Name | Type | Value |
|---|---|---|
| ◢DAYS_IN_2000 | const int | 366 |
| ◢HOURS_IN_DAY | const int | 24 |
| ◢hoursInYear | int | 8784 |
Напишемо програму, яка обчислює вартість покупки зі знижкою.
#include <iostream>
using namespace std;
int main()
{
// Оголошуємо змінні
float discount = 0.05; // Знижка 5%
float cost = 10.50; // Ціна одиниці товару
int count = 5; // Кількість
float price; // Підсумкова вартість
// Обчислюємо вартість зі знижкою
price = count * cost - count * cost * discount;
// Виводимо результат
cout << "Please, pay: " << price << "\n";
return 0;
}
float — використовуємо тип з рухомою точкою, бо знижка — дробове числоint — кількість товару завжди ціле числоповна_вартість - знижка, де знижка = кількість × ціна × відсоток// Логічна змінна
bool flag;
flag = true;
// Символьна змінна — один символ у одинарних лапках
char symbol = 'A';
// Escape-послідовність як символ
const char NEW_LINE = '\n';
cout << NEW_LINE; // Виведе порожній рядок
Літерали (literals) — це фіксовані значення, записані безпосередньо в коді програми. На відміну від змінних, літерали не мають імені і не можуть бути змінені.
| Літерал | Тип | Пояснення |
|---|---|---|
5 | int | Цілочисельний літерал |
5l або 5L | long | Суфікс l/L означає long |
true / false | bool | Логічні літерали |
5.0 | double | Дійсний літерал (за замовчуванням double) |
5.0f або 5.0F | float | Суфікс f/F означає float |
0.3e-2 | double | Експоненційна форма |
'd' | char | Символьний літерал |
"Visual" | рядок | Рядковий літерал |
cout << "abrakadabra" << '\n'; // "abrakadabra" — рядковий, '\n' — символьний
int a = 2; // 2 — літерал типу int
float pi = 3.14f; // 3.14f — літерал типу float
"int return void" — це просто текст.int age = 25; // ✅ Правильно
int Age = 30; // ✅ Це ІНША змінна!
int AGE = 35; // ✅ І це теж інша змінна!
int number; // ✅ Тип int — з малої літери
int Number; // ✅ Змінна Number
Int number2; // ❌ ПОМИЛКА! "Int" — не існує, правильно "int"
int, float, double, char, bool — усі ключові слова пишуться малими літерами.Для кожного значення визначте найбільш підходящий тип даних C++:
Знайдіть та виправте помилки в наступних оголошеннях:
int 1number = 10;
float my value = 3.14;
const int MAX;
Int count = 5;
char letter = "B";
Дана діагональ телевізора в дюймах. Написати програму, що визначає діагональ у сантиметрах (1 дюйм = 2.54 см).
Приклад:
Використовуйте константу для коефіцієнта перетворення.
Ємність акумулятора смартфона становить N мАг. Написати програму, що визначає мінімальну ємність повербанка, якщо необхідно забезпечити 3 повних заряди.
Приклад:
Створіть програму, яка переводить задану кількість секунд у формат «години:хвилини:секунди».
Підказка: Використовуйте оператори ділення / та остачі від ділення %.
Приклад:
📌 Типи даних
int — цілі числа, float/double — дійсні, char — один символ, bool — логічне значення. Тип визначає розмір пам'яті та допустимі операції.📌 Змінні та константи
const) — фіксоване значення, задане при створенні. Завжди ініціалізуйте змінні!📌 Правила іменування
_. Ключові слова заборонені. C++ чутливий до регістру.Вивід даних на екран
Оператор cout для виведення інформації у консоль. Escape-послідовності для форматування тексту, raw-рядки C++11 та особливості роботи з кирилицею в Windows.
Ввід даних з клавіатури
Оператор cin для зчитування даних з клавіатури. Інтерактивні програми з введенням та виведенням, арифметичні оператори та практичні приклади.