Конец подпрограммы.
Все-выбор
Все-если
Конец подпрограммы.
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 - Схема структурная программы исследования функций
Использование метода пошаговой детализации, таким образом, существенно облегчает процедурную декомпозицию.