Что такое флаг в программировании
Перейти к содержимому

Что такое флаг в программировании

  • автор:

Переменные-флаги

В старые времена с помощью флагов командовали войсками. Например, если флаг поднят — нужно атаковать, опущен — отступать.

В программировании “флагом” называют переменную булевого типа, т.е. в которой хранится либо True , либо False . Их так называют потому, что управление с их помощью похоже на флаги: есть всего 2 варианта, флаг или поднят, или опущен.

Например, вам интересно, есть ли человек на видео. Вы пишете функцию, которая проходит по кадрам видео и проверяет каждый из них. Если найдёт человека, то сообщит об этом:

def check_human_in_video(video): human_found = False for frame in video: if frame.has_human(): human_found = True print(human_found) 

Обратите внимание, что True и False написаны без кавычек! Так и задумано — это не строки, а отдельный тип данных.

По умолчанию считаем, что человека нет, поэтому создаём флаг human_found = False . Далее для каждого кадра в видео проверяем, есть ли на нём человек — вызываем метод объекта frame.has_human() . Если человек найден, то меняем флаг на True . В конце выводим флаг с помощью print .

Если ни на одном кадре человек не найдётся, то флаг так и останется False , потому что условие if frame.has_human() ни разу не сработает.

Если хоть на одном кадре есть человек, то при обработке этого кадра сработает условие if frame.has_human() и флаг станет True .

Как улучшить код

Теперь усовершенствуем код. Функция станет удобнее, если откажется от вывода на экран в пользу return .

def is_human_in_video(video): human_found = False for frame in video: if frame.has_human(): human_found = True return human_found print(is_human_in_video(video)) 

Следующим шагом ускорим работу функции. Сейчас код продолжит проверку, даже если встретит человека на самом первом кадре видео. Если кадров в video будет много, то проверка займёт время. Это даёт возможность для оптимизации. Прервём проверку сразу, как только станет ясен результат:

def is_human_in_video(video): human_found = False for frame in video: if frame.has_human(): human_found = True return human_found return human_found print(is_human_in_video(video)) 

Теперь заметно, что от переменной human_found можно избавиться, сделав код немного лаконичнее:

def is_human_in_video(video): for frame in video: if frame.has_human(): return True return False print(is_human_in_video(video)) 

Но и это ещё не всё. Флаги являются таким частым приёмом, что они попали в стандартную библиотеку Python. Код выше можно записать в одну строку:

def is_human_in_video(video): return any(frame.has_human() for frame in video) 
  • Про функцию any
  • Что такое list comprehension?

Попробуйте бесплатные уроки по Python

Получите крутое код-ревью от практикующих программистов с разбором ошибок и рекомендациями, на что обратить внимание — бесплатно.

Переходите на страницу учебных модулей «Девмана» и выбирайте тему.

Флаг (компьютерная техника)

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

В микропроцессорах и других логических устройствах флаги обычно используются для управления и индикации промежуточного или конечного состояния, а также для характеристики результата различных операций. Микропроцессоры как правило имеют регистр статуса, который состоит из таких флагов, используемых для обозначения различных состояний после операции, например, если произошло арифметическое переполнение. Флаги могут использоваться в управлении последовательностью операций, в частности, в обработке условных команд перехода. Например, по команде je (Jump if Equal, Переход по равенству) в ассемблере X86 произойдёт переход, если был установлен флаг Z (zero, ноль) на предыдущий операции.

См. также

  • Регистр флагов
  • Флаг переноса
  • Операционная система
  • Технологии процессоров

Wikimedia Foundation . 2010 .

Полезное

