Написание программы моделирования работы елочной гирлянды

Страницы работы

20 страниц (Word-файл)

Содержание работы

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

Кафедра ССОД

Расчетно-графическая работа

по дисциплине «Операционные системы»

Вариант №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;

Похожие материалы

Информация о работе