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 элементов разложения. Штриховые шрифты опреде-
ляются серией векторов. Обычно штриховые шрифты хранятся в отдельных
файлах на системном диске и при обращении к процедуре загружаются в
динамически определяемую память компьютера автоматически.
"По умолчанию", т.е. без обращения к данной процедуре
автоматически устанавливается растровый шрифт, горизонтальный вывод
и единичный размер символов.
На следующем экране Вы можете наблюдать примеры стандартных
шрифтов. После названия каждого из них через запятую указан коэффи-
циент увеличения.
#
... набор процедур и функций языков программирования Basic и Pascal, позволяют управлять графическим режимом работы экрана, создавать разнооборазные графические изображения и выводить на экран текстовые надписи. ГЛАВА 2. ГРАФИЧЕСКИЕ ВОЗМОЖНОСТИ ЯЗЫКА ПРОГРАММИРОВАНИЯ В КУРСЕ ИНФОРМАТИКИ БАЗОВОЙ ШКОЛЫ (НА ПРИМЕРЕ BASIC И PASCAL) 2.1 Разработка мультимедиа курса «Графические возможности языков ...
... деятельности во внешней речи про себя и этап выполнения деятельности в форме внутренней речи. Данные характеристики деятельности и этапы ее становления и определяют требования к составлению обучающих программ. 2. При оценке авторской технологии проверяйте ее на соответствие признакам педагогической (методической) технологии Классификационные параметры технологии По уровню применения: ...
... программирования Турбо Паскаль. Диалог между компьютером и играющим осуществляется как в меню, так и во время самой игры. 2. СПЕЦИФИКАЦИЯ ИГРОВОЙ ПРОГРАММЫ «SIEGE» 1. Название задачи Компьютерная игра. Название программы – «Siege». Система программирования Turbo Pascal. 2. Описание Игра начинается с заставки, где написано название игры. Затем следует главное меню, где ...
... следует курсор установит на отметку “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 комментариев