For...To...Do & function (Unterprogramm)
Unterprogramme sind Programmeinheiten, mit deren Hilfe die Konstruktion eines Programms vereinfacht werden kann.
Die Funktion besitzt genau ein Ausgangsgröße
(Funktionswert; Variablenparameter)).
Es sind beliebig viele Eingangsgrößen möglich ( Werteparameter).
Funktionsnamen sollten aussagekräftig gewählt werden.
Eine Funktion besteht aus einem Funktions-Block.
Sie besitzt folgenden prinzipiellen Aufbau:
FUNCTION name ( parameterliste ) : datentyp; { Funktionskopf} deklarationen { bei Bedarf } BEGIN { Funktionskörper} ausführbare Anweisungen name := ... ; END;
unit quadr_funkt;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, Mask;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Label5: TLabel;
Label6: TLabel;
Button3: TButton;
Button2: TButton;
StringGrid1: TStringGrid;
Label7: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
a,b,c,d,x1,x2 : real;
implementation
{$R *.dfm}
function diskr(a,b,c:real):real;
begin
diskr:=b*b-4*a*c;
end;
procedure TForm1.Button1Click(Sender: TObject);
var x,i : integer;
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.Text);
c:=strtofloat(edit3.text);
d:=diskr(a,b,c);
if d<0 then
begin
label5.caption:='Keine Lösung'
end;
if d=0 then
begin
label5.Caption:='Genau eine Lösung';
x1 := -b/ (2*a);
label6.Caption:=floatTOstrF(x1,FFFixed,3,4);
end;
if d>0 then
begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b+sqrt(d))/(2*a);
label5.Caption:='x1= '+ floatTOstrF(x1,FFFixed,3,4);
label6.Caption:='x2= '+ floatTOstrF(x2,FFFixed,3,4);
end;
x := -6;
for i := 1 to 11 do
begin
StringGrid1.Cells[i,1] := floatTostrF((a*(x+i)*(x+i) + b*(x+i) + c),ffFixed,10,2);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var i :integer;
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
label5.Caption:='';
label6.Caption:='';
for i := 1 to 11 do
begin
StringGrid1.Cells[i,1] := '';
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var i : integer;
begin
StringGrid1.Cells[0,0] := 'x';
StringGrid1.Cells[0,1] := 'y';
for i := 1 to 11 do
begin
StringGrid1.Cells[i,0] := intTostr(-6+i);
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
end. Temperatur IF...THEN....RadioButton(Auswahl)
Version 2 Quadratische Funktion mit Grafischer Darstellung
Quelltextauszug
Strecke berechnen | Zeichnen der Funktion |
procedure TForm1.strecke(x1,y1,x2,y2:real); var breite,hoehe:real; begin breite:=image1.ClientWidth; hoehe:=image1.ClientHeight; with image1.canvas do begin pen.Color:=clred; moveto(round((breite/2)+(breite/10)*x1),round((hoehe/2)- (hoehe/10)*y1)); lineto(round((breite/2)+(breite/10)*x2),round((hoehe/2)-(hoehe/10)*y2)); end; end; |
x1:=-5; while x1<5 do begin x2:=x1+0.05; y1:=a*x1*x1+b*x1+c; y2:=a*x2*x2+b*x2+c; canvas.pen.Color:=clblack; strecke(x1,y1,x2,y2); x1:=x1+0.05; end; |