В языке программирования С++ существует два оператора выбора:
1)Оператор выбора if
2) Оператор выбора switch
Операторы выбора позволяют принять программе решение, основываясь на истинности или ложности условия. Если условие истинно (т. е. равно true
) значит, оператор в теле if
выполняется, после чего выполняется следующий по порядку оператор. Если условие ложно (т. е. равно false
) значит, оператор в теле if
не выполняется (игнорируется или пропускается) и сразу же выполняется следующий по порядку оператор. Проверяемое условие может быть любым логическим выражением. Логические выражения могут быть образованы операциями равенства и отношения (см. Таблица 1).
Операция в С++ | Условие | Смысл записанных условий в С++ |
---|---|---|
== | a == b | a равно b |
!= | a != b | a не равно b |
> | a > b | a больше b |
< | a < b | a меньше b |
>= | a >= b | a больше или равно b |
<= | a <= b | a меньше или равно b |
Очень частой ошибкой программирования является неправильная запись операций равенства и соотношений. Пробелов между знаками ==
; !=
; >=
; <=
; быть не должно. Также необходимо помнить правильную последовательность записи символов операций равенства и отношений.
Пример:
=!
не правильно; !=
правильная запись;
=>
не правильно; >=
правильная запись;
=<
не правильно; <=
правильная запись.
Нельзя путать операцию =
(операция присваивания) и операцию ==
(операция равенства) так как это приводит к логическим ошибкам, т. е. программа даже скомпилируется без всяких ошибок, но работать будет не правильно.
Условный оператор или оператор выбора if
записывается в двух формах, рассмотрим первую.
if (/*проверяемое условие*/) { //тело условного оператора }
Фигурные скобочки тела условного оператора можно опускать, если при истинности условия необходимо выполнить один оператор. Пример:
if (/*проверяемое условие*/) /*оператор1*/;
Чтобы в будущем не путаться рекомендую всегда прописывать фигурные скобочки, так код будет более понятен.
Рассмотрим простейший пример использования оператора if
. Условие задачи: даны два числа, необходимо их сравнить.
// in_out.cpp: определяет точку входа для консольного приложения. #include "stdafx.h" #include <iostream> using namespace std; int main() { int a, b; // объявление переменных типа int, то есть в таких переменных хранятся только целые числа cout << "Vvedite pervoe chislo: "; cin >> a; cout << "Vvedite vtoroe chislo: "; cin >> b; if (a > b) // если а > b { cout << a << " > " << b << endl; // печатать данное сообщение } if (a < b)// если а < b { cout << a << " < " << b << endl; } if (a == b) // если а = b cout << a << " = " << b << endl; // в теле условного оператора опущены фигурные скобочки system("pause"); return 0; }
Все с 1-й по 8-ю строки вам должно быть понятно. В строке 9 объявляются две переменные – это мы уже знаем. Но появилось новое слово int
–это целочисленный тип данных. То есть может содержать такие числа: -3; 2; 678;-341. Целочисленный тип данных может хранить только целые числа. После того как мы ввели два числа программа начинает их сравнивание. Так как мы не знаем, какие числа введет пользователь, мы должны предусмотреть все случаи. А случая здесь может быть аж три:
1-й случай: первое введенное число больше второго. (14-16 строки)
Читается так: «Если а
больше b
, то делать соответствующий вывод на экран»
2-й случай: первое введенное число меньше второго. (17-19 строки)
Читается так: «Если, а
меньше b
, то делать соответствующий вывод на экран»
3-й случай: первое введенное число равняется второму. (20-21 строки)
Читается так: «Если, а
равно b
, то делать соответствующий вывод на экран»
Обратите внимание на то что, первые два ифа написаны вместе с фигурными скобочками, хотя можно было обойтись и без них, ведь при истинном условии у нас выполняется только оператор вывода. А в третьем ифе я обошелся без скобочек, тем самым показал, что программа будет работать правильно и без них. Еще одну логическую ошибку часто делают, когда ставят точку с запятой сразу за правой круглой скобкой оператора if
.
Пример:
if (a == b); // логическая ОШИБКА cout << a << " = " << b << endl;
В этом случае программ скомпилируется и запустится, но уже будет работать не правильно. Ошибка заключается в том, что у данного ифа уже нет оператора входящего в его тело, то есть if
пустой. И уже неважно истинно условие или нет оператор вывода cout << a << " = " << b << endl;
будет срабатывать всегда. Ниже показан пример работы программы использующий оператор выбора if
для частного случая (см. Рисунок 1).
Vvedite pervoe chislo: 19 Vvedite vtoroe chislo: -8 19 > -8 Для продолжения нажмите любую клавишу . . .
Рисунок 1 — Оператор выбора if в C++
Комментарии
return
Классная статья)
Артур Леонов
Пример использования на примере калькулятора:
int main() {
setlocale (LC_ALL, «Russian»);
double sum, razn, pow, div;
double a;
double b;
char e;
cout << «Введите число A: «;
cin >> a;
cout << «Введите число B: «;
cin >> b;
cout << «Плюс, минус, умножить или делить \?: «;
cin>> e;
if(e == ‘+’)
{
sum = a + b;
cout << «Ответ: » << sum << endl;
}
if(e == ‘-‘)
{
razn = a — b;
cout << «Ответ: » << razn << endl;
}
if(e == ‘*’)
{
pow = a * b;
cout << «Ответ: » << pow << endl;
}
if(e == ‘/’)
{
div = a / b;
cout << «Ответ: » << div << endl;
}
cin.get();
}
Пашка Дегасюк
Возник вопрос. Компилятор CodeBlocks 13.12
#include «stdafx.h» зачем подключается эта библиотека? Мой компилятор ее не подключал и выдавал ошибку в этой строчке. Я потер ее из программы. Затем компилятор указал на ошибку в 24 строчке
system
(
"pause");
ее я также потер. И программа заработала. Почему компилятор сообщал
об ошибке в этой строчке?
PayL
Почему у тебя этот вопрос не возник в более ранних статьях, когда ты программировал) Почти везде так коды написаны, и эти вопросы в тех статьях задавались.
Эта библиотека не используется в CodeBlocks. Она используется в Microsoft Visual. Но ты можешь подключить эту библиотеку и в CodeBlocks если отдельно её скачаешь и установишь. Дойдя до этого урока мне еще не попадались задачки, которые нельзя решить без этой библиотеки, но подозреваю, что ещё попадутся)) Как попадутся, начну париться с поиском библиотеки.
greas
Уважаемые чуваки!У меня такой вопрос:Я составляю программу на решение задач по физике(сила,работа,можность)Есть 4 переменные:Плотность,Объем,Масса,Сила(в моей программе их несколько больше,но речь только об этих 4 переменных)Так вот если я не ввожу значение переменной значит ли это что ее значение автоматически = 0?Далее если да то будет ли работать такая запись:
if((plotnost!=0)&&(obyom!=0))
{
massa=plotnost*obyom;
}
когда я ввожу это в ответе задачи получается бред=>что-то тут не так , вообщем ваши советы,наставления и т.д. и т.п.
admin
Такие вопросы обсуждаем только на форуме.