Б 7 1. Основные алгоритмические структуры: следование, ветвление, цикл; изображение на блок-

advertisement
БИЛЕТ 7
1. Основные алгоритмические структуры: следование, ветвление, цикл; изображение на блоксхемах. Разбиение задачи на подзадачи. Вспомогательные алгоритмы.
Линейный (последовательный) алгоритм – это последовательность действий, выполняемых однократно в заданном
порядке.
Для примера составим алгоритм вычисления следующего выражения: (75 – 40) – (22 + 10).
1. Вычислить разность 75 и 40.
2. Сложить числа 22 и 10.
3. Вычислить разность результатов 1-го и 2-го действий.
Действия в этом алгоритме выполняются в том порядке, в котором записаны. Из записи алгоритма видно, что при его
исполнении получаются два промежуточных результата – в 1-м и 2-м действии. Для того, чтобы их зафиксировать,
выделяется специальная область памяти, которую называют переменной. В отличии от математики, в программировании
значения переменных могут многократно изменяться по ходу вычислений. Кроме этого переменные могут использоваться
для хранения совершенно различных типов данных – не обязательно числовых.
Для записи в память значения переменной используется команда присваивание. На языке программирования наш
алгоритм можно записать так:
1. А:=75 – 40 (читается: «переменной А присвоить значение 75 – 40»);
2. В:=22 + 10 (читается: «переменной В присвоить значение 22 + 10»);
3. С:=А – В (читается: «переменной С присвоить значение А – В»).
Циклические алгоритмы. Команда повторения.
В отличии от линейных алгоритмов, в которых команды выполняются последовательно одна за другой, в циклические
алгоритмы входит последовательность команд, выполняемая многократно. Такая последовательность команд называется
телом цикла.
В циклах тело цикла выполняется до тех пор, пока выполняется условие. Выполнение таких циклов происходит
следующим образом: пока условие справедливо (истинно), выполняется тело цикла, когда условие становится
несправедливым, выполнение цикла прекращается.
Цикл, как и любая другая структура, может быть:
 записан на естественном языке;
 изображен в виде блок-схемы;
 записан на алгоритмическом языке;
 закодирован на языке программирования.
Циклические алгоритмы, к которых тело цикла выполняется заданное число раз, реализуются с помощью цикла со
счетчиком. Цикл со счетчиком реализуется с помощью команды повторения. Рассмотрим в качестве примера алгоритм
вычисления суммы квадратов чисел от 1 до 3. запишем его на алгоритмическом языке. Телом цикла в данном случае
является команды S:=S+n*n. Количество повторений тела цикла зафиксировано в строке, определяющей изменение значений
счетчиков цикла (для n от 1 до 3), т.е. тело цикла будет выполнено три раза.
Разветвляющиеся алгоритмы. Команда ветвления.
В отличии от линейных алгоритмов, в которых команды выполняются последовательно одна за другой, в
разветвляющиеся алгоритмы входит условие, в зависимости от выполнения или невыполнения которого выполняется та или
иная последовательность команд (серий).
В качестве условия в разветвляющемся алгоритме может быть использовано любое понятное исполнителю утверждение,
которое может соблюдаться (быть истинно) или не соблюдаться (быть ложно). Такое утверждение может быть выражено как
словами, так и формулой. Таким образом, команда ветвления состоит из условия и двух последовательностей команд.
Команда ветвления, как и любая другая, может быть:
 записана на естественном языке;
 изображена в виде блок-схемы;
 записана на алгоритмическом языке;

закодирована на языке программирования.
Рассмотрим в качестве примера разветвляющийся алгоритм, изображенный в виде блок – схемы..
Вспомогательные алгоритмы и подпрограммы.
Пусть требуется составить программу, по которой ГРИС напишет на экране число 1919. Конечно, можно
написать одну длинную программу, по которой исполнитель шаг за шагом нарисует эти цифры. Но, очевидно,
возникает другая идея: поскольку здесь дважды повторяются цифры 1 и 9, нельзя ли сократить работу, написав
программу рисования той и другой цифры только один раз? Это действительно можно сделать.
Алгоритм, по которому решается некоторая подзадача из основной задачи и который, как правило,
выполняется многократно, называется вспомогательным алгоритмом
В языках программирования их называют подпрограммами или процедурами. Последнее название будем
использовать в языке управления графическим исполнителем.
В таком случае программа решения поставленной задачи разделяется на основную программу (основной
алгоритм) и процедуры (вспомогательные алгоритмы). Каждая процедура должна иметь свое уникальное имя.
Для рассматриваемой задачи имена процедур выберем следующими: ЕДИНИЦА и ДЕВЯТЬ. Тогда в основной
программе команды обращения к этим процедурам будут такими:
сделай ЕДИНИЦА
сделай ДЕВЯТЬ
По этим командам управление передается соответствующим процедурам и после их выполнения
управление вернется к следующей команде основной программы.
Договоримся, что начальное и конечное состояния ГРИС при вычерчивании каждой цифры будет таким, как
показано стрелками на рисунке (внизу, на восток). У единицы начальное и конечное состояния совпадают.
Основная программа:
программа число1919
нач
сделай ЕДИНИЦА
прыжок
сделай ДЕВЯТЬ
прыжок
сделай ЕДИНИЦА
прыжок
сделай ДЕВЯТЬ
кон
Но теперь надо «Объяснить» исполнителю, что такое ЕДИНИЦА и что такое ДЕВЯТЬ. Это делается в описаниях
процедур
Данный пример познакомил вас с новой командой из СКИ графического исполнителя — командой обращения
к процедуре. Ее формат, то есть общий вид, следующий:
сделай < имя процедуры>
Определение процедуры в программе называется ее описанием. Формат описания процедуры:
процедура <имя процедуры>
нач
<тело процедуры>
кон
Имя в описании и имя в обращений должны точно совпадать (никаких склонений по падежам!). Описание
процедур располагается после основной программы.
Добавив к программе описание процедуры, мы тем самым расширили систему команд исполнителя. В данной
программе стало возможным использование команды обращения к этой процедуре.
Использованный нами подход облегчает программирование сложных задач. Задача разбивается на более
простые подзадачи. Решение каждой оформляется в виде вспомогательного алгоритма, а основной алгоритм
организует связку между ними.
Метод программирования, при котором сначала пишется основная программа, затем в ней записываются
обращения к пока еще не составленным подпрограммам, а потом описываются эти подпрограммы, называется
методом последовательной детализации. Причем количество шагов детализации может быть гораздо большим,
чем в нашем примере, поскольку сами подпрограммы могут содержать внутри себя обращения к другим
подпрограммам.
Для упрощения программирования сложных задач используются вспомогательные алгоритмы.
Вспомогательный алгоритм — это алгоритм решения некоторой подзадачи из исходной (основной) задачи.
Вспомогательный алгоритм должен быть описан. После этого в основном алгоритме можно использовать
команду обращения к этому вспомогательному алгоритму.
Метод программирования, при котором сначала записывается основной алгоритм, а затем описываются
использованные в нем вспомогательные алгоритмы, называется методом последовательной детализации, или
программированием сверху вниз. Обратный порядок программирования называется программированием снизу
вверх.
Download