В программировании, бывают ситуации, когда нам нужно проверить некоторые условия и соответственно, если условие истинно или ложно, то нам приходится выполнить другой блок операторов.
Другими словами, при программировании нам необходимо позаботиться о принятии решений. В этой статье мы рассмотрим конструкции принятия решений в C++.
Принятие решений в C++
Как и другие языки программирования, C++ также имеет различные конструкции принятия решений, которые помогают в этом программисту, в результате чего программист может принимать правильные решения и выполнять соответствующий блок операторов для достижения желаемых результатов.
Далее мы обсудим важные конструкции принятия решений, присутствующие в C++.
Оператор If
Общий синтаксис оператора If (если) приведен ниже:
1 2 3 4 |
if(condition) { statement _block; } |
Это основная конструкция принятия решений. Условие внутри конструкции if оценивается. Если это правда, выполняется блок операторов внутри фигурных скобок, следующий за оператором «если».
Если условие ложно, то блок операторов пропускается и управление передается операторам, следующим за блоком if.
Блок-схема оператора if приведена ниже:
Вот пример для демонстрации конструкции решения «если»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> #include <string> using namespace std; int main() { int num; cout<<"Enter number between 1 and 10:"; cin>>num; if(num>=1 && num<=10) { cout<<"\nYou have entered correct number"; return 0; } cout<<"\nNumber not between 1 and 10"; } |
Вывод данных:
Введите число от 1 до 10
Вы ввели правильный номер
В приведенной выше программе мы используем конструкцию if, чтобы определить, находится ли введенное число в диапазоне от 1 до 10.
Оператор if-else
Иногда возникает ситуация, когда мы хотим выполнить один блок операторов, если условие истинно, а другой блок операторов — если условие ложно. В такой ситуации мы используем конструкцию If-else.
Общий синтаксис для If-else приведен ниже:
1 2 3 4 5 6 7 8 |
if(condition) { statement _block; } else { statement _block; } |
Если условие истинно, то выполняется блок операторов, следующий за условием «если». Если условие ложно, то выполняется блок операторов, следующий за оператором else.
Блок-схема конструкции if-else показана ниже:
Чтобы понять работу оператора if-else, давайте рассмотрим следующий пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <iostream> #include <string> using namespace std; int main() { char mychar = 'S'; if(mychar == 'S') cout<<"\nCharacter is 'S'"; else cout<<"\nCharacter is not 'S'"; } |
Вывод данных:
Символ «S»
В этой программе мы проверим, является ли символ «S» правильным, и, соответственно, напечатаем сообщение.
Оператор else if
В этой конструкции у нас есть несколько условий, а также вариантов. Если условие истинно, то выполняется блок операторов, следующий за оператором if. Если условие ложно, то другое, если условие проверено.
В зависимости от того, является ли условие истинным или ложным, проверяется блок операторов или другое условие. Это показано в общем синтаксисе этой конструкции ниже:
1 2 3 4 5 6 7 8 |
if(condition) { statement-block1; }else if(condition) { statement-block2; } else if(condition) { statement-block3; } else default-statement; |
Как показано выше, в части else первого оператора if есть несколько операторов if. Последний уровень конструкции — оператор else, который выполняет оператор по умолчанию.
Блок-схема оператора Else if:
Давайте посмотрим пример этой конструкции:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <string> using namespace std; int main() { int num; cout<<"To check if input number is positive or negative"<<endl; cout<<"Enter the number: "; cin>>num; if(num==0) { cout<<"The number entered is 0"<<endl; } else if(num < 0) {cout<<"The number is negative"<<endl;} else {cout<<"The number is positive"<<endl;} return 0; } |
Вывод данных:
Чтобы проверить, является ли введенное число положительным или отрицательным
Введите число: 7
Число положительное
В коде, показанном выше, мы используем конструкцию else-if. Здесь мы проверяем, является ли введенное число нулем, отрицательным или положительным. Для этого мы используем конструкцию if-else if-else.
Вложенный оператор if
Под термином «вложенное если» мы подразумеваем одно или несколько операторов «если» внутри другого оператора «если». У нас может быть любая форма оператора if, например, простое if, if-else, else-if или другое вложенное if в зависимости от наших требований.
Ниже приведен общий синтаксис вложенного if:
1 2 3 4 5 6 7 8 9 10 11 12 |
if(condition) { if(condition) { Statement_block; } else{ Statement_block;} } else {Statement_block;} |
Блок-схема вложенного оператора If:
Давайте посмотрим пример, демонстрирующий работу вложенного оператора if:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <iostream> #include <string> using namespace std; int main() { int num=10; if(num>0) { if(num==10) cout<<"Number = 10"<<endl; else if(num > 10) cout<<"Number is greater than 10"<<endl; else if(num < 10) cout<<"Number is less than 10"<<endl; } else cout<<"Number is negative"<<endl; return 0; } |
Вывод данных:
Число = 10
Оператор switch
По мере того, как наши программы становятся все более сложными, мы имеем тенденцию иметь все больше и больше условий для проверки, и если мы все еще используем операторы «если», а их будет много этих операторов «если», с которыми будет трудно работать, и, таким образом, наша программа станет нечитаемой.
Чтобы избежать этого, у нас есть новая конструкция под названием switch «оператор переключения», которая позволит нам проверять условие и иметь несколько вариантов/случаев, которые могут изменить поток выполнения.
Оператор switch оценивает условное выражение, а затем сопоставляет значение этого выражения с каждым случаем. Когда значение выражения соответствует оператору case, выполняется код этого оператора.
Общий синтаксис оператора switch приведен ниже:
1 2 3 4 5 6 7 8 9 10 11 |
switch(constant_expression){ case 1: {statement_block; break;} case 2: {statement_block; break;} .. case n: {statement_block; break;} default: {statement_block; break;} } |
Как показано в приведенном выше синтаксисе, условное выражение переключения должно быть таким, которое возвращает постоянное значение. Выражения, оценивающие значения переменных, недействительны. У нас есть n случаев для оператора switch и случай по умолчанию. Обратите внимание, что случай по умолчанию будет выполнен, если выражение не соответствует ни одному из предоставленных случаев.
Случай по умолчанию является необязательным. В случае, если регистр по умолчанию отсутствует, переключатель отключится, если не будет совпадения регистра.
Оператор break «перерыв»; также является необязательным. Оператор break используется для выхода из оператора. В случае, если оператор break не указан, после того, как будет найдено совпадение для case, будут выполняться и другие последующие case.
Блок-схема оператора Switch приведена ниже:
Ниже приведен пример программы для оператора Switch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#include <iostream> #include <string> using namespace std; int main() { char mychar; cout<<"Enter an uppercase vowel character:"; cin>>mychar; switch(mychar) { case 'A': {cout<<"Character entered is A"<<endl;break;} case 'E':{cout<<"Character entered is E"<<endl;break;} case 'I':{cout<<"Character entered is I"<<endl;break;} case 'O':{cout<<"Character entered is O"<<endl;break;} case 'U':{cout<<"Character entered is U"<<endl;break;} default:{cout<<"Vowel was not entered"<<endl;} } return 0; } |
Вывод данных:
Введите заглавную гласную букву: U
Введенный символ: U
В приведенной выше программе мы проверяем, является ли введенный символ английской гласной. Для этого мы указали регистры гласных и регистр по умолчанию, если вводится символ, отличный от гласного.
Оператор goto
Мы используем оператор goto всякий раз, когда нам нужно перейти к другой части кода из одной точки. Здесь мы помечаем конкретный оператор, а затем, используя «метку перехода», переходим к этому конкретному оператору.
Общий синтаксис оператора goto:
1 2 3 4 5 6 |
goto label; …. …. label: statement_block; …. …. |
Блок-схема оператора Goto показана ниже:
Оператор goto позволяет нам перейти к любой части программы. Однако использование «goto» считается плохой практикой программирования, и мы должны избегать его, насколько это возможно.
Основная причина заключается в том, что переход к другим частям кода с помощью оператора «goto» может сделать нашу программу более сложной и нечитаемой. Вместо этого мы можем писать гораздо более эффективные программы, используя операторы break и continue.
Вот пример работы оператора «goto»:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
#include <iostream> #include <string> using namespace std; int main() { int num = 5; if(num>0) { cout<<"Number is greater than 0"<<endl; if (num <= 5) goto labelfive; else if (num >5) cout<<"Number is greater than 5 too"<<endl; } labelfive: if(num == 5) cout<<"Number is equal to 5"<<endl; else if(num < 5) cout<<"Number is less than 5"<<endl; return 0; } |
Вывод данных:
Число больше 0
Число равно 5
В приведенной выше программе мы используем оператор «goto». Мы проверяем, меньше ли число 5 или равно ему, и если да, то переходим к метке с именем «labelfive».
Итог
Мы подошли к концу этой непростой статьи по конструкциям принятия решений в C++. Как уже говорилось, эти конструкции принятия решений позволяют нам выполнять код по нашему выбору.
В нашем следующем уроке мы подробно обсудим циклы в C++. Циклы в C++ используются для многократного выполнения кода. Мы также обсудим операторы break и continue и их использование с примерами.
С Уважением, МониторБанк