- •Курсовая работа
- •Содержание
- •Задание
- •1 Описание общего алгоритма и интерфейса программы
- •1.1 Описание общего алгоритма
- •1.2 Интерфейса программы
- •2 Описание методов решения и алгоритмов задач, реализуемых каждым потоком
- •2.1 Метод заполнения массива случайными числами
- •2.2 Метод вычисления минимальных и максимальных значений
- •2.3 Метод вычисления отклонений каждого значения от среднего арифметического
- •3 Описание методов создания, уничтожения и синхронизации потоков, примененных в программе
- •3.1 Создание потоков
- •3.2 Синхронизация потоков
- •3.3 Завершение потоков
- •4 Листинг программы
- •Заключение
- •Список использованной литературы
Министерство образования и науки
Государственное образовательное учреждение
высшего профессионального образования
«ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра «Автоматизированные системы обработки информации и управления»
Курсовая работа
Использование потоков в приложениях 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 < min(0) ; min = -359 -359 > max(-359); max = -359 | |||||
A[2] |
126 < min(-359); min = -359 126 > max(-359); max = 126 | |||||
A[3] |
803 < min(-359); min = -359 803 > max(126); max = 803 | |||||
A[4] |
913 < min(-359); min = -359 913 > max(803); max = 913 | |||||
A[5] |
-716 < min(-359); min = -716 -716 > max(803); max = 913 |
Ответ: min = -716, max = 913.