6
1.3 Способы описания алгоритмов
Для строгого задания различных структур данных и алгоритмов их обработки нужно иметь такую систему формальных обозначений и правил их использования, чтобы всякое действие трактовалось точно и однозначно. Соответствующие системы правил называют языками описаний алгоритмов.
В настоящее время используются следующие языки описания:
словесная запись;
псевдокод;
схемы алгоритмов;
алгоритмические языки.
При разработке сложных проектов программисты используют специальные программные средства для автоматизированного проектирования алгоритмов и программ.
Ниже рассмотрены различные способы описания алгоритма решения несложной задачи.
Задача. Составить алгоритм и написать программу для решения квадрат-
ного уравнения вида ax2 bx c 0 . Программа должна проверять правильность исходных данных и в случае, если коэффициент a при второй степени неизвестного равен нулю, выводить соответствующее сообщение.
Словесная запись алгоритма. Данный способ основан на использовании общепринятых средств общения между людьми и содержит набор фраз, который не допускает лишних слов, повторений и неоднозначностей. Действия, предусмотренные алгоритмом, нумеруются, что даёт возможность на них ссылаться. Допускается использование математической символики.
Словесная запись алгоритма решения квадратного уравнения:
1.Ввести значения коэффициентов a, b и свободного члена с.
2.Если величина a=0, то вывести сообщение «Уравнение не является квадратным». Перейти к пункту 8.
3.Определить величину дискриминанта d по следующей формуле:
db2 4ac .
4.Если величина d<0, то вывести сообщение «Уравнение не имеет действительных корней». Перейти к пункту 8.
5.Если величина d=0, то вычислить значения корней уравнения по следующей формуле:
x1 x2 b .
2a
Перейти к пункту 7.
6. Вычислить значения корней уравнения по следующим формулам:
|
|
|
|
|
|
|
|
|
|
x1 |
|
b d |
; |
x2 |
|
b d . |
|||
|
|
2a |
|
|
|
2a |
|||
7.Вывести значения x1 и x2.
8.Конец алгоритма.
7
Псевдокод. Это формализованный язык записи структурированных алгоритмов, основанный на представлении предписаний, задаваемых с помощью ограниченного набора типовых синтаксических конструкций. Набор конструкций состоит из смеси конструкций алгоритмического языка высокого уровня и фраз родного языка исполнителя. Как правило, стандартов на псевдокод не существует. Псевдокод используется для облегчения разработки программ. Так же как и программа, псевдокод имеет все достоинства структурированной записи, поэтому алгоритм, написанный на псевдокоде, достаточно легко преобразовать в программный код.
Запись алгоритма с использованием псевдокода:
алг Решение_квадратного_уравнения (арг вещ a, b, с, рез вещ x1, x2)
начало вещ d
ввод a, b, с
если a = 0 то вывод “Уравнение не является квадратным”
иначе
d = b*b-4*a*c
если d < 0 то вывод “Уравнение не имеет действительных корней”
иначе
если d = 0 то x1= x2=-b/(2*a)
иначе x1=(-b+ d)/(2*a) x2=(-b- d)/(2*a)
конец если вывод x1, x2
конец если конец если
конец
Схемы алгоритмов. Данный способ является наиболее распространённым и обеспечивает графическое представление метода решения задачи, в котором используются символы, отображающие операции (действия) и данные.
В схеме алгоритма каждому типу действий (например, ввод исходных данных, вычисление значений выражений, проверка условий и т.д.) соответствует определённая геометрическая фигура, представляющая символ действия. Символы действия соединяют линиями переходов, которые определяют очерёдность выполнения действий. Форма символов и правила составления схем установлены Единой системой программной документации (ЕСПД) ГОСТ 19701-90. Наиболее часто употребляемые символы действий указанного стандарта приведены ниже.
Название символа |
Обозначение |
Пояснение |
Процесс |
|
Выполнение определённой опе- |
|
|
рации или группы операций |
|
8 |
|
|
|
|
Предопределённый |
Вычисления |
по |
подпрограмме, |
||
процесс |
стандартной подпрограмме |
||||
Решение |
Проверка условий |
|
|
||
Граница цикла |
Символ состоит из двух частей и |
||||
|
отображает начало и конец цикла. |
||||
|
Обе части имеют один и тот же |
||||
|
идентификатор |
|
|
|
|
Подготовка |
Модификация команды или груп- |
||||
|
пы команд на некоторую после- |
||||
|
дующую функцию (например, |
||||
|
модификация параметров цикла). |
||||
|
Используется для циклов с пара- |
||||
|
метром. |
|
|
|
|
Терминатор |
Начало и конец программы, вход |
||||
|
и вывод из подпрограммы |
||||
Данные |
Символ отображает ввод данных, |
||||
|
носитель которых не определён |
||||
Документ |
Символ отображает данные, пред- |
||||
|
ставленные на носителе в удобо- |
||||
|
читаемой форме. |
Используется |
|||
|
как символ печати результатов |
||||
Линия |
Символ отображает поток данных |
||||
|
или управления. При необходи- |
||||
|
мости могут |
быть |
добавлены |
||
|
стрелки-указатели |
|
|
||
Соединитель |
Символ отображает выход в часть |
||||
|
схемы и вход из другой части |
||||
|
схемы. Используется для обрыва |
||||
|
линии и продолжения её в другом |
||||
|
месте |
|
|
|
|
Комментарий |
Используется |
для |
добавления |
||
|
описательных |
комментариев или |
|||
|
пояснительных |
записей в целях |
|||
|
объяснений (примечаний). Пунк- |
||||
|
тирная линия связана с соответст- |
||||
|
вующим символом или может об- |
||||
|
водить группы символов. Текст |
||||
|
помещается |
около |
ограничиваю- |
||
|
щей фигуры |
|
|
|
|
9
Символы Данные и Документ используются для обозначения операций ввода-вывода.
Символ Процесс применяется для обозначения выполнения одной или нескольких операций, приводящих к изменению значения, формы или размещения информации. Представление операций достаточно свободно. Например, для обозначения вычислений можно использовать математические выражения или текст.
Символ Решение используется для обозначения переходов управления по условию. Имеет один вход и ряд выходов, при этом только один из них может быть активизирован после вычисления условий, определённых внутри этого символа. Результаты вычисления могут быть записаны рядом с линиями, отображающими эти пути.
Символ Граница цикла используется для организации циклических вычислительных процессов. Параметр цикла записывается в обеих частях символа. Начальное значение, граничное условие и правило изменения параметра цикла указывается в начале или в конце в зависимости от расположения операции проверяющей условие.
Символ Подготовка используется, как правило, для организации цикла с параметром. Внутри символа записывается параметр цикла, указывается его начальное значение, граничное условие и правила изменения значения параметра. Символ размещается в начале циклической конструкции.
Линии переходов используются для обозначения порядка выполнения действий.
Соединители используются в том случае, когда схема алгоритма разделяется на автономные части, особенно если она не умещается на одном месте, или когда необходимо избежать излишних пересечений линий переходов.
Комментарий позволяет включать в схемы алгоритмов пояснения к функциональным блокам. Частое использование комментариев нежелательно, так как это усложняет схему, делает её менее наглядной.
Алгоритм начинается и заканчивается символами Начало и Конец. Основные правила применения символов и выполнения схем алгоритмов:
1.Символы в схеме должны быть расположены равномерно. Нужно придерживаться разумной длины соединений и минимального числа длинных линий.
2.Символы должны быть по возможности одного размера и предпочтительно горизонтальной ориентации.
3.Внутри символа помещается минимальное количество текста, необходимое для понимания функции символа. Для записи используется естественный язык с элементами математической символики. Если объем
текста превышает размер символа, то нужно использовать символ
Комментарий.
4.Потоки данных и потоки управления в схемах показываются линиями. Направление потока слева направо и сверху вниз считается стандартным. Если поток имеет направление, отличное от стандартного, стрелки должны указывать это направление.
10
5.Линии в схемах должны подходить к символу либо слева, либо сверху, а исходить либо справа, либо снизу. Линии должны быть направлены к центру символа.
6.Каждый символ имеет один вход и один выход. Исключением является символ Решение, который имеет один вход и несколько выходов. При этом каждый выход должен сопровождаться значениями условий, чтобы указать логический путь, который он представляет.
Схема алгоритма является самым наглядным способом представления алгоритма, при этом нет никаких ограничений на степень его детализации. На рисунке 1 показана схема алгоритма решения задачи нахождения корней квадратного уравнения.
Рисунок 1 Схема алгоритма решения квадратного уравнения