Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПорядокВыполнения-КР.doc
Скачиваний:
9
Добавлен:
09.02.2015
Размер:
182.27 Кб
Скачать

5. Разработка структур данных и алгоритмов

Алгоритмы

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

АЛГОРИТМ СлоВИзм.

  1. ЦИКЛ

    1. Ввести запрос на выполнение функции nf { 1 – сложение, 2 – вычитание, 3 – изменение знака, 0 – выход из программы}

    2. ЕСЛИ nf = 1

ТО

      1. Выполнить операцию сложения.

ИНАЧЕ ЕСЛИ nf = 2

ТО

      1. Выполнить операцию вычитания.

ИНАЧЕ ЕСЛИ nf = 3

ТО

      1. Выполнить операцию изменения знака.

ИНАЧЕ ЕСЛИ nf = 0

ТО

      1. ВЫЙТИ НА КОНЕЦ.

ИНАЧЕ {Ошибка в запросе}

ВСЕ ЕСЛИ

ВСЕ ЦИКЛ

КОНЕЦ СлоВИзм.

Для разработки структуры программы (состава и подчиненности модулей) и выбора представления структур данных необходимо выделить набор «элементарных» операций над данными, поэтому операторы 1.2.1, 1.2.2 и 1.2.3 алгоритма СлоВИз требуют дальнейшей детализации.

АЛГОРИТМ 1.2.1 СЛОЖЕНИЕ.

  1. Ввести исходные данные (создать полиномы – операнды Pol1, Pol2) и проверить их корректность.

  2. ЕСЛИ данные содержат ошибки

ТО

    1. Выдать сообщение об ошибке

ВСЕ ЕСЛИ.

  1. Создать полином (пустой) для записи результата операции (rezPol).

  2. Выполнить операцию сложения: AddPol (Pol1, Pol2, rezPol).

  3. Вывести полином – результат операции rezPol.

КОНЕЦ 1.2.1 СЛОЖЕНИЕ.

Анализ алгоритма 1.2.1 дает две «элементарные» операции над полиномами: «Создать пустой полином» и «Вывести полином (на экран)».

Операции 1 и 4 алгоритма 1.2.1 требуют дальнейшей детализации. Из-за недостатка времени рассмотрим детализацию только операции 4.

АЛГОРИТМ 1.2.1.4 СЛОЖЕНИЕ.

  1. Встать в начало Pol1 и Pol2.

  2. ЕСЛИ deg(Pol1) > deg(Pol1)

ТО

      1. Копировать все элементы Pol1, для которых deg(Pol1) > deg(Pol2), начиная с первого, в rezPol.

ИНАЧЕ ЕСЛИ deg(Pol1) < deg(Pol2)

ТО

      1. Копировать все элементы Pol2, для которых deg(Pol2) > deg(Pol1), начиная с первого, в rezPol.

ВСЕ ЕСЛИ.

  1. Текущие элементы Pol1 и Pol2 имеют одинаковые степени.

ПОКА НЕ конец (Pol1) ИЛИ НЕ конец (Pol2)

ВЫПОЛНИТЬ

    1. ЕСЛИ deg(Pol1) < deg(Pol2)

ТО Копировать в конец rezPol текущий элемент Pol2.

ИНАЧЕ ЕСЛИ deg(Pol1) > deg(Pol2)

ТО Копировать в конец rezPol текущий элемент Pol1.

ИНАЧЕ {текущие элементы Pol1 и Pol2 имеют одинаковые степени}

ЕСЛИ coef(Pol1) + coef(Pol2)  0

ТО Вставить в конец rezPol элемент, имеющий coef(rezPol) = coef(Pol1) + coef(Pol2) и deg (rezPol) = deg (Pol1).

Все если

ВСЕ ЕСЛИ

    1. Перейти к следующим элементам Pol1 и Pol2.

ВСЕ ПОКА.

  1. ЕСЛИ НЕ конец (Pol1) И НЕ конец (Pol2)

ТО

    1. Копировать все элементы Pol2, начиная с текущего, в rezPol.

ИНАЧЕ ЕСЛИ НЕ конец (Pol2) И НЕ конец (Pol1)

ТО

    1. Копировать все элементы Pol1, начиная с текущего, в rezPol.

ВСЕ ЕСЛИ.

КОНЕЦ 1.2.1.4 СЛОЖЕНИЕ.

0