Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция2.docx
Скачиваний:
34
Добавлен:
20.02.2016
Размер:
34.4 Кб
Скачать

Лекция № 2

Тема: «Логические операции и операторы ветвления»

 

План

1.  Выражения сравнения

2. Оператор IF … ELSE

3. Оператор ?:

4. Оператор SWITCH

 

1. Выражения сравнения

Компьютеры представляют собой нечто большее, чем средства для беспрерывного «перемалывания» чисел. Они обладают способностью сравнивать значения, и именно эта особенность служит компьютеру основанием для принятия необходимых решений. Указанная возмож­ность воплощена в C++ в операторах сравнения. Для сравнения чисел в C++ существует шесть операторов сравнения. Каждое выражение сравнения сводится к значению true, если результат срав­нения оказывается истинным, и к значению false, если результат сравнения оказывается ложным. Все операторы сравнения представлены в таблице.

 

Оператор

Значение

< 

меньше

<=

меньше или равно

= = 

равно

> 

больше

>=

больше или равно

!=

не равно

 

Операторы сравненья обладают более низким при­оритетом, чем арифметические операторы. Это означа­ет, что выражение

х  + 3 > у - 2 //выражение 1

соответствует выражению

(x + 3) > (у - 2) //выражение 2

а не следующему выражению:

х + (3 > у) - 2 //выражение 3

Логические выражения

Часто приходится проверять более одного условия. В целях удовлетворения подобной необхо­димости язык C++ предоставляет три логические опе­рации для объединения или изменения существующих выражений. Этими операциями являются логическое ИЛИ. записываемое как ||; логическое И, записываемое как &&; и логическое НЕ, записываемое как !

Операция логического ИЛИ: ||

В разговорном языке слово или может указывать на то, что одно или оба условия удовлетворяют предъявляемо­му требованию. Операция логичес­кого ИЛИ.записываемая как ||, объединяет два выражения в одно. Если любое или оба исходных выражения имеют значение true, резуль­тирующее выражение также имеет значение true. В противном случае выражение имеет значение false. Ниже приведе­но несколько примеров:

5 = =5 || 5 = = 9 //истинно, поскольку первое выражение истинно

5 > 3 || 5 > 10 //истинно, поскольку первое выражение истинно

5 > 8 || 5 < 10 //истинно, поскольку второе выражение истинно

5 < 8 || 5 > 2 //истинно, поскольку оба выражения истинны

5 > 8 || 5 < 2 //ложно, поскольку оба выражения ложны

Поскольку операция || имеет более низкий приори­тет, чем операции сравнения, в этих выражениях не тре­буется использовать скобки.

В соответствии с правилами C++ оператор || являет­ся точкой последовательности, т.е. любые изменения зна­чения, указанные в левой части, происходят до вычис­ления правой части. Например, давайте рассмотрим следующее выражение:

i++ < 6 || i == j

Предположим, что первоначально i имеет значение, равное 10. К моменту сравнения с j переменная i получает значение, равнее 11. Кроме того, C++ не станет утруждать себя вычислением выражения в правой части, если выражение в левой части истинно, поскольку для того, чтобы все логическое выражение было истин­ным, достаточно истинности одной части выражения.

Операция логического И: &&

Операция логического И, записываемая как &&, также объединяет два выражения в одно. Результирующее вы­ражение имеет значение true только в том случае, если оба исходные выражения имеют значения true. Вот несколько примеров:

5 = = 5 && 4 = = 4 //истинно, поскольку оба выражения истинны

5 < 3 && 4 => 4 //ложно, поскольку первое выражение ложно

5 > 3 && 5 > 10 //ложно, поскольку второе выражение ложно

5 > 8 && 5 < 10 //ложно, поскольку первое выражение   ложно

5 < 8 && 5 > 2 //истинно, поскольку оба выражения истинны

5 > 8 && 5 < 2 //ложно, поскольку оба выражения ложны

Поскольку операция && имеет более низкий приори­тет, чем операторы сравнения, в этих выражениях скоб­ки не используются. Подобно операции ||, операция &&действует в качестве точки последовательности, и поэто­му левая часть выражения вычисляется, оказывая всячес­кие воздействия на программу, до вычисления правой части выражения. Если левая часть ложна, то ложно и все выражение, поэтому в таком случае C++ не утруж­дает себя вычислением правой части. Операция && позволяет в условиях диапазоны значений.

Операция логического НЕ:!

Операция ! отрицает или инвертирует следующее за ним выражение сравнения. Таким образом, если выражение имеет значение trueто выражение имеет значение false и наоборот.

Как правило, отношение можно выразить понятнее, не прибегая к этому оператору:

!(х  >  5) то же самое, что и  х <= 5

Немного о логических операциях

Как уже говорилось, операции логического И и логичес­кого ИЛИ в C++ имеют более низкий приоритет, чем операции сравнения. Это означает, что выражение типа

x > 5 && х < 10

читается следующим образом:

(х > 5)&& (х < 10)

С другой стороны, операция ! имеет более высокий приоритет, чем любые операции сравнения или ариф­метические операции. Следовательно, чтобы выполнить отрицание выражения, его нужно заключить в скобки;

!(х > 5)

Операция логического И имеет более высокий при­оритет, чем операция логического ИЛИ. Следовательно, выражение

x > 30 && x < 45 | | y > 300

означает следующее:

(x > 30 && x < 45) | | y > 300

Таким образом, одно условие состоит в проверке принадлежности переменной x диапазону от 31 до 44, а второе в том, чтобы y было больше 300.

Для указания программе требуемого порядка действий можно использовать скобки. Например, предположим, что нужно использовать операцию && для объединения условия «x больше 50 или y больше 300» с условием «z больше 1000». Для этого часть ИЛИ необходимо заключить в скобки:

(x > 50 || y >300) && z > 1000

В противном случае компилятор объединит условие y с условием z, а не с условием x. Для группирования условий проще всего использовать скоб­ки, независимо от того, нужны они или нет. Это облег­чает чтение текста программы. (начало)

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]