5 Funkcja kwadratowa, Instrukcja 5 funkcja kwadratowa normalizacja

background image

1

Instrukcja 5

Cel ćwiczenia : Napisanie aplikacji rysującej wykres funkcji kwadratowej.

Rys. 1 Widok formularza z umieszczonymi komponentami

1. Uruchomić Delphi.

2. Przejść do widoku kodu źródłowego przyciskiem F12.

3. W części Interface (pod uses) umieścić następujący kod:

const Nmax = 10000;
ppX=25;
ppY=25;
type
wym = 1..Nmax;
TablWsp = Array[wym] of Real;


4. W części private klasy TForm1 umieścić deklaracje zmiennych i nagłówki funkcji

Normalizacja i Osie:

N,X0,Y0,ZX,ZY: Integer;
dx,xmin,xmax: Real;
xx,yy,X,Y: TablWsp;
a,b,c:double;

background image

2

kolW,kolO,kolWyp : TColor;

procedure Normalizacja(N,A,B: Integer; xx,yy: TablWsp;
var X,Y: TablWsp);
procedure Osie(X0,Y0,A,B: Integer; x,y: String;T: TCanvas);

5. W części implementation napisać definicje funkcji:

procedure TForm1.Normalizacja;
var
i: Integer;
dX,dY,G,Kx,Ky,xmin,xmax,ymin,ymax,Sx,Sy: Real;
begin
A:=A-2*ppx; B:=B-2*ppY;
xmin:=xx[1]; xmax:=xx[1];
ymin:=yy[1]; ymax:=yy[1];
for i:=2 to N do begin
if xx[i] < xmin then xmin:=xx[i];
if xx[i] > xmax then xmax:=xx[i];
if yy[i] < ymin then ymin:=yy[i];
if yy[i] > ymax then ymax:=yy[i];
end;
Sx:=xmax-xmin;
Sy:=ymax-ymin;
for i:=1 to N do begin
X[i]:=xx[i]-xmin;
Y[i]:=Abs(yy[i]-ymin-Sy);
end;
G:=1;
dX:=A-Sx;
dY:=B-Sy;
if dX/A <= dY/B then begin
Kx:=A/Sx;
Ky:=G*Kx;
end
else begin
Ky:=B/Sy;
Kx:=Ky/G
end;
for i:=1 to N do begin
X[i]:=Kx*X[i]+ppX;
Y[i]:=Ky*Y[i]+ppY;
end;
end;

procedure TForm1.Osie;
begin
with T do begin
MoveTo(0,Y0);

background image

3

LineTo(A,Y0);
LineTo(A-8,Y0-3);
LineTo(A,Y0);
LineTo(A-8,Y0+3);
TexTout(A-15,Y0+6,x);
MoveTo(X0,B);
LineTo(X0,0);
LineTo(X0-3,8);
MoveTo(X0,0);
LineTo(X0+3,8);
TextOut(X0-11,9,y);
end;
end;


6. Umieścić na formularzu komponent Image i ustawić następujące parametry:

• Width : 400
• Height : 400

7. Umieścić na formatce komponent Button i ustawić własność Caption na Rysuj.

8. Umieścić na formatce 6 komponentów Edit i ustawić parametry według następujących

wskazówek:

Domyslna nazwa:

Zmienić własność name na:

Zmienić własność tekst na:

Edit1

EN

50

Edit2

Exmin

-1,5

Edit3

Exmax

1,5

Edit4

Ea

1

Edit5

Eb

1

Edit6

Ec

1


9. Obok komponentów Edit można umieścić komponenty Label w celu opisania, który

komponent odpowiada za poszczególne zmienne.

10. Wygenerować zdarzenie OnClick dla komponentu Buton i wpisać następujący kod:

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin

N:=StrToInt(EN.Text);
xmin:=StrToFloat(Exmin.Text);
xmax:=StrToFloat(Exmax.Text);

a:=StrToFloat(Ea.Text);
b:=StrToFloat(Eb.Text);
c:=StrToFloat(Ec.Text);

background image

4

with Image1.Canvas do begin

//czyszczenie okna

Brush.Color:=kolWyp;
Brush.Style:=bsSolid;
FillRect(Rect(0,0,Image1.Width,Image1.Height));

//wykres

xx[1]:=0; yy[1]:=0;
dx:=(xmax-xmin)/N;
for i:=0 to N do begin
xx[i+2]:=xmin+i*dx;
yy[i+2]:=a*xx[i+2]*xx[i+2]+b*xx[i+2]+c;
end;

ZX:=Image1.Width; ZY:=Image1.Height;
Normalizacja(N+2,Image1.Width,Image1.Height,xx,yy,X,Y);
X0:=Round(X[1]); Y0:=Round(Y[1]);
Pen.Color:=kolO;
Osie(X0,Y0,ZX,ZY,'x','y',Image1.Canvas);
Pen.Color:=kolW;
MoveTo(Round(X[2]),Round(Y[2]));
for i:=3 to N+2 do
LineTo(Round(X[i]),Round(Y[i]));
end;
end;

11. Wygenerować zdarzenie OnCreate dla komponentu Form1 i wpisać następujący kod:

procedure TForm1.FormCreate(Sender: TObject);
begin
kolW:=clBlack;
kolO:=clBlue;
kolWyp:=clWhite;
end;


12. Umieścić komponenty: RadioGroup, Button, ColorDialog.
13. Wybrać własność Items dla RadioGroup i wpisać następujące pozycje:

kolor wykresu
kolor osi
kolor wypełnienia

Własność ItemIndex dla RadioGroup1 ustawić na 0, natomiast własność Caption
ustawić na pustą.


14. Własność Caption dla przycisku Button ustawić na: Wybór koloru.

background image

5

15. Wygenerować zdarzenie OnClick dla przycisku i wpisać następujący kod

odpowiedzialny za wybór koloru.

procedure TForm1.Button2Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
0 : begin
if Colordialog1.Execute then
kolW:=ColorDialog1.Color;
end;
1 : begin
if Colordialog1.Execute then
kolO:=ColorDialog1.Color;
end;
2 : begin
if Colordialog1.Execute then
kolWyp:=ColorDialog1.Color;
end;
end;
end;


14. Skompilować i uruchomić program przyciskiem F9 na klawiaturze komputera.

Rys. 2 Uruchomiony program


Wyszukiwarka

Podobne podstrony:
5 Funkcja kwadratowa, Instrukcja 5 - funkcja kwadratowa - normalizacja
Postać kanoniczna funkcji kwadratowej
Funkcja kwadratowa
funkcja kwadratowa praca klasowa
FUNKCJA KWADRATOWA teoria oraz zadania
Funkcja kwadratowa, matematyka
funkcja kwadratowa, Technikum, Matematyka
Matematyka Funkcja kwadratowa
zadania funkcja kwadratowa
2 Funkcje liniowe kwadratowe wielomianowe
4 Funkcja kwadratowa
Wartości funkcji t-Studenta, chi-kwadrat i współczynnika korelacji prostej(Pearsona)
225 Miejsca Zerowe Funkcji Kwadratowej
FUNKCJA KWADRATOWA, Matematyka
funkcja kwadratowa (2), Matematyka, Liceum
Własności funkcji kwadratowej
274 zadania funkcje kwadratowe

więcej podobnych podstron