Вкладені оператори вибору, цикли
В реальному житті ми часто зустрічаємося із ситуаціями коли речі знаходяться в середині інших речей. Наприклад, ліжко знаходиться в кімнаті, кімната у в місті і так далі. Подібні ситуації зустрічаються в мовах програмування. І не виняток.
Ви можете помістити цикл в оператор вибору який в свою чергу може бути ще в одному операторі вибору Таких прикладів можна навести дуже багато.
Обмежень по вкладених операторах не має. Ви можете помістити хоч десять операторів один в одного. Але так робити не бажано.
Також ви можете поміщати декілька операторів в один.
Оператор вважається вкладеним, якщо він знаходиться у фігурних дужках що належать іншому оператору.
#include <iostream>
int main()
{
int a;
for(int i = 0; i < 3; i++)
{//початок "for"
//наступні оператори будуть вкладені
//у цикл "for"
std::cout << "**** for ****" << std::endl;
std::cout << "input a: ";
std::cin >> a;
//оператор "if" є вкладений у цикл "for"
//бо знаходиться в середині його фігурних дужок
if(a > 0)
{
std::cout << "**** if(a > 0) ****" << std::endl;
//даний оператор "if" знаходиться
//в середині іншого "if", тому
//він також є вкладеним
if(a > 10)
{
std::cout << "**** if(a > 10) ****" << std::endl;
}
}
}//кінець "for"
return 0;
}
Коли програма працює з вкладеними операторами, то на справді не відбувається нічого надзвичайного. Вона поступово виконує дії від зовнішнього до внутрішнього оператора. Звісно, якщо вони мають виконатися за умовою. Якщо ж вийде так, що на одному з етапів не виконається умова, то оператори які є вкладені в середину теж не виконаються.
Для прикладу в попередній програмі ви можете це побачити, якщо в якості змінної вкажете від’ємне число. Тоді, змінна не пройде перевірку першого і відповідно програма не виконає дії цього оператора вибору.
Якщо ви вкладаєте цикли один в одного, то внутрішній цикл буде повторюватися певну кількість разів. Ця кількість буде залежати від кількості ітерацій зовнішнього циклу.
#include <iostream>
int main()
{
//це є зовнішній цикл "for"
for(int i = 0; i < 3; i++)
{
//демонструємо виконання дій зовнішнього циклу
//дії зовнішнього циклу виконуються "3" рази
//бо ми маємо "i < 3"
std::cout << "i = " << i << std::endl << std::endl;
//це є внутрішній цикл "for"
for(int j = 0; j < 2; j++)
{
//демонструємо виконання дій внутрішнього циклу
//дії внутрішнього циклу виконуються "2" рази
//бо ми маємо "j < 2"
std::cout << "j = " << j << std::endl;
}
std::cout << std::endl;
}
return 0;
}
Працюючи із вкладеними операторами можна користуватися скороченим записом.
Коли ви хочете якусь дію в оператор, то потрібно їх записувати між фігурних дужок. Але, якщо ви маєте лише одну дію, то фігурні дужки можна не записувати.
Важливо! Якщо ви не записуєте у фігурних дужках, то лише одна ДІЯ вважається вкладеною. Багато хто помилково вважає, що одна СТРІЧКА КОДУ але це не так.
Пам’ятаємо, що кожна дія завершується
#include <iostream>
int main()
{
//скорочений запис вкладених одній
//ми не записуємо фігурних дужок після "for"
//тому перша дія буде вкладеною
for(int i = 0; i < 2; i++)
std::cout << "i = " << i << std::endl;
//зверніть увагу. вивід інформації
//ми записали в одній стрічці
//але вкладеною буде дія
//std::cout << "string 1\n";
//відповідно, оскільки умова "2 > 3" є
//не правильною, то вкладені дії
//не мають виконатися
if(2 > 3)
std::cout << "string 1\n"; std::cout << "string 2\n";
return 0;
}
Якщо ви вкладаєте єдиний оператор вибору або цикл, то також можна користуватися скороченим записом. При цьому дій у вкладеному операторі може бути більше чим одна (звісно якщо, вони записані у фігурних дужках).
#include <iostream>
int main()
{
//ми можемо вкласти за скороченим записом
//цикли або оператори вибору. при цьому
//у вкладених операторах може бути
//декілька дій. але у такому випадку вони
//мають бути у фігурних дужках
//якщо дія буде єдиною, то ви без
//проблем можете використовувати ще раз
//скорочений запис
for(int i = 0; i < 3; i++)
for(int j = 0; j < 2; j++)
{
std::cout << "string 1\n";
std::cout << "string 2\n";
std::cout << "string 3\n\n";
}
return 0;
}
Оператори вибору та вважаються однією дією. Тому, вони вважаються однією дією.
#include <iostream>
int main()
{
int a;
std::cout << "input number: ";
std::cin >> a;
//зовнішнім оператором вибору є
//if(a % 2 == 0)
if(a % 2 == 0)
//це є внутрішній оператор вибору
//пам'ятаємо, що умови
//if - else if - else
//вважаються однією дією
//тому ми можемо використовувати
//скорочений запис
if(a < 0)
//також ми використовуємо
//скорочений запис і у внутрішніх
//операторах
std::cout << "a < 0 and a%2 == 0" << std::endl;
else if(a == 0)
std::cout << "a == 0" << std::endl;
else if(a > 0)
std::cout << "a > 0 and a%2 == 0" << std::endl;
return 0;
}