Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Иллюстрация программной разработки: Dice график



Разработку и реализацию объектно-ориентированной программы иллюстрирует использование графика для записи частоты результатов бросания при игре в кости. В последующих разделах описывается каждая фаза в жизненном цикле программы.

Анализ задачи. Предположим, событие – это бросание двух костей. Для каждого бросания сумма лежит в диапазоне от 2 до 12. Используя повторное бросание костей, мы определяем эмпирическую вероятность того, что сумма равна 2, 3 ... , 11 или 12, и строим диаграмму, которая отражает вероятность каждого возможного результата.

Замечание

Эмпирическая вероятность определяется моделированием большого количества событий и записью результатов. Отношение количества появлений некоторого события к количеству всех моделируемых событий представляет эмпирическую вероятность того, рассматриваемое событие произойдет. Например, если бросание костей повторится 100000 раз и сумма 4 возникнет 10000 раз, то эмпирическая вероятность этой суммы равна 0,10.

Прежде всего следует ясно определить задачу. Этот процесс включает понимание входа, выхода и промежуточных вычислений. В фазе анализа задачи клиент формирует серию требований к системе. Они включают контроль за вводом данных, указание вычислений и используемых формул и описание желаемого выхода.

Определение программы. Программа запрашивает пользователя ввести число N – количество бросаний двух костей. Поскольку бросание костей имеет случайный результат, используем для моделирования N бросаний случайные числа. Программа ведет запись количества появлений каждой возможной суммы S (2 < S < 12). Эмпирическая вероятность определяется делением количества результатов S на N. Что касается выхода, это дробное значение используется для определения высоты прямоугольника на нашей диаграмме. Результаты выводятся на экран как столбцовая диаграмма.

Объектная разработка. Программа использует класс Line для создания осей координат и класс Rectangle – для построения столбцов. Эти классы вводятся в разделе 1.4 Разработка объектов. Бросание костей – это метод в классе Dice, который обрабатывает две кости. Далее следует объявление класса Dice. Его реализация и тестирование приводятся в программе вместе с реализацией и тестированием классов Line и Rectangle.

#include random.h

class Dice

private:

// данные-члены

int diceTotal; // сумма д вух костей

int diceList[2]; // список очков двух костей

// класс генератора случайных чисел, используемый для

// моделирования бросаний

RandomNumber rnd;

public:

// конструктор

Dice(void);

// методы

void Toss(void);

int Total(void) const;

void DisplayToss(void) const;

};

Разработка управления процессом. Для построения диаграммы бросания костей главный модуль вызывает три подпрограммы, которые выполняют основные действия программы. Функция SimulateDieToss использует методы из класса Dice для бросания костей N раз. Draw Axes вызывает метод Draw в классе Line для рисования осей координат графика, a Plot рисует серию прямоугольников, которые образуют столбцовую диаграмму. Функция Plot вызывает Мах для определения максимального количества появлений любой возможной суммы. Это значение позволяет нам вычислить относительную высоту каждого прямоугольника диаграммы. Структурное дерево этой программы показано на рис. 1.8. Далее следуют объявления для каждого управляющего модуля в структурном дереве.

 

 

 


 

 

Рис. 1.8. Древовидная структура программы Dice Graph

 

main

Передаваемые параметры: Нет

Выполнение:

Запросить у пользователя количество бросаний костей в моделировании. Вызвать функцию SimulateDieToss для выполнения бросаний и записать количество раз, когда возникает каждая возможная сумма: (2 < Total <. 12). Нарисовать оси координат функцией DrawAxes и создать столбцовую диаграмму функцией Plot.

Возвращаемые параметры: Нет

SimulateDieToss

Передаваемые параметры:

tossTotal Массив tossTotal содержит количество появлений каждой суммы в диапазоне от 2 до 12. tossTotal [i] – это количество появлений суммы i при бросании костей tossCount раз.

tossCount Количество бросаний N при моделировании.

Выполнение:

Создать объект Dice и использовать его для бросания костей указанное количество раз, записывая в массив tossTotal количество раз, когда возникает сумма 2, количество раз, когда возникает сумма 3, . . . , количество раз, когда возникает сумма 12.

Возвращаемые параметры:

Массив tossTotal с количеством раз, когда возникает каждая сумма.

DrawAxes

Передаваемые параметры:

Нет Выполнение:

Создать два объекта Line: один – для вертикальной оси (оси у) и один – для горизонтальной оси (оси х). Ось у – это линия от (1.0, 3.25) до (1.0, 0.25) . Ось х – это линия от (0.75, 3.0) до (7.0, 3.0) . Вертикальный диапазон графика равен 2,75.

Возвращаемые параметры: Нет

Передаваемые параметры:

а Массив, содержащий длинные значения данных,

n Количество значений данных в а.

Выполнение:

Найти максимальное значение элементов в массиве а.

Возвращаемый параметр:

Максимальное значение в массиве.

Plot

Передаваемый параметр:

tossTotal Массив, содержащий количество появлений каждой возможной суммы, вычисленной в SimulateDieToss.

Выполнение:

Поиск максимальной суммы (maxTotal) в массиве tossTotal для диапазона индекса 2-12. Затем каждый элемент в массиве генерирует соответствующую часть (tossTotal [i]/ maxTotal) вертикального диапазона графика. Разделить 6-дюймовый интервал оси х от (1.0, 3.0) до (7.0, 3.0) на 23 равных сегмента и построить соответствующие прямоугольники, чьи высоты – это функция (tossTotal [i]) / maxTotal*2.75, 2 < i < 12.

Возвращаемые параметры: Нет


Поделиться:



Последнее изменение этой страницы: 2019-06-19; Просмотров: 139; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.014 с.)
Главная | Случайная страница | Обратная связь