Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая работа.docx
Скачиваний:
17
Добавлен:
30.03.2015
Размер:
395.12 Кб
Скачать

Министерство образования и науки

Государственное образовательное учреждение

высшего профессионального образования

«ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

Кафедра «Автоматизированные системы обработки информации и управления»

                                                                                                   

 

 

 

 

Курсовая работа

Использование потоков в приложениях Windows

Вариант - 4 

 

 

 

 

Принял: преподаватель

В.Н. Цыганенко

«___» __________ 2014 г.

 

Разработал : студент гр.ЗАС-311

Береснев М.В.

«___» __________ 2014 г.

 

 

 

 

Омск 2014

Содержание

Задание 2

1 Описание общего алгоритма и интерфейса программы 4

1.1 Описание общего алгоритма 4

1.2 Интерфейса программы 5

2 Описание методов решения и алгоритмов задач, реализуемых каждым потоком 6

2.1 Метод заполнения массива случайными числами 6

2.2 Метод вычисления минимальных и максимальных значений 7

2.3 Метод вычисления отклонений каждого значения от среднего арифметического 8

3 Описание методов создания, уничтожения и синхронизации потоков, примененных в программе 11

3.1 Создание потоков 11

3.2 Синхронизация потоков 12

3.3 Завершение потоков 12

4 Листинг программы 13

Заключение 19

Список использованной литературы 20

Задание

Разработать программу, которая создает в отдельном потоке случайный массив А из N целых чисел в диапазоне от -999 до 999 выводит на экран эти числа. Создание и вывод элементов массива производится через заданное время T, N и T вводятся пользователем до запуска процесса. Массив обрабатывается двумя другими потоками В и С, работающими параллельно с потоком, создающим массив. Все потоки выводят результаты своей работы в текстовые окна, каждый поток в свое окно.

Задание B

Задание C

Вычисление минимального и максимального значений

Вычисление отклонений каждого значения от среднего арифметического

 

1 Описание общего алгоритма и интерфейса программы

1.1 Описание общего алгоритма

Диаграмма 1 - выполнение потоков

При нажатии кнопки «START», считываются данные с полей «N» и «Time», создаются новые объекты потоков и отправляется сигнал на их запуск.

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

При закрытии программы или нажатии кнопки «STOP» потоки уничтожаются.

Диаграмма 1, показывает состояние потоков в течение времени выполнения.

1.2 Интерфейса программы

На главной форме располагается группа компонентов для ввода и вывода значений:

  • Три поля (Thread1, Thread2, Thread3) для вывода значений

  • «N» - указывает размерность массива

  • «Time» - количество времени, через которое будут выводиться результаты в текстовые поля (Thread1, Thread2, Thread3).

Кнопка «START» создает потоки, в которых происходит вычисления среднего арифметического каждой тройки чисел массива и произведений каждого числа на его номер (индекс). Результаты выводятся на главной форме в поля (Thread1, Thread2, Thread3).

Кнопка «STOP» останавливает запущенные потоки.

Кнопка «EXIT» закрывает программу, при запущенных потоках уничтожает их.

Рисунок 1 - Главная форма

2 Описание методов решения и алгоритмов задач, реализуемых каждым потоком

2.1 Метод заполнения массива случайными числами

Блок-схема 1 - Заполнение массива случайными числами от -999 до 999

2.2 Метод вычисления минимальных и максимальных значений

max, min

Блок схема 3 - Вычисление минимального и максимального значения

Пример 1. Дан массив A = {-359, 126, 803, 913, -716};

Решение:

Начальные значения min = 0, max = -359;

A[1]

-359

126

803

913

-716

-359 < min(0) ; min = -359

-359 > max(-359); max = -359

A[2]

-359

126

803

913

-716

126 < min(-359); min = -359

126 > max(-359); max = 126

A[3]

-359

126

803

913

-716

803 < min(-359); min = -359

803 > max(126); max = 803

A[4]

-359

126

803

913

-716

913 < min(-359); min = -359

913 > max(803); max = 913

A[5]

-359

126

803

913

-716

-716 < min(-359); min = -716

-716 > max(803); max = 913

Ответ: min = -716, max = 913.