Найти тему
kapi.bar

Что за «флаги» в программировании?

Пост Капибарина vrom1990.

Удивительно, сколько людей по ходу обучения программированию упускают эту важную, но очень даже простую тему, и очень удивляются потом, когда натыкаются на флаги то тут, то там, пока не разберутся

Двухпозиционные переменные

Флагом называется переменная(или свойство/поле объекта), которая хранит данные логического (True/False) либо 1/0. Собственно, в математической логике как раз и обозначается истина числом 1, ложь числом 0.

Очень просто запомнить, почему такой вид переменных называется именно так — у флага на флагштоке ведь два состояние: поднят/опущен. Так и здесь. Хотя мне больше нравится думать о таких переменных, как о выключателях: две позиции — «вкл» или «выкл». Или о лампочках-индикаторах — горит или не горит. Иногда — о рычагах, у которых тоже два положения, или кнопках, которая при одном нажатии уходит вглубь корпуса, а при втором выходит обратно.

-2

Зачем нужны такие переменные?

Как я выше написал, можно представлять переменные-флаги в виде индикаторов. Если код большой и в нём приходится управлять кучей разных объектов, важно уметь в любой момент посмотреть состояние того или иного объекта.

-3

Флаг может показывать, можно или нельзя выполнять какое-то действие, например, открыть дверь(электронный запрограммированный замок, состояние заперт/не заперт).

Флаг может показать, включено или выключено какое-либо устройство, например, двигатель, робот-пылесос, опасный автоматический станок, автополив, охранная система.

Флаг может сигнализировать об опасности или проблеме — как лампочка(обычно красного цвета) может сигнализировать о какой-нибудь поломке в машине, нехватке топлива, о разгерметизации салона самолёта, о повышенном количестве газа рядом с газовой плитой и т.д.

Как заметить переменную-флаг?

Очень просто, такие переменные легко заметны, когда они стоят одиноко в условии справа от if — никакого оператора сравнения или чего-то ещё, просто переменная или поле объекта и всё. Часто это значит, что переменная или поле хранят именно True/False или 1/0.

Ну и, само собой, вы заметите, если в коде написано что-то вроде

is_in_black_list = True;

то есть присваивание переменной значения True/False или 1/0.

Вот такая вот простая по идее тема, которую многие при обучении пропускают и изучают уже самостоятельно — флаги в программировании.

Обсудить: https://www.kapi.bar/post/chto-za-flagi-v-programmirovanii