C++

Типи даних, змінні та константи

Фундаментальні концепції зберігання інформації в C++: числові, символьні та логічні типи даних, оголошення змінних і констант, правила іменування, оператор присвоєння та літерали.

Навіщо потрібні типи даних?

Ви вже вмієте виводити текст на екран. Але програми існують не лише для показу надписів — вони обробляють дані: рахують зарплати, аналізують інформацію, конвертують одиниці виміру. Для цього дані потрібно десь зберігати.

Уявіть, що оперативна пам'ять комп'ютера — це величезна шафа з ящиками різних розмірів. Перш ніж покласти щось у ящик, ви повинні вибрати правильний розмір: ви ж не будете наливати молоко в сірникову коробку або ховати велосипед у шухляду.

Тип даних (data type) — поняття, що визначає максимальний розмір (у байтах) та вид інформації, яка буде зберігатися.

C++ є строго типізованою мовою. Це означає, що для кожної змінної потрібно чітко вказати її тип. Компілятор перевірить, чи ви не намагаєтесь покласти «велосипед у шухляду».

Класифікація типів даних

Усі базові типи в C++ можна розділити на три групи:

Loading diagram...
graph TD
    A["Типи даних C++"] --> B["Числові"]
    A --> C["Символьний"]
    A --> D["Логічний"]

    B --> B1["Цілі числа"]
    B --> B2["Дійсні числа"]

    B1 --> B1a["int — 4 байти"]
    B1 --> B1b["short — 2 байти"]
    B1 --> B1c["long — 4 байти"]
    B1 --> B1d["long long — 8 байтів"]

    B2 --> B2a["float — 4 байти"]
    B2 --> B2b["double — 8 байтів"]

    C --> C1["char — 1 байт"]
    D --> D1["bool — 1 байт"]

    style A fill:#3b82f6,stroke:#1d4ed8,color:#ffffff
    style B fill:#f59e0b,stroke:#b45309,color:#ffffff
    style C fill:#f59e0b,stroke:#b45309,color:#ffffff
    style D fill:#f59e0b,stroke:#b45309,color:#ffffff
    style B1 fill:#64748b,stroke:#334155,color:#ffffff
    style B2 fill:#64748b,stroke:#334155,color:#ffffff

Числові типи

Цілі числа (integer types)

Цілі числа — це числа без дробової частини: вік, кількість, рік, номер кімнати тощо.

ТипРозмірДіапазон значеньПриклад використання
short2 байтивід -32 768 до 32 767Короткі лічильники
int4 байтивід -2 147 483 648 до 2 147 483 647Вік, кількість, більшість цілих чисел
long4 байтивід -2 147 483 648 до 2 147 483 647Аналогічно int (на більшості платформ)
long long8 байтіввід -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807Дуже великі числа (населення планети)
Який тип обрати? У більшості випадків використовуйте int — це стандартний тип для цілих чисел. short — якщо потрібна економія пам'яті, long long — якщо число може перевищити 2 мільярди.

Дійсні числа (floating-point types)

Дійсні числа — це числа з дробовою частиною: температура, вага, відстань, ціна тощо.

Важливо: В C++ для відокремлення дробової частини використовується точка, а не кома! Наприклад, 7.8, а не 7,8.
ТипРозмірТочністьПриклад використання
float4 байти~7 значущих цифр (одинарна точність)Швидкі обчислення, графіка
double8 байтів~15 значущих цифр (подвійна точність)Наукові обчислення, фінанси

Що таке «точність»? Це кількість значущих цифр, які тип може зберегти. Наприклад, float зберігає приблизно 7 цифр: число 123456789.0 буде збережено як 123456792.0 — останні цифри «загубляться».

Експоненційний запис

Для дуже великих або дуже малих чисел використовують експоненційну форму:

double weightAtom = 2.5194e+017;
// Це означає: 2.5194 × 10^17 = 251 940 000 000 000 000
ЗаписРозшифровкаЗвичайний вигляд
3.4E-0083.4 × 10⁻⁸0.000000034
-1.5E+003-1.5 × 10³-1500
2.5e+0172.5 × 10¹⁷250 000 000 000 000 000

Символьний тип

ТипРозмірПризначення
char1 байтЗберігання одного символу
char symbol = 'A';  // Один символ — в одинарних лапках!
Одинарні лапки ' ' — для одного символу (char). Подвійні лапки " " — для рядка тексту (набору символів).
char letter = 'A';            // ✅ Один символ
cout << "Hello";              // ✅ Рядок тексту
char wrong = "A";             // ❌ Помилка! Подвійні лапки для char

Escape-послідовність трактується компілятором як один символ і може бути записана в змінну типу char:

const char NEW_LINE = '\n';
cout << NEW_LINE; // Виведе порожній рядок

Логічний тип

ТипРозмірМожливі значення
bool1 байтtrue (істина) або false (хибність)
bool isStudent = true;
bool hasDiploma = false;

