Главная страница
Контакты

    Басты бет


Бексарыұлы Мұратбек delphi визуалды бағдарламалау жүйесі әдістемелік оқу құралы

жүктеу 1.27 Mb.



жүктеу 1.27 Mb.
бет10/10
Дата22.10.2017
өлшемі1.27 Mb.

Бексарыұлы Мұратбек delphi визуалды бағдарламалау жүйесі әдістемелік оқу құралы


1   2   3   4   5   6   7   8   9   10

53-сурет
Жұмысты орындау бағдарламасы:

unit tir_;

public


{ Public declarations }

{процедуралар хабарламасының мұнда орналасуы, бет бейнесі салынатын пішінге процедура жақын болсын дегендіктен }

procedure PaintFace(x,y: integer); // бет бейнесін салады

procedure EraseFace(x,y: integer); // бет бейнені өшіреді

end;

var


Form1: TForm1;

fx,fy: integer; // бет бейненің координаттары

n: integer; // тышқан батырмасын шерту саны

p: integer; // тигізу саны

implementation

// бет бейнені салу

procedure TForm1.PaintFace(x,y: integer);

begin


Canvas.Pen.Color := clBlack; // сызықтар түсі

Canvas.Brush.Color := clYellow; // боялым түсі

// бет бейнені салу

Canvas.Ellipse(x,y,x+30,Y+30); // беті

Canvas.Ellipse(x+9,y+10,x+11,y+13); // сол көзі

Canvas.Ellipse(x+19,y+10,x+21,y+13); //оң көзі

Canvas.Arc(x+4,y+4,x+26,y+26,x,y+20,x+30,y+20); //күлкісі

end;


// бет бейнені өшіру

procedure TForm1.EraseFace(x,y: integer);

begin

// пішінмен сәйкес келетін шекарасы мен боялым түсін беру.



//Өзі орнатылатын пішін түсі - clBtnFace (Object Inspector –ді қара)

Canvas.Pen.Color := clBtnFace; // шеңбер түсі

Canvas.Brush.Color := clBtnFace; // боялым түсі

Canvas.Ellipse(x,y,x+30,y+30);

end;

{$R *.dfm}





54-сурет
procedure TForm1.TimerTimer(Sender: TObject);

begin

EraseFace(fx,fy);

// бет бейненің жаңа қалпы

fx:= Random(ClientWidth-30);//30 – бет бейне диаметрі

fy:= Random(ClientHeight-30);

PaintFace(fx,fy);

end;

procedure TForm1.FormCreate(Sender: TObject);



begin

// бет бейненің бастапқы қалпы

fx:=100;

fy:=100;


Randomize; //кездейсоқ сандар генераторын инициализациялау

end;


// тышқан батырмасын шерту

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

begin


inc(n); // шерту саны

if (x > fx) and (x < fx+30) and

(y > fy) and (y < fy+30)

then begin

// бет бейнені шерту

inc(p);


end;

if n = 10 then

begin
// ойын аяқталды

Timer.Enabled := False; //таймерді тоқтату

ShowMessage('Атылғаны: 10. Тигені: ' + IntToStr(p)+'.');

EraseFace(fx,fy);

Label1.Visible := True;

Button1.Visible := True;

// енді батырма мен хабарлама қайта көрінді

end;


end;



55-сурет
// Ok батырмасын шерту

procedure TForm1.Button1Click(Sender: TObject);

begin

Label1.Visible := False; // хабарламаны жасыру



Button1.Visible := False; // батырманы жасыру

Timer.Enabled := True; // таймерді іске қосу

end;

end.


Пайдаланылған әдебиеттер мен дереккөздер.
1. Programmers.kz сайтының материалдары.

2. Delphi-manual.ru сайтының материалдары.

3. Симонович С.В., Евсеев Г.А. Занимательное программирование: Delphi. –M.: АСТ-ПРЕСС КНИГА: Инфорком – Пресс, 2001.

4. Культин Н.Б. Delphi в задачах и примерах. - СПб.: БХВ – Петербург, 2005.

5. Фаронов В.В. Программирование на языке высокого уровня: Учебник для вузов. –СПб.: Питер, 2003.

6. Бобровский С.И. Delphi 7. Учебный курс. – СПб.: Питер, 2005.

7. Кетков Ю.Л., Кетков А.Ю. Практика программирования: Visual Basic, C++ Builder, Delphi.- СПб.: БХВ – Петербург, 2005.

8. Кузнецова И.А. Практикум по Delphi для решения прикладных задач. - Н.Новгород: ННГУ, 2005.

29. Тестілеу бағдарламасы

Жұмыстың мақсаты – тестілеу бағдарламасын құру.

1. Ол үшін жаңа жоба ашып, сол Пішінге қажетті компоненттерді орналастырыңыз.

2. Төменде келтірілген бағдарламаны пайдаланып, сол компоненттердің оқиғалары мен қасиеттерін өңдеп, жұмыс мақсатына жеткізетін әрекеттерді орындаңыз.
{ Тестілеудің әмбебап бағдарламасы

(с) Культин Н.Б., 2003 }

unit tester_;

interface


uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls, ExtCtrls,

jpeg;
type

TForm1 = class(TForm)

Label5: TLabel; // сұрақ


Label1: TLabel; // балама жауаптар

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;


RadioButton1: TRadioButton; // жауапты таңдау радио батырмалары

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

RadioButton4: TRadioButton;


Image1: TImage; // кескін шығару аймағы

Button1: TButton;

Panel1: TPanel;

RadioButton5: TRadioButton;


procedure FormActivate(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure RadioButtonClick(Sender: TObject);
// Бұл хабарландырулар қолдан қойылған

procedure Info;

procedure SurakToScr;

procedure ShowPicture; // кескін шығарушы

procedure ResetForm; // кезекті сұрақты шығару алдында пішінді //«тазарту»

procedure Kortyndy;

procedure FormCreate(Sender: TObject); // тестілеу нәтижесі
private

{ Private declarations }

public

{ Public declarations }



end;
var

Form1: TForm1; // Пішін


implementation

{$R *.DFM}

const

N_LEV=4; // бағалаудың төрт деңгейі



N_ANS=4; // жауаптардың төрт нұсқасы
var

f:TextFile;

fn:string; // сұрақтар файлының аты
level:array[1..N_LEV] of integer; // деңгейге сәйкес келетін ұпай mes:array[1..N_LEV] of string; // деңгейге сәйкес келетін //хабарлама
score:array[1..N_ANS] of integer; // жауапты таңдағаны үшін баға

summa:integer; // жиналған ұпай

surak:integer; // ағымдағы сұрақ нөмірі

jauap:integer; // таңдалған жауап нөмірі


procedure Tform1.Info; // тест жайлы хабарлама шығару

var


s,buf:string;

begin


readln(f,s);

Form1.Caption := s;

buf:='';

repeat


readln(f,s);

if s[1] <> '.'

then buf := buf +s + #13;

until s[1] ='.';

Label5.caption:=buf;

end;
Procedure GetLevel; // тесттен алған бағаң жайлы хабарламаны оқу

var

i:integer;



buf:string;

begin


i:=1;

repeat


readln(f,buf);

if buf[1] <> '.' then begin

mes[i]:=buf; // хабарлама

readln(f,level[i]); // баға

i:=i+1;

end;


until buf[1]='.';

end;
Procedure TForm1.ShowPicture; // кескінді масштабтау

var

w,h: integer; // суреттің мүмкін болған ең үлкен өлшемі



begin

// суреттің мүмкіндігі бар өлшемін есептеу

w:=ClientWidth-10;

h:=ClientHeight

- Panel1.Height -10

- Label5.Top

- Label5.Height - 10;
if Label1.Caption <> '' // сұрақтар

then h:=h-Label1.Height-10;

if Label2.Caption <> ''

then h:=h-Label2.Height-10;

if Label3.Caption <> ''

then h:=h-Label3.Height-10;

if Label4.Caption <> ''

then h:=h-Label4.Height-10;


// егер сурет өлшемі w-дан h-қа кем болса, онда ол //масштабталмайды Image1.Top:=Form1.Label5.Top+Label5.Height+10;

if Image1.Picture.Bitmap.Height > h

then Image1.Height:=h

else Image1.Height:= Image1.Picture.Height;

if Image1.Picture.Bitmap.Width > w

then Image1.Width:=w

else Image1.Width:=Image1.Picture.Width;
Image1.Visible := True;

end;
Procedure TForm1.SurakToScr; // сұрақты шығару

var

i:integer;



s,buf:string;

ifn:string; // кескін файлы

begin

surak:=surak+1;



caption:='Сұрақ ' + IntToStr(surak);

// сұрақты оқу

buf:='';

repeat


readln(f,s);

if (s[1] <> '.') and (s[1] <> '\')

then buf:=buf+s+' ';

until (s[1] ='.') or (s[1] ='\');

Label5.caption:=buf; // сұрақты шығару
{Иллюстрацияны оқиық, бірақ оны баламалы жауаптарды оқып және шығару үшін қолданатын пішін өлшемінің ең үлкен мөлшерін анықтап болған соң ғана шығарамыз}

if s[1] <> '\'

then Image1.Tag:=0 // сұраққа сәйкес кескін жоқ

else // сұраққа сәйкес кескін бар

begin

Image1.Tag:=1;



ifn:=copy(s,2,length(s));

try


Image1.Picture.LoadFromFile(ifn);

except


on E:EFOpenError do

Image1.Tag:=0;

end;

end;
// Жауап нұсқаларын оқу



i:=1;

repeat


buf:='';

repeat // жауап нұсқасының мәтінін оқу

readln(f,s);

if (s[1]<>'.') and (s[1] <> ',')

then buf:=buf+s+' ';

until (s[1]=',')or(s[1]='.');

// балама жауап оқылды

score[i]:= StrToInt(s[2]);

case i of

1: Label1.caption:=buf;

2: Label2.caption:=buf;

3: Label3.caption:=buf;

4: Label4.caption:=buf;

end;


i:=i+1;

until s[1]='.';

// мұнда кескіндер мен балама жауаптар оқылды
// сұрақ мәтіні шығарылған

if Image1.Tag =1 // сұраққа сәйкес кескін бар

then ShowPicture;
// балама жауаптарды шығару

if Form1.Label1.Caption <> ''

then begin

if Form1.Image1.Tag =1

then Label1.top:=Image1.Top+Image1.Height+10

else Label1.top:=Label5.Top+Label5.Height+10;

RadioButton1.top:=Label1.top;

Label1.visible:=TRUE;

RadioButton1.visible:=TRUE;

end;
if Form1.Label2.Caption <> ''

then begin

Label2.top:=Label1.top+ Label1.height+10;

RadioButton2.top:=Label2.top;

Label2.visible:=TRUE;

RadioButton2.visible:=TRUE;

end;
if Form1.Label3.Caption <> ''

then begin

Label3.top:=Label2.top+ Label2.height+10;

RadioButton3.top:=Label3.top;

Label3.visible:=TRUE;

RadioButton3.visible:=TRUE;

end;
if Form1.Label4.Caption <> ''

then begin

Label4.top:=Label3.top+ Label3.height+10;

RadioButton4.top:=Label4.top;

Label4.visible:=TRUE;

RadioButton4.visible:=TRUE;

end;


end;
Procedure TForm1.ResetForm;

begin // барлық белгілер мен радио батырмаларды көрінбейтін ету


Label1.Visible:=FALSE;

Label1.caption:='';

Label1.width:=ClientWidth-Label1.left-5;

RadioButton1.Visible:=FALSE;


Label2.Visible:=FALSE;

Label2.caption:='';

Label2.width:=ClientWidth-Label2.left-5;

RadioButton2.Visible:=FALSE;


Label3.Visible:=FALSE;

Label3.caption:='';

Label3.width:=ClientWidth-Label3.left-5;

RadioButton3.Visible:=FALSE;


Label4.Visible:=FALSE;

Label4.caption:='';

Label4.width:=ClientWidth-Label4.left-5;

RadioButton4.Visible:=FALSE;


Label5.width:=ClientWidth-Label5.left-5;
Image1.Visible:=FALSE;

end;
// жеткен деңгейін анықтау

procedure TForm1.Kortyndy;

var


i:integer;

buf:string;

begin

buf:='';


buf:='Тестілеу нәтижесі'+ #13

+'Барлық ұпайыңыз: '+ IntToStr(summa);

i:=1;

while (summa < level[i]) and (i

i:=i+1;

buf:=buf+ #13+mes[i];

Label5.Top:=20;

Label5.caption:=buf;

end;
procedure TForm1.FormActivate(Sender: TObject);

begin


ResetForm;

if ParamCount = 0

then begin

Label5.caption:= 'Тест сұрақтарының файлы берілмеген.';

Button1.caption:='Ok';

Button1.tag:=2;

Button1.Enabled:=TRUE

end


else begin

fn := ParamStr(1);

assignfile(f,fn);

try


reset(f);

except


on EFOpenError do

begin


ShowMessage('Тест файлы '+fn+' табылған жоқ.');

Button1.caption:='Ok';

Button1.tag:=2;

Button1.Enabled:=TRUE;

exit;

end;


end;

Info; // тест жайлы хабарламаны оқу және шығару

GetLevel; // бағалаудың деңгейі жайлы хабарламаны оқу

end;


end;
// Button1 батырмасын шерту

procedure TForm1.Button1Click(Sender: TObject);

begin

case Button1.tag of



0: begin

Button1.caption:='Әрі қарай';

Button1.tag:=1;

RadioButton5.Checked:=TRUE;

// бірінші сұрақты шығару

Button1.Enabled:=False;

ResetForm;

SurakToScr;

end;

1: begin // басқа сұрақтарды шығару



summa:=summa+score[jauap];

RadioButton5.Checked:=TRUE;

Button1.Enabled:=False;

ResetForm;

if not eof(f)

then SurakToScr

else

begin


summa:=summa+score[otv];

closefile(f);

Button1.caption:='Ok';

Form1.caption:='Нәтижесі';

Button1.tag:=2;

Button1.Enabled:=TRUE;

Kortyndy; // нәтижені шығару

end;


end;

2: begin // жұмысты аяқтау

Form1.Close;

end;


end;

end;


// RadioButton1-RadioButton4 компоненттері үшін OnClick оқиғасын //өңдеу проуцедурасы

procedure TForm1.RadioButtonClick(Sender: TObject);

begin

if sender = RadioButton1



then jauap:=1

else if sender = RadioButton1

then jauap:=2

else if sender = RadioButton3

then jauap:=3

else jauap:=4;

Button1.enabled:=TRUE;

end;
// компоненттерді баптауды қамтамасыз етеді

procedure TForm1.FormCreate(Sender: TObject);

begin


Image1.AutoSize := False;

Image1.Proportional := True;

RadioButton1.Visible := False;

end;


end.


1   2   3   4   5   6   7   8   9   10

  • 54-сурет procedure
  • Пайдаланылған әдебиеттер мен дереккөздер. 1

  • жүктеу 1.27 Mb.