ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 20.11.2019
Просмотров: 9479
Скачиваний: 184

представляет
собой
отдельную
и
достаточно
сложную
задачу
.
Численными
методами
данная
задача
не
решается
.
В
общем
виде
задача
построения
графика
функции
ставится
как
задача
отображения
реального
графика
(
рис
. 5.4,
а
),
выполненного
в
некотором
масштабе
,
в
соответствующее
изображение
в
окне
на
экране
(
рис
. 5.4,
б
).
Для
построения
графика
необходимо
определить
масштабы
по
осям
координат
:
min
max
1
2
1
2
1
2
,
y
y
wy
wy
m
x
x
wx
wx
m
y
x
−
−
=
−
−
=
и
координаты
точек
графика
:
=
i
px
(
)
x
i
m
x
x
∗
−
1
,
1
wx
+
=
i
py
(
)
y
i
m
y
y
∗
−
max
.
1
wy
+
Шаг
координатной
сетки
по
вертикали
и
горизонтали
при
этом
можно
определить
по
формулам
:
,
,
1
2
1
2
y
y
x
x
nI
wy
wy
Ipm
nI
wx
wx
Ipm
−
=
−
=
где
y
x
nI
nI
,
-
соответственно
количество
вертикальных
и
горизонтальных
линий
.
Для
разметки
сетки
необходимо
определить
шаги
разметки
по
горизонтали
и
вертикали
:
.
Im
,
Im
min
max
1
2
y
y
x
x
nI
y
y
nI
x
x
−
=
−
=

Таким
образом
,
для
того
чтобы
построить
график
,
необходимо
задать
функцию
,
интервал
изменения
аргумента
[
]
2
1
,
x
x
,
на
котором
функция
непрерывна
,
количество
точек
графика
n,
размер
и
положение
окна
экрана
,
в
котором
необходимо
построить
график
:
2
2
1
1
,
,
,
wy
wx
wy
wx
и
количество
линий
сетки
по
горизонтали
и
вертикали
nl
x
, nl
y
.
Значения
y
x
nI
nI
wy
wx
wy
wx
,
,
,
,
,
2
2
1
1
можно
задать
,
исходя
из
размера
экрана
,
а
интервал
и
число
точек
графика
надо
вводить
.
Разработку
алгоритма
выполняем
методом
пошаговой
детализации
,
используя
для
записи
псевдокод
.
Примем
,
что
программа
будет
взаимодействовать
с
пользователем
через
традиционное
иерархическое
меню
,
которое
содержит
пункты
:
Функция
,
Отрезок
,
Шаг
,
Вид
результата
,
Выполнить
и
Выход
(
см
.
рис
. 8.5).
Для
каждого
пункта
этого
меню
необходимо
реализовать
сценарий
,
предусмотренный
в
техническом
задании
.
Шаг
1.
Определяем
структуру
управляющей
программы
,
которая
для
нашего
случая
реализует
работу
с
меню
через
клавиатуру
:
Программа
.
Инициализировать
глобальные
значения
Вывести
заголовок
и
меню
Выполнять
Если
выбрана
Команда
то
Выполнить
Команду
иначе
Обработать
нажатие
клавиш
управления
Все
-
если
до
Команда
=
Выход
Конец
.
Очистка
экрана
,
вывод
заголовка
и
меню
,
а
также
выбор
Команды
-
операции
сравнительно
простые
,
следовательно
,
их
можно
не
детализировать
.
Шаг
2.
Детализируем
операцию
Выполнить
команду
:
Выполнить
Команду
:
Выбор
Команда
Функция
:
Ввести
или
выбрать
формулу
Fun
Выполнить
разбор
формулы
Отрезок
:
Ввести
значения
xl,x2
Шаг
:
Ввести
значения
h
Вид
результата
:
Ввести
вид
_
результата
Выполнить
:
Рассчитать
значения
функции
Если
Вид
_
результата
=
График
то
Построить
график
иначе
Вывести
таблицу
Все
-
если
Bee-
выбор
Определим
,
какие
фрагменты
имеет
смысл
реализовать
в
виде
подпрограмм
.
Во
-
первых
,
фрагмент
Вывод
заголовка
и
меню
,
так
как
это
достаточно
длинная
линейная
последовательность

операторов
и
ее
выделение
в
отдельную
процедуру
позволит
сократить
управляющую
программу
.
Во
-
вторых
,
фрагменты
Разбор
формулы
,
Расчет
значений
функции
,
Построение
графика
и
Вывод
таблицы
,
так
как
это
достаточно
сложные
операции
.
Это
-
подпрограммы
первого
уровня
,
которые
определяют
структуру
программы
(
рис
. 5.5).
Определим
для
этих
подпрограмм
интерфейсы
по
данным
с
основной
программой
,
т
.
е
.
списки
параметров
.
Подпрограмма
Вывод
заголовка
и
меню
параметров
не
предполагает
.
Подпрограмма
Разбор
формулы
должна
иметь
два
параметра
: Fun -
аналитическое
задание
функции
, Tree -
возвращаемый
параметр
-
адрес
дерева
разбора
.
Подпрограмма
Расчет
значений
функции
должна
получать
адрес
дерева
разбора
Tree,
отрезок
:
значения
,
2
1
x
и
x
а
также
шаг
h.
Обратно
в
программу
она
должна
возвращать
таблицу
значений
функции
Х
(n)
и
Y(n),
где
n -
количество
точек
функции
.
Подпрограммы
Вывода
таблицы
и
Построения
графика
должны
получать
таблицу
значений
функции
и
количество
точек
.
После
уточнения
имен
переменных
алгоритм
основной
программы
будет
выглядеть
следующим
образом
:
Программа
.
Вывод
заголовка
и
меню
Выполнять
Если
выбрана
Команда
то
Выбор
Команда
Функция
:
Ввести
или
выбрать
формулу
Fun
Разбор
формулы
(Fat; Var Tree)
Отрезок
:
Ввести
значения
xl,x2
Шаг
:
Ввести
значения
h
Вид
результата
:
Ввести
вид
_
результата
Выполнить
:
Расчет
значений
функции
(xl,
х
2, h, Tree; Var X,Y,n)

Если
Вид
_
резулытата
=
График
то
Построение
графика
(
Х
, Y, n)
иначе
Вывод
та
6
лицы
(
Х
, Y, n)
Все
-
если
B
с
e-
выбор
иначе
Обработать
нажатие
клавиш
управления
Все
-
если
до
Команда
=
Выход
Конец
.
На
следующих
шагах
необходимо
выполнить
детализацию
алгоритмов
подпрограмм
.
Детализацию
выполняют
,
пока
алгоритм
программы
не
станет
полностью
понятен
.
Один
из
возможных
вариантов
полной
структурной
схемы
данной
программы
показан
на
рис
. 5.6.
Как
уже
упоминалось
в
§ 2.4,
использование
метода
пошаговой
детализации
обеспечивает
высокий
уровень
технологичности
разрабатываемого
программного
обеспечения
,
так
как
он
позволяет
использовать
только
структурные
способы
передачи
управления
.
Разбиение
на
модули
при
данном
виде
проектирования
выполняется
эвристически
,
исходя
из
рекомендуемых
размеров
модулей
(20-60
строк
)
и
сложности
структуры
(
две
-
три
вложенных
управляющих
конструкции
).
В
принципе
в
качестве
модуля
(
подпрограммы
)
можно
реализовать
решение
подзадач
,
сформулированных
на
любом
шаге
процесса
детализации
,
однако
определяющую
роль
при
разбиении
программы
на
модули
играют
принципы
обеспечения
технологичности
модулей
,
рассмотренные
в
§ 2.2.
Для
анализа
технологичности
полученной
иерархии
модулей
целесообразно
использовать
структурные
карты
Константайна
или
Джексона
.

5.3.
Структурные
карты
Константайна
На
структурной
карте
отношения
между
модулями
представляют
в
виде
графа
,
вершинам
которого
соответствуют
модули
и
общие
области
данных
,
а
дугам
-
межмодульные
вызовы
и
обращения
к
общим
областям
данных
.
Различают
четыре
типа
вершин
(
рис
. 5.7):
•
модуль
-
подпрограмма
,
•
подсистема
-
программа
,
•
библиотека
-
совокупность
подпрограмм
,
размещенных
в
отдельном
модуле
,
•
область
данных
-
специальным
образом
оформленная
совокупность
данных
,,
к
которой
возможно
обращение
извне
.
При
этом
отдельные
части
программной
системы
(
программы
,
подпрограммы
)
могут
вызываться
последовательно
,
параллельно
или
как
сопрограммы
(
рис
. 5.8).
Чаще
всего
используют
последовательный
вызов
,
при
котором
модули
,
передав
управление
,
ожидают
завершения
выполнения
вызванной
программы
или
подпрограммы
,
чтобы
продолжить
прерванную
обработку
.
Под
параллельным
вызовом
понимают
распараллеливание
вычислений
на
нескольких
вычислителях
,
когда
при
активизации
другого
процесса
данный
процесс
продолжает
работу
(
рис
.
5.9,
а
).
На
однопроцессорных
компьютерах
в
мультипрограммных
средах
в
этом
случае
начинается
попеременное
выполнение
соответствующих
программ
.
Параллельные
процессы
бывают
синхронные
и
асинхронные
.
Для
синхронных
процессов
определяют
точки
синхронизации
-
моменты
времени
,
когда
производится
обмен
информацией
между
процессами
.
Асинхронные
процессы
обмениваются
информацией
только
в
момент
активизации
параллельного
процесса
.
Под
вызовом
сопрограммы
понимают
возможность
поочередного
выполнения
двух
одновременно
запущенных
программ
,
например
,
если
одна
программа
подготовила
пакет
данных
для
вывода
,
то
вторая
может
ее
вывести
,
а
затем
перейти
в
состояние
ожидания
следующего