Введение

Лексическая структура исходного кода, объединенная вместе.

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

История

Идеи блочной структуры были разработаны в 1950-х годах при создании первых автокодов и формализованы в отчетах Algol 58 и Algol 60. Algol 58 ввел понятие "составного оператора", который был связан исключительно с управлением потоком выполнения. Последующий пересмотренный отчет, описывающий синтаксис и семантику Algol 60, ввел понятия блока и области видимости блока, при этом блок определялся как "последовательность объявлений, за которой следует последовательность операторов, заключенных между begin и end", и в котором "[к]аждое объявление появляется в блоке таким образом и действует только в пределах этого блока".

Ограничения

Некоторые языки программирования, поддерживающие блоки с объявлениями, не поддерживают все типы объявлений в полной мере; например, во многих языках, произошедших от C, запрещено определение функции внутри блока (вложенные функции). И в отличие от своего предшественника Algol, Pascal не поддерживает использование блоков с собственными объявлениями внутри операторов `begin` и `end` существующего блока, а только составные операторы, позволяющие группировать последовательности операторов в конструкциях `if`, `while`, `repeat` и других операторах управления.

Подъем

В некоторых языках программирования переменную можно объявить в области видимости функции, даже внутри вложенных блоков. Например, в JavaScript переменные, объявленные с помощью `var`, имеют область видимости функции.