Разработка прикладного алгоритма моделирования случайных величин

 

МИНОБРНАУКИ РОССИИ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ИНЖЕНЕРНО-ЭКОНОМИЧЕСКИЙ УНИВЕРСИТЕТ»

Филиал в г. Кизляре

Факультет информатики и финансов

Кафедра информационных систем в экономике







КУРСОВАЯ РАБОТА

по дисциплине «ИНФОРМАТИКА И ПРОГРАММИРОВАНИЕ»

Тема: Разработка прикладного алгоритма моделирования случайных величин



Выполнил: Саликов Т.Б

Преподаватель: Магомедова М.Н.






Кизляр 2012г.


Содержание


Введение

. Теоретическая часть

.1 Описание среды и языка программирования

.2. Требования к программному и аппаратному обеспечению

. Практическая часть

.1 Постановка задачи

.2 Математическая модель решения задачи

.3 Описание входных и выходных данных

.4 Блок-схема решения задачи

.5 Исходный текст программы

. Тестирование и отладка

.1 Методы и средства тестирования

.2 Тестирование программы

4. Техника безопасности

Заключение

Список использованных источников


Введение


Курсовой проект имеет целью получение навыков самостоятельной разработки программного продукта в соответствии с принципами структурного или объектно-ориентированного программирования, рассмотренными в процессе изучения дисциплины.

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

Объектом исследования в представленной курсовой работе выступают языки программирования высокого уровня.

В задачи курсовой работы входят:

·разработка структура информационного и программного обеспечения

·определение входных и выходных данных в программе

·выделение подзадач и оформление их в виде подпрограмм.

·разработка алгоритма работы программы.

В качестве среды разработки выбрана среда Borland C++ Builder 6.0


1. Теоретическая часть


.1 Описание среды и языка программирования


Язык С - это язык программирования общего назначения, отличающийся эффективностью, экономичностью и переносимостью. Первая версия этого языка была разработана Денисом Ричи и Кеном Томпсоном в начале 1970-х гг. в научно-исследовательской фирме Bell Telephone Laboratories для программирования в операционной системе UNIX, а в 1975 году с его помощью была переписана и вся ОС UNIX для ЭВМ PDP-11 [1-3].

В принятом в 1989 году стандарте ANSI С определено только лишь 32 ключевых слова, из них почти половина связана с описанием переменных и констант. Язык С не содержит встроенных средств для выполнения ввода вывода, распределения памяти, манипуляций с экраном или управления процессами. Это компенсируется наличием стандартных библиотек, в которых реализовано большое количество функций.

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

Язык С налагает незначительные ограничения на многие действия. В большинстве случаев это можно отнести к его достоинствам, однако, это требует от программистов хорошего знания языка для понимания того, как будут выполняться их программы [4-5].

Язык C++ является надмножеством языка С, т.е. большинство программ на С можно компилировать в среде C++, однако компилировать программы C++ в среде С, при наличии в них каких-либо специфических для C++ конструкций, нельзя.

Система ввода-вывода языка С предназначена для работы с последовательностями символов, называемых потоками. Потоку может соответствовать как дисковый файл, так и принтер, терминал и т.п. Понятие "поток" позволяет разрабатывать гибкий и эффективный ввод-вывод, который не зависит от используемых файлов или встроенного оборудования.

Двоичные потоки однозначно соответствуют последовательности символов на внешнем устройстве. В отличие от них, при работе с текстовыми потоками происходит определённое преобразование некоторых символов, например, символа конца строки. Из-за такого преобразования число прочитанных или записанных символов может не совпадать с числом символов во внешнем устройстве.

Функции для работы с потоками описаны в заголовочном файле stdio.h. Все эти функции используют указатель на структуру file. Эта структура создаётся автоматически и содержит различную информацию о потоке (например, указатели на буферы чтения и записи, позиция файлового курсора, атрибуты состояния файла и т.п.).

FILE * fopen (char * name, char * mode) - открывает файл, создаёт и заполняет структуру FILE и возвращает указатель на неё. В случае ошибки функция возвращает нулевое значение указателя (null). Строка mode описывает режим работы с открываемым файлом и может состоять из символов г (для чтения), w (для записи), а (для дополнения), + (расширенный режим), b (двоичный режим), t (текстовый режим). Программе доступны два предопределённых файловых указателя, описанных в заголовочном файле stdio.h: stdin (стандартный ввод) и stdout (стандартный вывод). Эти указатели неявно используются в функциях консольного ввода-вывода:

