Ветвления в других языках программирования
Сложные условия
Практическая работа № 11 «Ветвления»
Практическая работа № 12 «Сложные условия»
Практическая работа № 13 «Логические переменные»
Практическая работа № 14 «Экспертная система» (проект)
Предположим, что ООО «Слонопотам» набирает сотрудников, возраст которых от 25 до 40 лет включительно. Нужно написать программу, которая запрашивает возраст претендента и выдаёт ответ: подходит он или не подходит по этому признаку.
Какое же условие должно быть истинно для того, чтобы человека приняли на работу? Одного условия «возраст >= 25» недостаточно, это условие соблюдается и для людей старше 40 лет. Вместе с тем условия «возраст <= 40» тоже недостаточно, так как оно выполняется и для школьников. В этой задаче нужно, чтобы два условия выполнялись одновременно: «возраст >= 25» и «возраст <= 40».
Пусть в переменной v записан возраст сотрудника. Запишите решение этой задачи с помощью вложенных условных операторов.
Эту задачу можно решить с помощью вложенного условного оператора, но решение получается некрасивое: оно запутанное, кроме того, один и тот же ответ «не подходит» приходится выводить в двух местах программы.
Почти во всех языках программирования можно использовать так называемые сложные условия. В нашем случае условный оператор будет выглядеть так:
Это решение получилось значительно короче и понятнее.
Здесь в условном операторе мы записали сложное условие
v>=25 и v<=40 (v>=25) and (v<=40)
составленное из двух простых с помощью операции И. В алгоритмическом языке операция И записывается как строчная буква и, а в Паскале вместо «и» используется английское слово and.
Обратите внимание, что в Паскале каждое простое условие заключается в скобки. Это связано с тем, что в этом языке отношения выполняются позже (имеют более низкий приоритет), чем операция И.
Операция И означает одновременное выполнение двух или нескольких условий.
Что будет выведено на экран после выполнения программы?
Предположим, что нам надо убедиться, что значение целой переменной а — трёхзначное число, которое делится на 7. Для этого нужно, чтобы одновременно выполнились три условия:
1) число не меньше 100 (> 99);
2) число меньше 1000;
3) число делится на 7, т. е. остаток от его деления на 7 равен нулю.
В условном операторе тогда нужно использовать две операции И, которые связывают три простых условия:
Вот решение на Паскале:
Рассмотрим ещё одну задачу. В переменной d записан номер дня недели (1 — понедельник, ... 7 — воскресенье). Программа должна определить, выходной это день или рабочий (выходные дни у большинства людей — суббота и воскресенье).
Если мы напишем условие d=6 и d=7, то это будет неверно, потому что тогда мы потребуем, чтобы значение переменной d было одновременно равно и 6, и 7. Такого быть не может, поэтому условие всегда будет ложно. Значит, операция И не подходит. Вместо неё нужно применить другую операцию — ИЛИ, которая требует выполнения хотя бы одного из набора условий.
Операция ИЛИ означает выполнение хотя бы одного из двух или нескольких условий.
Решение нашей задачи выглядит так:
В языке Паскаль операция ИЛИ обозначается словом or (в переводе с английского — «или»).
Напишите другой вариант решения последней задачи, использующий операцию И.
В обоих языках существует ещё одна операция, которую можно использовать в сложных условиях, — НЕ, в Паскале она обозначается словом not (в переводе с английского — «не»).
Операция НЕ означает обратное условие (противоположное исходному).
Например, решение задачи определения выходных дней можно было записать так:
Используя операцию НЕ, можно записывать условия по-разному, как нам удобнее в каждом случае. Например, условия а=b и не (а<>b) истинны для одних и тех же значений а и b, поэтому одно из них можно заменить на другое. Такие условия называются равносильными.
Запишите в тетради равносильные условия, не используя операцию НЕ:
Операции И, ИЛИ и НЕ — это логические операции, которые мы будем подробно изучать в 9 классе. Они работают с логическими значениями («да»/«нет», «истина»/«ложь»).
Если в сложном условии встречается несколько разных операций, они выполняются в следующем порядке (во всех случаях — слева направо):
1) операции в скобках;
2) операции НЕ;
3) операции И;
4) операции ИЛИ.
Изменить порядок действий можно с помощью круглых скобок.
Определите порядок операций при определении истинности условия. Алгоритмический язык:
не (а>10) или не(а<20) и (а<b) Паскаль:
not(а>10) or not(а<10) and (a<b)
Определите, истинно или ложно это выражение при а = 5, b = 10.
Для выражения в предыдущем задании запишите равносильное выражение без использования операции «НЕ». После этого расставьте одну пару скобок так, чтобы значение выражения при а = 5, b = 10 изменилось на обратное.
Следующая страница Логические переменные