Блоки стейтментів — це група стейтментів, які компілятор опрацьовує як одну інструкцію. Блок починається з символу {
і закінчується символом }
, стейтменти знаходяться всередині. Блоки можуть використовуватися в будь-якому місці, де дозволено використовувати один стейтмент. В кінці блоку стейтментів крапка з комою не ставиться.
Ви вже могли їх бачити при написанні функцій:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
int add(int x, int y) { // Початок блоку return x + y; } // Кінець блоку int main() { // Початок блоку // Декілька стейтментів int value(0); add(3, 4); return 0; } // Кінець блоку (без крапки з комою) |
Блоки можуть бути вкладені всередині інших блоків. Як ви можете бачити в прикладі вище, якщо умова істинна, то виконується тільки одна інструкція. Однак, оскільки блоки стейтментів можуть використовуватися скрізь, де може використовуватися один стейтмент, ми можемо використовувати вкладений блок інструкцій, щоб оператор if виконав декілька дій в випадку, якщо умова істинна!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
#include <iostream> int main() { std::cout << "Enter an integer: "; int value; std::cin >> value; if (value >= 0) { // Початок вкладеного блоку std::cout << value << " is a positive integer (or zero)" << std::endl; std::cout << "Double this number is " << value * 2 << std::endl; } // Кінець вкладеного блоку else { // Початок другого вкладеного блоку std::cout << value << " is a negative integer" << std::endl; std::cout << "The positive of this number is " << -value << std::endl; } // Кінець другого вкладеного блоку return 0; } |
Якщо ввести число 3, то програма виведе:
Enter an integer: 3
3 is a positive integer (or zero)
Double this number is 6
Якщо ввести число -4, то програма виведе:
Enter an integer: -4
-4 is a negative integer
The positive of this number is 4
Можна навіть розміщувати вкладені блоки всередині інших вкладених блоків:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <iostream> int main() { std::cout << "Enter an integer: "; int value; std::cin >> value; if (value > 0) { if ((value % 2) == 0) { std::cout << value << " is positive and even" << std::endl; } else { std::cout << value << " is positive and odd" << std::endl; } } return 0; } |
По факту, обмежень на кількість вкладених блоків немає. Однак, не рекомендується робити більше 3-х ступенів вкладеності (максимум 4). Якщо для вашої функції потрібна більша кількість ступенів вкладеності, то цю функцію краще розбити на декілька підфункцій!
Висновки
Блоки стейтментів дозволяють виконати відразу декілька стейтментів там, де можна використовувати лише один. Вони надзвичайно корисні, коли потрібно виконати відразу декілька інструкцій.