Противопожарные требования

235892
знака
25
таблиц
6
изображений

9.6. Противопожарные требования

К помещению, в котором располагается вычислительный центр предъявляются требования:

1) здание, в котором предусмотрено размещение ЭВМ, должно быть 1 степени огнестойкости;

2) все виды кабельных коммуникаций должны быть проложены в металлических газовых трубах;

3) подпольные пространства под съемными полами должны быть разделены несгораемыми перегородками;

4) силовые кабельные линии должны быть надежно изолированы;

5) в наличии должны быть первичные огнетушительные средства;

По пожароопасности зоны данное помещение относится к классу П-IIa. Для ликвидации пожаров помещение вычислительного центра площадью 40 кв. м. должно располагать одним углекислотным огнетушителем типа ОУ-2, ОУ-5, или ОУ-8.

Для своевременного обнаружения, оповещения и принятия мер быстрой ликвидации пожара в помещении необходима установка дымовых пожарных извещателя. При установке извещателя на высоте 4 м и площади помещения 40 кв. м. достаточно одного дымового изве­щателя.

9.7. Организация рабочего места пользователя при работе с терминалом

1) При организации рабочего места с терминалом на одного пользователя необходимо выделять не меньше б кв. метров. Высота юмещения должна быть не меньше 4 метров.

2) Помещение обязательно должно оборудоваться огнетушителем, сигнализацией и телефоном (и городским и местным).

3) Помещение должно быть оборудовано одноместными столами и мягкими стульями с меняющимися по высоте сиденьями и спинками стула. Столы должны иметь длину не менее 0.7 метра и ширину, обеспечивающую место перед клавиатурой 0.3 метра.

4) Разрешающая способность человеческого глаза составляет примерно 0.3 мм на расстоянии 500 мм. Благоприятная для обозрения площадь лежит в пределах 500-700 мм. Для зрительного распознавания алфавитно-цифровых знаков необходим растр размером 5-7 точек, поэтому ширина и высота линий изображения этих знаков должна быть не менее 1.5 мм при удалении 500 мм и 2.9 мм при удалении 700 мм от работающего. Угол обзора по вертикали составляет 15. В положении сидя этот угол не превышает 15 относительно горизонтали. Оптималь­ное расстояние от глаз до экрана монитора 0.6-0.7 м., допустимое не менее 0.5 метра. Рассматривать информацию на экране ближе 0.5 метра не рекомендуется.

5) Требуемая и допустимая контрастность элементов рабочего места снизу ограничена возможностью распознавания, а сверху допус­каемой освещенностью, исключающей ослепление работающего. В поле зрения работающего контрастность должна быть в пределах от 8:1 до 15:1. При этом исключается наличие глянцевых поверхностей, соз­дающих блики и отражающий свет. Уменьшению усталости и повышению удобства обслуживания способствует определенное размещение комму­никаций работающего с машиной.

9.8.Приборы контроля параметров среды

Метрологическое обеспечение осуществляется на основе положений ГОСТ 12.0.005-84 "Метрологическое обеспечение в области безопасности труда. Основные положения" /М., 1984/, системы стандартов безопасности труда, санитарных норм и правил Минздрава СССР и др.

Приборы для контроля опасных и вредных производственных фак­торов представлены в

Таблица 24

Приборы контроля
Измеряемая величина единица измерений Рабочие средства измерений Погрешность
тип диапазон
частотный динами­ческий
1. Температура, С и относительная влаж­ность воздуха, % Аспирационный психометр MB-4M

-

-

-31 . . .

51 С

10 . . .

100 %

+0,1 С

+5%

2. Скорость движения воздуха, м/с Термометр, электроанемометр TAM-1 -

0,1 . . .

5 м/с

+2,1

м/с

3. Уровень звукового давления в октавных полосах частот, дБ вшв-ооз

10 . . .

20000 Гц

25 . . .

140 дБ

+1 дБ
4. Освещенность, лк. Люксметр Ю-116 мкм

0,38. . .

0,72 мкм

5 . . .

100000 лк

+10 %
5. Массовая концент­рация пыли, мг/куб.м Радиоизотопный пылемер ПРИЗ-2 -

0,1 . . .

100 иг/м

+20 %
ЗАКЛЮЧЕНИЕ

В результате разработки данной дипломной работы написана программа для обучения работе в графическом режиме. Программа предназначена для студентов младших курсов Санкт-Петербургской государственной академии аэрокосмического приборостроения и знакомит их с графическими средствами языка Turbo-Pascal 6.0/7.0.

Программа содержит семь разделов для изучения:

1) Программирование графических режимов.

2) Управление курсором и полем рисования.

3) Формирование прямолинейных монохромных изображений.

4) Управление цветом и стилем изображений.

5) Программирование цветных криволинейных изображений.

6) Формирование графических текстов.

7) Программирование озвученных динамических сцен.

Программа позволяет индивидуально, в удобном для каждого обуча­емого темпе , изучать работу с компьютером в графическом режиме. Изучаемый материал представлен в программе наглядно, теоретический материал сопровожден необходимыми иллюстрациями, что делает его более понятным. Предусмотрена возможность повторного изучения мате­риала. В процессе обучения производится контроль приобретенных знаний в виде Контрольных вопросов. При ответах на контрольные вопросы студенту выставляются оценки, которые регистрируются и могут быть выведены на экран в любой момент работы с программой. Имеется возможность разъяснения студенту его ошибок в случае наличия таковых. После ответа на каждый вопрос на экран выводится комментарий, содер­жащий оценку в форме "правильно/неправильно" и в случае неверного ответа пояснения сущности ошибки. Продолжительность сеанса работы программы составляет 45 минут.

Программа написана на языке Turbo-Pascal 7.0 и требует для использования наличия персонального компьютера типа IBM, монитора типа EGA с графическим выводом 640x350 пиксел, 16 регистрами палитры.

Разработанная программа полностью соответствует требованиям Технического задания.

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Брусенцов Н.П., Маслов С.П., Х.Рамиль Альварес Микрокомпьютерная система обучения "Наставник". М.: Наука , 1990. 223 с.

2. Демушкин А7С7, КирилловА.И., Сливин Н.А., Чубров Е.В., Кривошеев А.О., Фомин С.С. Компьютерные обучающие программы // Информатика и образование, 1995. N 3.

3. Казаков В.Г., Дорошквин А.А., Задорожный П.М., Князев Б.А. Лекционная мультимедиа аудитория // Информатика и образование, 1995. N4.

4. Фаронов В.В. турбо паскаль: в 3 т. М.: Учебно-инженерный центр "МВТУ-ФЕСТО ДИДАКТИК", 1992.Т.1: Основы турбо Паскаля. 286 с.

5. Епанешников A.M., Епанешников В.А. Программирование в среде TURBO-PASCAL 7.O.M.: "ДИАЛОГ-МИФИ", 1995. 282 С.

6. Петров В.И. Графические средства алгоритмического языка TURBO-PASCAL : Методические указания к выполнению лабораторных работ N 1,2 / ЛИАП.СПб., 1992. 33 с.

7. Петров В.И. Графические средства алгоритмического языка TURBO-PASCAL : Методические указания к выполнению лабораторных работ N 3,4,5 / ЛИАП.СПб., 1992. 43 с.

8. Технико-экономическое обоснование исследовательских и инженерных решений в дипломных проектах и работах: учебное пособие / под редакцией Минько Э.В., Покровского А.В. /Свердловск Уральский университет, 1990. 144 с.

9. Евдокимов В.И. Охрана труда и окружающей среды: Методические указания по дипломному проектированию / ЛИАП.Л., 1989. 34 с.

10. Евдокимов В.И., Козаченко В.И., Нейман Л.А., Румянцев В.В. Охрана труда в приборо- и радиоаппаратостроении: Учебное пособие / СПГУАП. СПб., 1993. 81 с.

ПРИЛОЖЕИЕ 1

Текст программы

program GRAPHIC; {главная программа "Графика"}

uses Crt, Graph, Dos, Strings, MYBOOK, RAZDEL1, RAZDEL2, RAZDEL3,

RAZDEL4 , RAZDEL5 , RAZDEL6 , RAZDEL7 ;

Type Dlina=string[6Q];

var Gd,Gm: integer;

Regime: byte;

NOMER3 , NOMER4 , NOMER5 , NOMER6 , NOMER7 : integer ;

Ball3 :array[l. .2} of integer; {переменные вывода результатов} ball4 :array[l. .2] of integer; { работы по разделам}

ball5 :array[l. .2] of Integer;

ball6 :array[l. .2] of integer; ball7:array[l. .2] of integer; Itog :array[l, .2] of integer; {переменная накопления

 результатов работы за сеанс}

tog:array[l. .2] of integer; {переменная вывода результатов

работы за сеанс}

К:аггау[1. .2] of integer; {переменная контролирующая число

обращений к процедурам рабочих модулей }

Dh: Char; {переменная для принятия символа с клавиатуры}

procedure Windol; {введение }

Type Ann=record

PPl:char;

РР2:array [0. .69] of char;

end;

var FF:file of Ann;

A: Ann;

St :string[68];

label 1;

begin

Assign (FF, 'VEDEN. pas' ); {связь с файлом текста введения}

{SI-}

Reset(FF);

{SI + }

