На Горох
Информатика, 10 класс

§ 13. Структура алгоритмов

"Информатика (базовый уровень)", Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.

Объяснение темы В оглавлении: § 13. Структура алгоритмов

Кратко о теме

Структура алгоритма задаёт порядок, в котором исполнитель выполняет команды. Любой алгоритм можно построить из трёх базовых структур: следования, ветвления и цикла. Следование выполняет команды одну за другой, ветвление выбирает действие по условию, а цикл повторяет команды. Эти конструкции можно соединять и вкладывать, создавая алгоритмы любой сложности. Блок-схема помогает увидеть их устройство и проследить ход выполнения.

Объяснение темы

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

Определения и обозначения

Линейная структура алгоритма — последовательное выполнение команд в порядке их записи, без пропусков и повторений. Каждая команда запускается после предыдущей, поэтому ход выполнения заранее определён. Такая структура подходит, когда для решения задачи достаточно выполнить действия одно за другим. Например, можно ввести число, умножить его на два и вывести результат.

Ветвление — структура, в которой дальнейшие действия выбираются в зависимости от истинности условия. Условие — это выражение, результатом которого становится «истина» или «ложь». Ветвление нужно, когда при разных исходных данных алгоритм должен действовать по-разному. Например, проверка числа позволяет выбрать сообщение о том, положительное оно или нет.

Цикл — структура, обеспечивающая многократное выполнение одной или нескольких команд. Повторяемые команды образуют тело цикла, а условие или счётчик помогают определить, когда остановиться. Цикл нужен, если однотипное действие приходится выполнять снова и снова. Благодаря ему не нужно записывать одну и ту же команду много раз.

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

Как это устроено

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

Линейная структура задаёт однозначный порядок: исполнитель начинает с первой команды и переходит к следующей после её выполнения. Такой порядок удобен для вычислений, где каждое действие использует результат предыдущего. Если команда обращается к данным, которые ещё не были получены или рассчитаны, порядок нужно пересмотреть. Например, сначала вводят x, затем вычисляют y = 2x + 1 и только потом выводят y.

Ветвление начинается с проверки условия, после которой выбирается одна из альтернатив. Если условие истинно, выполняется одна команда или группа команд; если ложно — другая. Полное ветвление предусматривает действия для обоих результатов проверки, а неполное задаёт действие только для одного из них: при другом результате выполнение просто продолжается. Выбирая между ними, нужно спросить себя, требуется ли отдельная команда для каждого исхода.

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

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

Базовые структуры алгоритмов

Сопоставляйте структуры по тому, как проверяется условие и сколько раз выполняется тело. В таблице указаны общие свойства; конкретное число повторений зависит от данных и заданного алгоритма. Для цикла с параметром число шагов обычно известно заранее.

СтруктураПорядок выполненияНаличие условияКоличество выполнений командПример применения
Линейная структураКоманды выполняются одна за другойНетКаждая команда выполняется один разВвод числа, вычисление и вывод результата
ВетвлениеВыполняется выбранная по условию альтернативаДа, проверяется условиеКоманды одной из альтернатив выполняются по одному разуОпределение большего из двух чисел
Цикл с предусловиемСначала проверка, затем тело, затем новая проверкаДа, до выполнения телаНоль или несколько разПовторение, пока введённое значение не подходит
Цикл с постусловиемСначала тело, затем проверка условияДа, после выполнения телаОдин или несколько разПовторный запрос данных до правильного ввода
Цикл с параметромПараметр проходит заданный диапазон, выполняется телоЧисло шагов задаётся параметромЗаранее определённое число разВычисление суммы первых n натуральных чисел

Разбор задач

Вычисление значения выражения

Условие. Записать алгоритм вычисления y = 3x + 2 по заданному числу x и представить его блок-схемой. Для этой задачи все команды выполняются в одном порядке, выбор и повторение не нужны. Поэтому достаточно линейной структуры.

  1. Определяем входные данные: значение x, которое вводит пользователь.
  2. Вычисляем значение выражения по формуле y = 3x + 2, сохраняя результат в переменной y.
  3. Выводим y. В блок-схеме эти действия соединяем стрелками в последовательности: начало, ввод x, вычисление y, вывод y, конец.

Ответ. Алгоритм: ввести x; присвоить y значение 3x + 2; вывести y. Например, при x = 4 получаем y = 3 · 4 + 2 = 14. В блок-схеме после блока вычисления нет развилки: поток идёт к выводу результата.

