В каких случаях в программе используется выбор

К операторам выбора, называемым операторами управления потоком выполнения программы, относят: условный оператор ( if … else ) и переключатель ( switch ). Каждый из них служит для выбора пути выполнения программы.

Синтаксис условного оператора следующий:

if (выражение) оператор_1; else оператор_2;

Здесь нужно пояснить следующее. Выражения, используемые при сравнении двух величин в С++ отличаются от таковых, в других алгоритмических языках.

Описание Выражение
a больше, чем b a>b
a меньше, чем b a
a равно b a==b
a не равно b a!=b
a больше или равно b a>=b
a меньше или равно b a

Так при проверке равенства двух величин нужно использовать ==, а не =, т.к. в противном случае получится оператор присваивания .

Диалог выбора файла в 1С и другие диалоги

При истинности выражения, выполняется оператор_1, в противном случае — выполняется оператор_2. Рассмотрим пример.

x=3; if (x>0) a=15; else a=12;

Как вы, наверное уже догадались, переменная a принимает значение 15.

Операторы могут быть составными (могут объединяться в блоки).

double y=2; if (y>3) else ;

Результатом работы этого фрагмента будет выведенная на экран фраза

What are you doing? I am computing

Допустима сокращенная форма условного оператора, когда отсутствует else и оператор_2. В этом случае при ложности выражения ничего не происходит.

double z=5; if (z<3) cout<<«nHi!»;

Оператор выбора

Основы программирования 2.0

В предыдущем уроке мы с вами узнали, что такое ветвление. В большинстве случаев управлять ходом программы можно с помощью рассмотренного ранее оператора if. Теоретически можно обойтись этим оператором во всех случаях, потому что оператор if может быть вложенным.

То есть вполне работоспособным будет следующее выражение:

if x > 0 then if x <> 1 then x := 2;

Как видите, здесь после слова then следуюет ещё один оператор if. То есть после проверки условия (х > 0) мы ещё проверяем, не равен ли х единице. Второй оператор if как раз таки и является вложенным оператором, так как он входит в состав первого оператора if. Советую над этим подумать и разобраться в сути. Иначе в будущем проблем вам не избежать.

А теперь давайте попробуем усовершенствовать наш калькулятор. Как вы помните из предыдущих уроков, наш простейший калькулятор приминает от пользователя два числа и выполняет с ними операции сложения, вычитания, умножения и деления.

NoSQL простым языком: что это и зачем нужно?

Читайте также:
Программа тушение в мультиварке поларис какая температура

Однако пользователю наверняка нужно выполнить только одну операцию. Поэтому его будет раздражать вывод лишних данных. Как быть? Вариантов много. Но мы будем получать от пользователя не только два числа, но и вид операции. То есть пользователь сначала должен будет ввести два числа, а потом знак операции.

Допустим, что знак операции мы прочитаем в переменную op. Тогда определить, какую операцию нужно выполнить, мы сможем с помощью такой конструкции:

if op = ‘+’ then WriteLn(‘x + y = ‘, x + y) else if op = ‘-‘ then WriteLn(‘x — y = ‘, x — y) else if op = ‘*’ then WriteLn(‘x * y = ‘, x * y);

Эта конструкция вполне работоспособна. Можете проверить её на практике.

Но, согласитесь, что выглядит этот код не очень “читабельно”. А если придётся проверить больше вариантов?

Для таких случаев существует оператор выбора. В некоторых источниках его называют оператор варианта. Этот оператор позволяет выбрать из нескольких вариантов. В Паскале он обозначается словом case, а вся конструкция выбора выглядит примерно так:

case ПорядковаяПеременная of Значение_1 : Операторы_1; Значение_2 : Операторы_2; . : . ; Значение_N : Операторы_N; else Операторы; end;

Здесь ПорядковаяПеременная – это переменная порядкового типа (число или символ, или выражение, результатом которого является число или символ), значение которой проверяется в конструкции CASE.

Если значение этой переменной равно Значение_1, то выполняются операторы, которые следуют после двоеточия за этим значением (Операторы_1). Если значение переменной ПорядковаяПеременная – равно Значение_2, то выполняются операторы, которые следуют после двоеточия за этим значением. Если же значение переменной ПорядковаяПеременная не соответствует ни одному из значений Значение_1 … Значение_N, то выполняются операторы, размещенные после слова ELSE. Обратите внимание, что перед словом ELSE стоит точка с запятой.

Если необходимо проверить, попадает ли значение ПорядковаяПеременная в какой либо диапазон, то можно записать этот диапазон следующим образом:

Case Х of 1, 4, 6 : Оператор_1; 10 .. 100 : Оператор_2; End;

В этом случае Оператор_1 будет выполнен, если Х = 1 или Х = 4 или Х = 6, а Оператор_2 будет выполнен в том случае, если 10

Итак, вооружившись новыми знаниями, усовершенствуем наш калькулятор. Теперь пользователь сможет выбрать операцию (одну из четырёх).

Листинг 19.2. Использование оператора выбора.

program mycalc; uses cthreads, Classes < you can add units after this >; var x, y : integer; op : char; begin Write(‘x = ‘); ReadLn(x); Write(‘y = ‘); ReadLn(y); Write(‘Operation (+, -, *, /): ‘); ReadLn(op); case op of ‘+’ : WriteLn(‘x + y = ‘, x + y); ‘-‘ : WriteLn(‘x — y = ‘, x — y); ‘*’ : WriteLn(‘x * y = ‘, x * y); ‘/’ : if y = 0 then WriteLn(‘. Error: Division by ZERO . ‘) else WriteLn(‘x div y = ‘, x div y); else WriteLn(‘. Error: Unsupported operation . ‘); end; ReadLn; end.

Читайте также:
Что нужно чтоб написать программу

Домашнее задание:

Повторить программу из листинга 19.2. Разобраться с принципом работы оператора выбора.

Источник: info-master.su

Оператор выбора if

Операторы выбора позволяют принять программе решение, основываясь на истинности или ложности условия. Если условие истинно (т. е. равно true ) значит, оператор в теле if выполняется, после чего выполняется следующий по порядку оператор.

Если условие ложно (т. е. равно false ) значит, оператор в теле if не выполняется (игнорируется или пропускается) и сразу же выполняется следующий по порядку оператор. Проверяемое условие может быть любым логическим выражением. Логические выражения могут быть образованы операциями равенства и отношения (см. Таблица 1).

Таблица 1 — Логические выражения C++

Операция в С++ Условие Смысл записанных условий в С++
== 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 using namespace std; int main() < int a, b; // объявление переменных типа int, то есть в таких переменных хранятся только целые числа cout > a; cout > b; if (a > b) // если а > b < cout » if (a < b)// если а < b < cout if (a == b) // если а = b cout

Читайте также:
В чем смысл программы немножко разведены

Все с 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

В этом случае программ скомпилируется и запустится, но уже будет работать не правильно. Ошибка заключается в том, что у данного ифа уже нет оператора входящего в его тело, то есть if пустой. И уже неважно истинно условие или нет оператор вывода cout

CppStudio.com

Vvedite pervoe chislo: 19 Vvedite vtoroe chislo: -8 19 > -8 Для продолжения нажмите любую клавишу . . .

Рисунок 1 — Оператор выбора if в C++

Источник: cppstudio.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru