Қоршаған ортаны модельдеуде сапалы мүмкіндіктерге ие, сезімдік тұрғыдан түсініктіұғымдар жиынтығы негізінде құрылады, алдын ала жазылып қойған программа кодын көп рет қолдануға мүкіндік береді



бет35/35
Дата25.08.2017
өлшемі8,61 Mb.
#27256
1   ...   27   28   29   30   31   32   33   34   35

Тапсырма №4

Мұнда негізгі жұмысты graficfun процедурасы орындайды. Алдымен [x1,x2] аралығындағы функцияның ең үлкен (y2)және ен кіші (y1) мәндері есептеледі. Grarficfin процедурасын шығару OnPainr оқиға өндеушісінің TFormI. Form Paint процедурасын шақыру арқылы орындалады. Ол үшін FormI – l3 екпінді жасап, оқиғалар бетінен On Paint оқиғасын тышқанмен жылдам екі рет белгілеу жеткілікті. Ал, форманың өлшемі өзгергеннен кейін графикті сызу үшін TFormI. FormResize процедурасы пайдаланылады. Ол оқиғалар бетінен OnResize оқиға өрісін тышқанмен жылдам екі рет белгілеу арқылы алынады. Программа мәтіні төмендегіней.

unit Unit1;

interface uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)



procedure FormPaint (Sender: TObject);

procedure Form Resize (Sender: TObject);

private {Private declarations}

public {Public declarations}

end;

var


Form 1: TForm1; implementation {$R * .dfm}

procedure graficfun;

var x1, x2:real; y1, y2:real; x,dx.y:real;

1,b:integer; w,h:integer; mx,my:real; x0y0:integer;

function f (x:real):real;

begin f:=2*sin(x) *exp(x/5); end;

begin

1:=10; b:=Form1.ClientHeight-20; h:=Form1.ClientHeight-40;



w:=Form1. ClientHeight-40;

x1:=0; x2:=25; dx:=0.01; y1:=f(x1); y2:=f(x2); x:=x1; y0:=60;

repeat

y:=f(x); if yy2 then y2:y;



x:=x+dx; until (x>=x2);

my:=h/abs(y2-y1);

mx:=w/abs(x2-x1);

x0:=1; y:=b-abs(round(y1*my));

with form1.canvas do

begin


MoveTo(1,b); LineTo(1,b-h);

MoveTo(x0,y0); LineTo(x0+w,y0);

x:=x1;

repeat


y:=f(x);

form1.canvas.Pixels[x0+round(x*mx),y0-round(y*my)]:=clred

x:=x+dx;

until(x>=x2);

end;

end;


procedure TForm1.FormPaint(Sender: TObject);

begin


graficfun;

end;


procedure TForm1.FormResize (Sender: TObject);

begin


with form1 do

Canvas.FillRect (Rect (0,0, ClientWidth, ClientHeight));

End;end.

Программаның орындалу нәтижесі 10.10 - суретте келтірілген.



10.10-сурет. F(x)=2sinx*ex/5функциясының графигі



Тапсырма №5

unit media1;


interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, MPlayer;
type

TForm1 = class(TForm)

ListBox1: TListBox;

MediaPlayer1: TMediaPlayer;

Label1: TLabel;

Label2: TLabel;

procedure FormActivate(Sender: TObject);

procedure ListBox1(Sender: TObject);

procedure MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;

var DoDefault: Boolean);

procedure Label1Create(Sender: TObject);
private

{ Private declarations }

public

{ Public declarations }



end;

const


soundpatch='C:\Office2000\Windows\Media\';

var


Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormActivate(Sender: TObject);

var SearchRec:TSearchRec;

begin

form1.MediaPlayer1.Play;



if findfirst(soundpatch+'*.wav',faanyfile,searchrec)=0

then


begin

Form1.ListBox1.Items.Add(searchRec.Name);

while (FindNext(SearchRec)=0)do

Form1.ListBox1.Items.Add(searchRec.Name);

end;

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



begin

Label3.Caption:=ListBox1.Items[listBox1.ItemIndex];

end;

procedure



TForm1.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;

var DoDefault: Boolean);

begin

if (Button=btPlay) and (Label3.Caption<>")then



begin

with MediaPlayer do

begin

FileName:=SoundPatch+Label3.Caption;



Open;

end;


end;

end;


end.
Тапсырма №6


10.17 сурет. Дыбысты анимацияны сүйемелдеу терезесі.
7 мысал.
unit Win_medPlay;
interface
uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, MPlayer, ExtCtrls;
type

TForm2 = class(TForm)

Panel1: TPanel;

Label1: TLabel;

MediaPlayer1: TMediaPlayer;

Button1: TButton;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }



public

{ Public declarations }

end;
var

Form2: TForm2;


implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);

begin


MediaPlayer1.Play;

end;
procedure TForm2.FormCreate(Sender: TObject);

begin

mediaPlayer1.DisplayRect:=Rect(0,0,60,60);



end;
7 мысал. Форманың бетінде сағаттық, минуттық және секундтық стрелкасымен жүріп тұрған сағатты бейнелейтін программаны құрайық .
unit сlock;
interface

uses


Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, ExtCtrls;


type

TForm3 = class(TForm)

PaintBox1: TPaintBox;

Timer1: TTimer;

procedure FormCreate(Sender: TObject);

procedure FormPaint(Sender: TObject);

procedure Timer1Timer(Sender: TObject);
procedure Vector(x0,y0,a,l:integer)

procedure DrawClock;


private

{ Private declarations }

public

{ Public declarations }



end;
var

Form1: TForm1;


implementation
{$R *.dfm}

uses


DateUtils;//SecondOf,

//MinuteOf және HourOf кіру үшін

const

R=75; // сағат циферблатының радиусы бұрышы



var

x0,y0:integer; //циферблат центрі

ahr,amin,asec:integer; //бағыттауыш стрелкалар бағыты

//форманы инициализациялау

procedure TForm1. FormCreate(Sender: TObject);

var


t: DateTime;

begin


//циферблаттың өлшеміне сәйкес

//форманың өлшемін береміз

ClientHeight:=(R+10)*2;

ClientWidth:= (R+10)*2;

x0:=R+10;

y0:=R+10;

t:Now();

//бағыттауыш стрелкалар бағыты

ahr:=90-HourOf(t)*30-(MinuteOf(Today)div 12)*6;

amin:=90-MinuteOf(t)*6;

asec:=90- SecondOf(Today)*6;

Timer1.Interval:=1000; // 1сек таймер сигналының периоды

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

End;


//(x0,y0)нүктесінен берілген ұзындықпен вектор сызылады
procedure Tform1.Vector(x0,y0:integer;a,l:integer);

// x0,y0-вектродың басы

// a-X осі мен вектор арасындағы бұрыш

// l-вектордың ұзыңдығы

const

GRAD=0.0174532; //бұрышты градустан радионға есептеу коэффициенті



var

x,y:integer; //вектордың соңғы нүктесінің координатасы

begin

Canvas.MoveTo(x0,y0);



x:=Round(x0+1*cos(a*GRAD));

y:=Round(y0-1*sin(a*GRAD));

Canvas.LineTo(x,y);

end; // бағыттауыш стрелкалар procedure DrawClock;

var

t:TDateTime;



begin

//сызады секундтық және минуттық стрелкалар қадамы 6 градус

//сағат-30

//стрелкалар бейнесін өшіру

Canvas.Pen.Color:=clBtnFace;

Canvas.Pen.Width:=3;

//сағаттық

Vector(x0,y0,ahr,R-20);

//минуттық

Vector(x0,y0,amin,R-20);

//секундтық

Vector(x0,y0,asec,R-7);

T:=Now();
//стрелкалардың жаңа орналасу жағдайы

ahr:=90-HourOf(t)*30-(MinuteOf(Today)div 12)*6;

amin:=90-MinuteOf(t)*6;

asec:=90- SecondOf(t)*6;

//стрелкалар салу

//сағаттық стрелка

Canvas.Pen.Width:=3;

Canvas.Pen.Color:=clBlack;

Vector(x0,y0,ahr,R-20);

//минуттық стрелка

Canvas.Pen.Width:=2;

Canvas.Pen.Color:=clBlack;

Vector(x0,y0,amin,R-15);

//секундтық стрелка

