Логические переменные и флаги в программах
💻 Информатика · 9 класс
Логический тип данных
Логическая переменная — это переменная, которая может принимать только два значения: истина или ложь. В Паскале такой тип называется boolean, а его значения записывают как true и false. Логическая переменная хранит ответ на вопрос, который предполагает только «да» или «нет»: чётное ли число, найден ли нужный элемент, выполнено ли условие, отсортирован ли массив.
Главная польза логических переменных в том, что результат проверки можно запомнить и использовать позже, а не вычислять его заново каждый раз. Логические значения получаются в результате сравнений (больше, равно, меньше) и логических операций «и», «или», «не».
Что такое флаг
Флаг (от английского flag — «флажок») — это логическая переменная, которой пользуются как сигналом: «нужное событие произошло» или «событие не произошло». Перед циклом флагу присваивают начальное значение, внутри цикла меняют его, если случилось интересующее нас событие, а после цикла проверяют и принимают решение. Флаг словно поднимается, как только происходит то, что мы ищем.
| Этап | Действие с флагом |
|---|---|
| До цикла | Установить начальное значение (обычно «ложь») |
| Внутри цикла | Если событие произошло — присвоить «истину» |
| После цикла | Проверить флаг и принять решение |
Разбор примера
Проверим, есть ли в массиве из n чисел хотя бы одно отрицательное. Заведём флаг est и будем поднимать его, как только встретим отрицательное число:
est := ложь
нц для i от 1 до n
если a[i] < 0 то
est := истина
все
кц
если est то вывод "Есть отрицательное"
иначе вывод "Отрицательных нет"
Мы один раз просмотрели весь массив и запомнили факт в переменной est. Заметьте: даже после того как флаг стал истинным, цикл продолжается до конца. Это не ошибка, хотя при желании поиск можно прервать раньше для ускорения. Главное — начальное значение «ложь»: если нужное событие так и не случится, флаг останется опущенным, и программа сделает верный вывод.
Два типичных применения
Флаги решают две зеркальные задачи. Первая — проверить, есть ли хотя бы один подходящий элемент: флаг начинают с «лжи» и поднимают при первой удаче. Вторая — проверить, все ли элементы удовлетворяют условию: флаг начинают с «истины» и опускают при первом нарушении.
Правило. Флаг всегда инициализируют до цикла. Если забыть начальное значение, переменная будет хранить случайный «мусор», и ответ окажется непредсказуемым. Начальное значение выбирают противоположным тому, которое мы ищем.
Где ещё встречается
- Проверка «все ли элементы массива положительны».
- Проверка «есть ли в строке хотя бы одна цифра».
- Запоминание того, что массив уже отсортирован или данные изменились.
- Сигнал об окончании работы в сложных циклах.
Кратко о главном
- Логическая переменная хранит только истину или ложь.
- Флаг — это логическая переменная-сигнал о том, произошло ли событие.
- Флаг устанавливают до цикла, меняют внутри и проверяют после.
- Начальное значение флага противоположно искомому событию.