int getchar () - считывает один символ из файла stdin.

int putchar (int с) - выводит один символ в файл stdout.

char * gets (char * s) - считывает строку из файла stdin, при этом удаляет введённый символ конца строки. Под символьный массив s должно быть зарезервировано достаточное количество памяти.

int puts (char * s) - выводит строку и дополнительный символ конца строки в файл stdout.

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

Для форматированного вывода используются три функции:

int fprintf(FILE * f, char * format, . . .) int printf( char * format, . . .) int sprintf(char * s, char * format, . . .)

Эти функции используются для вывода базовых типов данных в файл (fprintf), стандартный поток вывода stdout (printf) или символьный массив (sprintf). Все они возвращают количество выведенных символов.

Строка format должна состоять из символов, непосредственно выводимых в поток, и управляющих последовательностей, вместо которых подставляется текстовое представление соответствующих аргументов.

Для организации потокового ввода-вывода в языке C++ используется объектно-ориентированный подход. В заголовочном файле iostream.h описано несколько классов, используемых для этих целей.

Класс ios содержит ряд свойств и методов, необходимых для управления потоковым вводом-выводом. Например, для определения состояния потока можно использовать методы good(), fail() или eof(), которые возвращают ненулевое значение при отсутствии ошибок, при наличии ошибок или при попытке чтения после конца файла, соответственно.

Класс istream обеспечивает форматированный ввод базовых типов данных из потока с помощью оператора », а также содержит методы для неформатированного ввода данных, например:

get (char &с) - считывает один символ из потока.

getline(char *s, int n) - считывает из потока строку (не более п символов).

read (char * s, int n) - считывает из потока ровно п символов.

Для ввода данных со стандартного потока ввода используется объект cin, являющийся экземпляром класса istream;

Класс ostream обеспечивает форматированный вывод базовых типов данных в поток с помощью оператора «, а также содержит методы для неформатированного вывода данных, например:

put (char с) - выводит один символ в поток.

write (char * s, int n) - выводит в поток п символов.

Для вывода данных в стандартный поток вывода используется объект cout, являющийся экземпляром класса ostream: cout.write(s,strlen(s));

Класс iostream объединяет в себе возможности, предоставляемые классами istream и ostream по вводу-выводу данных.

От класса iostream порождён класс f stream, отвечающий за выполнение файлового ввода-вывода и описанный в заголовочном файле f stream.h. В этом классе доступны следующие методы:

Как и массивы, структуры представляют собой совокупность переменных, объединенных общим именем. Однако, элементы структуры могут иметь различные типы, а доступ к ним осуществляется по имени.

a.Re = 2.3; а.Im = -4.5;

В языке С имеется специальный оператор -> для доступа к элементам структуры с помощью указателя на неё:

b->Re = 6.7 вместо (*b).Re = 6.7

Структурные переменные могут передаваться в функции, как по значению, так и по ссылке, а также возвращаться из функций.

В языке Си все определения должны следовать перед операторами, составляющими тело функции. В языке Си++ это ограничение снято и определения могут находиться в любом месте программы.

Если они сделаны в функции, то соответствующие объекты будут локальными, а если вне функций, то глобальными.

Наряду с переменными в языке существуют следующие виды констант:

·вещественные, например 123.456, 5.61е-4. Они могут снабжаться суффиксом F (или f), например 123.456F, 5.61e-4f;

·целые, например 125;

·короткие целые, в конце записи которых добавляется буква (суффикс) H (или h), например 275h, 344H;

·длинные целые, в конце записи которых добавляется буква (суффикс) L (или l), например 361327L;

·беззнаковые, в конце записи которых добавляется буква U (или u), например 62125U;

·восьмеричные, в которых перед первой значащей цифрой записывается нуль (0), например 071;

·шестнадцатеричные, в которых перед первой значащей цифрой записывается пара символов нуль-икс (0x), например 0x5F;

·символьные - единственный символ, заключенный в одинарные кавычки, например 'О', '2', '.' и т.п. Символы, не имеющие графического представления, можно записывать, используя специальные комбинации, например \n (код 10), \0 (код 0). Эти комбинации выглядят как два символа, хотя фактически это один символ. Так же можно представить любой двоичный образ одного байта: '\NNN', где NNN - от одной до трех восьмеричных цифр. Допускается и шестнадцатеричное задание кодов символов, которое представляется в виде: '\х2В', '\хЗ6' и т.п.;

