13. Funktionen
a) Standard-Funktionen in PASCAL bzw. DELPHI
Abs(x) |x|
Sqr(x) x2
Sqrt(x) √x
Ln(x) ln x
Sin(x) sin x
Cos(x) cos x
ArcTan(x) cos-1x
Exp(x) ex
Außerdem:
Int(x) Ganzzahliger Anteil von x ( entspricht der Gaußschen Klammer [x] )
Frac(x) Gebrochener Anteil von x ( Nachkommastellen)
Trunc(x) Schneidet die Nachkommastellen ab. Ergebnis ist im Gegensatz zu Int(x) vom Typ integer.
Ein Beispiel zur Integerfunktion:
Mit a/b = Int(a/b) lässt sich prüfen, ob b eine Teiler von a ist.

procedure TForm1.Button1Click(Sender: TObject);
var n,t : integer;
begin
n := StrToInt(Edit1.Text);
memo1.Text := '1';
for t:=2 to n do
begin
if n/t=Int(n/t) then
memo1.Text := Memo1.Text + ', ' + IntToStr(t);
end;
end;
b) Selbstdefinierte Funktionen
Im Gegensatz zu Prozeduren geben Funktionen einen Wert zurück. Bei der Deklaration einer Funktion muss daher der Typ des Funktionswertes angegeben werden.
Um den Funktionswert an das aufrufende Programm zurück zu geben, wird er der formalen variablen result zugewiesen.
Die Syntax für Funktionen ist:
function <Funktionsname> ( <Parameterliste> ) : <Typ des Funktionswerts>;
begin
. . .
result := <Funktionswert>
end;
Damit lassen sich fehlende Funktionen nachdefinieren, wie zum Beispiel den Tangens nach der Formel
Um die Winkel im Dreieck aus den Seiten nach dem Kosinussatz c2 = a2 + b2 - 2ab. cos(g ) berechnen zu können, brauchen wir die Umkehrfunktion des Cosinus, den Arcuscosinus
.
Beispiel:

function Arccos(x: real): real;
begin
if Abs(x)<0.0000001 then
result := 90
else
result :=Arctan(Sqrt(1-Sqr(x))/x) * 180/Pi;
end; {function Arccos}
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,alpha,beta,gamma: real;
begin
a := StrToFloat(Edita.Text);
b := StrToFloat(Editb.Text);
c := StrToFloat(Editc.Text);
alpha := Arccos( (b*b+c*c-a*a) / (2*b*c));
beta := Arccos( (a*a+c*c-b*b) / (2*a*c));
gamma := Arccos( (a*a+b*b-c*c) / (2*a*b));
EditAlpha.Text := Format('%4.1f°',[Alpha]);
EditBeta.Text := Format('%4.1f°',[Beta]);
EditGamma.Text := Format('%4.1f°',[Gamma]);
end;
Aufgaben :
Abs(x) |x| |
Sqr(x) x2 |
Sqrt(x) √x |
Ln(x) ln x |
Sin(x) sin x |
Cos(x) cos x |
ArcTan(x) cos-1x |
Exp(x) ex |
|
Außerdem: Int(x) Ganzzahliger Anteil von x ( entspricht der Gaußschen Klammer [x] ) Frac(x) Gebrochener Anteil von x ( Nachkommastellen) Trunc(x) Schneidet die Nachkommastellen ab. Ergebnis ist im Gegensatz zu Int(x) vom Typ integer. |
|||
Ein Beispiel zur Integerfunktion: |
Mit a/b = Int(a/b) lässt sich prüfen, ob b eine Teiler von a ist. |
![]() |
procedure TForm1.Button1Click(Sender: TObject);
var n,t : integer;
begin
n := StrToInt(Edit1.Text);
memo1.Text := '1';
for t:=2 to n do
begin
if n/t=Int(n/t) then
memo1.Text := Memo1.Text + ', ' + IntToStr(t);
end;
end;
|
Im Gegensatz zu Prozeduren geben Funktionen einen Wert zurück. Bei der Deklaration einer Funktion muss daher der Typ des Funktionswertes angegeben werden.
Um den Funktionswert an das aufrufende Programm zurück zu geben, wird er der formalen variablen result zugewiesen.
Die Syntax für Funktionen ist:
function <Funktionsname> ( <Parameterliste> ) : <Typ des Funktionswerts>;
begin
. . .
result := <Funktionswert>
end;
|
Damit lassen sich fehlende Funktionen nachdefinieren, wie zum Beispiel den Tangens nach der Formel
Um die Winkel im Dreieck aus den Seiten nach dem Kosinussatz c2 = a2 + b2 - 2ab. cos(g ) berechnen zu können, brauchen wir die Umkehrfunktion des Cosinus, den Arcuscosinus
.
Beispiel:
![]() |
function Arccos(x: real): real;
begin
if Abs(x)<0.0000001 then
result := 90
else
result :=Arctan(Sqrt(1-Sqr(x))/x) * 180/Pi;
end; {function Arccos}
procedure TForm1.Button1Click(Sender: TObject);
var a,b,c,alpha,beta,gamma: real;
begin
a := StrToFloat(Edita.Text);
b := StrToFloat(Editb.Text);
c := StrToFloat(Editc.Text);
alpha := Arccos( (b*b+c*c-a*a) / (2*b*c));
beta := Arccos( (a*a+c*c-b*b) / (2*a*c));
gamma := Arccos( (a*a+b*b-c*c) / (2*a*b));
EditAlpha.Text := Format('%4.1f°',[Alpha]);
EditBeta.Text := Format('%4.1f°',[Beta]);
EditGamma.Text := Format('%4.1f°',[Gamma]);
end;
|
Definieren Sie folgende Funktionen:
die Fakultät einer natürlichen Zahl n und den Binomialkoeffizienten "n über k"
den ggT und das kgV von zwei nat. Zahlen a und b
prim(x) soll prüfen ob eine Zahl Primzahl ist und true oder false zurück geben.
- DMSToDeg(d,m,s) soll Grad, Minuten u. Sekunden in Dezimalgrade umrechnen. Bsp.: 53°4714"® 53.7873
Einführung in das Programmieren mit DELPHI