Смотреть что такое «Флаг (компьютерная техника)» в других словарях:

  • Флаг переноса — CF (англ. Carry flag) в электронных арифметических устройствах специальный флаг, устанавливаемый в результате арифметического переноса или сдвига со старшего значащего бита. Для арифметической операции может рассматриваться как… … Википедия
  • Флаг (значения) — Флаг: Флаг полотнище, служащее символом государства (региона, города) или используемое для передачи информации (например, на флоте). Флаг (ботаника), или парус название одного из лепестков в венчике мотылькового типа. Флаг (нотная… … Википедия
  • Xenus. Точка кипения (компьютерная игра) — Xenus: Boiling point Разработчик Deep Shadows Издатели Games Factory Interactive Дата выпуска … Википедия
  • Регистр флагов — Регистр флагов регистр процессора, отражающий текущее состояние процессора. Содержание 1 Архитектура x86 1.1 Флаги состояния 1.2 Управляющий флаг … Википедия
  • Серпухов — У этого термина существуют и другие значения, см. Серпухов (значения). Город Серпухов … Википедия
  • Acer Inc. — Acer Год основания 1976 Тип Публичная компания Расположение … Википедия
  • GIGABYTE Technology — Тип Публичная Девиз компании Upgrade your life Год основания 1986 Расположение … Википедия
  • Соединенные Штаты Америки — (США, USA) Соединенные Штаты Америки это страна в Северной Америке Соединенные штаты Америки (США) это одна из крупнейших мировых держав Содержание >>>>>>>>>>>>>>>>> … Энциклопедия инвестора
  • Hitachi, Ltd. — Hitachi, Ltd. Год основания 1910 Тип Публичная компания Девиз компании «Inspire the Next» («Предвосхищая будущее») … Википедия
  • — Hitachi, Ltd. Тип Публичная компания Листинг на бирже NYSE: HIT … Википедия
  • Обратная связь: Техподдержка, Реклама на сайте
  • �� Путешествия

Экспорт словарей на сайты, сделанные на PHP,
WordPress, MODx.

  • Пометить текст и поделитьсяИскать в этом же словареИскать синонимы
  • Искать во всех словарях
  • Искать в переводах
  • Искать в ИнтернетеИскать в этой же категории

Что такое флаг в программировании

Когда мы писали тетрис на JavaScript, то использовали в нём флаг остановки игры:

// ставим флаг окончания
gameOver = true;

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

Флаг — это индикатор

Когда водитель садится за руль машины, то он видит много индикаторов — приборов и лампочек, которые:

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

Глядя на эти индикаторы, водитель понимает, что ему нужно сделать — пристегнуться, остановиться, чтобы долить масло в двигатель или ничего делать не нужно.

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

Программные флаги — это переменные, а аппаратные флаги используются в процессорах.

Откуда такое название

В программирование флаги пришли из армии и флота, когда с помощью разноцветных флагов корабли передавали сигналы друг другу. Также флаги используют военные, когда подают сигналы для управления техникой — например, поднятый красный флаг запрещает движение.

Программный флаг — это переменная

В случае с тетрисом мы взяли логическую переменную gameOver и присвоили ей значение true — это называется «установить флаг». Эта переменная показывает, закончилась игра или нет: если true, то да, закончилась, а если false — можно играть дальше.

Но флаг сам по себе бесполезен, если на него никто не смотрит. Если мы просто установим флаг, то игра не закончится сама по себе — нам нужно периодически проверять, в каком состоянии флаг. Для этого в код в нужных местах добавляют проверку флага: смотрят, чему равен флаг, и если он сработал — выполняют определённые действия. В тетрисе мы делаем это в самом начале обработчика нажатия клавиш — если флаг сработал, то сразу останавливаем игру и выводим надпись Game Over.

Аппаратный флаг — регистр в процессоре

Процессор — это микросхема из миллиардов транзисторов, но ему тоже иногда нужны флаги, чтобы понять:

  • перед ним чётное число или нет;
  • произошло ли переполнение буфера;
  • есть ли что-то в стеке, куда нужно вернуться после этой операции;
  • в каком режиме работать.

Для этого в процессоре есть специальные регистры — хранилища данных, которые могут принимать различные значения. Технически это тоже как бы виртуальные переменные, только они влияют не на одну программу, а на весь процессор.

Аппаратные флаги в процессоре обрабатываются автоматически, в зависимости от используемых команд.

Зачем нужны флаги

Главная задача флага в программировании — показать, что что-то изменилось и что нужно на это отреагировать. Например:

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

Флаг — удобный способ передать информацию внутри алгоритма, чтобы в нужный момент принять верное решение.

Рекламный блок «Яндекс Практикума»

Этот рекламный блок сообщает, что после обучения в «Яндекс Практикуме» вы можете получить высокооплачиваемую работу разработчика, тестировщика, аналитика, менеджера и дата-сайентиста.

Флаг, бинарный флаг — что это в программировании

vedro-compota's picture

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

  • или «да» (говорят «флаг поднят»)
  • или «нет» (говорят «флаг опущен»)

— то есть по аналогии с сигнальным флагом на корабле (когда он поднят это значит что-то одно, а когда нет — что-то другое).

В некоторых языках программирования для экономии памяти в качестве флага можно использовать значение логического типа (напр. типа boolean в Паскале).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *