Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Лексическая структура исходного кода, объединенная вместе.
Lexical structure of source code grouped together
В компьютерном программировании блок или блок кода — это лексическая структура исходного кода, которая объединена вместе. Блоки состоят из одного или нескольких объявлений и операторов. Язык программирования, который позволяет создавать блоки, включая блоки, вложенные в другие блоки, называется языком программирования с блочной структурой. Блоки являются основополагающими для структурированного программирования, где управляющие структуры формируются из блоков. Блоки выполняют две функции: группировать операторы, чтобы они могли рассматриваться как один оператор, и определять области видимости для имен, чтобы отличать их от одноименных объектов, используемых в других местах. В языке программирования с блочной структурой объекты, объявленные во внешних блоках, видны внутри внутренних блоков, если они не скрыты объектом с тем же именем, объявленным во внутреннем блоке.
In computer programming, a block or code block or block of code is a lexical structure of source code which is grouped together. Blocks consist of one or more declarations and statements. A programming language that permits the creation of blocks, including blocks nested within other blocks, is called a block structured programming language. Blocks are fundamental to structured programming, where control structures are formed from blocks. Blocks have two functions: to group statements so that they can be treated as one statement, and to define scopes for names to distinguish them from the same name used elsewhere. In a block structured programming language, the objects named in outer blocks are visible inside inner blocks, unless they are masked by an object declared with the same name.
История
Идеи блочной структуры были разработаны в 1950-х годах при создании первых автокодов и формализованы в отчетах Algol 58 и Algol 60. Algol 58 ввел понятие "составного оператора", который был связан исключительно с управлением потоком выполнения. Последующий пересмотренный отчет, описывающий синтаксис и семантику Algol 60, ввел понятия блока и области видимости блока, при этом блок определялся как "последовательность объявлений, за которой следует последовательность операторов, заключенных между begin и end", и в котором "[к]аждое объявление появляется в блоке таким образом и действует только в пределах этого блока".
Ideas of block structure were developed in the 1950s during the development of the first autocodes, and were formalized in the Algol 58 and Algol 60 reports. Algol 58 introduced the notion of the "compound statement", which was related solely to control flow. The subsequent Revised Report which described the syntax and semantics of Algol 60 introduced the notion of a block and block scope, with a block consisting of " A sequence of declarations followed by a sequence of statements and enclosed between begin and end " in which "[e]very declaration appears in a block in this way and is valid only for that block."
Ограничения
Некоторые языки программирования, поддерживающие блоки с объявлениями, не поддерживают все типы объявлений в полной мере; например, во многих языках, произошедших от C, запрещено определение функции внутри блока (вложенные функции). И в отличие от своего предшественника Algol, Pascal не поддерживает использование блоков с собственными объявлениями внутри операторов `begin` и `end` существующего блока, а только составные операторы, позволяющие группировать последовательности операторов в конструкциях `if`, `while`, `repeat` и других операторах управления.
Some languages which support blocks with declarations do not fully support all declarations; for instance many C derived languages do not permit a function definition within a block (nested functions). And unlike its ancestor Algol, Pascal does not support the use of blocks with their own declarations inside the begin and end of an existing block, only compound statements enabling sequences of statements to be grouped together in if, while, repeat and other control statements.
Подъем
В некоторых языках программирования переменную можно объявить в области видимости функции, даже внутри вложенных блоков. Например, в JavaScript переменные, объявленные с помощью `var`, имеют область видимости функции.
In some languages, a variable can be declared at function scope even within enclosed blocks. For example, in JavaScript, variables declared with var have function scope.