·строковые - последовательность из нуля символов и более, заключенная в двойные кавычки, например: "Это строковая константа". Кавычки не входят в строку, а лишь ограничивают ее. Строка представляет собой массив из перечисленных элементов, в конце которого помещается байт с символом '\0'. Таким образом, число байтов, необходимых для хранения строки, на единицу превышает число символов между двойными кавычками;

·константное выражение, состоящее из одних констант, которое вычисляется во время трансляции (например: а=60+301);

·типа long double, в конце записи которых добавляется буква L (или l), например: 1234567.89L.

вводить и выводить информацию

Операции ввода/вывода в языке Си организованы посредством библиотечных функций (причем их довольно много).

Самый простой механизм ввода - чтение по одному символу из стандартного входного потока (с клавиатуры) с помощью функции getchar( ). Она имеет следующий прототип (т.е. описание заголовка):getchar(void);

Здесь определен тип единственного аргумента (void) и тип возвращаемого функцией значения (int).

Оператор вида:

х = getchar( );

присваивает переменной х очередной вводимый символ. Переменная х должна иметь символьный или целый тип.

Другая функция - putchar(х) выдает значение переменной x в стандартный выходной поток (на экран дисплея). Функция putchar( ) имеет прототип:putchar(int);

Объявления getchar( ) и putchar( ) сделаны в заголовочном файле stdio.h, содержащем описания заголовков библиотечных функций стандартного ввода/вывода. Чтобы библиотечные функции стали доступны программе, к ней необходимо подключить данный файл. Подключение осуществляется с помощью директивы препроцессора

#include <stdio.h>

помещаемой в начало программы (подробнее см. в разделе 5).

Заметим, что для функции getchar( ) после выбора символа необходимо нажать клавишу <Enter>. Иногда это создает определенные неудобства. Функции getch( ) и getche( ) устраняют их. Они имеют следующие прототипы:getch(void);getche(void);

Обе эти функции вводят символ сразу же после нажатия соответствующей клавиши (здесь не надо дополнительно нажимать клавишу <Enter>). Отличие между ними заключается в том, что getche( ) отображает вводимый символ на экране дисплея, а getch( ) - нет. Прототипы этих функций содержатся в файле conio.h (консольный ввод/вывод). Для их использования файл conio.h также следует подключить к программе с помощью директивы #include .

Форматированный вывод данных

Функция printf( ) (прототип содержится в файле stdio.h) обеспечивает форматированный вывод. Ее можно записать в следующем формальном виде:

рrintf ("управляющая строка", аргумент _1, аргумент _2,...);

Управляющая строка содержит компоненты трех типов: обычные символы, которые просто копируются в стандартный выходной поток (выводятся на экран дисплея); спецификации преобразования, каждая из которых вызывает вывод на экран очередного аргумента из последующего списка; управляющие символьные константы.

Каждая спецификация преобразования начинается со знака % и заканчивается некоторым символом, задающим преобразование. Между знаком % и символом преобразования могут встречаться другие знаки в соответствии со следующим форматом:

% [признаки] [ширина_поля] [точность] [F|N|h|l|L] c_n

Необязательные параметры в спецификации преобразования:

·признак минус (-) указывает, что преобразованный параметр должен быть выровнен влево в своем поле;

·признак плюс (+) требует вывода результата со знаком;

·строка цифр, задающая минимальный размер поля (ширина поля). Здесь может так же использоваться символ *, который тоже позволяет задать минимальную ширину поля и точность представления выводимого числа;

·точка (.), отделяющая размер поля от последующей строки цифр;

·строка цифр, задающая максимальное число выводимых символов, или же количество цифр, выводимых справа от десятичной точки в значениях типов float или double (точность);

·символ F, определяющий указатель типа far;

·символ N, определяющий указатель типа near;

·символ h, определяющий аргумент типа short int (используется вместе с символами преобразования d, i, о, u, х, Х);

·символ l, указывающий, что соответствующий аргумент имеет тип long (в случае символов преобразования d, i, о, u, х, X) или double (в случае символов преобразования е, Е, f, g, G);

