Средства описания структурных алгоритмов.



(кроме схем опис-х выше) Псевдокоды.Псевдокод – формализованное текстовое описание алгоритма (текстовая нотация). В литературе были предложены несколько вариантов псевдокодов. Один из них приведен в табл. 2.4.

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

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

Диаграммы Насси-Шнейдермана. - являются развитием Flow-форм. Основное их отличие от Flow-форм: область обозначения условий и вариантов ветвления изображают в виде треугольников.Такое обозначение обеспечивает большую наглядность представления алгоритма.

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

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

Стиль оформления программы.

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

Стиль оформления программы включает:

-правила именования объектов программы (переменных, ф-ий, типов, данных и т.п.);

-правила оформления модулей; -стиль оформления текстов модулей.

Правила именования объектов программы.При выборе имен следует придерживаться правил:

•имя объекта должно соответствовать его содержанию, например:

Maxltem - максимальный элемент; Nextltem - следующий элемент;

•если позволяет язык программирования, можно использовать символ «_» для визуального разделения имен, состоящих из нескольких слов, например:

Max_ltem, Next_Item;

•необходимо избегать близких по написанию имен, например:Index и InDec.

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

-название модуля;  -краткое описание его назначения;

-краткое описание входных и выходных параметров с указанием единиц измерения;

-список используемых (вызываемых) модулей;

-краткое описание алгоритма (метода) и/или ограничений;

-ФИО автора программы:

-идентифицирующую информацию (номер версии). Например:

{*****************************************************}

{* Функция: Length_Path(n:word; L: array of real):real                                                                                                                                       *}

{* Цель: определение суммарной длины отрезков                                                                                                                                          *}

{* Исходные данные:                                                                                                                                                                                      *}

{* n - количество отрезков, *}

{* L - массив длин отрезков (в метрах)                                                                                                                                                             *}

{* Результат: длина (в метрах)                                                                                                                                                                       *}

{* Вызываемые модули: нет                                                                                                                                                                            *}

{* Описание алгоритма:                                                                                                                                                                                   *}

{*    отрезки суммируются методом накопления, n > О     *}

{* Дата: 25.12.2001 Версия 1.01.                                                                                                                                              '              *}

{* Автор: Иванов И.И.                                                                                                                                                                                     *}

{* Исправления: нет                                                                                                                                                                                       *}

{*********************************}

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

{проверка количества отрезков и выход, если отрезки не заданы}

if n<0 then

begin WriteLn('Количество отрезков отрицательно');

exit; end;

{цикл суммирования длин отрезков}

S:=0;

for i: =0 to п-1 do S: =S + Len[i];

Для таких языков, как Pascal, C++ и Java, использование отступов позволяет прояснить структуру программы: обычно дополнительный отступ обозначает вложение операторов языка, например:

атах:=а[1,1];

for i:=1 to n do

for j:=1 to m do

if a[i,j]>amax then amax:=a[i,j];

КОМЕНТАРИИ. Комментировать следует цели выполнения тех или иных действий, а также группы операторов, связанные общим действием, т.е. комментарии должны содержать некоторую дополнительную (неочевидную) информацию, например:

{проверка условия и выход, если условие не выполняется}

if n<0 then

begin

WriteLn('Количество отрезков отрицательно');

exit;

end;

Для языков низкого уровня(Ассемблер) стиль, облегчающий понимание, предложить труднее. В этом случае лучше ком-ть и блоки операторов, и каждый оператор, пр:

цикл суммирования элементов массива;

установки цикла mov АХ, 0; обнуляем сумму

mov CX, п; загружаем счетчик цикла

mov BX, 0;смещение первого элемента массива;

тело цикла cycle:add AX, a[BX];

добавляем элемент add  BX, 2;

определяем адрес следующего loop cycle;

цикл на n повторений;

выход из цикла при обнулении счетчика


Дата добавления: 2018-02-15; просмотров: 1390; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!