Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ППС2.doc
Скачиваний:
53
Добавлен:
05.03.2016
Размер:
1.43 Mб
Скачать

Лабораторная работа № 2 Структурный подход к программированию. Стадия «Эскизный проект»

Цель занятия:научиться создавать формальные модели и на их основе определять спецификации разрабатываемого программного обеспечения.

Теория:

Анализ требований и определение спецификаций при структурном подходе

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

  • диаграмм потоков данных (DFD – Data Flow Diagrams), описывающих взаимодействие источников и потребителей информации через процессы, которые должны быть реализованы в системе;

  • диаграмм «сущность-связь» (ERD – Entity-Relationship Diagrams), описывающих базы данных разрабатываемой системы;

  • диаграмм переходов состояний (STD – State Transition Diagrams), характеризующих поведение системы во времени;

  • функциональных диаграмм (методология SADT);

  • спецификаций процессов;

  • словаря терминов.

1. Спецификации процессов

Спецификации процессов могут быть представлены в виде псевдокодов, блок-схем алгоритмов, Flow-форм, диаграмм Насси-Шнейдермана или просто краткого текстового описания.

При структурном программировании различают три вида вычислительного процесса: линейный, разветвленный и циклический.

Линейная структура– выполнение операторов последовательно.

Разветвленная структура– в зависимости от выполнения некоторого условия выполняется та или иная последовательность операторов.

Циклическая структура– многократное выполнение одинаковой последовательности операторов.

Схемы алгоритмов

Для изображения схем алгоритмов разработан ГОСТ 19.701-90 (см. табл. 1)

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

  • следование – обозначает последовательное выполнение действий (рис. 1 а);

Таблица 1

Название

Обозначение

Назначение

Терминатор

Начало, завершение программы или подпрограммы

Процесс

Обработка данных (вычисления, пересылки и т. п.)

Данные

Операции ввода-вывода

Решение

Ветвление, выбор, поисковые и итерационные циклы

Подготовка

Счетные циклы

Граница цикла

Конец

Любые циклы

Предопределенный процесс

Вызов процедур

Соединитель

Маркировка разрывов линий

Комментарий

Пояснения к операциям

  • ветвление – соответствует выбору одного из двух вариантов действий (рис. 1, б);

  • цикл-пока – определяет повторение действий, пока не будет нарушено некоторое условие, выполнение которого проверяется в начале цикла (рис. 1, в).

Рис 1. Базовые алгоритмические структуры:

а - следование; б - ветвление; в - цикл-пока

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

  • выбор – обозначает выбор одного варианта из нескольких в зависимо­сти от значения некоторой величины (рис. 2, а);

  • цикл-до – обозначает повторение некоторых действий до выполнения заданного условия, проверка которого осуществляется после выполнения действий в цикле (рис. 2, б);

  • цикл с заданным числом повторений (счетный цикл) – обозначает по­вторение некоторых действий указанное количество раз (рис. 2, в).

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

Рис. 2. Дополнительные структуры алгоритмов:

а - выбор; б - цикл-до; в - цикл с заданным числом повторений

Псевдокоды.

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

Таблица 2

Структура

Псевдокод

Структура

Псевдокод

Следование

<Действие1>

<Действие2>

Выбор

Выбор<код>

<код1>:<Действие1>

<код2>: <Действие2>

Все-выбор

Ветвление

Если<Условие>

то<Действие1>

иначе<Действие2>

Все-если

Цикл с заданным количеством повторений

Для <индекс> =

<n>,<k>,<h>

<Действие>

Все-цикл

Цикл-пока

Цикл-пока<Условие>

<Действие>

Все-цикл

Цикл-до

Выполнять

<Действие>

До<Условие>

Flow-формы.

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

Рис. 3. Условные обозначенияFlow-форм для основных конструкций:

а - следование; б - ветвление; в - выбор; г - цикл-до; е - счетный цикл

Диаграммы Насси-Шнейдермана

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

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

<Действие 1>

<Действие 2>

<Действие 3>

а

Пока

<Действие >

б

<Действие>

До <Условие>

в

<Условие>

да

нет

<Действие 1>

<Действие 2>

г

1

Код

иначе

<Действие 1>

2

<Действие 2>

<Действие 3>

д

Рис. 4. Условные обозначения диаграмм Насси-Шнейдермана для основных конструкций: а - следование; б - цикл-пока; в - цикл-до; г - ветвление; д - выбор

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

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