IF lOResulto 0 then Writeln ('Heт файла VEDEN1);

ClearDevice;

OKNO; {процедура оформления экрана}

For N:=0 to 31 do {цикл вывода текста введения }

 begin

Read(FF,A);

St:=StrPas(A.PP2);

case A.PP1 of {проверка наличия иллюстрации и их вывод}

‘ ‘: OutTextXY( 20 , 10*N+10 , St ) ;

‘0‘ : GoTo 1 ;

 end;

end;

1:readkey;

Close(FF);

end;

procedure Cursor(Flag:boolean); {Если Flag=True, то курсор видим;}

{ если Flag=False,TO невидим}

const sizeCursor:word=0;

var Red:registers;

begin

 with Red do

begin

if Flag then

begin

CX:=SizeCursor; {Восстановим старый размер курсора}

end

else

begin

BH:=0; {0-я страница дисплея}

АН:=03; {функция чтения размера и позиции курсора}

Intr($10,Red);

SizeCursor:=CX;{сохраняем размер курсора}

СН:=$20; {делаем курсор невидимым}

end;

АН:=01; {функция установки размера курсора}

Intr($10,Red);

 end;

end;

procedure SVETFON(C,F:byte); {установка цвета и фона}

begin

 TextColor(C);

 TextBackground(F)

end;

procedure VERTIKALNOE_MENU(Kl,K2,Kp:byte;SS1,SS2,SS3,SS4,SS5,SS6,

 SS7,SS8,SS9:dlina;Var Result:byte);

{процедура создания окна меню}

Label Met;

Const Kr=9;

Var M:array[l..Kr] of string[60];

I,T:byte;

Ch:char;

Fl:boolean;

begin

 Cursor(False);

 Fl:=True;

 M[1]:=SS1;M[2]:=SS2;M[3]:=SS3;M[4]:=SS4;M[5]:=SS5;M[6]:=SS6;

 M[7]:=SS7;M[8]:=SS8;M[9]:=SS9;

 T:=Length(M[I]);

for I:=2 to Kp do

 if Length(M{I])>T then T:=Length(M[I]);

 for l:=l to Kp do

begin

if 1=1 then SVETFON(1,13)

else SVETFON(13,1);

GoToXY(Kl,K2+i);

write(M[I]);

end;

SVETFON(13,1);

I:=l;

while Fl=True do begin

Ch:=ReadKey;

if Ch=#13 then Fl:=False;

if(Ch=#0) and KeyPressed then

begin

Ch:=ReadKey;

case Ch of

#80: begin

GoToXY(Kl,K2+i);

SVETFON(13,1);

write(M[I]);

if i=(Kp+l) then

begin

I:=l;

SVETFON(3,l);

GoToXY(Kl,K2+l);

SVETFON(1, 13);

write(M[I]);

SVETFON(13,1);

goto Met;

end;

GoToXY(Kl,K2+I);

SVETFON(1,13);

write(M[I]);

SVETFON(13,1);

end;

#72: begin

 if 1=1 then goto Met;

 GoToXY(Kl,K2+I);

 SVETFON(1371);

 write(M[I]);

 i:=I-1;

 GoToXY(Kl,K2+I);

 SVETFON(1,13);

 write(M[I])

end

end;

Met:

end ;

end;

Result :=I;

SVETFON(13,1);

Cursor(True) ;

end;

begin {Начало основной программы}

 GraphRegim;

 SetBKColor(l);

 SetTextStyle(0,0,5);

 SetColor(12);

 OutTextXY(40,50, 'Т Р А Ф И К А');

 SetTextStyle(0,0,1);

 SetColor(15);

 OutTextXY(100,225,'Программа для обучения работе в графическом

режиме’);

 OutTextXY(170,245,'Разработал Черноткач Р. И.');

 OutTextXY(232,285,'СПГУАП');

 OutTextXY{240,305,'2002’);

 readkey;

 SetTextStyle(0,0,l);

 Windo1;

 CloseGraph;

 NOMER3:=0; {переменные, контролирующие доступ к разделам}  

 NOMER4:=0; {{ не более двух раз) за сеанс}

 NOMER5:=0;

 NOMER6:=0;

 NOMER7:=0;

 К[1]:=0;

 К[2]:=0;

 while True do begin

TextBackground(3);

ClrScr;

Cursor(False);

GoToXY(15,5);

TextColor(l);

write('Какой раздел Вы хотели бы изучить?');

GoToXY(10,10);

VERTIKALNOE_MENU(10,10,9,

' Программирование графических режимов

' Управление курсором и полем рисования

' Формирование прямоллинейньгх монохромных изображений

' Управление цветим и стилем изображений

' Программирование цветных криволинейных изображений

' Формирование графических текстов

' Программирование озвученных динамических сцен

' Результаты Вашей работы

' Конец работы

Regime);

case Regime of

1:RAZDEL10;

2:RAZDEL20;

3:begin

NOMER3:=NOMER3+1;

If NOMER3<3 then

begin

RAZDEL30;

ball3[NOMER3]:=REZ3;

Itog[nomer3]:=Itog[nomer3]+ball3[nomer3];

K[nomer3]:=K[nomer3]+l;

end

end;

4: begin

 NOMER4:=NOMER4+1;

 If NOMER4<3 then

 begin

RAZDEL40;

ball4[nomer4]:=rez4;

Itog[nomer4]:=Itog[nomer4]+ball4[nomer4];

K[nomer4]:=K[nomer4]+l;

 end

end;

5:begin

NOMER5:=NOMER5+1;

If NOMER5<3 then

begin

 RAZDEL50;

 Ьа115[погаег5]:=rez5;

 Itog[nomer5]:=Itog[nomer5]+ball5[nomer5];

 K[nomer5]:=K[nomer5]+1;

end;

end;

6:begin

NOMER6:=NOMER6+1;

If NOMER6<3 then

begin

RAZDEL60;

ball6[nomer6]:=rez6; Itog[nomer6]:=Itog[nomer6]+ball6[nomer6]; K[nomer6]:=K[nomer6]+l;

end;

end

7:begin

NOMER7:=NOMER7+1;

IF NOMER7<3 then

begin

 RAZDEL70;

 ball7[nomer7]:=rez7;

 Itog[nomer7]:=Itog[nomer7]+ball7[nomer7];

end;

end;

8:begin {вывод результатов работы}

If K[l]<>0 then

tog[l3:=Round(Itog[l]/K[1);

If K[2]<>0 then

tog[2]:=Round(Itog[2]/K[2]);

TextBackground(1);

ClrScr;

TextColor(12);

writeln;

Write('РЕЗУЛЬТАТЫ ВАШЕЙ РАБОТЫ’);

writeln;

writeln('l попытка 2 попытка':80);

writeln;

wtiteln('ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ

ИЗОБРАЖЕНИЙ');

writeln;

writeln(' УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЙ1);

writeln;

writeln('ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ

 ИЗОБРАЖЕНИЙ');

 writeln;

 writeln(' ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ');

 writeln;

 writeln(' ПРОГРАММИРОВАНИЕ ОЗВУЧЕННЫХ ДИНАМИЧЕСКИХ СЦЕН');

 writeln;

 writeln;

 writeln(' ОЦЕНКА РАБОТЫ ЗА СЕАНС');

 GotoXY(64,6); writeln(ball3[1]);

 GoToXY(75,6); writeln(ball3[2]);

 GoToXY(64,8); writeln(ball4[l]);

 GoToXY(75,8); writeln(ball4[2]);

 GoToXY(64,10); writeln(ball5[l]);

 GoToXY(75,10); writeln(ball5[2]);

 GoToXY(64,12); writeln(ball6[l]);

 GoToXY(75,12); writeln(bal16[2]);

 GoToXY(64,14); writeln(bal17[l]);

 GoToXY(75,14); writeln(ball7[23)

 GoToXY(64,18); writeln(tog[l]);

 GoToXY(75,18); writeln(tog[2]);

 readkey;

end;

9:begin

GraphRegim;

OKNO;

SetTextStyle{0,0,4);

SetColor(4);

OutTextXY(150,80,'Bы хотите');

OutTextXY(60,120,'закончить работу')

OutTextXY(100,160,'с программой?');

OutTextXY(230,280,'Y/N');

Dh:=ReadKey;

If (Dh='y') or (Dh='н') then

begin

 Cursor(True);

 ClrScr;

 Halt

end

else

 CloseGraph;

end;

end;

end;

CloseGraph;

end.

{$A+, B-, D+, E+, F-, G-, I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+}

{$M 16384,0,655360}

Unit RAZDEL1;

interface

uses Crt, Graph, Dos, Strings, MYBOOK;

type An=record

 P1:Char;

 P2:array[0..69] of Char;

end;

var Fl:file of An ;

A: An;

Gd,Gm,Y,N:integer;

St:string[68];

procedure RAZDEL10; {Обеспечение работы с разделом "Программиро вание графических режимов"}

implementation

procedure RAZDEL10;

Label 1;

begin

GraphRegim;

Assign(Fl,'RAZTEX1.pas');

{SI-}

Reset (Fl);

{SI+}

If lOResult <>0 then Writeln ('Нет файла RAZTEX1.pas');

Repeat;

ClearDevice;

OKNO;

Y:=10;

For N:=0 to 31 do

begin

Read(Fl,A); St:=StrPas(A.P2);

case A.P1 of

' ':OutTextXY(20,Y*N+10,St);

'*':begin

SetColor{4);

OutTextXY(20,Y*N+10,St);

SetColor(l);

end;

'0':GoTo 1;

end;

end;

1: readkey;

until A.P1='O';

Close(Fl);

CloseGraph;

end;

begin

end.

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+}

{$M 16384,0,655360}

Unit RAZDEL2;  

interface

uses Crt,Graph,Dos,Strings,MYBOOK;

type An=record

P1:Char;

P2:array[0..69] of Char;

end;

var F2:file of An ;

A: An;

Gd,Gm,X,Y,N:integer;

St:string[68];

procedure RAZDEL20; {Обеспечение работы с разделом "Управление

курсором и полем рисования"}

implementation

procedure RAZDEL20;

Label 1;

begin

GraphRegim;

Assign(F2,'RAZTEX2.pas');

{SI-}

Reset(F2);

{SI+}

If IOResult <> 0 then Writeln ('Нет файла RAZTEX2.pas');

repeat

ClearDevice;

OKNO;

Y:=10;

For N:=0 to 31 do

begin

Read(F2,A);  

St:=StrPas(A.P2);

case A.P1 of

' ':OutTextXY(20,Y*N+10,St);

'*':begin  

SetColor(4);

OutTextXY(20,Y*N+10,St);

SetColor(1);

end;

'0':GoTo 1;

end;

end;

1: readkey;  

until A.P1='0';

Close(F2);

CloseGraph;

end;

 begin

 end.

Unit RAZDEL3;

interface

uses Crt,Graph,Dos,Strings,MYBOOK;

type An=record {Теоретическая часть }

P1:Char; {переменная поля флагов: конец файла, номер

иллюстрации, строка, выделяемая цветом}

P2:array[0..69] of Char; {переменная поля текста}

end;

type Ant=record {Текст вопросов}

P1:Char; {переменная поля флагов: конец файла, конец

вопроса, номер иллюстрации}

P2:array[0..1] of Char; {переменная номера вопроса}

P3:array[0..69] of Char; {переменная поля текста}  

end;

type Antr=record { Справки }

P1:Char; {переменная поля флагов: конец файла, конец вопроса,

номер иллюстрации}

P2:array[0..1] of Char; {переменная поля номера вопроса}

P3:array[0..0] of Char; {переменная поля флагов: номера

 справки, конца справки}

P4:array[0..69] of Char; {переменная поля текста}

P5:array[0..2] of Char; {переменная поля оценки}

end;  

var F3:file of An ; {переменные теоретической части}

A: An;

St:string[68];

Y,N:integer;

var F32:file of Ant; { переменные вопросов}

At:Ant;

R1:string[2];

Z1:integer;

S:string[68];  

var F33:file of Antr; {переменные справок}

Atr:Antr;

R2:string[2];

R3:string[1];  

Stt:string[68];

R4:string[2];

Z2,Z3,Z4:integer;

CH: Char; {переменная для принятия символа с клавиатуры}

K,J,I:integer; {переменные циклов}

M: array[0..3] of integer; {массив для хранения четырех

выбранных номеров вопросов}

Code:integer;

var R5:string[1]; {переменные вывода результатов}

Z5:integer;  

REZ3:Longint; {переменная оценки}

procedure RAZDEL30; {Обеспечение работы с разделом "Формирование

 прямолинейных монохромных изображений"}

implementation  

const Mn:array[1..5] of PointType=((X:460;Y:30),(X:590;Y:90),

(X:590;Y:120),(X:430;Y:120),(X:460;Y:30));

Mno:array[1..5] of PointType=((X:460;Y:170),(X:590;Y:230),

(X:590;Y:260),(X:430;Y:260),(X:460;Y:170));

{Константы для формирование иллюстраций к тексту теории}

const Ww:array[1..5] of PointType=((X:390;Y:60),(X:510;Y:60),

(X:510;Y:260),(X:390;Y:260),(X:390;Y:60));

WWW:array[1..5] of PointType=((X:380;Y:50),(X:520;Y:50),

(X:520;Y:270),(X:380;Y:270),(X:380;Y:50));

{Константы для формирования иллюстраций к тексту вопросов}

procedure RAZDEL30;

 

Label 0,1,2,3;

begin

REZ3:=6;

GraphRegim;

Assign(F3,'RAZTEX3.pas'); {Связь с файлом теста теории}

{SI-}

Reset(F3);

{SI+}

If IOResult <> 0 then Writeln ('Нет файла RAZTEX3.pas');

repeat  

OKNO;

Y:=10;

For N:=0 to 31 do {Цикл вывода текста теории}

begin  

Read(F3,A);

St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку

типа string}

case A.P1 of {Иллюстрации к тексту}

' ': OutTextXY(20,Y*N+10,St);

'*': begin

SetColor(4);  

OutTextXY(20,Y*N+10,St);

SetColor(1);

end;

 'щ': begin

SetColor(4);

Line(460,120,593,120);

OutTextXY(460,160,'0');

OutTextXY(593,130,'(X,Y)');

SetColor(1);

end;

'2':begin

SetColor(4);

OutTextXY(460,160,'0 dX');

OutTextXY(600,180,'dY');

OutTextXY(550,200,'(dX,dY)');

Line(460,170,593,170);

Line(593,170,593,200);

Line(460,170,593,200);

SetColor(1);

end;

'3':begin

SetColor(4);

OutTextXY(430,245,'(X1,Y1)');

Line(460,260,593,285);

OutTextXY(580,270,'(X2,Y2)');  

SetColor(1);

end;

'4':begin

SetBKColor(2);

SetColor(4);

Rectangle(460,40,590,90);

SetColor(1);

end;

'5':begin

SetFillStyle(1,4);

Bar(459,129,591,181);  

SetFillStyle(8,5);

SetColor(4);

Bar(460,130,590,180);

SetColor(1);

end;

'6':begin

SetFillStyle(6,5);

SetColor(4);

Bar3D(460,240,590,300,20,true);

SetCOLOR(1);

SetFillStyle(1,15);

SetBKColor(11);

end;

'7':begin

SetBKColor(15);

SetColor(4);

DrawPoly(5,Mn);

SetColor(1);

end;

'8':begin

SetColor(4);

SetFillStyle(11,5);

SetBKColor(15);

FillPoly(5,Mno);

SetColor(1);

SetFillStyle(1,15);

end;

'0':GoTo 0;

end;  

end;

0:readkey;

ClearDevice;

OKNO;

until A.P1='0';

Close(F3);

Assign(F32,'Joing.pas'); {связь с файлом вопросов}

{SI-}

Reset(F32);

{SI+}  

If IOResult<>0 then Writeln('Нет файла Joing.pas');

Assign(F33,'Iod.pas'); {связь с файлом справок}

{SI-}

Reset(F33);

{SI+}

If IOResult<>0 then Writeln('Нет файла Iod.pas');

OKNO1; {заставка "Контрольные вопросы"}  

readkey;

ClearDevice;

Randomize; {Выбор четырех номеров вопросов}

For J:=0 to 3 do

begin

1:I:=Random(10);

If I=0 then GOTO 1;

For K:=0 to J-1 do

begin

If M[k]=I then GOTO 1;

end;

M[J]:=I;

end;

repeat

OKNO;

begin

Read(F32,At);

R1:=StrPas(At.P2); {Преобразование ASCIIZ-строки At.P2 в строку

типа string}

Val(R1,Z1,Code); {Преобразование символьного представления

номера вопроса в двоичную форму}

Y:=20;

If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then

begin

repeat  

S:=StrPas(At.P3); {Преобразование ASCIIZ-строки At.P3 в строку

типа string}

OutTextXY(20,Y,S); {Вывод текста вопроса}

case At.P1 of {иллюстрации к тексту вопросов}

'1':begin

DrawPoly(5,Ww);

DrawPoly(5,Www);

Bar3D(410,100,470,120,20,true);

Bar3D(410,120,470,250,20,false)

end;

 '2':begin

Bar3D(200,250,300,300,30,true);

Bar3D(200,300,300,320,30,true)

end;

'3':begin

Line(380,150,550,190);

Line(380,190,550,190);

Line(380,230,550,190);

OutTextXY(375,140,'(X,Y)');

OutTextXY(375,170,'dY');

OutTextXY(555,190,'(X1,Y1)');  

OutTextXY(375,200,'dY');

end;

end;

Y:=Y+10;  

Read(F32,At);

until At.P1='*';

2:OutTextXY(50,330,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___');

CH:=ReadKey;

SetColor(4);

OutTextXY(320,325,CH);  

SetColor(1);

readkey;

If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then

begin

SetFillStyle(1,11);

Bar(318,320,327,340);

GoTo 2;  

end

else

repeat

Read(F33,Atr);  

R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в

строку типа string }

Val(R2,Z2,Code); {Преобразование символьного представления

номера вопроса в двоичную форму}

If Z2=Z1 then

begin

repeat

If Atr.P3=CH then

begin

Y:=100;

OKNO;

repeat

Stt:=StrPas(Atr.P4); {Преобразование ASCIIZ-строки Atr.P4

в строку типа string }

R5:=StrPas(Atr.P5); {Преобразование ASCIIZ-строки Atr.P5

в строку типа string }

Val(R5,Z5,Code); {Преобразование символьного

представления оценки в двоичную форму}

REZ3:=Round((REZ3+Z5)/2); {Формирование оценки}

OutTextXY(20,Y,Stt); {Вывод текста справки}

Y:=Y+10;  

case Atr.P1 of {иллюстрации к тексту справок}

'1':begin

Line(380,150,550,190);

MoveRel(380,190);

Line(380,190,550,190);

LineTo(550,190);

OutTextXY(555,190,'(X1,Y1)');

OutTextXY(370,140,'(X,Y)');

OutTextXY(390,200,'(X,Y+dY)');

end;

'2':begin

GOTOXY(100,190);

LineTo(100,190);

LineRel(30,40);  

LineRel(0,80);

end;

'3':begin

GOTOXY(100,190);

LineTo(380,150);

LineRel(30,40);

LineRel(0,80);

 end;

end;

Read(F33,Atr);

until Atr.P3='*';

readkey;

GOTO 3;

end

else Read(F33,Atr);

until Atr.P1='*';

end

until Atr.P1='0';  

end

else

3: end;

until At.P1='0';  

Close(F32);

Close(F33);

CloseGraph;

end;

begin

end.

Unit RAZDEL4;  

 interface

 uses Crt,Graph,Dos,Strings,MYBOOK;

 type An = record {Теория}

P1:Char; {Переменная поля флага : конец файла, номер

иллюстрации}

P2:array[0..69] of char; {Переменная поля текста}

 end;

 type Ant=record {Текст вопросов}

P1:Char; {Переменная поля флага:конец файла, номер иллюст-

рации, конец вопроса}

P2:array[0..1] of Char; {Переменная поля номера вопроса}

P3:array[0..69] of Char; {Переменная поля текста вопроса}

 end;

 type Antr=record { Справки }

P1:Char; {Переменная поля флага:конец файла, конец вопроса,

номер иллюстрации}

P2:array[0..1] of Char; {Переменная поля номера вопроса}

P3:array[0..0] of Char; {Переменная поля флага: номер справки

и конец справки}

P4:array[0..69] of Char; {Переменная поля текста справки}

P5:array[0..2] of Char; {Переменная поля оценки}

 end;

 var F4: file of An ; {Переменные теории}  

A:An;

N,Y:integer;

St:string[68];

 var F32:file of Ant; { Переменные вопросов}

At:Ant;

R1:string[2];

Z1:integer;  

S:string[68];

 var F33:file of Antr; {Переменные справок}

Atr:Antr;

R2:string[2];  

R3:string[1];

Stt:string[68];

R4:string[2];  

Z2,Z3,Z4:integer;

CH: Char;{Переменная для принятия символа с клвиатуры}

K,J,I:integer; {Переменные циклов}

M: array[0..3] of integer; {Массив для хранения черырех

выбранных номеров вопросов}

Code:integer;

 var R5:string[1]; {переменные вывода результатов}

Z5:integer;  

REZ4:Longint; {переменная оценки}

 procedure RAZDEL40;

 implementation

 procedure RAZDEL40;

 Label 0,1,2,3;

 begin

REZ4:=6;

GraphRegim;

Assign(F4,'RAZTEX4.pas'); {Связь с файлом текста теории}

{SI-}

Reset(F4);

{SI+}

If IOResult <> 0 then Writeln ('Нет файла RAZTEX4.pas');

repeat

ClearDevice;

OKNO;

Y:=10;

For N:=0 to 31 do {Вывод текста теории}

begin  

Read(F4,A);

St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку

типа string}

OutTextXY(20,Y*N+10,St);  

case A.P1 of

'*':begin

SetColor(4);

OutTextXY(20,Y*N+10,St);

SetColor(1);

end;

'1':begin SetFillStyle(1,15);

Bar(350,45,600,340);

SetFillStyle(1,0);

Bar(350,45,600,65);

SetFillStyle(1,1);

Bar(350,65,600,85);

SetFillStyle(1,2);

Bar(350,85,600,105);

SetFillStyle(1,3);

Bar(350,105,600,120);

SetFillStyle(1,4);

Bar(350,120,600,135);  

SetFillStyle(1,5);

Bar(350,135,600,150);

SetFillStyle(1,6);

Bar(350,150,600,165);  

SetFillStyle(1,7);

Bar(350,165,600,185);

SetFillStyle(1,8);

Bar(350,185,600,200);

SetFillStyle(1,9);

Bar(350,200,600,215);

SetFillStyle(1,10);  

Bar(350,215,600,235);

SetFillStyle(1,11);

Bar(350,235,600,255);

SetFillStyle(1,12);  

Bar(350,255,600,275);

SetFillStyle(1,13);

Bar(350,275,600,295);

SetFillStyle(1,14);

Bar(350,295,600,315);

SetFillStyle(1,15);

Bar(350,315,600,340);  

end;

'2':begin

SetBKColor(15);

SetFillStyle(1,15);  

Bar(200,100,600,300);

SetFillStyle(2,2);

Bar(200,100,600,120);

SetFillStyle(3,2);

Bar(200,120,600,145);

SetFillStyle(4,2);

Bar(200,145,600,168);  

SetFillStyle(5,2);

Bar(200,168,600,190);

SetFillStyle(6,2);

Bar(200,190,600,210);  

SetFillStyle(7,2);

Bar(200,210,600,228);

SetFillStyle(8,2);

Bar(200,228,600,246);

SetFillStyle(9,2);

Bar(200,246,600,264);

SetFillStyle(10,2);  

Bar(200,264,600,282);

SetFillStyle(11,2);

Bar(200,282,600,300);

SetFillStyle(1,0);

end;

'0':GoTo 0

end;

end;

readkey;

0:until A.P1='0' ;

readkey;  

Close(F4);

Assign(F32,'Joi.pas'); {связь с файлом вопросов}

{SI-}

Reset(F32);

{SI+}

If IOResult<>0 then Writeln('Нет файла Joi.pas');

Assign(F33,'Iodi.pas');

{SI-}

Reset(F33); {связь с файлом справок}

{SI+}

If IOResult<>0 then Writeln('Нет файла Iodi.pas');

OKNO1; {"Контрольные вопросы"}

readkey;

ClearDevice;

Randomize; {Выбор четырех номеров вопросов}

For J:=0 to 3 do

begin

1:I:=Random(10);

If I=0 then GOTO 1;

For K:=0 to J-1 do

begin

If M[k]=I then GOTO 1;  

end;

M[J]:=I;

end;

M[1]:=1;

repeat

OKNO;

begin

Read(F32,At);

R1:=StrPas(At.P2);{Преобразование ASCIIZ-строки At.P2 в

строку типа string}

Val(R1,Z1,Code); {Преобразование символьного представления

номера вопроса в двоичную форму}

Y:=20;

If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then

begin

repeat

S:=StrPas(At.P3); {Преобразование ASCIIZ-строки At.P3 в

строку типа string}

OutTextXY(20,Y,S); {Вывод текста вопроса}  

case At.P1 of

' ':begin

end;

end;

Y:=Y+10;

Read(F32,At);

until At.P1='*';

OutTextXY(50,330,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___');

2:CH:=ReadKey;

SetColor(4);

OutTextXY(320,325,CH);

SetColor(1);

readkey;

If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then

begin  

SetFillStyle(1,11);

Bar(318,320,327,340);

GoTo 2;

end  

else

repeat

Read(F33,Atr);

R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в

строку типа string}

Val(R2,Z2,Code); {Преобразование символьного представления

номера вопроса в двоичную форму}

If Z2=Z1 then

begin

repeat

If Atr.P3=CH then

begin

Y:=100;

OKNO;

repeat

Stt:=StrPas(Atr.P4); {Преобразование ASCIIZ-строки Atr.P4 в

строку типа string}

R5:=StrPas(Atr.P5); {Преобразование ASCIIZ-строки Atr.P5 в

строку типа string}

Val(R5,Z5,Code); {Преобразование символьного представления

оценки в двоичную форму}

REZ4:=Round((REZ4+Z5)/2); {Формирование оценки }

OutTextXY(20,Y,Stt);

Y:=Y+10;

case Atr.P1 of

' ':begin

end;

end;

Read(F33,Atr);

until Atr.P3='*';

readkey;

GOTO 3;

end

else Read(F33,Atr);

until Atr.P1='*';

end

until Atr.P1='0';  

end

else

3:end;

until At.P1='0';

Close(F32);

Close(F33);

CloseGraph;

 end;

 begin

 end.

Unit RAZDEL5;

interface

uses Crt,Graph,Dos,Strings,MYBOOK;  

type An = record

P1:Char;

P2:array[0..69] of char;  

end;

type Ant=record {Текст вопросов}

P1:Char;

P2:array[0..1] of Char;

P3:array[0..69] of Char;

end;

type Antr=record { Справки }

P1:Char;

P2:array[0..1] of Char;

P3:array[0..0] of Char;

P4:array[0..69] of Char;

P5:array[0..2] of Char;

end;

var F5: file of An ;

A:An;

N,Y:integer;

St:string[68];

var F52:file of Ant; { переменные вопросов}

At:Ant;

R1:string[2];

Z1:integer;

S:string[68];

V:char;

var F53:file of Antr; {переменные справок}

Atr:Antr;

R2:string[2]; {поле Ant.P1-номер вопроса}

R3:string[1]; {поле Ant.P2-номер варианта ответа}

Stt:string[68];{поле Ant.P3-текст справки}

R4:string[2]; {поле Ant.P4- оценка}

Z2,Z3,Z4:integer;

CH: Char; {номер варианта ответа}

K,J,I:integer;

M: array[0..3] of integer;

Nom:Longint;

Code:integer;

var R5:string[1]; {переменные вывода результатов}

Z5:integer;

REZ5:Longint;

procedure RAZDEL50;

implementation

procedure RAZDEL50;

Label 0,1,2,3;

begin

REZ5:=0;

GraphRegim;

Assign(F5,'RAZTEX5.pas');

{SI-}

Reset(F5);

{SI+}

If IOResult <> 0 then Writeln ('Нет файла RAZTEX5.pas');

repeat

ClearDevice;

OKNO;

Y:=10;

For N:=0 to 31 do

begin

Read(F5,A);

St:=StrPas(A.P2);

case A.P1 of

' ':OutTextXY(20,Y*N+10,St);

'*':begin

SetColor(4);

OutTextXY(20,Y*N+10,St);

SetColor(1);

end;

'1':begin

SetColor(4);

Arc(500,150,0,278,30);

OutTextXY(490,140,'(X,Y)');

OutTextXY(500,150,'.');

SetColor(1);

end;

'2':begin

SetColor(4);

Circle(500,300,30);

OutTextXY(475,290,'(X,Y)');

OutTextXY(500,300,'.');

SetColor(1);

end;

'3':begin

SetBKColor(15);

SetColor(4);

Ellipse(500,100,0,278,50,25);

OutTextXY(490,90,'(X,Y)');

OutTextXY(500,100,'.');

SetColor(1);

end;

'4': begin

SetColor(2);

Ellipse(500,180,10,270,50,30);

Line(500,135,460,225);

SetFillStyle(4,14);

FloodFill(455,180,2);

end;

'5': begin

SetColor(4);

Ellipse(500,300,0,361,50,30);

FillEllipse(500,300,50,30);

SetFillStyle(1,15);

SetColor(1);

end;

'6': begin

SetFillStyle(7,13);

PieSlice(500,120,0,120,50);

end;

'7': begin

SetFillStyle(9,13);

Sector(500,200,0,270,50,30);

SetFillStyle(1,15);

end;

'8':begin

SetFillStyle(1,9);

Bar(250,100,600,200);

SetViewPort(250,100,600,200,true);

FloodFill(260,110, 1);

Randomize;

repeat

PutPixel(Random(GetMaxX),Random(GetMaxY),15);

Delay(15);

until KeyPressed;

SetFillStyle(1,15);

SetViewPort(5,5,635,345,true);

end;

'9': begin

Diogramma;

end;

'0':GoTo 0

end;

end;

 0:readkey;

until A.P1='0';

Close(F5);

Assign(F52,'Join.pas'); {связь с файлом вопросов}

{SI-}

Reset(F52);

{SI+}

If IOResult<>0 then Writeln('Нет файла Join.pas');

Assign(F53,'Iodin.pas');

{SI-}

Reset(F53); {связь с файлом справок}

{SI+}

If IOResult<>0 then Writeln('Нет файла Iodin.pas');

OKNO1; {"Контрольные вопросы"}

readkey;

ClearDevice;

Randomize; {Выбор четырех номеров вопросов}

For J:=0 to 3 do

begin

1:I:=Random(6);

If I=0 then GOTO 1;

For K:=0 to J-1 do

begin

If M[k]=I then GOTO 1;

end;

M[J]:=I;

end;

repeat

OKNO;

begin

Read(F52,At); { вывод текста вопросов и справок }

R1:=StrPas(At.P2);

Val(R1,Z1,Code);

Y:=20;

If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then

begin

repeat

S:=StrPas(At.P3);

OutTextXY(20,Y,S);

case At.P1 of

'2':begin

end

end;

Y:=Y+10;

Read(F52,At);

until At.P1='*';

OutTextXY(50,330,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___');

2:CH:=ReadKey;

SetColor(4);

OutTextXY(320,325,CH);

SetColor(1);

readkey;

If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then

begin

SetFillStyle(1,11);

Bar(318,320,327,340);

GoTo 2;

end

else

repeat

Read(F53,Atr);

R2:=StrPas(Atr.P2);

Val(R2,Z2,Code);

If Z2=Z1 then

begin

repeat

If Atr.P3=CH then

begin

Y:=100;

OKNO;

repeat

Stt:=StrPas(Atr.P4);

R5:=StrPas(Atr.P5); {формирование оценки}

Val(R5,Z5,Code);

REZ5:=Round((REZ5+Z5)/2);

OutTextXY(20,Y,Stt);

Y:=Y+10;

case Atr.P1 of

'1':begin

end;

'0':GoTo 3;

end;

Read(F53,Atr);

until Atr.P3='*';

readkey;

GOTO 3;

end

else Read(F53,Atr);

until Atr.P1='*';

end

until Atr.P1='0';

end

else

 3: end;

until At.P1='0';

Close(F52);

Close(F53);

CloseGraph;

end;

begin

end.

Unit RAZDEL6;

interface

 

uses Crt,Graph,Dos,Strings,MYBOOK;

type An = record {Теория}

P1:Char; {Переменная поля флага : конец файла, номер

иллюстрации}

P2:array[0..69] of char; {Переменная поля текста}

end;

type Ant=record {Текст вопросов}

P1:Char; {Переменная поля флага:конец файла, номер иллюст-

рации, конец вопроса}

P2:array[0..1] of Char; {Переменная поля номера вопроса}

P3:array[0..69] of Char; {Переменная поля текста вопроса}

end;

type Antr=record { Справки }

P1:Char; {Переменная поля флага:конец файла, конец вопроса,

номер иллюстрации}

P2:array[0..1] of Char; {Переменная поля номера вопроса}

P3:array[0..0] of Char; {Переменная поля флага: номер справки

и конец справки}

P4:array[0..69] of Char; {Переменная поля текста справки}

P5:array[0..2] of Char; {Переменная поля оценки}

end;  

var F6: file of An ; {Переменные теории}

A:An;

Y,N,T1,T2,T3,T4:integer;

St:string[68];

var F62:file of Ant; { переменные вопросов}

At:Ant;

R1:string[2];

Z1:integer;

S:string[68];  

var F63:file of Antr; {Переменные справок}

Atr:Antr;

R2:string[2];

R3:string[1];

Stt:string[68];

R4:string[2];

Z2,Z3,Z4:integer;

CH: Char;{Переменная для принятия символа с клвиатуры}

K,J,I:integer; {Переменные циклов}

M: array[0..3] of integer; {Массив для хранения черырех

выбранных номеров вопросов}

Code:integer;

var R5:string[1]; {переменные вывода результатов}

Z5:integer;

REZ6:Longint; {переменная оценки}

procedure RAZDEL60; {Обеспечение работы раздела "Формирование

графических текстов}

implementation

 

procedure RAZDEL60;

Label 0,1,2,3;

begin

REZ6:=6;

GraphRegim;  

Assign(F6,'RAZTEX6.pas');

{SI-}

Reset(F6);

{SI+}  

If IOResult <> 0 then Writeln ('Нет файла RAZTEX6.pas');

repeat

ClearDevice;

OKNO;  

For N:=0 to 31 do

begin

Read(F6,A);

St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку

типа string}

case A.P1 of

' ':OutTextXY(20,10*N+10,St);

'*':begin

SetColor(4);

OutTextXY(20,10*N+10,St);

SetColor(1);

end;

'1':begin

SetFillStyle(1,1);

Bar(10,30,630,338);

SetColor(15);

SetTextStyle(2,0,1);

OuttextXY(50,50,'TriplexFont, HorizDir, 15');

SetTextStyle(1,0,3);

SetColor(12);

OutTextXY(50,100,'DefaultFont, HorizDir, 12') ;

SetTextStyle(3,0,4);

SetColor(13);

OutTextXY(50,160, 'SmallFont, HorizDir, 13');

SetTextStyle(4,0,5);

SetColor(10);

OutTextXY(50,220,'SanSerifFont, HorizDir, 10');

SetTextStyle(0,0,3);

SetColor(14);  

OutTextXY(50,300,'GothicFont, HorizDir, 14');

SetTextStyle(0,1,2);

SetColor(14);

OutTextXY(30,30,'DefaultFont,VertDir');

SetTextStyle(0,0,1);

SetColor(1);

end;  

'2':begin

SetColor(4);

SetTextStyle(1,0,1);

SetUserCharSize(1,1,1,1);

OutTextXY(20,120,'Turbo-Pascal 7.0');

SetUserCharSize(3,2,3,2);

OutTextXY(20,160,'Turbo-Pascal 7.0');  

SetUserCharSize(2,1,2,1);

OutTextXY(20,230,'Turbo-Pascal 7.0');

SetTextStyle(0,0,1);

SetColor(1);

end;

'3':begin

T1:=InstallUserFont('Goth');

T2:=InstallUserFont('sans');

T3:=InstallUserFont('trip');

T4:=InstallUserFont('bold');

If GraphResult<grOK then

begin

OutTextXY(40,180,'Ошибка инсталляции');

readkey;

end;

SetFillStyle(1,1);  

Bar(10,30,630,335);

SetTextStyle(T1,0,4);

SetColor(13);

OutTextXY(100,60,'Goth.chr, HorizDir') ;

SetTextStyle(T2,0,4);

SetColor(10);

OuttextXY(100,110,'Sanse, HorizDir');

SetTextStyle(T3,0,4);

SetColor(4);

OutTextXY(100,170, 'Trip, HorizDir');

SetTextStyle(T4,0,4);

SetColor(14);

OutTextXY(100,230,'Bold, HorizDir');

SetTextStyle(0,1,2);

 SetColor(15);

OutTextXY(45,35,'Goth.chr, VertDir');

SetTextStyle(0,0,1);

SetColor(1);  

end;

'#':GoTo 0;

'0':GoTo 0

end;

end;

 0:readkey;

until A.P1='0';

Close(F6);

Assign(F62,'Jois.pas'); {связь с файлом вопросов}

{SI-}

Reset(F62);

{SI+}

If IOResult<>0 then OutTextXY(50,100,'Нет файла Jois.pas');

Assign(F63,'Iodis.pas');

{SI-}

Reset(F63);  {связь с файлом справок}

{SI+}

If IOResult<>0 then Writeln('Нет файла Iodis.pas');

OKNO1; {"Контрольные вопросы"}  

readkey;

ClearDevice;

Randomize; {Выбор четырех номеров вопросов}

For J:=0 to 3 do  

begin

1:I:=Random(10);

If I=0 then GOTO 1;

 For K:=0 to J-1 do

begin

If M[k]=I then GOTO 1;

end;

M[J]:=I;

end;

M[1]:=1;

repeat

OKNO;

begin

Read(F62,At);

R1:=StrPas(At.P2);{Преобразование ASCIIZ-строки At.P2 в

строку типа string}

Val(R1,Z1,Code); {Преобразование символьного представления

номера вопроса в двоичную форму}

Y:=20;

If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then

begin

 repeat

S:=StrPas(At.P3); {Преобразование ASCIIZ-строки At.P3 в

строку типа string}

OutTextXY(20,Y,S); {Вывод текста вопроса}

case At.P1 of

' ':begin

end;

end;

Y:=Y+10;

Read(F62,At);

until At.P1='*';  

OutTextXY(50,330,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___');

2:CH:=ReadKey;

SetColor(4);

OutTextXY(320,325,CH);  

SetColor(1);

readkey;

If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then

 begin

SetFillStyle(1,11);

Bar(318,320,327,340);

GoTo 2;  

end

else

repeat

Read(F63,Atr);

R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в

строку типа string}

Val(R2,Z2,Code); {Преобразование символьного представления

номера вопроса в двоичную форму}

If Z2=Z1 then

begin

repeat

If Atr.P3=CH then

begin

Y:=100;

OKNO;  

repeat

Stt:=StrPas(Atr.P4); {Преобразование ASCIIZ-строки Atr.P4

строку типа string}

R5:=StrPas(Atr.P5); {Преобразование ASCIIZ-строки Atr.P5 в

строку типа string}

Val(R5,Z5,Code); {Преобразование символьного представления

оценки в двоичную форму}

REZ6:=Round((REZ6+Z5)/2); {Формирование оценки }

OutTextXY(20,Y,Stt);

Y:=Y+10;

case Atr.P1 of

' ':begin  

end;

end;

Read(F63,Atr);

until Atr.P3='*';  

readkey;

GOTO 3;

end

 else Read(F63,Atr);

until Atr.P1='*';

end

until Atr.P1='0';

end

else

3:end;

until At.P1='0';

Close(F62);

Close(F63);

CloseGraph;  

end;

begin

end.

Unit RAZDEL7;

interface

uses Crt,Graph,Dos,Strings,MYBOOK;

type An = record {Теория}  

P1:Char; {Переменная поля флага : конец файла, номер

иллюстрации}

P2:array[0..69] of char; {Переменная поля текста}

end;

type Ant=record {Текст вопросов}

 P1:Char; {Переменная поля флага:конец файла, номер иллюст-

рации, конец вопроса}

P2:array[0..1] of Char; {Переменная поля номера вопроса}

P3:array[0..69] of Char; {Переменная поля текста вопроса}

end;

type Antr=record { Справки }

P1:Char; {Переменная поля флага:конец файла, конец вопроса,

номер иллюстрации}

P2:array[0..1] of Char; {Переменная поля номера вопроса}

 P3:array[0..0] of Char; {Переменная поля флага: номер справки

и конец справки}

P4:array[0..69] of Char; {Переменная поля текста справки}

P5:array[0..2] of Char; {Переменная поля оценки}

end;

var F7: file of An ; {Переменные теории}

A:An;  

N,Y,T:integer;

St:string[68];

var F72:file of Ant; { Переменные вопросов}

At:Ant;

R1:string[2];

Z1:integer;  

S:string[68];

var F73:file of Antr; {Переменные справок}

Atr:Antr;  

R2:string[2];

R3:string[1];

Stt:string[68];

R4:string[2];

Z2,Z3,Z4:integer;

CH: Char;{Переменная для принятия символа с клвиатуры}

K,J,I:integer; {Переменные циклов}

M: array[0..3] of integer; {Массив для хранения черырех

выбранных номеров вопросов}

Code:integer;

var R5:string[1]; {переменные вывода результатов}

Z5:integer;

REZ7:Longint; {переменная оценки}

var Size:word;

pt:pointer;

u,Nn,xt,yt:integer;

 

procedure RAZDEL70;

implementation

procedure RAZDEL70;

 

Label 0,1,2,3;

 

begin

REZ7:=6;

GraphRegim;

Assign(F7,'RAZTEX7.pas'); {связь с файлом теории}

{SI-}

Reset(F7);

{SI+}

If IOResult <> 0 then Writeln ('Нет файла RAZTEX7.pas');

repeat

OKNO;

For N:=0 to 32 do

begin

Read(F7,A);  

St:=StrPas(A.P2); {Преобразование ASCIIZ-строки A.P2 в строку

типа string}

case A.P1 of

' ':OutTextXY(20,10*N+10,St);

'*':begin

SetColor(4);

OutTextXY(20,10*N+10,St);

SetColor(1);

end;

'1':begin  

For Nn:=0 to 3 do

begin

GetMem(pt,ImageSize(0,200,50,250));

GetImage(0,200,50,250,pt^);

u:=0;

while u<(GetMaxX) do

begin

PutImage(u-1,150,pt^,1);

u:=u+8;

PutImage(u-1,150,pt^,1);

end;

Dispose(pt);

end;

end;

'2':begin

SetViewPort(10,50,630,330,true);

SetBKColor(0);  

SetViewPort(20,60,620,320,true);

ClearViewPort;

SetBKColor(14); Sound(880); Delay(200); NoSound;

SetBKColor(12); Sound(698); Delay(200); NoSound;

SetBKColor(14); Sound(880); Delay(200); NoSound;

SetBKColor(12); Sound(698); Delay(200); NoSound;

SetBKColor(10); Sound(934); Delay(200); NoSound;

SetBKColor(14); Sound(880); Delay(200); NoSound;

SetBKColor(13); Sound(784); Delay(400); NoSound;

SetBKColor(1); Sound(523); Delay(200); NoSound;

SetBKColor(9); Sound(523); Delay(200); NoSound;

SetBKColor(1); Sound(523); Delay(200); NoSound;

SetBKColor(2); Sound(587); Delay(100); NoSound;

SetBKColor(5); Sound(659); Delay(100); NoSound;

SetBKColor(4); Sound(699); Delay(200); NoSound;

SetBKColor(3); Sound(699); Delay(200); NoSound;

SetBKColor(4); Sound(699); Delay(200); NoSound;

Delay(600);

SetViewPort(5,5,635,335,true);

SetBKColor(14);

ClearDevice;

OKNO;

End;

'#':GoTo 0;

'0':GoTo 0;

end;

end;

0:readkey;

until A.P1='0' ;

Close(F7);

Assign(F72,'Jos.pas'); {связь с файлом вопросов}

{SI-}

Reset(F72);  

{SI+}

If IOResult<>0 then Writeln('Нет файла Jos.pas');

Assign(F73,'Ios.pas');

{SI-}

Reset(F73); {связь с файлом справок}

{SI+}

If IOResult<>0 then Writeln('Нет файла Ios.pas');

OKNO1; {"Контрольные вопросы"}

readkey;

ClearDevice;  

Randomize; {Выбор четырех номеров вопросов}

For J:=0 to 3 do

begin

1:I:=Random(7);

If I=0 then GOTO 1;

For K:=0 to J-1 do

begin  

If M[k]=I then GOTO 1;

end;

M[J]:=I;

end;

repeat

OKNO;

begin

Read(F72,At);

R1:=StrPas(At.P2);{Преобразование ASCIIZ-строки At.P2 в

строку типа string}

Val(R1,Z1,Code); {Преобразование символьного представления

 номера вопроса в двоичную форму}

Y:=20;

If(Z1=M[0]) or (Z1=M[1]) or (Z1=M[2]) or (Z1=M[3]) then

begin

repeat

S:=StrPas(At.P3); {Преобразование ASCIIZ-строки At.P3 в

строку типа string}

OutTextXY(20,Y,S); {Вывод текста вопроса}

case At.P1 of

' ':begin

end;

end;

Y:=Y+10;

Read(F72,At);  

until At.P1='*';

OutTextXY(50,320,'ВВЕДИТЕ НОМЕР ПРАВИЛЬНОГО ОТВЕТА ___');

2:CH:=ReadKey;

SetColor(4);

OutTextXY(320,310,CH);

SetColor(1);

readkey;

If(CH<>'1') and (CH<>'2') and (CH<>'3') and (CH<>'4') then

begin

SetFillStyle(1,11);

Bar(318,290,327,320);

GoTo 2;

end

else

repeat

Read(F73,Atr);

R2:=StrPas(Atr.P2); {Преобразование ASCIIZ-строки Atr.P2 в

строку типа string}

Val(R2,Z2,Code); {Преобразование символьного представления

номера вопроса в двоичную форму}

If Z2=Z1 then

begin

repeat  

If Atr.P3=CH then

begin

Y:=100;

OKNO;

repeat

Stt:=StrPas(Atr.P4); {Преобразование ASCIIZ-строки Atr.P4 в

строку типа string}

R5:=StrPas(Atr.P5); {Преобразование ASCIIZ-строки Atr.P5 в

строку типа string}

Val(R5,Z5,Code); {Преобразование символьного представления

оценки в двоичную форму}

REZ7:=Round((REZ7+Z5)/2); {Формирование оценки }

OutTextXY(20,Y,Stt);

Y:=Y+10;

case Atr.P1 of  

' ':begin

end;

end;

Read(F73,Atr);

until Atr.P3='*';

readkey;

GOTO 3;

end

else Read(F73,Atr);

until Atr.P1='*';

end

until Atr.P1='0';

end

else

3:end;

until At.P1='0';

Close(F72);

Close(F73);

CloseGraph;

end;

 begin

end.

unit MYBOOK;

 interface  

 uses Graph,Crt,Strings,Dos;

 Type Dlina=string[10];

 var Ch:char;

Regime:byte;

c,Gd,Gm,i,x1,x2,y1,y2:integer;

ArcCoords:ArcCoordsType;

StAngle,dAngle,KRadius:word;

 const OK:array[1..11] of PointType= ((X:0;Y:0),(X:640;Y:0),

(X:640;Y:350), (X:0;Y:350),(X:0;Y:8),(X:5;Y:8),

(X:5;Y:345),(X:635;Y:345),(X:635;Y:5),(X:0;Y:5),

(X:0;Y:0));

 

 procedure Diogramma;

 procedure OKNO;

 procedure OKNO1;

 procedure GraphRegim;

 implementation

 procedure OKNO;

 begin

SetColor(14);

DrawPoly(11,OK);

SetFillStyle(1,14);  

FloodFill(635,2,14);

SetFillStyle(1,11);

Bar(6,6,634,344);

SetColor(1);

 end;

procedure OKNO1;

const OK:array[1..11] of PointType= ((X:0;Y:0),(X:640;Y:0),

(X:640;Y:350), (X:0;Y:350),(X:0;Y:8),(X:5;Y:8),

(X:5;Y:345), (X:635;Y:345),(X:635;Y:5),(X:0;Y:5),

(X:0;Y:0));

 begin

SetColor(14);

DrawPoly(11,OK);

SetFillStyle(1,14);

FloodFill(635,2,14);

SetFillStyle(1,11);

Bar(6,6,634,344);

SetColor(4);

SetTextStyle(0,0,6);

OutTextXY(50,100,'Контрольные');

OutTextXY(140,150,'вопросы');

SetTextStyle(0,0,1);

SetColor(1);

end;

 procedure Diogramma;

 begin

SetViewPort(0,0,GetMaxX,GetMaxY,true);

SetColor(11);

SetLineStyle(0,0,3);

SetFillStyle(1,13);

PieSlice(170,210,0,359,120);

SetFillStyle(9,2);

PieSlice(170,210,0,30,120);

SetFillStyle(1,3);

Sector(170,210,0,359,80,120);

SetFillStyle(11,5);

Sector(170,210,0,270,80,120);

SetFillStyle(1,15);

Circle(480,210,120);

FloodFill(480,210,11);

StAngle:=0;

dAngle:=360 Div 16;  

while(StAngle+dAngle)<360 do

begin

c:=random(14);

SetColor(c);  

Arc(535,210,StAngle,StAngle+dAngle,40);

GetArcCoords(ArcCoords);

with ArcCoords do

begin

KRadius:=Round(SQRT(SQR(Xend-600)+SQR(Yend-210)));

Circle(Xend,Yend,KRadius);

setfillstyle(1,c);

floodfill(xend-kradius+5,yend,c);

end;

StAngle:=StAngle+dAngle;

end;

 end;

procedure GraphRegim;

 var Gd,Gm:integer;

 begin  

Gd:=Detect;

InitGraph(Gd,Gm,'');

If GraphResult<>grOK then Halt(1);

 end;

 begin

 end.

Приложение 2

База данных

Для работы с настоящей программой Вам необходимо знание языка

 TURBO-PASCAL 7.0, интегрированной среды, персонального компьютера

 IBM PC.

Расширенный алгоритмический язык TURBO-PASCAL7.0 в качестве гра-

 фических средств соддержит в арсенале два стандартных модуля:

 Grt и Graph.

Модуль Grt содержит процедуры и функции следующего назначения:

1.Процедуры задания режимов работы.

 2.Полцедуры управления цветом.

3.Процедуры и функции работы с экраном.

4.Функции работы с клавиатурой.

5.Процедуры управления звуком и др.

Процедуры и функции модуля  Graph имеют назначение:

1.Управление графическим режимом.

2.Управление экраном, окном, страницей.

3.Управление цветом и палитрой.

4.Работа с точками и линиями.

 5.Построение различных фигур.

6.Работа с текстом.

7.Обмен с памятью.

В настоящей программе они скомпанованы для изучения в следующие

 разделы:

1.Программирование графических режимов.

2.Управление курсором и полем рисования.

3.Формирование прямолинейных монохромных изображений

4.Управление цветом и стилем изображений.

5.Программирование цветных криволинейных изображений

6.Формирование графических текстов.

7.Программирование озвученных динамических сцен.

Первые два раздела являются справочными, а остальные разделы

 содержат теоретическую часть и контрольные вопросы.

0

ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ

Состав, назначение и взаимное положение операторов управления

 графическими режимами в языке TURBO-PASCAL удобно рассматривать в

 контексте структуры характерной графической программы:

---------- program <идентификатор> - заголовок программы.

I uses Graph - используемые модули.

I {Действия в текстовом режиме}.

I ------ InitGraph - инициализация графических средств

I I {Действия в графическом режиме " по умолчанию".

I I SetGraphMode - изменение графического режима.

I I {Действия в новом графическом режиме}.

I I I-- RestoreCrtMode - временный переход в текстовому режиму.

I I I {Действия в текстовом режиме}.

I I I-> SetGraphMode - возврат в графический режим.

I I {Действия в графическом режиме}.

I I-----> CloseGraph

I {Действия в текстовом режиме}.

I--------> end. - завершение программы.

* proсedure InitGraph(var GraphDriver:integer;

* var GraphMode:integer;

* DriverPath:string);

Инициализирует графическую систему, устанавливает графический

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

 цвета и т.д..

ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ

GraphDriver - переменная, в которую необходимо записать код

требуемого графического драйвера или нуль, если

требуется автоматическое определение драйвера.

GraphMode - переменная, в которую процедура помещает код

графического режима.

DriverPath - строка, содержащая путь к драйверу (если строка

пустая, считается, что драйвер находится в текущем

каталоге).

В случае аварийной ситуации процедура устанавливает код ошибки:

-2 - нет графического адаптера;

-3 - нет драйвера устройства;

-4 - ошибка в драйвере;

-5 - нет памяти для загрузки драйвера;

-10 - недопустимый режим для выбранного драйвера.

* procedure CloseGraph(без параметров);

Восстанавливает текстовый режим работы дисплея,бывший до вызова

 графической системы, и освобождает динамическую память компьютера,

 отведенную под графический драйвер.

* procedure SetGraphMode(Mode:integer);

Mode - графический режим.Изменяет ранее используемый графи-

 ческий режим либо возвращает систему в прежний графический режим

 после временного перехода к текстовому режиму. Условием использо-

 вания оператора является сохранение в динамической области ОЗУ ранее

 загруженного графического драйвера.

ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ

* procedure RestoreCrtMode(без параметров);

Восстанавливает исходный текстовый режим дисплея без потери в

 динамической области ОЗУ програмы графического драйвера.

Имеется ряд операторов для получения справок о текущем

 графическом режиме:

* function GetDriverName:string; -

Возвращает строковое название

текущего графического адаптера.

* function GetModeName(ModeNumber:integer):string -

Возвращает строковое название

требуемого графического режима.

* function GetMaxMode:integer -

Возвращает максимальный номер

графического режима для текущего

 адаптера.

* procedure GetModeRange(GraphDriver:integer;

* var LowMode,HighMode:integer); -

Выдает справку о диапазоне номеров графических режимов задан-

 ного графического адаптера. Возвращаемые параметры LowMode и

 HighMode означают минимальный и максимальный номера графических

 режимов, соответственно.

* function GetGraphMode:integer; -

Возвращает номер текущего графического режима.

ПРОГРАММИРОВАНИЕ ГРАФИЧЕСКИХ РЕЖИМОВ

* procedure GetAspectRatio(var Xasp, Yasp:word); -

Возвращает в своих параметрах ввеличины

дискретов экрана по осям X и Y ,сооответственно.

0

УПРАВЛЕНИЕ КУРСОРОМ И ПОЛЕМ РИСОВАНИЯ

В графическом режиме также как и в текстовом положение выво-

 димых на экран данных в каждый момент времени определяется курcо-

 ром. Однако, в этом случае курсор невидим. При вхождении в гра-

 фический режим с помощью процедуры InitGraph курсор автоматически

 помещается в левый верхний угол экрана, фон экрана принимает первый

 (черный) цвет палитры. Для определения и изменения положения курсора

 без рисования в TURBO-PASCAL предусмотрены операторы MoveTo,MoveRel,

 GetX,GetY.

* procedure MoveTo(x,y:integer);

 где x,y - координаты по горизонтали и вертикали соответственно

 в отсчете от левого верхнего угла экрана.

* procedure MoveRel(Dx,Dy:integer);

Смещает курсор без рисования относительно его текущего поло-

 жения. Dx, Dy - смещения курсора по координатам x и y.

* function GetX: word;

Определяет для курсора значение координаты X.

* function GetY: word;

Определяет для курсора значение координаты Y.

УПРАВЛЕНИЕ КУРСОРОМ И ПОЛЕМ РИСОВАНИЯ

При управлении положением курсора полезными оказываются также

 справочные функции GetMaxX и GetMaxY, которые возвращают координаты

 самой правой и самой нижней возможных графических позиций курсора,

 соответственно, для текущего графического драйвера и режима.

* procedure ClearDevice;

Очищает экран от следов предшествовавшего рисования и восста-

 навливает исходные параметры графики.

* procedure SetViewPort(X1,Y1,X2,Y2:word;Clip:boolean);

Устанавливает прямоугольное окно рисования с перемещением

 курсора в левый верхний угол окна. Параметры процедуры имеют следу-

 ющий смысл:(X1,Y1) и (X2,Y2) определяют соответствввенно координаты

 левого верхнего и правого нижнего углов окна, а Clip принимает

 значение true при необходимости отсечения изображения за границами

 окна и false, когда этого делать не надо .

* procedure ClearViewPort;

Очищает текущее окно, заполняя его первым цветом текущей

 цветовой палитры, и переводит курсор в левый верхний угол окна.

* procedure GetViewSettings(var ViewPortType);

Возвращает параметры активного окна просмотра в переменной

 ViewPort. Тип ViewPortType описан в модуле Graph.

0

ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ

 В данном разделе не рассматривается управление

 цветом и стилем рисования и закрепляется за

 фоном светло-серый, а за курсором синий цвет.

* procedure LineTo(X,Y:integer);

щ

Проводит отрезок прямой от текущего положения

 курсора к заданной точке (X,Y).

* procedure LineRel(Dx,Dy:integer);

2

Рисует отрезок прямой по направлению к точке,

 смещенной от текущего положения курсора на рас-

 стояние Dx и Dy по осям OX и OY .

* procedure Line(X1,Y1,X2,Y2:integer);

3

Проводит прямую между точками (X1,Y1) и

 (X2,Y2).

После выполнения этой и последующих процедур

 курсор возвращается в предшествующее положение.

ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ

* procedure Rectangle(X1,Y1,X2,Y2:integer);

4

 Строит контуры прямоугольника с координатами

 левого верхнего (X1,Y1) и нижнего правого

 (X2,Y2) углов.

* procedure Bar(X1,Y1,X2,Y2:integer);

5

 Строит прямоугольник, закрашенный текущим цветом

 и орнаментом заполнения. (X1,Y1), (X2,Y2) -

 координаты левого верхнего и правого нижнего

 углов соответственно.

* procedure Bar3D(X1,Y1,X2,Y2:integer;

* Depth:word;Top:boolean)

6

 Рисует аксонометрию закрашенного по фасаду

 прямоугольного параллелепипеда.

 (X1,Y1),(X2,Y2) - координаты левого верхнего и

 правого нижнего углов

прямоугольного фасада.

 Depth - ширина боковой грани (отсчитывается по

годизонтали.

 Top - признак включения верхней грани.

ФОРМИРОВАНИЕ ПРЯМОЛИНЕЙНЫХ МОНОХРОМНЫХ ИЗОБРАЖЕНИЙ

* procedure DrawPoly(NumPoints:word;

* var PolyPoints);

7Строит ломаную линию.

 NumPoints - число вершин многоугольника

 PolyPoints - переменная без типа, содержащая

 NumPoints+1 пар координат вершин многоугольника

 (первая и последняя вершины должны совпадать).

* procedure FillPoly(NumPoints:word;var PolyPoints);

8

 Закрашивает многоугольник текущим цветом и

 орнаментом. Параметры NumPoints и PolyPoints

 именют тот же смысл и тип, что и одноимеынные

 параметры процедуры DrawPoly.

0

01С ПОМОЩЬЮ КАКИХ ПРОЦЕДУР МОЖНО НАИБОЛЕЕ РАЦИОНАЛЬНО ПОСТРОИТЬ

ОТРЕЗОК , ЕСЛИ ИЗВЕСТНЫ КООРДИНАТЫ КОНЦОВ?

1 LineTo(X,Y);

Line(X1,Y1,X2,Y2);

2 Line(X1,Y1,X2,Y2);

DrawPoly(NumPoint,PolyPoints);

3 LineTo(X,Y);

Line(X1,Y1,X2,Y2);

DrawPoly(NumPoint,Poly Points);

4 Line(X1,Y1,X2,Y2);

*

 02КАК ПОСТРОИТЬ СТОЛБЧАТУЮ ДИАГРАММУ В ЗАРАНЕЕ СФОРМИРОВАННОЙ РАМКЕ?

1

1 Bar3D(X1,Y1,X2,Y2,Depth,true);

SetViewPort(X1,Y1,X2,Y2,false);

ClearViewPort;

Bar3D(X1,Y2,X2,Y3,Depth,false);

2 Bar3D(X1,Y1,X2,Y2,Depth,true);

SetViewPort(X1,Y1,X2,Y2,Depth,true);

ClearViewPort;

Bar3D(X1,Y1,X2,Y3,Depth,false);

3 Bar3D(X1,Y1,X2,Y2,Depth,true);

Bar3D(X1,Y2,X2,Y3,Depth,false);

4 Bar3D(X1,Y1,X2,Y2,Depth,true);

Bar3D(X1,Y2,X2,Y3,Depth,true);

*

 03КАК НА ПОЛНОСТЬЮ ЗАКРАШЕННОМ ЭКРАНЕ ПОЛУЧИТЬ НЕЗАКРАШЕННУЮ ПРЯМОУ-

ГОЛЬНУЮ ОБЛАСТЬ?

1 Bar(X1,Y1,X2,Y2);

SetViewPort(X1,Y1,X2,Y2,true);

ClearViewPort;

2 Bar(X1,Y1,X2,Y2);

3 Bar3D(X1,Y1,X2,Y2,Depth,true);

4 Bar3D(X1,Y1,X2,Y2,false);

*

 04КАК ИСКЛЮЧИТЬ ПОЯВЛЕНИЕ НА ЭКРАНЕ ЗАТЕНЯЕМЫХ КОНТУРОВ НИЖНЕГО

2 ПАРАЛЛЕЛЕПИПЕДА В ОБЬЕМНОЙ СТОЛБЧАТОЙ ДИАГРАММЕ?

1 Использовать процедуру Bar3D дважды. построенный верхний парал-

лелепипед "закроет" автоматически верхнюю грань нижнего парал-

лелепипеда.

2 Установить параметр Top=false в процедуре Bar3D при построении

нижнего параллелепипеда.

3 Установить параметр Top=false в процедуре Bar3D при построении

верхнего параллелепипеда.

4 Построить ломаную линию соответствующую контурам верхней грани

нижжнего параллелепипеда с помощью процедуры DrawPole и закра-

сить его в белый цвет с помощью процедуры FillPole.

*

 05КАК НА ЭКРАНЕ ЗАКРАСИТЬ БЕЛЫМ ЦВЕТОМ ОБЛАСТЬ, ОГРАНИЧЕННУЮ ЗВЕЗДОЙ?

1 Построить звезду с помощью процедуры DrawPole(10,zve),где zve -

константа типа PointType, является массивом координат вершин

фигуры и содержит 10 элементов.

2 Использовать процедуру DrawPole(10,zvez) , где константа zvez

содержит 11 элементов.

3 Применить процедуру FillPole(10,zves), где константа zves содер-

жит 11 элементов.

4 Установить цвет рисования белый и с помощью процедуры

FillPole(10,zves) построить звезду, закрашенную белым цветом.

*

 06С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ ИЛИ ФУНКЦИИ ВОЗМОЖНО УСТАНОВИТЬ СТРОКОВОЕ

НАЗВАНИЕ ТЕКУЩЕГО ГРАФИЧЕСКОГО АДАПТЕРА?

1 Функция GetDriverName;

2 Функция GetModeName(ModeNumber);

3 Функция GetMaxMode;

4 Процедура GetModeRange(GraphDriver;LowMode,HighMode);

*

 07СУЩЕСТВУЕТ ЛИ ВОЗМОЖНОСТЬ ОПРЕДЕЛЕНИЯ ЗНАЧЕНИЯ КООРДИНАТ КУРСОРА.

1 Нет

2 Да, с помощью функций GetX, GetY.

3 Да, с помощью функций GetMaxX, GetMaxY.

4 Да, с помощью функции MoveRel.

*

 08С ПОМОЩЬЮ КАКОГО ФРАГМЕНТА ПРОГРАММЫ МОЖНО ВЫВЕСТИ НА ЭКРАН

3 СЛЕДУЮЩУЮ КАРТИНКУ? КУРСОР НАХОДИТСЯ В ТОЧКЕ (X1,Y1).

1 Line(X,Y,X1,Y1);

MoveRel(X,Y+dY);

Line(X,Y+dY,X1,Y1);

MoveRel(0,dY);

LineTo(X1,Y1);

2 LineTo(X1,Y1);

LineRel(0,dY);

LineRel(0,2dY);

3 LineTo(X,Y);

MoveRel(0,dY);

Line(X,Y+dY,X1,Y1);

MoveRel(0,dY);

Line(X,Y+2dY,X1,Y1);

4 LineTo(X,Y);

LineRel(0,dY);

LineRel(0,2dY);

*

 09ГДЕ ПОМЕЩАЕТСЯ КУРСОР И КАКОЙ ФОН ЭКРАНА УСТАНАВЛИВАЕТСЯ ПРИ

ВХОЖДЕНИИ В ГРАФИЧЕСКИЙ РЕЖИМ С ПОМОЩЬЮ ПРОЦЕДУРЫ InitGraph?

1 Курсор помещается в центр экрана и устанавливается черный

цвет фона экрана.

2 Курсор помещается в правый верхний угол экрана и устанав-

ливается черный цвет фона экрана.

3 Курсор помещается в левый верхний угол экрана и устанавлива-

ется черный цвет фона экрана.

4 Курсор помещается в левый верхний угол экрана и устанавлива-

ется белый цвет фона экрана.

*

 10С КАКОЙ ЧАСТОТОЙ ОБНОВЛЯЕТ ЭКРАН КОНТРОЛЛЕР ДИСПЛЕЯ ПЭВМ IBM?

1 50-60 раз/сек

2 20-40 раз/сек

3 100-120 раз/сек

4 200 раз/сек

*

0

011Процедуру LineTo(X,Y) можно использовать только в случае, когда 002

один из концов отрезка совпадает с положением курсора.

*

2Ответ правильный. Однако, применение процедуры DrawPoly в данном 004

случае не является рациональным.

*

3Процедуру LineTo(X,Y) можно использовать только в случае, когда один002

из концов отрезка совпадает с положением курсора. Процедура DrowPoly

не является в данном случае рациональной.

*

4Ответ правильный. 005

*

*

 021Отввет неверный. Верхний параллелепипед будет иметь очищенную перед-002

нюю грань. Это не требуется по условию задачи. При этом неверно

указаны параметры процедуры Bar3D при построении второго параллеле-

пипеда.

*

2Неправильно указаны параметры процедуры SetViewPort. Координаты окна002

отсчитываются от левого верхнего угла экрана в то время как для про-

цедуры Bar3D от левого верхнего угла окна.

*

3Ответ правильный. 005

*

4Ответ не точный.На экране появятся затененные контуры нижнего парал-003

лелепипеда.

*

*

 031Ответ не точный.Процедуры SetViewPort и ClearViewPort в данном слу- 003

чае излишние,т.к.уже процедура Bar рисует прямоугольную область,

которую закрашивает первым цветом палитры, если цвет не задан ранее

*

2Ответ правильный 005

*

3Процедура Bar3D рисует аксонометрию прямоугольного параллелепипеда,а002

не прямоугольную область.

*

4Процедура Bar3D рисует аксонометрию прямоугольного параллелепипеда,а002

не прямоугольную область.

*

*

 041Ответ неверный. Процедура Bar3D рисует контуры аксонометрии закра- 002

шенного по фасаду параллелепипеда. Боковая и верхняя грани не закра-

шиваются, т.о. затемненная часть верхней грани нижнего параллелепи-

педа не исчезнет.

*

2Ответ правильный. 005

*

3Ответ неверный. Параметр Top процедуры Bar3D регулирует наличие или 002

отсутствие верхней (а не нижней) левой грани аксонометрии.

*

4Ответ неверный. Достаточно установить параметр Top=False процедуры 002

Bar3D. Дополниетльные меры излишне.

*

*

 051Ответ неверный. Процедура DrawPoly построит звезду с одной невидимой002

гранью. Цвет фигуры будет соответствовать цвету фона.

*

2Ответ неверный. Цвет фигуры будет соответствовать цвету фона и будет002

белым только в случае, когда фон экрана белый.

*

3Ответ правильный.  005

*

4Ответ правильный. Однако, закраска белым цветом возможна и 004

по умолчанию.

*

*

 061Ответ правильный. 005

*

2Ответ неверный. Функция GetModeName возвращает строковое название 002

требуемого графического режима для текущего адаптера.

*

3Ответ неверный.Функция GetMaxMode возвращает максимальный номер 002

графического режима для текущего адаптера.

*

4Ответ неверный. Процедура GetModeRange выдает справку о диапазоне 002

номеров графических режимов заданного графического адаптера.

*

*

 071Ответ неверный. Такая возможность существует. 002

*

2Ответ правильный.  005

*

3Ответ неверный. Данные процедуры возвращают максимально возможные 002

для текущего драйвера и режима графические позиции курсора.

*

4Ответ неверный. Процедура MoveRel смещает курсор относительно его 002

текущей позиции.

*

*

1081Ответ неверный. Рисунок будет иметь следующий вид: 002

*

2 2Ответ неверный.Рисунок будет иметь следующий вид: 002

*

3Ответ правильный. 005

*

3 4Ответ неверный. рисунок будет иметь следующий вид: 002

*

*

 091Ответ неверный. 002

*

2Ответ неверный. 002

*

3Ответ правильный. 005

*

4Ответ неверный. 002

*

*

 101Ответ правильный. 005

*

2Ответ неверный.  002

*

3Ответ неверный. 002

*

4Ответ неверный. 002

*

*

0

УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЙ

В данном разделе мы рассмотрим возможности управления цветовой

 палитрой и стилем рисования.

* procedure GetPalette(var PaletteType);

Возвращает текущую плитру и количество цветов в ней. Применя-

 ется только в графическом режиме и только с драйверами EGA, EGA 64

 и VGA.

* procedure SetAllPalette(var Palette);

Меняет все цвета палитры на заданные. Переменная без типа

 Palette в первом байте содержит число N- количество цветов в палитре

 а в последующих N байах - коды задаваемых цветов. Если задана вели-

 чина -1, то исходный цвет остается без изменений.

* procedure SetPalette(NumberColor:word;Color:byte);

Изменяет один из цветов палитры. NumberColor - порядковый

 номер изменяемого цвета. Color -код нового цвета.

* procedure SetColor(Color:word);

Устанавливает текущий цвет рисования.Color - код цвета либо

 его имя. Возможные значения параметра приведены на следующем экране

УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ

_____________________________________________________________________

Имя Значение Назначение

 --------------------------------------------------------------------

 Black 0 черный

 Blue 1 синий

 Green 2 зеленый

 Cyan 3 голубой

 Red 4 красный

 Magenta 5 фиолетовый

 Brown 6 коричневый

 LightGray 7 светло-серый

 DarkGray 8  темно-серый

 LightBlue 9 светло-синий

 LightGreen 10 светло-зеленый

 LightCyan 11 светло-голубой

 LightRed 12 розовый

 LightMagenta 13 светло-фиолетовый

 Yellow 14 желтый

1White 15 белый

УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ

* procedure SetBKColor(Color:word);

Устанавливает цвет фона рисования. Color - код или имя цвета.

Для получения справок о кодах цветов, связанных с курсором и

 фоном рисования, используются функции:

function GetColor:word;

function GetBKColor:word;

Факторами, определяющими стиль рисования, являются толщина и

 способ выражения линий, используемых в изображениях контурных линий

 и линий закраски замкнутых фрагментов рисунков.

* procedure SetLineStyle(LineStyle:word; Pattern:word;

* Thiekness:word);

Устанавливает стиль контурных линий и их толщину. Параметр

 LineStyle может принимать следующие значения:

 SolidLn = 0 ___________________________________________________

 DottedLn = 1 ...................................................

 CenterLn = 2 ._._._._._._._._._._._._._._._._._._._._._._._._._ .

 DashedLn = 3 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

 UserBitLn = 4 тип, определяемый пользователем.

Когда LineStyle=userBitLn, задается параметр Pattern - шаблон

 линии - двухбайтовое число, каждый бит которого равен 1, если оче-

 редной пиксель следует высветить, и 0 в противном случае.

Параметр Thickness устанавливает толщину линий и может при-

 нимать следующие значения: NormWidth = 1 - тонкая линия

ThickWidth= 3 - толстая линия

УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ

* procedure GetLineSettings(var LineInfo:LineSettingsType);

Возвращает параметры текущего стиля контурных линий. Тип

 LineSettingsType описан в модуле Graph как запись, поля которой:

 LineStyle:word;

 Pattern:word;

 Thickness:word;, имеют тот же смысл, что и одноименные параметры

 процедуры SetLineStyle.

* procedure SetFillStyle[(Pattern:word;Color:word)];

Устанавливает стандартные орнамент и цвет заполнения. "По умол-

 чанию" закраска белая сплошная. Параметр Color - установка цвета.

 Возможные значения параметра Pattern проиллюстрированы на следующем

 экране.

* procedure SetFillPattern(Pattern:FillPatternType;Color:word);

Задает произвольный орнамент и цвет заполнения фигур.

 Pattern - задаваемый пользователем орнамент.

 typeFillPatternType=array[1..8] of byte;

 Color - код цвета в палитре.

* procedure GetFillSettings(varFillInfo:FillSettingsType)

Возвращает код и цвет стандартного образца закраски в пере-

 менных Color и Pattern соответственно.

УПРАВЛЕНИЕ ЦВЕТОМ И СТИЛЕМ ИЗОБРАЖЕНИЯ

 --------------------------------------------------------------------

Имя Значение

 --------------------------------------------------------------------

EmptyFill 0 Фоновым цветом

SolidFill 1 Заданным цветом

LineFill 2

LtSlashFill 3

SlashFill 4

BkSlashFill 5

LtBkSlashFill 6

HatchFill 7

XHatchFill 8

InterLeaveFill 9

WideDotFill 10

CloseDotFill 11

2 UserFill 12 Заполнение определяется пользователем

0--------------------------------------------------------------------

01С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ МОЖНО ВЫВЕСТИ НА ЭКРАН СПИСОК КОДОВ

ЦВЕТОВ НЕИЗВЕСТНОЙ ВАМ ТЕКУЩЕЙ ЦВЕТОВОЙ ПАЛИТРЫ?

1 GetPalette(Palette);

1 2 SetPalette(NumberColor,Color);

3 SetAllPalette(Palette);

4 SetLineStyle(LineStyle,Pattern,Thickness);

*

 02УСТАНОВИТЕ НА ЧЕРНОМ ЭКРАНЕ КВАДРАТНОЕ ОКНО И ЗАКРАСЬТЕ ЕГО

СПЛОШНЫМ БИРЮЗОВЫМ ЦВЕТОМ(3).

1 SetFillStyle(0,3);

Bar(X1,Y1,X1+d,Y1+d);

2 SetBKColor(0);

SetColor(3);

Bar(X1,Y1,X1+d,Y1+d);

3 SetBKColor(0);

SetFillStyle(0,3);

Bar(X1,Y1,X1+d,Y1+d);

4 SetFillStyle(0,3);

SetBKColor(0);

Bar(X1,Y1,X1+d,Y1+d);

*

 03С ПОМОЩЬЮ КАКОГО ФРАГМЕНТА ВОЗМОЖНО ЗАКРАСИТЬ ПРЯМОУГОЛЬНУЮ

ОБЛАСТЬ КРАСНОГО(4) ЭКРАНА ЧАСТОЙ СЕТКОЙ(9) СИНЕГО ЦВЕТА(1)?

1 SetBKColor(4);

SetFillStyle(9,1,0);

Bar(X1,Y1,X2,Y2);

2 SetBKColor(4);

Rectangle(X1,Y1,X2,Y2);

SetFillStyle(9,1,0);

3 SetBKColor(4);

SetFillStyle(9,1);

Bar(X1,Y1,X2,Y2);

4 SetBKColor(4);

Bar(X1,Y1,X2,Y2);

SetFillStyle(9,1);

*

 04ИМЕЕТСЯ ЛИ В ЯЗЫКЕ TURBO PASCAL ВОЗМОЖНОСТЬ УСТАНАВЛИВАТЬ

ПРОИЗВОЛЬНЫЙ (ПО ЖЕЛАНИЮ ПОЛЬЗОВАТЕЛЯ) ЦВЕТ РИСОВАНИЯ, СТИЛЬ И

ТОЛЩИНУ ЛИНИЙ РИСОВАНИЯ?

1 Нет

2 Только цвет

3 Только стиль линий

4 Только стиль и толщину линий

*

 05НАПИШИТЕ ПРОГРАММУ РИСОВАНИЯ КОНТУРОВ ПРЯМОУГОЛЬНИКА ЛИНИЯМИ,

СОСТОЯЩИМИ ИЗ ЧЕРЕДУЮЩИХСЯ ПАР ТОЧЕК И ТИРЕ.

1 GetLineStyle(0,0,1);

Rectangle(X1,Y1X2,Y2);

2 SetLineStyle(4,$3,1);

Rectangle(X1,Y1,X2,Y2);

3 SetLineStyle(4,3,1);

Rectangle(X1,Y1,X2,Y2);

4 SetLineStyle(0,13,1);

Rectangle(X1,Y1,X2,Y2);

*

 06КАК ОБЕСПЕЧИТЬ ЗАКРАСКУ КАКОЙ-ЛИБО ОБЛАСТИ ЭКРАНА КРАСНЫМ(4)

ЦВЕТОМ 25% ЯРКОСТИ?

1 SetFillPatern(1,2,4,8,1,2,4,8);

2 SetFillPatern(1,2,4,8,1,2,4,8;4);

3 SetFillPatern(11,22,44,88,11,22,44,88);

4 SetFillPatern(11,22,44,88,11,22,44,88;4);

*

 07КАКАЯ ИЗ НИЖЕУКАЗАННЫХ ПРОЦЕДУР УСТАНАВЛИВАЕТ СТАНДАРТНЫЕ

ОБРАЗЦЫ ЗАКРАСКИ И ИХ ЦВЕТА?

1 SetFillStyle(Pattern:word;Color:word);

2 SetFillPatern(Pattern:FillPatternType;Color:Word);

3 GetFillSettings(var FillInfo:FillSettingsType);

4 SetLineStyle(LineStyle:Word;Pattern:Word;Thickness:Word);

*

 08С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ МОЖНО ЗАМЕНИТЬ НУЛЕВОЙ,ЧЕРНЫЙ, ЦВЕТ

ПАЛИТРЫ НА ДЕВЯТЫЙ, СВЕТЛО-ГОЛУБОЙ?

1 SetAllPalette;

2 SetColor;

3 SetPalette;

4 GetPalette;

*

 09НАПИШИТЕ ПРОГРАММУ ЗАМЕНЫ ЦВЕТА НЕИЗВЕСТНОГО СТАНДАРТНОГО СТИЛЯ

ЗАКРАСКИ НА ЦВЕТ X.

 1 Color:=X;

SetFillStyle(Pattern,Color);

2 GetFillSettings;

Color:=X;

SetFillStyle(Pattern;Color);

3 GetFillSettings;

Color:=X;

SetFillPattern(Pattern;Color);

4 GetFillSettings;

Color:=X;

SetFillStyle(Color;Pattern);

*

 10НАПИШИТЕ ПРОГРАММУ РИСОВАНИЯ НА КРАСНОМ(4) ЭКРАНЕ ГОЛУБОГО(9)

ОКНА, ЗАКРАШЕННОГО КЛЕТКОЙ СИНЕГО ЦВЕТА(1).

1 SetBKColor(4);

SetFillStyle(7,1);

Bar(X1,Y1,X2,Y2);

2 SetBKColor(4);

Bar(X1,Y1,X2,Y2);

SetFillStyle(7,1);

Bar(X1,Y1,X2,Y2);

3 SetBKColor(4);

SetFillStyle(1,9);

Bar(X1,Y1,X2,Y2);

SetFillStyle(7,1);

Bar(X1,Y1,X2,Y2);

4 SetFillStyle(9,1);

Bar(X1,Y1,X2,Y2);

SetFillStyle(7,1);

SetBKColor(4);

*

0

011Ответ правильный. 005

*

2Ответ неверный. Процедура SetPalette изменяет один из цветов палитры002

*

3Ответ неверный. Процедура SetAllPalette изменяет цвета палитры. 002

*

4Ответ неверный. Процедура SetLineStyle устанавливает стиль 002

контурных линик и их толщину.

*

*

 021Ответ правильный. 005

*

2Ответ неверный. Процедура SetColor задает цвет рисования. но не 002

закрашивает фигуры.

*

3Ответ неверный. Нет необходимости устанавливать черный цвет, т.к. 003

он автоматически устанавливается при вхождении в графический режим.

*

4Ответ неверный.На черном экране, установленном процедурой SetBKColor002

будет виден лишь белый контур квадрата.

*

*

 031Ответ неверный.Ошибка в написании параметров процедуры SetFillStyle.002

*

2Ответ неверный. Результатом выполенния данного фрагмента будет 002

красный экран.Ошибка в написании параметров процедуры SetFillStyle.

*

3Ответ правильный. 005

*

4Ответ неверный. Стиль и цвет закраски необходимо установить до 002

построения фигуры.

*

*

 041Ответ неверный. В языке имеется возможность устанавливать 002

произвольный (по желанию пользователя) стиль контурных линий с

помощью процедуры SetLineStyle(LineStyle,Pattern,Thickness).

При этом параметр LineStyle устанавливается в значение UserBitLn(4)

а параметр Pattern представляет собой битовую строку, определяющую

стиль изображения кнтурных линий. Возможности установить призволь-

ный цвет рисования нет.

*

2Ответ неверный. В языке имеется возможность устанавливать 002

произвольный (по желанию пользователя) стиль контурных линий с

помощью процедуры SetLineStyle(LineStyle,Pattern,Thickness).

При этом параметр LineStyle устанавливается в значение UserBitLn(4)

а параметр Pattern представляет собой битовую строку, определяющую

стиль изображения кнтурных линий. Возможности установить призволь-

ный цвет рисования нет.

*

3Ответ правильный. 005

*

4Ответ неверный. В языке имеется возможность устанавливать  002

произвольный (по желанию пользователя) стиль контурных линий с

помощью процедуры SetLineStyle(LineStyle,Pattern,Thickness).

При этом параметр LineStyle устанавливается в значение UserBitLn(4)

а параметр Pattern представляет собой битовую строку, определяющую

стиль изображения кнтурных линий. Возможности установить призволь-

ный цвет рисования нет.

*

*

 051Ответ неверный. Процедура GetLineStyle не устанавливает стиль 002

контурных линий, а возвращает их текущие параметры.

*

2Ответ правильный.

* 005

3Ответ неверный. Параметр Pattern не может состоять из одной цифры, 002

т.к. его значение - двухбайтовое число.

*

4Ответ неверный. При установке стандартного стиля контурных линий 002

параметр Pattern не задается.

*

*

 061Ответ неверный. Не указан параметр Color и элементы массива Pattern 002

являются двухбайтовыми.

*

2Ответ неверный. Элементы массива Pattern являются двухбайтовыми. 002

*

3Ответ неверный. Не указан параметр Color. 002

*

4Ответ правильный. 005

*

*

 071Ответ правильный.  005

*

2Ответ неправильный. Процедура SetFillPattern позволяет программисту 003

определить свой, нестандартный, образец закраски. Возможно смодели-

ровать и стандартный стиль с помощью той же процедуры.

*

3Ответ неверный. Эта процедура возвращает код и цвет стандартного 002

образца закраски.

*

4Ответ неверный. Процедура SetLineStyle устанавливает стиль контурных002

линий.

*

*

 081Ответ неверный. Данный способ замены одного цвета другим допустим, 004

но не рационален.

*

2Ответ неверный. Процедура SetColor устанавливает текущий цвет 002

рисования.

*

3Ответ правильный. 005

*

4Ответ неверный. Процедура GetPalette выдает справку о текущей 002

цветовой палитре, но не меняет цвета.

*

*

 091Ответ неверный. Параметр Color не следует устанавливать предвари- 002

тельно для процедуры SetFillStyle. Процедура SetFillStyle устанав-

ливает стандартный образец закраски и цвет.

*

2Ответ правильный. 005

*

3Ответ неверный. Процедура SetFillPattern устанавливает нестандартный002

стиль закраски.

*

4Ответ неверный. Параметры процедуры SetFillStyle следует употреблять003

в обратном порядке.

*

*

 101Ответ неверный.Фон прямоугольлника (X1,Y1,X2,Y2) будет красным. 002

*

2Ответ неверный. Прямоугольник (X1,Y1,X2,Y2) будет по умолчанию 002

закрашен белым цветом, а не голубым.

*

3Ответ правильный. 005

*

4Ответ неверный. Процедура SetBKColor закрасит экран красным цветом, 002

закрасив прямоугольник.

*

*

0

ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

В данном разделе рассматриваются процедуры, позволяющие програм-

 мировать изображение криволинейных фигур из класса круговых и эллип-

 тических дуг, секторов, а также операторы формирования растровых

 изображений и часто используемые вспомогательные процедуры.

* procedure Arc(X,Y:integer;StAngle,EndAngle,Radius:word);

1

Рисует против часовой стрелки текущим

 стилем и цветом дугу окружности с центром (X,Y),

 радиусом Radius от начального угла StAngle до

 конечного угла AndAngle. Угловые параметры

 задаются в градусах.

* procedure CetArcCords(var ArcCoords:ArcCoordsType);

Возвращает в переменной ArcCoords координаты концов дуги,

 проведенной последней командой Arc.Тип ArcCoordsType описан в

 модуле Graph как запись, значения полей которой аналогичны значению

 параметров процедуры Arc.

* procedure Circle(X,Y:integer;Radius:word);

2

Строит контуры окружности радиуса Radius с

 центром (X,Y), заданным ранее цветом и стилем

 рисования.

ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

* procedure Ellipse (X,Y:integer;

* StAngle,EndAngle,XRadius,YRadius:word);

3

Строит текущим стилем и цветом дугу

 эллписа с центром (X,Y), начальным StAngle

 и конечным EndAngle углами, двумя полуосями

 XRadius и YRadius.

* procedure FloodFill(X,Y,Border:word);

Обеспечивает закраску ограниченной

 области, в которую входит точка (X,Y) , по

 образцу, установленному предварительно

 процедурой SetFillStyle либо SetFillPattern.

 Параметр Border определяет код цвета,

 ограничивающего закрашиваемую область.

* procedure FillEllipse(X,Y:integer;XRadius, YRadius:word);

Закрашивает область эллипса,используя

 предварительно установленные стиль и цвет закраски.

 Значения параметров аналогичны значениям параметров

 процедуры Ellipse.

4

5

ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

* prosedure PieSlice(X,Y:integer;

* StAngle,EndAngle,Radius:word);

6

 Строит и закрашивает круговой сектор

 установленным стилем и цветом. Параметры имеют

 тот же смысл и тип, что и одноименные параметры

 процедуры Arc.

* procedure Sector(X,Y:integer;

* StAngle,EndAngle,XRadius,YRadius:word);

7

Рисует и закрашивает эллиптический сектор,

 используя текущие стиль и цвет рисования и зак-

 раски. Параметры имеют тот же смысл и тип что

 и одноименные параметры процедуры Ellipse.

* procedure Randomize;

Инициализирует встроенный генератор случайных чисел сллучайным

 значением, получаемым от системного таймера компьютера. Описана в

 модуле System . Число, получаемое в результате работы генератора,

 хранится в предописанной переменной RandSeed. Присваивая ей конкрет-

 ные значения можно получать каждый раз заданную последовательность

 случайных чисел.

ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

* function Random(Rande:word):word;

Возвращает случайное число. Переменная Rande должна быть выра-

 жением целого типа, а результатом будет случайное число X длиной в

 слово в диапазоне 0=<X<Rande. Если Rande=<0, Random возвращает 0.

 Если параметр функции не задан вовсе, то результатом будет

 вещественное число в диапазоне 0=<X<1.

* procedure Delay(Time:word);

 Выполняет задержку на заданное число миллисекунд, описана в

 модуде Crt.

* function KeyPressed:boolean;

Возвращает значение true, если на клавиатуре нажата

 какая-либо символьная клавиша, и false - в противном случае. Описана

 в модуле Crt.

* procedure PutPixel(X,Y:integer;Color:word);

Рисует на экране в позиции (X,Y) точку цвета Color. Опивана в

 модуле Graph.

* procedure GetPixel(X,Y:integer):word;

Возвращает код цвета заданной точки растра (X,Y).

ПРОГРАММИРОВАНИЕ ЦВЕТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

В качестве примера использования функции PutPixel продемон-

 стрируем возможность формирования "звездного неба" до нажатия любой

 символьной клавиши.

 .............

 Randomize;

 repeat

PutPixel(Random(GetMaxX),

Random(GetMaxY),

Red);

Delay(50);

 until KeyPressed;

 .............

Приведем еще один пример использования процедур и функций,

 описанных в данном разделе.На следующем экране Вы можете наблюдать

 эллиптическую диаграмму с выделенными секторами различного стиля и

 цвета закраски, а также кардиоиду, представленную семейством окруж-

 ностей, проходящих через общею точку опорной окружности и с центрами

 в концах равных элементов, составляющих опорную окружность. Цвета

 элементов опорной окружности и окружностей кардиоиды назнача-

 ются случайным образом.

8

9 ПРОГРАММИРОВАНИЕ ЦВEТНЫХ КРИВОЛИНЕЙНЫХ ИЗОБРАЖЕНИЙ

0

01НАРИСУЙТЕ ПРОГРАММУ РИСОВАНИЯ НА ЖЕЛТОМ(14) ЭКРАНЕ КРИВОЛИНЕЙНОЙ ЦИФРЫ 8 СИНЕГО(1) ЦВЕТА.

1 SetBKColor(14);

SetColor(1);

Circle(X,Y;Radius);

Circle(X,Y+d;Radius+d);

2 SetBKColor(1);

SetColor(14);

Circle(X,Y;Radius);

Circle(X,Y;Radius+d);

3 SetBKColor(14);

SetColor(1);

Arc(X,Y;0,360,Radius);

Arc(X,Y+d;0,360,Radius);

4 SetBKColor(1);

SetColor(14);

Arc(X,Y;0,360,Radius);

Arc(X,Y+d;0,360,Radius);

*

 02НАПИШИТЕ ПРОГРАММУ ФОРМИРОВАНИЯ НА ЧЕРНОМ ЭКРАНЕ КРАСНОЙ ЦИФРЫ 5 С КРИВОЛИНЕЙНОЙ НИЖНЕЙ И ПРЯМОЛИНЕЙНОЙ ВЕРХНЕЙ ЧАСТЯМИ.

1 SetColor(4);

GoToXY(X,Y);

Arc(X+d,Y+d,0,180,K+d);

Arc(X,Y+d,0,90,d);

Arc(X+d,Y+d+k,0,180,k);

2 SetColor(4);

Line(X,Y,X+d,Y);

Line(X,Y,X,Y+d);

Arc(X+k,Y+k,0,90,k);

Arc(X+k,Y+k,270,360,k);

3 SetColor(4);

Line(X,Y,X+d,Y);

Line(X,Y,X,Y+d);

Arc(X+k,Y+k,0,180,k);

4 SetColor(4);

Line(X,Y,X-d,Y);

Line(X-d,Y,X-d,Y+d);

Circle(X-d,Y+d+k,k);

*

 03НАПИШИТЕ ПРОГРАММУ , ОБЕСПЕЧИВАЮЩУЮ ФОРМИРОВАНИЕ НА ЧЕРНОМ ЭКРАНЕ ЭЛЛИПСА СО СЛУЧАЙНЫМ ЦВЕТОМ ЗАКРАСКИ.

1 Randomize;

SetFillStyle(0,15);

Ellipse(X,Y,0,359,a,b);

FloodFill(X,Y,Random(14);

2 SetFillStyle(0,15);

Ellipse(X,Y,0,359);

FloodFill(X,Y,Random(14);

3 SetFillStyle(0,15);

Randomize(15);

Ellipse(X,Y,0,359,a,b);

FloodFill(X,Y,Random);

4 SetFillStyle(0,15);

Randomize;

Ellipse(X,Y,a,b);

FloodFill(X,Y);

*

 04КАК ПРАВИЛЬНО ЗАДАТЬ УГЛОВЫЕ ПАРАМЕТРЫ ПРОЦЕДУРЫ Arc?

1 В радианах. Их значения не должны превышать 2пи.

2 В радианах. Их значения не должны превышать пи.

3 В градусах. Их значения не должны превышать 360 градусов.

4 В градусах. Их значения не должны превышать 180 градусов.

*

 05В КАКОМ МОДУЛЕ ОПИСАНА ПРОЦЕДУРА RANDOMIZE?

1 Graph.

2 Crt .

3 Dos.

4 System.

*

 06С ПОМОЩЬЮ КАКОЙ ПРОЦЕДУРЫ МОЖНО НАРИСОВАТЬ НА ЭКРАНЕ ТОЧКУ

ОПРЕДЕЛЕННОГО ЦВЕТА?

1 PutPixel.

2 KeyPressed.

3 GetPixel.

4 Delay.

*

0

ФОРМИРОВАНИЕ ГРАФИЧЕСКИХ ТЕКСТОВ

В данном разделе мы рассмотрим возможность графического изобра-

 жения текстовых символов, управление типом шрифта, направлением

 вывода, размерами и пропорциями символов, пространственной привязкой

 текстовых строк к положению курсора и другими возможностями формиро-

 вания графических текстов.

* procedure SetTextStyle(Font,Direction:word;

* CharSize:CharSizeType);

Устанавливает стиль стандартного шрифта Font(один растровый -

 DefaultFont(0), и четыре штриховых - TriplexFont(1),SmallFont(2),

 SanSerifFont(3), GothicFont(4)), направление текстовой строки

 Direction (HorizDir(0) - слева направо, VertDir(1) - снизу вверх),

 размер символов CharSize (коэффициент увеличения от 1 до 10).

В случае растрового шрифта каждый текстовый символ формируется

 на основе матрицы 8*8 элементов разложения. Штриховые шрифты опреде-

 ляются серией векторов. Обычно штриховые шрифты хранятся в отдельных

 файлах на системном диске и при обращении к процедуре загружаются в

 динамически определяемую память компьютера автоматически.

"По умолчанию", т.е. без обращения к данной процедуре

 автоматически устанавливается растровый шрифт, горизонтальный вывод

 и единичный размер символов.

На следующем экране Вы можете наблюдать примеры стандартных

 шрифтов. После названия каждого из них через запятую указан коэффи-

 циент увеличения.

#


Информация о работе «Обучающая программа Графика программированию в графическом режиме на языке turbo-pascal 7.x»
Раздел: Информатика, программирование
Количество знаков с пробелами: 235892
Количество таблиц: 25
Количество изображений: 6

Похожие работы

Скачать
110612
10
19

... набор процедур и функций языков программирования Basic и Pascal, позволяют управлять графическим режимом работы экрана, создавать разнооборазные графические изображения и выводить на экран текстовые надписи. ГЛАВА 2. ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ ЯЗЫКА ПРОГРАММИРОВАНИЯ В КУРСЕ ИНФОРМАТИКИ БАЗОВОЙ ШКОЛЫ (НА ПРИМЕРЕ BASIC И PASCAL)   2.1 Разработка мультимедиа курса «Графические возможности языков ...

Скачать
46704
1
0

... деятельности во внешней речи про себя и этап выполнения деятельности в форме внутренней речи. Данные характеристики деятельности и этапы ее становления и определяют требования к составлению обучающих программ. 2. При оценке авторской технологии проверяйте ее на соответствие признакам педагогической (методической) технологии   Классификационные параметры технологии По уровню применения: ...

Скачать
38455
2
1

... программирования Турбо Паскаль. Диалог между компьютером и играющим осуществляется как в меню, так и во время самой игры.   2. СПЕЦИФИКАЦИЯ ИГРОВОЙ ПРОГРАММЫ «SIEGE» 1.   Название задачи Компьютерная игра. Название программы – «Siege». Система программирования Turbo Pascal. 2.   Описание Игра начинается с заставки, где написано название игры. Затем следует главное меню, где ...

Скачать
102471
0
17

... следует курсор установит на отметку “Exit” и нажат клавишу <Enter>. 14. Для повторения работы необходимо выполнить последовательно пункты с 4-го по 13-й. §2.3 Текст анимационно-обучающей программы механической системы Program Water_Program; Uses Crt, Graph; Const { Vvod Unit Graphics } FunWeb='c:tpBgi'; Var Gd,Gm,I,X,Y,X1,Y1,XX,YY,Rad,J:Integer; Z,J1,J2,W,V,G:Integer; ...

0 комментариев


Наверх