Конец подпрограммы.

Все-выбор

Все-если

Конец подпрограммы.

Bce-цикл.

Все-если

Конец подпрограммы.

Конец подпрограммы.

Все-выбор.

Конец подпрограммы.

Конец.

На этом шаге определились две подпрограммы: Вывести_меню_функций и МЕНЮ_ОПЕРАЦИЙ (Номер_функции). Подпрограмма Вывести_меню_функций будет иметь линейную структуру:

Подпрограмма ВЫВЕСТИ_МеНЮ_ФУНКЦИЙ:

Очистить_экран.

Вывести «Программа исследования функций.»

Вывести «1 – sin x;».

Вывести «2 – cos x;».

Вывести «3 – ln x;».

Вывести «4 – e^x;».

Вывести «5 – Выход.».

Подпрограмма МЕНЮ_ОПЕРАЦИЙ (Номер_функции) также должна реализовать меню:

Подпрограмма МЕНЮ_ОПЕРАЦИЙ (Номер_функции):

Вывести_меню_операций.

Ввести Номер_операции.

Цикл-пока Номер_ операции <> 4

Выбор Номер_ операции:

1: Вызвать ТАБЛИЦА (Номер_функции);

2: Вызвать КОРЕНЬ (Номер_функции);

3: Вызвать МАКСМИН (Номер_функции);

Вывести_меню_операций. .

Ввести Номер_ операции.

Все-цикл.

Подпрограмма ВЫВЕСТИ_МеНЮ_операций похожа на подпрограмму ВЫВЕСТИ_МЕНЮ_ФУНКЦИЙ:

Подпрограмма ВЫВЕСТИ_МеНЮ_операций:

Очистить_экран.

Вывести «Список операций:».

Вывести «1 – получение таблицы значений;».

Вывести «2 – определение корней;».

Вывести «3 – определение экстремумов;».

Вывести «4 – выход.».

Вывести «Определите операцию: ».

Подпрограмма ТАБЛИЦА(Номер_функции) должна вводить дополнительные данные о границах интервала и значении шага:

Подпрограмма ТАБЛИЦА(Номер_функции):

Очистить_экран.

Вывести «Введите границы интервала»

Ввести A, B.

Вывести «Введите шаг».

Ввести h.

x=A

Цикл-пока x £ B

ЕслиФУНКЦИЯ(Номер_функции, x, y)

то Вывести «x=», x, « y=», y

иначе«x=», x, «значение функции не определено»

x=x+h

Ожидать_нажания_клавиши.

Подпрограммы КОРЕНЬ (Номер_функции) и Максмин (Номер_функции) определяются аналогично. Естественно они также обращаются к подпрограмме ФУНКЦИЯ для определения конкретного значения функции в точке.

Подпрограмма ФУНКЦИЯ будет возвращать логическое значение: true – если значение функции определено, и false – в противном случае. Посчитанное значение исследуемой функции подпрограмма будет возвращать через параметр-переменную y:

Подпрограмма ФУНКЦИЯ(Номер_функции, x, y):

ФУНКЦИЯ=true

Выбор Номер_функции:

1: y=sin(x);

2: y=cos(x);

3: Если x>0

то y=ln(x)

иначе ФУНКЦИЯ=false

4: y=exp(x)

Таким образом, выполняя пошаговую детализацию программы, мы осуществили ее декомпозицию на основную программу и семь подпрограмм (подпрограммы ОЧИСТИТЬ_ЭКРАН и Ожидать_нажания_клавиши являются стандартными процедурами библиотеки управления экраном в текстовом режиме и их можно не учитывать).

Результат процедурной декомпозиции представим в виде структурной схемы (см. рисунок 8).

Рисунок 8 - Схема структурная программы исследования функций

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