·символ L, указывающий, что соответствующий аргумент имеет тип long double (используется вместе с символами преобразований е, Е, f, g, G);

·символ #, который может встречаться перед символами преобразования g, f, е и перед символом х. В первом случае всегда будет выводиться десятичная точка, а во втором - префикс 0x перед соответствующим шестнадцатеричным числом.

Если после знака % записан не символ преобразования, то он выводится на экран. Таким образом, строка %% приводит к выводу на экран знака %.

Функция printf( ) использует управляющую строку, чтобы определить, сколько всего аргументов и каковы их типы. Аргументами могут быть переменные, константы, выражения, вызовы функций; главное, чтобы их значения соответствовали заданной спецификации.

При наличии ошибок, например, в числе аргументов или типе преобразования, результаты будут неверными. Среди управляющих символьных констант наиболее часто используются следующие:

\а - для кратковременной подачи звукового сигнала;

\b - для перевода курсора влево на одну позицию;

\f - для подачи формата;

\n - для перехода на новую строку;

\r - для возврата каретки;

\t - горизонтальная табуляция;

\v - вертикальная табуляция;

\\ - вывод символа \;

\' - вывод символа ' ;

- вывод символа ";

\? - вывод символа ?.

Сначала выполняется горизонтальная табуляция (\t), т.е. курсор сместится от края экрана, затем на экран будет выведено слово Computer, после этого курсор переместится в начало следующей строки (\n), затем будет выведено целое число i по формату %d (десятичное целое), и, окончательно, курсор перейдет в начало новой строки (\n).

Напечатать строку символов можно и так:("Это строка символов")

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


1.2 Требования к программному и аппаратному обеспечению

производительность программирование математический аппаратный

Программа должна позволять выполнять простейшие математические функции.

Функциональность: программа должна являться полностью завершенным программным продуктом, не требующим каких-либо дополнительных специальных компонентов.

Эффективность: программа должна функционировать без наличия привода CD/DVD-дисков, должна предъявлять минимальные требования к аппаратному обеспечению, требования к аппаратным ресурсам должны быть намного ниже, чем для самой ОС. Программа должна иметь интуитивно понятный пользовательский графический интерфейс.

Для работы системы необходимо следующее предустановленное программное обеспечение: Apache Web Server , PHP 4.3.x, MySql , на платформе FreeBSD или Linux.

Существует также возможность инсталляции системы на платформе Windows. При этом требования к предустановленному программному обеспечению остаются прежними

Минимальные технические характеристики компьютера, на котором гарантируется стабильная работа программы:

-Ноутбук/процессор: ноутбук с процессором класса intel CORE I5 2450 МГц;

-Память 4гб ОЗУ;

-Дисплей встроенный дисплей поддержкой HD-графика с разрешением 1366x768 точек или более высоким, поддерживающий 32бита ;

-Видеокарта 1гб 128 битов

операционная система: операционная система MS Windows 7 home basic.

необходимо наличие Borland C++ Builder 6.0

-наличие свободного дискового пространства на жёстком диске (порядка500 гб).

-Для работы системы необходимо следующее предустановленное программное обеспечение: Apache Web Server , PHP 4.3.x, MySql , на платформе FreeBSD или Linux.

-Существует также возможность инсталляции системы на платформе Windows. При этом требования к предустановленному программному обеспечению остаются прежними


2. Практическая часть


.1 Постановка задачи


Производительность труда рабочих некоторого цеха является нормально распределенной случайной величиной с математическим ожиданием 90кг. за смену и стандартным отклонением 15кг. за смену.

Вычислите долю рабочих, производительность которых:

а) лежит в промежутке от 80 до 110кг. за смену

Задача обобщена для произвольных данных.

Интерфейс программы должен быть оконным. Программа должна для произвольных параметров нормального распределения вычислить вероятность для заданного диапазона значений.


.2 Математическая модель решения задачи


Пусть случайная величина x подчиняется нормальному закону распределения вероятностей с параметрами и . Необходимо определить [1].

Вероятность можно вычислить по следующей формуле:


(1)(2)


Известно математическое ожидание а и среднее квадратическое отклонение ? нормального распределения случайной величины Х. Найти вероятность попадания этой величины в интервал.

а = 8? = 1? = 4? = 9

Решение:

Вероятность того ,что Х примет значение, принадлежащее интервалу (?, ?) :