Определение большего из двух чисел

Условие. Составить алгоритм, который получает числа a и b и сообщает большее из них. Одной линейной последовательности недостаточно: нужное действие зависит от сравнения значений. Если a = b, ни одно число не больше другого, поэтому алгоритму нужны три возможных результата.

  1. Вводим a и b, затем проверяем условие a > b.
  2. Если условие истинно, выводим «a больше». Если оно ложно, проверяем b > a.
  3. При истинности второй проверки выводим «b больше», а иначе — «числа равны». В блок-схеме альтернативные пути соединяем перед завершением.

Ответ. Используем полное ветвление: для каждого возможного исхода предусмотрено сообщение. Например, при a = 7 и b = 5 первая проверка истинна, поэтому алгоритм выводит, что a больше. Ветка равенства нужна, поскольку при ложном условии a > b число b не обязательно больше: оно может быть равно a.

Сумма первых n натуральных чисел

Условие. Найти сумму чисел от 1 до n с помощью цикла. Для примера возьмём n = 4; ожидаем сложить 1 + 2 + 3 + 4. Нужны переменная-сумма и счётчик, который показывает очередное слагаемое.

  1. Перед циклом присваиваем s = 0 и i = 1. Начальное значение суммы равно нулю, потому что пока слагаемые не добавлены.
  2. Пока i ≤ n, прибавляем i к s, затем увеличиваем i на 1. Изменение счётчика необходимо, иначе условие не изменится и цикл может стать бесконечным.
  3. Когда i станет больше n, цикл завершится; выводим s. В блок-схеме условие проверяется перед телом, значит, это цикл с предусловием.

Ответ. При n = 4 значения s после итераций равны 1, 3, 6 и 10, а i последовательно принимает значения 2, 3, 4 и 5. При i = 5 условие 5 ≤ 4 ложно, поэтому цикл прекращается и выводится 10. Если n = 0, тело не выполнится ни разу и алгоритм выведет 0.

Типичные ошибки

Условие ветвления иногда путают с командой, которая должна выполняться. Из-за этого неясно, по какому признаку выбирается дальнейшее действие; например, фразы «сравнить числа» недостаточно, если не указано, проверяется ли a > b. Ошибку допускают, когда описывают желаемый результат, но забывают сформулировать логическую проверку. Проверьте себя: условие должно допускать ответ «истина» или «ложь» и однозначно вести к нужной альтернативе.

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

В цикле можно забыть изменить счётчик или другую переменную, связанную с условием. Тогда проверка снова получает прежний результат, и повторение не заканчивается; причиной часто становится невнимательность при записи тела цикла. Проверьте, меняется ли нужная переменная при каждой итерации и приведёт ли это изменение к ложному условию. Для проверки полезно вручную проследить несколько повторений.

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

Связь с другими темами

Для понимания структур нужны понятия алгоритма, команды, исполнителя, условия и логического значения: без них нельзя описать ни последовательность действий, ни выбор, ни повторение. Эти конструкции становятся основой записи программ на языках программирования, где ветвлению соответствуют условные операторы, а циклам — циклические операторы. Блок-схемы помогают представить программу графически, а трассировка — последовательно проверить её работу на конкретных данных. Те же структуры используют при разработке сложных программ, разбивая задачу на понятные части.

Что запомнить

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

Частые вопросы по теме

Можно ли любой алгоритм представить только с помощью трёх базовых структур?

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

Чем ветвление отличается от цикла?

Ветвление по условию выбирает один из возможных путей выполнения. Цикл использует условие или счётчик, чтобы повторять команды; после проверки он может продолжить повторение или завершиться.

Почему цикл иногда не выполняется ни одного раза?

В цикле с предусловием условие проверяется до выполнения тела. Если при первой проверке оно ложно, команды внутри цикла пропускаются.

Как понять, какой вид цикла выбрать?

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

Можно ли помещать один цикл или ветвление внутрь другого?

Да, базовые структуры можно вкладывать друг в друга. Например, внутри цикла можно проверять условие, а внутри ветвления — запускать другой цикл; важно следить за условиями и изменением переменных.

Спросить по теме параграфа

§ 13. Структура алгоритмов

Учебник

Оглавление →
Предмет
Информатика
Класс
10 класс
Учебник
"Информатика (базовый уровень)", Семакин И.Г., Хеннер Е.К., Шеина Т.Ю.