Canvas.Pen.Width:=1;

Canvas.Pen.Color:=clYellow;

Vector(x0,y0,asec,R-7);

end;


//циферблат пен бастапқы стрелкаларды салу procedure Tform1.FormPaint(Sender: TObject);

var


x,y:integer; //циферблаттағы маркер координаты

a:integer; //OX осі мен (x0,y0),(x,y) арасындағы бұрыш

pc:TColor; //қарындаш түсі

pw:integer; //қарындаш ені

begin

pc:= Canvas.Pen.Color



pw:= Canvas.Pen.Width;

Canvas.Pen.Width:=1;

Canvas.Pen.Color:=clBlack;

a:=0; //сағат стрелкасына қарсы

//сағат 3-тен бастап белгі қоямыз

//циферблат

While a<360 do

begin


x:=x0+Round(R*cos(a*2*pi/360));

y:=x0-Round(R*sin(a*2*pi/360));

Form1.Canvas.MoveTo(x,y);

if (a mod 30) do

then Canvas.Ellipse(x-2,y-2,x+3,y+3)

else Canvas.Ellipse(x-1,y-1,x+1,y+1)

a:=a+6; //1 минут - 6 градус

end;


//қарындаш, қыл қаламды қалпына келтіру

Canvas.Pen.Width:=pw;

Canvas.Pen.Color:=pc;

DrawClock;

end;

//сағат стрелкасының ағымдағы жағдайын салу



procedure Tform1.Timer1Timer(Sender: TObject);

begin


DrawClock;
end;
end.


Ұсынылатын әдебиеттер: [1-9]

Бекіту сұрақтары:

  1. Графикалық құралдары пайдалануға арналған кластарды атаңдар.

  2. Шрифт қандай кластың көмегімен құралады?

  3. Сызық қандай кластың көмегімен құралады?

  4. Толтыру қандай кластың көмегімен құралады?

  5. Кенеп қандай кластың көмегімен құралады?

  6. Қаламның қандай қасиеттері бар?

  7. Қылқаламның қызметі не?

  8. Графикалық бетке мәтін қалай шығарылады?

  9. Графикалық примитивтерді салудың қандай әдістері бар?

  10. Image компонентінің қызметі қандай?

  11. Сурет шығару үшін қандай компонент пайдаланылады?

  12. Мультипликация дегеніміз не?

  13. Мультимедиялық программалар қандай компоненттің көмегімен құралады?

  14. Видеороликтер, дыбысы бар анимациялар қандай компоненттердің көмегімен орындалады?

  15. Media Player компонентінде қандай қызметтер қамтылған?

  16. Дыбыс шығару үшін қандай компонент қолданылады?

Пайдаланылған әдебиеттер

  1. Давыдова Е.В., Скородумов И.А., Балаханов В.А. Создание базовых элементов интерфейса Windows программы в среде Delphi. Информатика и образование. № 4,5,6. 2002.

  2. Дудина И.П. Построение графиков функций в Delphi. Информатика и образование. №6, 2003, стр.27 -31.

  3. Кнопка Р. Создание оригинальных компонентов в среде Delphi. Пер.с англ.Рей.К.: НИПФ «Диа Софт ЛТД», 1996-152 с.

  4. Культин Н. Delphi 3. Программирование на Object Pascal. Санкт-Петербург, 1998. -304 с.

  5. Орлик С.В. Секреты Delphi на примерах. М.: Бином, 1996-136 с.

  6. В.Фаронов. Объектно-риентированная среда Delphi. Версия 6. Учебное пособие. «Русская редакция», 2002.

  7. М.Фленов. Библия Delphi. Санкт-Петербург «БХВ-Петербург», 2004-880 с.: ил.

  8. Халықова К.З., Бостанов Б., Тұрғанбаев А. Объектілі бағдарланған программалау жүйелерінің негіздері. Оқу құралы. Абай ат. ҚазҰПУ. Алматы, 2005-301 б.

  9. Халықова К.З. Паскаль тілінде программалау. Оқу құралы. Абай ат. АлМУ. Алматы, 2002-210 б.


Достарыңызбен бөлісу:
1   ...   27   28   29   30   31   32   33   34   35




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет