НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра ССОД
Расчетно-графическая работа
по дисциплине «Операционные системы»
Вариант №12
Факультет: АВТ Преподаватель
Группа: АТ-73 Родников В.В.
Студент: Игнатьев Д..
Отметка о защите:
________________
Дата защиты: «____»___________2010г.
Новосибирск
2010
Содержание
стр.
Задание ………………………………………..………………………..……………………………. 2
Принцип работы программы …….……………………..…………………………………. 2
Листинг файла MainUnit.cpp ..……………………………………………………………… 4
Листинг файла MainUnit.h …...……………………………………………………………… 16
Список литературы ……………………………………………………………………………… 19
Задание:
Написать программу моделирования работы елочной гирлянды.
Рисунок Новогодней елки подготовить самостоятельно или использовать
готовую фотографию.
Параметры для самостоятельного выбора:
- количество параллельных нитей гирлянды;
- количество лампочек в нити и их цвета;
- алгоритмы мигания лампочек каждой нити.
Работа каждой нити моделируется отдельным потоком.
Предусмотреть возможность завершения каждого потока, смены
алгоритма мигания и повторного пуска.
Принцип работы программы:
В данной программе присутствуют 2 параллельные нити гирлянды, каждая из них имеет свою кнопку (вкл/выкл), а также 3 режима мигания. Нити описаны отдельными потоками. Потоки создаются в событии OnCreate основной формы и выполняются постоянно. Режимы переключения и вкл/выкл для каждой нити определяются флагами в виде глобальных переменных.
Рис1. Главная форма программы
Список литературы:
1. Программирование в C++ Builder. А.Я. Архангельский, Бином, Москва, 2003.- 1151 с.
2. Конспект лекций по курсу Операционные системы лектор Родников В.В. 2009г.
Листинг файла MainUnit.cpp
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MainUnit.h"
HANDLE hThread1;//указатель на поток управляющий первой нитью
HANDLE hThread2;//указатель на поток управляющий второй нитью
bool stop1 = true, stop2 = true; //Параметры (флаги) отвечающие за пуск / остановку гирлянды
int param1 = 0; //Счетчики - необходимы 2-го режима мигания
int param2 = 0;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
DWORD WINAPI TForm1::Girlanda1ThreadFunc(LPVOID param)
{
while(1)
{
if(stop1 == false)
{
switch(Form1->RG1->ItemIndex) //Определяем порядок работы гирлянды (режим)
{
case 0:
{
Form1->Lamp1->Brush->Color = clRed;
Sleep(100);
Form1->Lamp2->Brush->Color = clRed;
Sleep(100);
Form1->Lamp3->Brush->Color = clRed;
Sleep(100);
Form1->Lamp10->Brush->Color = clRed;
Sleep(100);
Form1->Lamp11->Brush->Color = clRed;
Sleep(100);
Form1->Lamp12->Brush->Color = clRed;
Sleep(100);
Form1->Lamp13->Brush->Color = clRed;
Sleep(100);
Form1->Lamp14->Brush->Color = clRed;
Sleep(100);
Form1->Lamp15->Brush->Color = clRed;
Sleep(100);
Form1->Lamp16->Brush->Color = clRed;
Sleep(100);
Form1->Lamp24->Brush->Color = clRed;
Sleep(100);
Form1->Lamp25->Brush->Color = clRed;
Sleep(100);
Form1->Lamp26->Brush->Color = clRed;
Sleep(100);
Form1->Lamp27->Brush->Color = clRed;
Sleep(100);
Form1->Lamp28->Brush->Color = clRed;
Sleep(100);
Form1->Lamp29->Brush->Color = clRed;
Sleep(100);
Form1->Lamp30->Brush->Color = clRed;
Sleep(100);
// "Отключаем 1-ю гирлянду" (Для эффекта "замедленного включения")
Form1->Lamp1->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp2->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp3->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp10->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp11->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp12->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp13->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp14->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp15->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp16->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp24->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp25->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp26->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp27->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp28->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp29->Brush->Color = clWhite;
Sleep(100);
Form1->Lamp30->Brush->Color = clWhite;
} break;
case 1:
{
Form1->Lamp1->Brush->Color = clRed;
Form1->Lamp2->Brush->Color = clAqua;
Form1->Lamp3->Brush->Color = clLime;
Form1->Lamp10->Brush->Color = clRed;
Form1->Lamp11->Brush->Color = clAqua;
Form1->Lamp12->Brush->Color = clLime;
Form1->Lamp13->Brush->Color = clRed;
Form1->Lamp14->Brush->Color = clAqua;
Form1->Lamp15->Brush->Color = clLime;
Form1->Lamp16->Brush->Color = clRed;
Form1->Lamp24->Brush->Color = clRed;
Form1->Lamp25->Brush->Color = clNavy;
Form1->Lamp26->Brush->Color = clLime;
Form1->Lamp27->Brush->Color = clGreen;
Form1->Lamp28->Brush->Color = clRed;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.