До этого урока, изучая основы программирования для начинающих, мы с вами писали очень простые и скучноватые программы, которые как-то работали, что-то делали, но были абсолютно лишены способности выбирать, как им развиваться. Такие программы называются линейными. Они были, как трамваи: если путь прегражден – стоп. Ни в право, ни влево не свернёшь.
Теперь же, хочу всех немного обрадовать – наши программы с сегодняшнего дня будут намного интересней. Мы научимся применять в нашем коде операторы логического выбора if іelse і програми придбають якусь інтригу, зможуть “думать”, анализировать и решать, как поступить и какой “дорогой” пойти. То есть теперь программа – це вже не трамвай, а Ваш автомобіль ))) Якщо дорогу перегородили, ви легко можете об'їхати перешкоду і визначитися, куда ехать дальше.
Перед тем, как приступить к изучению этой темы, вам уже надо хорошо знать, що такелогические операции. Так что, если кто не уверен, уделите немного времени и прочитайте о них статью.
Ну що ж – приступим к нашим операторам выбора (они же условные операторы, они же операторы ветвления). Мы рассмотрим несколько простых примеров, які допоможуть вам познайомитися з цими операторами і застосовувати їх в подальшому вже в більш складних програмах.
Приклад: Пользователь вводит два числа и программа определяет какое их этих двух чисел большее.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); int variable1 = 0; int variable2 = 0; cout << "Введите первое число: "; cin >> variable1; cout << "Введите второе число: "; cin >> variable2; // сравниваем полученные значения // если первое число больше второго - выводим сообщение // если это будет не так, код в фигурных скобках не выполнится // и программа перейдет к проверке второго условия if if (variable1 > variable2) { cout << "\nРезультат сравнения: Первое число больше чем второе\n"; } // если и это условие не выполняется - переход к следующему if if (variable1 < variable2) { cout << "\nРезультат сравнения: Второе число больше чем первое\n"; } // проверяем значения на равенство. Не забывайте об операторе == // если написать variable1 = variable2, то значение // variable2 запишется в переменную variable1 if (variable1 == variable2) { cout << "\nРезультат сравнения: Числа равны\n"; } return 0; } |
До 14-й строки все понятно – пользователь ввел два числа, они записались в соответствующие переменные. Як же їх тепер порівняти і показати результат порівняння? Для цього ми застосуємо оператор if (переводится -ЕСЛИ). Пишем if, далее в круглых скобках () записываем условие – порівняння значень змінних(variable1 > variable2).
И если variable1 действительно больше variable2 – ця умова поверне true (истину). Тогда выполнение программы перейдет к коду, который размещен внутри фигурных скобок {} – строки 21 – 23. То есть на экране мы увидим сообщение, о том что первое число больше второго.
Якщо ж умова в круглих дужках() не виконується (возвращает false (неправда)), то код в фигурных скобках {} буде проігнорований і виконання програми продовжиться з наступного рядка коду під блоком if – со строки 26. Там ми знову перевіряємо відношення змінних між собою.
Все аналогично – якщо умова істинна – выполнится код этого блока if, если ложно – переход ниже. В рядку 33 проверка последнего возможного варианта – перевірка на рівність. Обов'язково застосовуємо оператор == (равно), а не = (присвоить). Інакше код цього блоку if буде працювати з помилкою. Наприкладvariable1 = 3, а variable2 = 4 , то если мы ошибочно запишем в условии if(variable1 = variable2) , значение 4 запишется в variable1.
отримуємоif(4) . А любое значение отличное от 0, как вы помните, компилятор воспринимает как true . В итоге этот блок выполнится и мы увидим сообщение о том, что значения равны, хотя это изначально было не так. Будьте уважні.
Этот код можно значительно сократить. Во-первых, можна додати оператор else (посмотрим ниже). Во вторых – если блоки if или else содержат только одну строку кода в фигурных скобках {} , то эти фигурные скобки можно не писать. Посмотрим, как изменится наш код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); int variable1 = 0; int variable2 = 0; cout << "Введите первое число: "; cin >> variable1; cout << "Введите второе число: "; cin >> variable2; if (variable1 > variable2) // как и в первом примере cout << "\nРезультат сравнения: Первое число больше чем второе\n"; else if (variable1 < variable2) // иначе если variable1 < variable2 cout << "\nРезультат сравнения: Второе число больше чем первое\n"; else // иначе cout << "\nРезультат сравнения: Числа равны\n"; return 0; } |
Вы видите, что фигурные скобки в этом примере мы уже не используем. Еще один плюс – если первое условие if выполняется, то остальные блоки if else і else, уже не проверяются (т.е. время на выполнение программы сокращается). Ну а якщо перша умова брехливо, программа идет в следующий блок else if (иначе если), и проверяет его условие – (variable1 < variable2) – рядок 18. Если и тут ложь, то выполнится последний блок else, в котором условие можно уже не проверять, так как мы до этого перебрали все возможные варианты отношения двух значений и остается только их равенство.
Результат работы этих программ одинаков. Но во втором случае и код компактней и работы компилятору меньше.
Основное, что важно запомнить:
- синтаксис if:
- синтаксис if else:
или если необходимо больше условий:
- конструкція блоківif else – неразрывна. Если она встречается в коде, її не можна розділяти стороннім кодом. Наприклад :
- принцип работы оператора выбора if – если условие в круглых скобках истина (true), то код блока выполнится. Если ложь (false) – игнорируется и выполнение программы начинается со строки кода, Наступного під блоком if.
- умова оператора вибору в круглих дужках може бути звичайним: if(variable > 0) або комбінованим: if(variable > 0 && variable < 100). Комбіноване умова повернеtrue, якщо обидва умови будуть вірними.
- условие оператора выбора может быть арифметическим выражением: if(variable1 – variable2). код блоку if выполнится, если результат вычисления не будет равен 0. Наприклад: if (5 – 7), if (2 + 5). А ось якщо if (2 -2) – код блока будет проигнорирован.
- если блоки if , else if или else містять тільки один рядок коду, фигурные скобки можно не использовать. Но для новичков, пока вы учитесь, рекомендую использовать фигурные скобки всегда.
Мабуть і все про умовні операторахif іelse. Тут есть практика программирования по цій темі.
По возможности, посмотрите это видео. У ньому розглянуті умовні операториif іelse
А теми стають все складніше… зате тепер є розгалуження в рішенні поставлених завдань… цікаво буде подивитися які будуть завдання.
вже є завдання :)
Чи можна робити так?
if(*умова *)
{
*код *
}
if(*іншу умову *)
{
*код *
}
Можна і так, тільки це буде один оператор if, а за ним слід незалежний другий оператор if … тільки розділити їх тоді потрібно ;
Але ви повинні добре розуміти що робите:
if( ( x = 5 ) > 2 ) { /*операторы №1*/ };
if( x > 4 ) { /*операторы №2*/ };
Тут виконуватися обидві групи операторів: №1 і №2.
А якщо ви хочете виключають гілки, то вам потрібен if … else if … , який описаний вище, або оператор case.
ти шахидка
звідки ж вас таких грамотіїв народжують? … спьяну?
а якщо в умовах стоятимуть =; ==, який код виконається в цьому випадку?
ой, неправильно відправлено повідомлення. я мав на увазі більше-одно, менше-одно, равно
Чи припустимо такий вираз int name_student = ivan; ?
якщо ivan – це інша змінна а). того ж целочисленного типу і б). оголошена раніше і в). їй присвоєно якесь числове значення … то так, таке буде допустимо.
Але я припускаю, що це зовсім не те, що ви мали на увазі… А для того, щоб name_student містило саме имя студента, вам потрібно name_student оголосити з типом рядок символів. Ось так:
char name_student[] = "ivan";
Или так:
string name_student( "ivan" );
Привіт ось така проблема.
#include
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “rus”);
int number1 = 0;
int number2 = 0;
cout <> number1;
cout <> number2;
if (number1 < number2)
cout << "\a\a\a\a\a\a\a\a";
cout < number2)
cout << "\a\a\a\a\a\a";
cout << "\t\t\tПервое число больше второго \n";
else
cout << "\a\a\a\a\a\a";
cout <—— збірка розпочато: проект: Проект2, конфігурація: Debug Win32 ——
1>Source.cpp
1>c:\Користувачі goodjar джерело РЕПО project2 project2 source.cpp(19): C2181 помилка: неприпустимий else без парного if
1>c:\Користувачі goodjar джерело РЕПО project2 project2 source.cpp(22): C2181 помилка: неприпустимий else без парного if
1>збірка проекту “Project2.vcxproj” завершена з помилкою.
========== Збірка: успішно: 0, з помилками: 1, без змін: 0, пропущено: 0 ==========
Що з ним не так?
сказано ж що else if має бути
if (number1 < number2)
{
cout << "\a\a\a\a\a\a\a\a";
cout < number2)
cout << "\a\a\a\a\a\a";
cout << "\t\t\tПервое число больше второго \n";
}
else
cout << "\a\a\a\a\a\a";
упс… ще знайшов
#include
using namespace std;
int main()
{
setlocale(LC_ALL, “rus”);
int number1 = 0;
int number2 = 0;
cout << number1;
cout << number2;
if (number1 < number2)
{
cout << "текст";
cout << number2;
cout << "текст";
}
else
cout << "текст";
}
Чому відео не працює?