m - математическое ожидание,

? - дисперсия


. (3)


.3 Описание входных и выходных данных


В программе используются следующие входные и выходные данные.


Таблица 1 - Описание входных и выходных параметров

ОбозначениеНаименованиеПрименениеVer1Промежуточная значенияЗадает математическое ожиданиеVer2Компонент - однострочное окно редактирования.Задает стандартное отклонение.aКомпонент - однострочное окно редактирования.Задает левую границу диапазона значенийbКомпонент - однострочное окно редактирования.Задает правую границу диапазона значенийproizпроизводительностьВывод расчетной доли рабочих с заданной производительностью

2.4 Блок-схема решения задачи


Блок-схема алгоритма решения задачи приведена на Рисунке 1.


Блок-схема алгоритма


.5 Исходный текст программы


#include <vcl.h>

#pragma hdrstop

#pragma argsused

#include <stdio.h>

#include <conio.h>

#include <math.h>main ()

{otkl, ojid, x, a, b, ver1, ver2, ver3, ver4, proiz;("%f %f %f %f", &a, &b, &otkl, &ojid);=(b-ojid/otkl);=(a-ojid/otkl);=ver1/a;= ver1/b;=ver3+ver4;("Proizvodt ravna= %f", proiz);

getch();

}


3. Тестирование и отладка


.1 Методы и средства тестирования


В результате тестирования исходного кода чаще всего ищутся следующие виды дефектов:

.Допустимые данные

Чаще всего дефекты в программных системах проявляются при обработке нестандартных данных, не предусмотренных требованиями - при вводе неверных символов, пустых строк или при слишком большой скорости ввода информации

.Граничные данные

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

.Отсутствие данных

Дефекты могут проявиться и в случае, если системе не передается никаких данных или выдают ошибку программы

.Повторный ввод данных

В случае повторной передачи на вход системы тех же самых данных могут получаться различия в выходных данных, не предусмотренные в требованиях.

.Неверные данные

При проверке поведения системы необходимо не забывать проверять ее поведение при передаче ей данных, не предусмотренных требованиями - слишком длинных или слишком коротких строк, неверных символов, чисел за пределами вычислимого диапазона и т.п. Неверные данные, как и допустимые, также можно разделять на различные классы эквивалентности.

.Нештатные состояния среды выполнения

Нештатные состояния среды выполнения (например, исчерпание памяти, дискового пространства или длительная нехватка процессорного времени) могут затруднять работу системы либо делать ее невозможной. Основная задача системы в такой ситуации - корректно завершить или приостановить свою работу.


Рисунок-1 Открыли программу С++


Рисунок-2 Осуществляем команду File/ New/ Other/ Console Wizard откроется следующее окно:


Рисунок-3 Создали новое окно для тестирования


Рисунок-4 «Записываем исходный код программы»


3.2 Тестирование программы


Программа проверялась на следующих тестовых примерах:

Тестовый примерVer1->TextVer2->TextVer3->TextVer4->TextМножество 10000Множество 2----Множество 31Множество 4

Рисунок 5- Ожидание вывода на экран


Рисунок 6 - Прогон тестовых примеров.


4. Техника безопасности


Техника безопасности (ТБ) - свод правил <#"justify">1.Borland C++ Builder 5. Энциклопедия программиста. Калверт Ч., Рейсдорф К., "ДиаСофт" - 2001, 944 стр.

.Кент Рейсдорф, Кен Хендерсон. Borland C++ Builder. Освой самостоятельно, 1998, 700 стр.

.Б. Страуструп. Язык Программирования С++. Специальное издание /Б. Страуструп; Под Ред. Ф. Андреева, А. Ушакова; С. Анисимова, М. Кононова.- М. : Бином, 2006.

.Круглински Д., Уингоу С, Шеферд Дж.. Программирование на Microsoft Visual C++ 6.0 для профессионалов/Пер. с англ.. П.:Русская Редакция. 2004.

.Шилд Г. Программирование на Borland C++ для профессионалов. - Мн.: ООО «Попурри», 1998.

.#"justify">.#"justify">.#"justify">.http://library.bsuir.by/online/showpage.jsp?PageID=89336&resID=100229&lang=ru&menuItemID=117312&_preview_=1


МИНОБРНАУКИ РОССИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДА

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