Содержание
Задание
1.1 Описание общего алгоритма
1.2 Интерфейса программы
2. Описание методов решения и алгоритмов задач, реализуемых каждым потоком
2.1 Метод заполнения массива случайными числами
2.2 Метод вычисления минимальных и максимальных значений
2.3 Метод вычисления отклонений каждого значения от среднего арифметического
3. Описание методов создания, уничтожения и синхронизации потоков, примененных в программе
3.1 Создание потоков
3.2 Синхронизация потоков
3.3 Завершение потоков
4 Листинг программы
Заключение
Список использованной литературы
Задание
Разработать программу, которая создает в отдельном потоке случайный массив А из N целых чисел в диапазоне от - 999 до 999 выводит на экран эти числа. Создание и вывод элементов массива производится через заданное время T, N и T вводятся пользователем до запуска процесса. Массив обрабатывается двумя другими потоками В и С, работающими параллельно с потоком, создающим массив. Все потоки выводят результаты своей работы в текстовые окна, каждый поток в свое окно.
Задание B | Задание C |
Вычисление минимального и максимального значений | Вычисление отклонений каждого значения от среднего арифметического |
Описание общего алгоритма и интерфейса программы
Описание общего алгоритма
Диаграмма 1 - выполнение потоков
При нажатии кнопки "START", считываются данные с полей "N" и "Time", создаются новые объекты потоков и отправляется сигнал на их запуск.
Перед тем как поток будет выполнять вычисления, он ожидает сигнал об активизации объекта событие. На время вычислений (блок-схемы 1, 2,3) событие переходит в состояние пассивное. По завершению обработки вычислений событие переходит в состояние активное. За счет этого достигается синхронизация между потоками.
|
При закрытии программы или нажатии кнопки "STOP" потоки уничтожаются.
Диаграмма 1, показывает состояние потоков в течение времени выполнения.
Интерфейса программы
На главной форме располагается группа компонентов для ввода и вывода значений:
- Три поля (Thread1, Thread2, Thread3) для вывода значений
- "N" - указывает размерность массива
- "Time" - количество времени, через которое будут выводиться результаты в текстовые поля (Thread1, Thread2, Thread3).
Кнопка "START" создает потоки, в которых происходит вычисления среднего арифметического каждой тройки чисел массива и произведений каждого числа на его номер (индекс). Результаты выводятся на главной форме в поля (Thread1, Thread2, Thread3).
Кнопка "STOP" останавливает запущенные потоки.
Кнопка "EXIT" закрывает программу, при запущенных потоках уничтожает их.
поток программа интерфейс алгоритм
Рисунок 1 - Главная форма
Описание методов решения и алгоритмов задач, реализуемых каждым потоком
Метод заполнения массива случайными числами
Блок-схема 1 - Заполнение массива случайными числами от - 999 до 999
Метод вычисления минимальных и максимальных значений
Блок схема 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.