Also:
Eine Prozedur und eine Funktion sind zwei vollkommen verschiedene Dinger...
Die Prozedur:
Wenn Du eine Prozedur aufrufst, dann ist das so ähnlich als wie wenn Du in Deinem Programm ein "unterprogramm" laufen lässt. Eine Prozedur kann während der Laufzeit Deines Programms Dinge im eigentlichen Programm verändern. Das heißt, dass du zum Beispiel eine Prozedur hast, die einer Variable einen bestimmten Wert zuweist.
Beispiel:
var x : Integer;
procedure Wert zuweisen();
begin
x := 5;
end;
Nach dem Aufrufen dieser Prozedur hat also die Variable x den Wert "5"
Mit einer Prozedur kannst Du zum Beispiel auch Dinge auf den Bildschirm zaubern. Angenommen Dein Bildschirm ist leer, und Du hast ne Prozedur, die Linien zeichnet, kannst Du wenn Du die Prozedur aufrufst Linien auf Deinen Bildschirm malen lassen.
Die Funktion:
Eine Funktion ist halt ne Funktion (wie auch in der Mathematik). Ne Funktion kann selbst nichts verändern, sondern bekommt in der Regel einen oder mehr Werte (zum Beispiel in Form von Parametern ->siehe unten) bereitgestellt, und berechnet aus diesen Werten dann irgend etwas neues.
Beispiel:
funtion Addieren(Zahl1, Zahl2 : integer):integer;
begin
result := Zahl1 + Zahl2;
end;
Das Bewirkt folgendes: Zahl1 und Zahl2 sind unsere Parameter, und zwar vom Typ Integer. Das heißt, dass der Computer weiß, dass er für diese Funktion zwei Werte bekommen kann, die beide eine Zahl beinhalten.
Also: Zahl1, Zahl2 : (vom Typ) Integer. Als Ergebnis gibt die Funktion auch wieder einen Integer-Wert (also ne Zahl) zurück.
Der eigentliche Anweisungsteil der Funtion macht dann folgendes:
result := Zahl1 + Zahl2
Das heißt: Das Resultat der Funktion ist gleich Zahl1 + Zahl2
->Funtkionen sind Hilfsmittel, mit denen Du Deinen Quellcode drastisch reduzieren kannst...
Parameter:
Parameter sind Werte, die an Funktionen und Prozeduren übergeben werden. Diese arbeiten dann mit den Parametern (ähnlich wie mit Variabeln)
und nun noch ein Beispiel, wie das alles zusammen funktioniert:
//ANFANG
var ausgeben : Integer;
function Addieren(Zahl1, Zahl2: Integer):Integer;
begin
result := Zahl1 + Zahl2;
end;
procedure Addition_anzeigen;
begin
ausgeben := Addieren(1, 2);
end;
//ENDE
Folgendes passiert:
Als erstes mal haben wir ne Variable, in der Zahlenwerte gespeichert werden können. Die ist uns erst mal egal, sie hat keinen Inhalt und wird auch nicht wirklich gebraucht...
Dann kommt die Funktion, die wir oben schon mal hatten. Sie ist in der Lage aus 2 Werten die sie als Parameter übergeben bekommt (Zahl1 und Zahl2) eine Summe zu bilden und diesen neuen Wert zurückzugeben.
Dann kommt die Prozedur, die letzten Endes innerhalb unseres Programms agieren kann. Die Prozedur ist nun dazu da 2 Werte an die Funktion zu übergeben, und das Ergebnis zu speichern, auszugeben oder weiter zu verwenden.
In unserem Fall speicher sie das Ergebnis in der Variablen "ausgeben"
Es passiert folgendes:
ausgeben "ist gleich" das Ergebnis der Funktion Addieren. Da die Funktion aber wissen muss was sie addieren soll, bekommt sie von der Prozedur 2 Werte mit auf den Weg, nämlich 1 und 2.
Im Endeffekt wird nach dem Aufruf der Prozedur "Addition_anzeigen" in der vorher leeren Variable "ausgeben" die Zahl 3 gespeichert sein
Hoffe mal, dass ich Dir was helfen konnte, und das das auch alles so stimmt, weil das bei mir mittlerweile auch ein gutes Jahr her ist, dass ich Informatik hatte. Falls irgendwas im Quellcode nicht stimmen sollt, kann das gut sein, weil ich nie Pascal hatte, sonder Delphi. Da Delphi aber auf Pascal basiert, sollte das eigentlich alles so stimmen....