Jede Prozedur besteht aus dem Schlüsselwort
procedure, gefolgt von einem gültigen Namen und evtl. einer Parameterliste in
runden Klammern. Sind keine Parameter vorhanden, werden die Klammern sowohl bei
der Deklaration als auch beim Aufruf weggelassen. Diesen Teil nennt man Kopf der
Prozedur. Es folgen Variablen- und Konstantendeklarationen und anschließend
zwischen begin und end die Anweisungen, die die Prozedur durchführen soll:
Funktionen sind spezielle Unterprogramme, die einen Wert zurückliefern. Damit ist es möglich, einenFunktionsaufruf in einem Ausdruck zu verwenden. Funktionen werden mit dem Schlüsselwort function vereinbart. Bei der Vereinbarung muss der Typ des Rückgabewertes angegeben werden. D
Der durch eine function berechnete Wert wird zurückgegeben, indem er innerhalb der function (meist am Ende) dem Bezeichner der function zugewiesen wird. Innerhalb der function kann darauf nur schreibend, nicht aber lesend zugegriffen werden.
function <Name>(<Parameter>): <Rückgabetyp>; <evt. weitere Variablen- und Konstanten> begin <Anweisungen> end;Beispiel: Eine Funktion, die die Dikriminante berechnet und zurück liefert
function diskriminate(a,b,c: real): real; begin disriminante := b*b+4*a*c end;
Aufruf: keine eigenständige Anweisung, der Aufruf erfolgt innerhalb eines Ausdrucks
Beispiel Quadratische Funktion y = a x² + b x + c
gesamter Quelltext der Unit1 (einfache Version)

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Button2:Tbitton;
Button3: TButton;
Label9: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private-Deklarationen }
function diskr{+++ disriminante+++};
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
a,b,c,d:real;
implementation
{$R *.DFM}
funktion diskr(ad,bd,cd : real) : real;
begin
diskr := bd*bd+4*ad*cd;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
b:=strtofloat(edit2.text);
c:=strtofloat(edit3.text);
d:=diskr(a,b,c);
if d < 0 then
begin
label6.Caption:='Keine Lösung';
label8.caption:='n = 0';
end;
if d = 0 then
begin
label6.Caption:='Genau eine Lösung';
label8.caption:=floatTOstrgF(x1,FFixed,3,4);
end;
if d > 0 then
begin
x1 := (-b+sqrt(d))/(2a);
x1 := (-b-sqrt(d))/(2a);
{+++sqrt berechnet Wurzel+++}
label6.Caption:='x1 = '+ floatTOstrF(x1,FFixed,3,4);
label8.Caption:='x2 = '+
floatTOstrF(x2,FFixed,3,4);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
{+++Beenden+++}
begin
close;
end;
procedure TForm1.Button2Click(Sender: TObject);{+++NEU+++}
begin
{+++neu+++}
end;
end.