Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_5__Постановка_и_алгоритмизация_решения_э...docx
Скачиваний:
5
Добавлен:
27.11.2019
Размер:
97.49 Кб
Скачать

3. Формы представления алгоритмов

Чтобы довести алгоритмы до пользователя, в зависимости от их назначения они должны быть формализованы по некоторым правилам (соглашениям) посредством конкретных изобразительных средств. При этом существует множество способов, отличающихся по простоте, наглядности, компактности, степени формализации, ориентации на машинную реализацию и другим показателям. Наибольшее распространение получили следующие виды записи: словесная, формульно-словесная, блок-схемная, табличная, программы для микрокалькуляторов (МК), язык операторных схем и языки программирования.

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

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

x 2 - 3

y = ------------------ .

3x + 1

может иметь такой вид:

1. Умножить x на 3

2. Из результата первого действия извлечь квадратный корень

3. К результату второго действия прибавить 1

4. Умножить x на x

5. Из результата четвертого действия вычесть 3

6. Результат пятого действия разделить на результат третьего действия, полученный результат считать значением y.

Формульно-словесная запись. Этот способ основан на задании предписаний о выполнении конкретных действий в определенней последовательности с использованием математических формул и словесных пояснений. Формулы в сочетании с правилами их написания представляют собой, по существу, своеобразный алгоритмический язык, применяемый, как правило, для задания вычислительных алгоритмов. Этот способ общепринят при описании математических выкладок, доказательств теорем.

При этом способе записи алгоритма достигается любая степень детализации вычислительного процесса. Он более компактен и нагляден по сравнению со словесным.

Табличная запись (решающие таблицы) – весьма удобный способ. Существует несколько типов таблиц. Два простейших из них выглядят следующим образом. Первый обычно используют при организации вычислений по формуле с пооперационной регистрацией промежуточных результатов. Разбиение ее на последовательность элементарных действий и дает последовательность предписаний. Подобная запись алгоритма вычисления объема усеченного конуса представлена в таблице.

Например, выражение задает объем усеченного конуса. Здесь Н - высота усеченного конуса, R и r – радиусы соответственно нижнего и верхнего оснований.

R

r

H

H

1/3H

R2

Rr

r2

R2+Rr+r2

V

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

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

В торой тип – решающая таблица. В простейшем случае она включает четыре части: перечень и указатель условий, перечень и указатель действий. Ее структура отражена на рисунке.

Таблица

(номер)

1

2

3

К

Условие1

Y

N

Y

N

Условие2

-

Y

Y

N

Условие m

Y

-

Y

-

Действие 1

X

X

Действие2

X

X

Действие n

X

X

X

Перечень условий содержит все условия, а перечень действий – все действия, проверка и выполнение которых необходимы в процессе решения задачи. Они располагаются один за другим, причем в строке записывается лишь одно условие или действие. Правая часть делится на несколько столбцов. Содержимое каждого из них составляет одно правило, определяющее, какие условия следует проверять и какие действия в зависимости от результатов проверки в дальнейшем нужно произвести. Правило представляется с помощью специальных символов. Когда условие входит в него как элемент, на пересечении строки и столбца ставится либо Y (YES), либо N (NО). Первое означает, что оно должно быть выполнено, второе – не должно. Если условие не учитывается правилом, то в соответствующей позиции делается прочерк ( – ). Когда правило требует выполнения некоторого действия, на пересечении соответствующих строки и столбца помещается символ Х. В случае отсутствия действия позиция остается незаполненной.

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

Блок-схемы. Записи алгоритма на формальных языках часто предшествует его не вполне формальное описание. Языки, используемые для такого описания, называются не вполне формализованными. К ним относятся так называемые блок-схемы и применяемые программистом содержательные обозначения,

Блок-схема представляет собой графическое изображение алгоритма, при котором он расчленен на отдельные укрупненные части – «блоки», которые снабжены содержательными обозначениями и связаны между собой специальными знаками – линиями со стрелками, указывающими последовательность выполнения блоков. Эти линии могут быть снабжены надписями, определяющими условия, при которых реализуется данная последовательность выполнения. Блоки изображаются в виде прямоугольников, ромбов и т. п.

Другими словами, блок-схемой называется графическое изображение алгоритма, дополненное элементами словесной записи, в котором каждый этап процесса переработки данных представляется в виде геометрических фигур (блоков), имеющих определенную конфигурацию в зависимости от характера выполняемых операций (отображаемых функций). Условные обозначения, используемые для составления блок-схем, принято называть символами. Перечень символов, их форма, размеры и отображаемые ими функции определяются ГОСТ 19.003 – 80 "Схемы алгоритмов и программ. Обозначения условные графические", а правила оформления схем – ГОСТ 19.002 – 80 "Схемы алгоритмов и программ. Правила выполнения".

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

