Файл: Иванова Г.С. Технология программирования.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 20.11.2019

Просмотров: 9479

Скачиваний: 184

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

представляет

собой

отдельную

и

достаточно

сложную

задачу

Численными

методами

данная

задача

не

решается

В

общем

виде

задача

построения

графика

функции

ставится

как

задача

отображения

реального

графика

 (

рис

. 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

=

=


background image

Таким

образом

для

того

чтобы

построить

график

необходимо

задать

функцию

интервал

изменения

аргумента

[

]

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-

выбор

    

Определим

какие

фрагменты

имеет

смысл

реализовать

в

виде

подпрограмм

Во

-

первых

фрагмент

Вывод

заголовка

и

меню

так

как

это

достаточно

длинная

линейная

последовательность


background image

операторов

и

ее

выделение

в

отдельную

процедуру

позволит

сократить

управляющую

программу

Во

-

вторых

фрагменты

Разбор

формулы

Расчет

значений

функции

Построение

графика

и

Вывод

таблицы

так

как

это

достаточно

сложные

операции

Это

 - 

подпрограммы

первого

уровня

которые

определяют

структуру

программы

  (

рис

. 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) 


background image

Если

Вид

_

резулытата

=

График

то

Построение

графика

(

Х

, Y, n)  

иначе

Вывод

та

6

лицы

(

Х

, Y, n) 

Все

-

если

B

с

e-

выбор

     

иначе

Обработать

нажатие

клавиш

управления

Все

-

если

до

Команда

=

Выход

    

Конец

На

следующих

шагах

необходимо

выполнить

детализацию

алгоритмов

подпрограмм

Детализацию

выполняют

пока

алгоритм

программы

не

станет

полностью

понятен

Один

из

возможных

вариантов

полной

структурной

схемы

данной

программы

показан

на

рис

. 5.6. 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Как

уже

упоминалось

в

 § 2.4, 

использование

метода

пошаговой

детализации

обеспечивает

высокий

уровень

технологичности

разрабатываемого

программного

обеспечения

так

как

он

позволяет

использовать

только

структурные

способы

передачи

управления

Разбиение

на

модули

при

данном

виде

проектирования

выполняется

эвристически

исходя

из

рекомендуемых

размеров

модулей

 (20-60 

строк

и

сложности

структуры

  (

две

-

три

вложенных

управляющих

конструкции

). 

В

принципе

в

качестве

модуля

  (

подпрограммы

можно

реализовать

решение

подзадач

сформулированных

на

любом

шаге

процесса

детализации

однако

определяющую

роль

при

разбиении

программы

на

модули

играют

принципы

обеспечения

технологичности

модулей

рассмотренные

в

 § 2.2.  

     

Для

анализа

технологичности

полученной

иерархии

модулей

целесообразно

использовать

структурные

карты

Константайна

или

Джексона


background image

5.3. 

Структурные

карты

Константайна

На

структурной

карте

отношения

между

модулями

представляют

в

виде

графа

вершинам

которого

соответствуют

модули

и

общие

области

данных

а

дугам

 - 

межмодульные

вызовы

и

обращения

к

общим

областям

данных

Различают

четыре

типа

вершин

 (

рис

. 5.7): 

модуль

 - 

подпрограмма

подсистема

 - 

программа

библиотека

 - 

совокупность

подпрограмм

размещенных

в

отдельном

модуле

область

данных

 - 

специальным

образом

оформленная

совокупность

данных

,, 

к

которой

возможно

обращение

извне

 
 
 
 
 
 
 
 
 
 
 

При

этом

отдельные

части

программной

системы

  (

программы

подпрограммы

могут

вызываться

последовательно

параллельно

или

как

сопрограммы

 (

рис

. 5.8). 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Чаще

всего

используют

последовательный

вызов

при

котором

модули

передав

управление

ожидают

завершения

выполнения

вызванной

программы

или

подпрограммы

чтобы

продолжить

прерванную

обработку

Под

параллельным

вызовом

понимают

распараллеливание

вычислений

на

нескольких

вычислителях

когда

при

активизации

другого

процесса

данный

процесс

продолжает

работу

 (

рис

5.9, 

а

). 

На

однопроцессорных

компьютерах

в

мультипрограммных

средах

в

этом

случае

начинается

попеременное

выполнение

соответствующих

программ

Параллельные

процессы

бывают

синхронные

и

асинхронные

Для

синхронных

процессов

определяют

точки

синхронизации

моменты

времени

когда

производится

обмен

информацией

между

процессами

Асинхронные

процессы

обмениваются

информацией

только

в

момент

активизации

параллельного

процесса

Под

вызовом

сопрограммы

понимают

возможность

поочередного

выполнения

двух

одновременно

запущенных

программ

например

если

одна

программа

подготовила

пакет

данных

для

вывода

то

вторая

может

ее

вывести

а

затем

перейти

в

состояние

ожидания

следующего