Логічний тип використовується для зберігання результатів перевірок та умов. Детальніше ви познайомитеся з ним, коли вивчите розгалуження та цикли.

Змінні та константи

Тепер, коли ви знаєте, які бувають «ящики» (типи даних), розберемося, як їх створювати та використовувати.

Змінна (variable) — область оперативної пам'яті, що має власне ім'я і призначена для зберігання даних, які можуть бути змінені.

Аналогія: Змінна — як рюкзак з биркою. Ви можете покласти в нього книгу, а потім замінити книгу на ноутбук. Бирка (ім'я) залишається тією самою, а вміст змінюється.

Приклад: ваш вік — змінна. Сьогодні комусь 26, а через рік буде 27.

Оголошення змінних

Існує два способи створити змінну:

// Спосіб 1: Оголошення без початкового значення
int age;         // Створили змінну, але всередині — випадкове число!

// Спосіб 2: Оголошення з ініціалізацією (рекомендовано)
int age = 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, а не значення змінної.

Правила іменування

Ім'я змінної (ідентифікатор) — це бирка, за якою ви знаходите дані в пам'яті. Є обов'язкові правила, яких неможливо порушити:

🔤 Тільки латиниця

Великі та малі літери латинського алфавіту. C++ чутливий до регістру: 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 році?

Розробимо програму, що обчислює кількість годин у 2000 році (366 днів × 24 години).

Алгоритм:

  1. Оголосити константи: кількість днів та годин у добі
  2. Обчислити результат
  3. Вивести на екран
HoursInYear.cpp
#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;
}

Розберемо ключові рядки:

  • Рядок 8–9: Створюємо константи — значення, що не зміняться в програмі. Оператор * — знак множення в C++ (комбінація Shift + 8)
  • Рядок 12: Оголошуємо змінну без початкового значення — ми заповнимо її на наступному кроці
  • Рядок 15: Обчислюємо: 366 × 24 = 8784 та зберігаємо результат в hoursInYear
  • Рядок 18: Виводимо текст в лапках та значення змінної без лапок

Результат:

         In 2000 year 8784 hours

Практичний приклад: Розрахунок покупки

Напишемо програму, яка обчислює вартість покупки зі знижкою.

Purchase.cpp
#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;
}
  • Рядок 8: float — використовуємо тип з рухомою точкою, бо знижка — дробове число
  • Рядок 10: int — кількість товару завжди ціле число
  • Рядок 14: Формула: повна_вартість - знижка, де знижка = кількість × ціна × відсоток

Результат:

Please, pay: 49.875

Символьні та логічні змінні

// Логічна змінна
bool flag;
flag = true;

// Символьна змінна — один символ у одинарних лапках
char symbol = 'A';

// Escape-послідовність як символ
const char NEW_LINE = '\n';
cout << NEW_LINE; // Виведе порожній рядок

Літерали

Літерали (literals) — це фіксовані значення, записані безпосередньо в коді програми. На відміну від змінних, літерали не мають імені і не можуть бути змінені.

ЛітералТипПояснення
5intЦілочисельний літерал
5l або 5LlongСуфікс l/L означає long
true / falseboolЛогічні літерали
5.0doubleДійсний літерал (за замовчуванням double)
5.0f або 5.0FfloatСуфікс f/F означає float
0.3e-2doubleЕкспоненційна форма
'd'charСимвольний літерал
"Visual"рядокРядковий літерал
cout << "abrakadabra" << '\n';  // "abrakadabra" — рядковий, '\n' — символьний
int a = 2;                       // 2 — літерал типу int
float pi = 3.14f;               // 3.14f — літерал типу float
Рядковий літерал — це набір символів у подвійних лапках. Компілятор не обробляє його вміст як команди, навіть якщо всередині є ключові слова: "int return void" — це просто текст.

Чутливість до регістру

Критично важливо: C++ чутливий до регістру (case-sensitive). Великі та малі літери — це різні символи!
int age = 25;   // ✅ Правильно
int Age = 30;   // ✅ Це ІНША змінна!
int AGE = 35;   // ✅ І це теж інша змінна!

int number;     // ✅ Тип int — з малої літери
int Number;     // ✅ Змінна Number
Int number2;    // ❌ ПОМИЛКА! "Int" — не існує, правильно "int"
Запам'ятайте: int, float, double, char, bool — усі ключові слова пишуться малими літерами.

Практичні завдання

Рівень 1 — Базовий

Рівень 2 — Логічний

Рівень 3 — Творчий

Підсумок

📌 Типи даних

int — цілі числа, float/double — дійсні, char — один символ, bool — логічне значення. Тип визначає розмір пам'яті та допустимі операції.

📌 Змінні та константи

Змінна — значення може змінюватися. Константа (const) — фіксоване значення, задане при створенні. Завжди ініціалізуйте змінні!

📌 Правила іменування

Тільки латиниця, цифри (не першим символом) та _. Ключові слова заборонені. C++ чутливий до регістру.
Copyright © 2026