"Информатика (базовый и углублённый уровни) (в 2 частях)", Поляков К.Ю., Еремин Е.А.
Блок программы объединяет несколько команд в одну конструкцию, поэтому алгоритм можно строить из крупных частей и управлять ими с помощью условий и циклов. Границы блока задаются правилами языка: например, в Python их показывают двоеточие и одинаковый отступ, а в других языках могут использоваться специальные слова или скобки. Блоки можно вкладывать друг в друга, но нужно следить за их границами. От места объявления переменной зависит, где она доступна.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Блок программы — группа команд, объединённых в одну конструкцию и выполняемых как единое целое. Он помогает воспринимать программу не как длинный перечень отдельных действий, а как набор понятных частей. К блоку можно применить условие или цикл. Поэтому с его помощью удобно описывать этапы алгоритма.
Составная команда — несколько команд, оформленных как одна команда. Она занимает в алгоритме место одного действия, хотя внутри содержит несколько шагов. Благодаря этому условная конструкция или цикл могут управлять сразу всей группой команд. Так проще задавать структуру алгоритма и читать программу.
Вложенный блок — блок, расположенный внутри другого блока. Например, цикл может содержать условие, а условие — команды своей ветви. Связь блоков задаётся правилами языка: в Python её показывают уровни отступов, а в языках со скобками — парные открывающие и закрывающие обозначения. Вложенность позволяет описывать сложные действия по уровням.
Локальная переменная — переменная, доступная только в определённом блоке или подпрограмме. Её область действия — часть программы, где к ней разрешено обращаться. Такое ограничение помогает отделить внутренние данные одного фрагмента от остальных частей программы. При чтении кода важно знать, где переменная объявлена и где заканчивается её область действия.
Объединение команд в блок позволяет описывать алгоритм крупными смысловыми частями. Если несколько действий вместе решают одну задачу, их удобно воспринимать как одну составную команду, а не разбирать каждый раз отдельно. Тогда управляющая конструкция может влиять на всю группу целиком. Это делает алгоритм понятнее и уменьшает риск случайно подчинить условию или циклу не те команды.
Границы блока задаются синтаксисом языка, то есть его правилами записи программы. В Python после заголовка условия или цикла ставят двоеточие, а команды тела записывают с одинаковым отступом; увеличение отступа показывает начало вложенного блока. В других языках для группировки могут применяться слова begin и end или фигурные скобки. Чтобы правильно прочитать код, нужно учитывать именно обозначения выбранного языка, а не переносить правила одного языка на другой.
Условие или цикл управляет выполнением блока, но делает это по-разному. В условной конструкции проверяется выражение: если оно истинно, выполняется соответствующая ветвь, а при наличии альтернативы может выполниться другая; пропущенная ветвь не запускается. В цикле блок выполняется повторно, пока это предписывают правила цикла, поэтому важно отслеживать изменения условия и счётчиков. Если блок не помещён в тело управляющей конструкции, команда выполняется независимо от неё.
Вложенность нужна, когда алгоритм должен проверять несколько условий или повторять действия, внутри которых есть дополнительный выбор. Например, цикл может перебрать числа, а вложенное условие — вывести только те, которые подходят по заданному признаку. Каждый внутренний блок относится к ближайшей внешней конструкции, поэтому границы следует отмечать последовательно. В языках с отступами неверный уровень отступа меняет структуру, а в языках со скобками ошибка в паре обозначений может привести к синтаксической ошибке.
Область действия переменной зависит от места её объявления и правил языка. Если переменная локальна для блока, использовать её можно только внутри этой области, а обращение снаружи будет недопустимым или приведёт к ошибке. Ограничение полезно: оно не даёт случайно изменить данные, предназначенные для внутренней работы фрагмента. При разборе кода отмечай объявление переменной и границу блока, чтобы понять, где она доступна; точные правила могут различаться в языках программирования.
| Вид или роль блока | Как устроен | Как выполняется | Что важно проверить |
|---|---|---|---|
| Последовательность команд | Несколько команд образуют составную команду и записаны в заданном порядке. | Команды выполняются одна за другой сверху вниз. | Порядок действий и границы всей группы. |
| Блок в условной конструкции | Команды помещены в ветвь условия. | Выполняется при выборе этой ветви; другая ветвь может быть пропущена или выполнена вместо неё. | Какие команды относятся к ветви и что происходит при каждом исходе условия. |
| Блок в цикле | Команды составляют тело цикла. | Выполняется один или несколько раз согласно правилам цикла. | Условие продолжения, число повторений и изменение данных. |
| Вложенный блок | Один блок расположен внутри другого. | Выполняется в рамках внешнего блока и подчиняется также внутренней конструкции. | Соответствие границ, уровень вложенности и доступность переменных. |
Сначала найди в таблице тип блока, похожий на фрагмент программы, а затем проследи указанный порядок выполнения. Для условия проверь оба возможных исхода, для цикла — правило повторения. Вложенный блок разбирай вместе с внешним, не теряя его границ.
Условие. Записать команды так, чтобы они выполнялись последовательно как одна составная команда. Возьмём пример на Python: сначала вычислить сумму двух чисел, затем вывести её и после этого вывести сообщение о завершении. Нужно определить, какие строки относятся к одной группе и в каком порядке они сработают.
Ответ. Например: s = 4 + 7; print(s); print("Готово") — три команды выполняются сверху вниз. В Python отдельной составной командой в синтаксическом смысле такая последовательность не является, если она не включена в управляющую конструкцию или функцию, но её можно рассматривать как группу шагов алгоритма. Поэтому важно не смешивать смысловое объединение действий с формальным блоком языка.
Условие. Составить фрагмент, в котором условие определяет выполнение нескольких команд. Пусть программа проверяет, положительно ли число x, и при положительном значении выводит число и сообщение. Требуется понять, почему оба вывода должны относиться к одной ветви.
Ответ. В Python обе команды с одинаковым отступом образуют тело условной конструкции. Если вторую команду записать без отступа, она окажется вне блока и будет выполняться независимо от условия. Следовательно, границы определяются не только строками, но и правильным оформлением блока.
Условие. Разбери фрагмент: for n in range(1, 5): затем внутри цикла — if n % 2 == 0:, а внутри условия — print(n). Определи, сколько раз выполняется проверка, сколько раз выполняется вывод и где доступна переменная n. Знак % означает остаток от деления.
Ответ. Проверка выполняется четыре раза, вывод — два раза, на экран попадают 2 и 4. В Python переменная цикла после завершения цикла обычно доступна дальше, но это не универсальное правило для всех языков. В других языках область её действия может быть ограничена циклом, поэтому доступность переменной нужно определять по правилам конкретного языка.
Первая ошибка — неверно обозначить начало или конец блока, перепутав синтаксис составной команды и отдельной команды. Это часто происходит, когда ученик переносит правила записи из одного языка в другой или считает отступы необязательными. Проверь, какое обозначение требует язык: двоеточие и отступ, парные скобки или специальные слова. Затем убедись, что все команды блока расположены между его границами.
Вторая ошибка — считать, что после условия или цикла всегда выполняется только одна команда. Такое ожидание появляется, если в примерах встречалась лишь одна команда, и дополнительные строки случайно оказываются за пределами блока. Проверь уровень отступа или положение скобок у каждой команды. Если действие должно зависеть от условия или повторяться в цикле, оно должно входить в соответствующий блок.
Третья ошибка — нарушить границы вложенных блоков. Тогда программа может не запуститься или выполнить команду в другой ветви, чем задумывалось; особенно легко запутаться при нескольких уровнях вложенности. Проверяй блоки по очереди, начиная с внешнего, и сопоставляй каждый открывающий знак с закрывающим, если язык использует скобки. В Python сравнивай отступы соседних строк и следи, чтобы внутренний блок был сдвинут относительно внешнего.
Четвёртая ошибка — использовать переменную за пределами блока, где она объявлена. Обычно это происходит потому, что область действия переменной принимают за всю программу и не проверяют правила языка. Найди место объявления и отметь, где заканчивается соответствующий блок или подпрограмма. Если обращение к имени находится за этой границей, проверь, разрешает ли язык такой доступ.
Чтобы понимать блоки, нужно знать запись команд и управляющих конструкций в конкретном языке: условия, циклы и правила оформления их тел. Блочная структура используется и при написании подпрограмм, где группы команд решают отдельные задачи и могут иметь собственные переменные. Она также помогает делить большие программы на части, разбирать их по шагам, тестировать и отлаживать. Знание блоков подготавливает к изучению областей видимости переменных и структурного программирования.
Зачем объединять команды в блок?
Блок позволяет считать несколько команд одной составной командой и управлять ими вместе. Например, условие может определять, выполнится ли вся группа команд, а цикл — повторится ли она.
Как понять, где начинается и заканчивается блок?
Нужно смотреть на синтаксис конкретного языка программирования. В Python начало блока отмечает двоеточие, а его команды имеют одинаковый отступ; в других языках могут применяться слова begin и end или фигурные скобки.
Можно ли помещать один блок внутрь другого?
Да, вложенные блоки часто используются в сложных алгоритмах. Например, внутри цикла можно разместить условие, а внутри него — ещё несколько команд.
Чем блок в условии отличается от блока в цикле?
Условный блок выполняется, если проверка условия приводит к выбранной ветви программы. Блок цикла выполняется повторно, пока сохраняются заданные правила продолжения цикла.
Почему переменная, объявленная в блоке, иногда недоступна снаружи?
В некоторых языках переменная существует только в области действия блока, где её объявили. За пределами этой области программа не может обратиться к ней по имени.
§ 30. Блоки