P
pro·school.ru
Каталог школ

Логические переменные и флаги в программах

💻 Информатика · 9 класс

Логический тип данных

Логическая переменная — это переменная, которая может принимать только два значения: истина или ложь. В Паскале такой тип называется boolean, а его значения записывают как true и false. Логическая переменная хранит ответ на вопрос, который предполагает только «да» или «нет»: чётное ли число, найден ли нужный элемент, выполнено ли условие, отсортирован ли массив.

Главная польза логических переменных в том, что результат проверки можно запомнить и использовать позже, а не вычислять его заново каждый раз. Логические значения получаются в результате сравнений (больше, равно, меньше) и логических операций «и», «или», «не».

Что такое флаг

Флаг (от английского flag — «флажок») — это логическая переменная, которой пользуются как сигналом: «нужное событие произошло» или «событие не произошло». Перед циклом флагу присваивают начальное значение, внутри цикла меняют его, если случилось интересующее нас событие, а после цикла проверяют и принимают решение. Флаг словно поднимается, как только происходит то, что мы ищем.

ЭтапДействие с флагом
До циклаУстановить начальное значение (обычно «ложь»)
Внутри циклаЕсли событие произошло — присвоить «истину»
После циклаПроверить флаг и принять решение

Разбор примера

Проверим, есть ли в массиве из n чисел хотя бы одно отрицательное. Заведём флаг est и будем поднимать его, как только встретим отрицательное число:

est := ложь нц для i от 1 до n   если a[i] < 0 то     est := истина   все кц если est то вывод "Есть отрицательное" иначе вывод "Отрицательных нет"

Мы один раз просмотрели весь массив и запомнили факт в переменной est. Заметьте: даже после того как флаг стал истинным, цикл продолжается до конца. Это не ошибка, хотя при желании поиск можно прервать раньше для ускорения. Главное — начальное значение «ложь»: если нужное событие так и не случится, флаг останется опущенным, и программа сделает верный вывод.

Два типичных применения

Флаги решают две зеркальные задачи. Первая — проверить, есть ли хотя бы один подходящий элемент: флаг начинают с «лжи» и поднимают при первой удаче. Вторая — проверить, все ли элементы удовлетворяют условию: флаг начинают с «истины» и опускают при первом нарушении.

Правило. Флаг всегда инициализируют до цикла. Если забыть начальное значение, переменная будет хранить случайный «мусор», и ответ окажется непредсказуемым. Начальное значение выбирают противоположным тому, которое мы ищем.

Где ещё встречается

  • Проверка «все ли элементы массива положительны».
  • Проверка «есть ли в строке хотя бы одна цифра».
  • Запоминание того, что массив уже отсортирован или данные изменились.
  • Сигнал об окончании работы в сложных циклах.

Кратко о главном

  • Логическая переменная хранит только истину или ложь.
  • Флаг — это логическая переменная-сигнал о том, произошло ли событие.
  • Флаг устанавливают до цикла, меняют внутри и проверяют после.
  • Начальное значение флага противоположно искомому событию.