Смекни!
smekni.com

Обучающая программа Графика программированию в графическом режиме на языке turbo-pascal 7.x (стр. 17 из 24)

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