Для блок-схем обязательны два правила.

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

2. Установлена следующая последовательность:

– первым выполняется блок, к которому ведет стрелка от блока "начало";

– затем выполняется преемник этого блока, указанный стрелкой, исходящей из него; если преемников несколько, то из блоков должно выходить несколько стрелок и на каждой из них дается условие, при выполнении которого вычислительный процесс будет продолжен по этой стрелке;

– завершается вычислительный процесс блоком, от которого идет стрелка к блоку "конец".

По связи между блоками выделяются три существенно отличных типа. К первому относятся равного рода линейные блоки. Характерная их особенность – наличие только одного блока-преемника. Их обычно изображают как прямоугольник с одним входом и одним выходом. Этот элемент блок-схемы называют также элементом общей обработки (или арифметическим). В виде линейных блоков, как правило, графически представляются арифметические предписания,

Второй тип объединяет различные блоки условий. У каждого из них – не менее двух преемников. Они имеют форму ромба, одну вершину которого использует для обозначения входа, а остальные две или три – выхода из блока. Этот элемент называют также элементом принятия решения (или логическим). Так изображаются преимущественно логические предписания, применяемые для организации разветвлений.

Третий тип – вспомогательный. Он не описывает вычислительный процесс, а служит для указания мест разрыва связей между блоками.

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

В 1953 г. известный математик А.А.Ляпунов ввел в теорию программирования понятие оператора, пользуясь которым можно переходить от алгоритма, представляющего некоторый процесс, к программе ЭВМ. Первоначально операторный метод применялся на этапе программирования и алгоритмизации.

Операторами называются описания функционально однородных этапов изучаемого процесса. Операторная схема – это аналитическая форма представления алгоритма с помощью операторов, описывающих содержание автономных этапов вычислительного процесса, выделенных при решении задачи. Аналогично тому, как это делается при составлении блок-схем, алгоритм разбивается на части (участки), каждая из которых реализуется посредством определенного оператора.

При построении операторных схем в зависимости от своего назначения операторы делятся на: действующие (или арифметические), логические и варьирующие. Арифметические операторы или операторы счета обозначают действия, связанные с вычислениями по заданной группе формул. Действующие (арифметические) операторы определяют изменения, происходящие в объектах. Они описывают участки, включающие вычисления с помощью арифметических операций. Существенным свойством арифметических операторов является то, что после выполнения этого оператора независимо от результатов расчета происходит переход к выполнению следующего за ним (правого) в операторной схеме оператора и только к нему.

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

Языки программирования. Рассмотренные способы представления алгоритма широко применяются в практике программирования, особенно на начальных этапах разработки программ. Изобразительным средством, служащим для непосредственной реализации алгоритма на ЭВМ, является язык программирования.

Понимание алгоритма как системы правил или предписаний определяет использование для его представления некоторого языка, на котором эти правила формулируются. Этот язык должен быть таким, чтобы правила, сформулированные с его помощью, обладали ранее перечисленными свойствами, т.е. составляли алгоритм.

Для записи алгоритма применяют языки, смысл фразы в которых однозначно определяется ее формой. Такие языки называют формальными. К формальным языкам относятся алгоритмические языки машинкоды. Простейшим языком программирования является язык команд конкретной ЭВМ, или машинный. Однако запись на нем получается труднопонимаемой, так как представляет собой последовательность команд, каждая из которых выражена определенным набором цифр.

Команда – это инструкция, поданная в форме, позволяющей ввести ее в машину, и регулирующая действия ЭВМ в течение некоторого времени. Каждая команда – это элементарная часть процесса обработки информации, называемая машинной операцией. Исходной информацией обычно служит набор конкретных значений, называемых исходными данными. В команде в общем случае должны быть указаны вид действия (код операции), место хранения в машине (адрес) исходной информации, над которой производится операция, адрес результата, а также следующая команда.

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

Знаковые системы, применяющиеся для описания алгоритма решения задачи на ЭВМ, называют языками программирования. Наибольшее распространение получили формальные алгоритмические языки программирования, к которым относятся:

а) алгоритмические языки машин;

б) машинно-ориентированные алгоритмические языки;

в) проблемно-ориентированные алгоритмические языки;

г) универсальные алгоритмические языки.

Каждый алгоритмический язык имеет собственный алфавит, синтаксис и семантику.

Алфавит – это набор основных символов. Любая запись выполняется с использованием только этих символов.

Синтаксис – совокупность правил, обусловливающих их последовательность, т.е. характер допустимых конструкций.

Семантика – система истолкования отдельных конструкций языка и целых фраз. Она позволяет однозначно воспроизвести процесс переработки данных, который предусмотрен алгоритмом, записанным на алгоритмическом языке.