ЭВМ
Программа
Алгоритмы
Основы структурного программирования
Els
Кон
Нач
День рождения
Новый год
3. День знаний выбор=? <п> <результат >
<результат >:
1 января |
1 декабря |
1 сентября |
Алгоритм и программа выбора по меню, соответствующие этому сценарию:
Алгоритм
алг «выбор по меню»
вывод («Меню») вывод («I. Новый год») вывод («2. День рождения») вывод («З. День знаний») print запрос («выбор=», п) если п = 1 то
вывод («1 января») если п = 2 то
вывод («1 декабря») если п = 3 то
вывод («1 сентября»)
Программа
' выбор по меню
print «Меню:»
print («1. Новый год»)
print («1. День рождения»)
(«3. День знаний»)
input «выбор=», п
if n = I then print «1 января»
if n = 2 then print «1 декабря»
if n = 3 then print «1 сентября» end
Правильность диалоговых алгоритмов и программ можно оценить сопоставлением их со сценарием диалога. Любое отклонение результатов выполнения алгоритмов и программ от сценария диалога - это ошибка. Диалоговый алгоритм - правильный, если результаты их выполнения строго соответствуют сценарию.
|
|
Сравнение текста программы с описанием алгоритма, а затем алгоритма со сценарием диалога подтверждает полное соответствие программы заданному сценарию «выбор по меню». Таким образом, правильность программ может проверяться через правильность реализованных в них алгоритмов.
Алгоритмизация - это составление алгоритмов для последующей реализации в виде программ для ЭВМ. Знание и использование систематических методов превращают алгоритмизацию -в строгую дисциплину, позволяющую составлять программы на ЭВМ без ошибок.
Порядок составления программ: задача —i
"U |
"U
На практике широко используются два подхода к алгоритмизации:
1) традиционный подход (с использованием блок-схем);
2) структурный подход (с использованием структурной записи);
Традиционный подход к составлению алгоритмов с применением блок-схем грешит большим числом ошибок в программах из-за их громоздкости и запутанности. Из-за этого тради-ционный подход к составлению программ чреват большим числом ошибок в создаваемых про-граммах.
Структурный подход к программированию заключается в обязательном предварительном составлении структурированных алгоритмов с записью их на псевдокоде. Простота чтения, пони-мания и исправления структурированных описаний позволяет существенно уменьшить количество ошибок в алгоритмах и программах и сократить время их отладки на ЭВМ.
При структурном подходе к составлению алгоритмов и программ используются три основ-ных правила композиции:
|
|
1) альтернативный выбор;
2) циклический повтор;
3) вспомогательные алгоритмы (подпрограммы). Структурированными считаются алгоритмы и программы составленными только с ис-
пользованием указанных трех правил структурной композиции. Неструктурированными считают-ся алгоритмы и программы, в которых используются операторы goto... или отсутствует ступенча-тая запись циклов и альтернатив.
Основные правила структурной композиции алгоритмов с примерами записи их на языке структурированного Бейсика:
1. Альтернативный выбор:
Алгоритм | Запись |
если х > 0 то | if х > 0 then |
у:= х | у = х |
иначе | else |
у:= -х | у = -х |
кесли | end if |
2. Циклический повтор:
АлгоритмЗапись
пока х > 1 цикл do while х > 1
х: = х/2 х = х/2
кцикл loop
3. Вспомогательные алгоритмы (подпрограммы).
Алгоритм | Подпрограмма |
алг «у = \х\» | mod: 'у = |х| |
нач | ' |
если х > 0 то | if х > 0 then |
у:= х | у = х |
иначе | else |
у:= -х | у = -х |
все | end if |
кон | return |
Обращение к алгоритму | Обращение к подпрограмме |
«у = \х\» gosub mod
В качестве иллюстрации приведем пример структурированного алгоритма «Галерея карти-нок» и соответствующей структурированной программы:
Сценарий «Галерея картинок»
Список картинок:
1. треугольник
2. прямоугольник
3. кольцо номер =? «N»
В соответствии с этими четырьмя картинками построим три вспомогательных алгоритма рисования отдельных картинок из «Галереи» и общий алгоритм выбора картинок в соответствии с приведенным выше сценарием:
алг «Галерея картинок» нач
вывод («Список картинок:») вывод («1. треугольник») вывод («2. прямоугольник») вывод («3. кольцо») запрос(«номер =», n) графический_экран если n = 1 то
рисунок_треугольника инес n = 2 то
рисунок_прямоугольника инес n = 3 то
рисунок_кольца иначе
вывод («нет такого рисунка») все кон
алг «рисунок_треугольника»