Die Unterprogrammtechnik - lehrer
Die Unterprogrammtechnik - lehrer
Die Unterprogrammtechnik - lehrer
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
program funkt_1;<br />
uses crt;<br />
var a,b,c : integer;<br />
frage : char;<br />
procedure eingabe (ch:char;var x:integer);<br />
begin<br />
write ('<strong>Die</strong> ',ch,'. Zahl eingeben: ');<br />
readln (x);<br />
end;<br />
function max(x,y,z:integer):integer; <br />
var m : integer; <br />
begin<br />
m:=x;<br />
if y>m then m:=y;<br />
if z>m then m:=z;<br />
max:=m; <br />
end;<br />
begin<br />
repeat<br />
clrscr;<br />
eingabe('1',a);<br />
eingabe('2',b);<br />
eingabe('3',c);<br />
writeln ('Maximum der drei Zahlen = ',max(a,b,c)); <br />
write ('Noch eine Berechnung (j/n)?');<br />
readln (frage);<br />
until upcase(frage)='N'<br />
end.<br />
<strong>Die</strong> Vereinbarung einer Funktion wird mit dem Schlüsselwort FUNCTION eingeleitet, dem der<br />
Name der Funktion folgt. Danach folgt optional die Parameterliste mit Wertparametern (in<br />
unserem Beispiel die drei INTEGER-Zahlen) und Variablenparametern (wieder mit VAR). Zusätzlich<br />
muß in der FUNCTION-Vereinbarung der Typ der Funktion festgelegt werden. <strong>Die</strong>ser<br />
entspricht dem Datentyp des Funktionsergebnisses und kann jeder einfache Datentyp<br />
(INTEGER, REAL, CHAR, BOOLEAN, STRING) sein. Der Typ der Funktion wird nach der<br />
Parameterliste, getrennt durch einen Doppelpunkt, angegeben.<br />
Für lokale und globale Variablen gelten alle Aussagen wie bei den Prozeduren.<br />
Wichtig ist, daß im Anweisungsteil der Funktion dem Funktionsnamen das Funktionsergebnis<br />
in einer Wertzuweisung zugeordnet wird.<br />
funktionsname:=funktionsergebnis;<br />
Aufruf der Funktion direkt in der WRITELN-Zeile. Der Ausdruck max(a,b,c) wird dann<br />
durch den Funktionswert ersetzt. Ebenso möglich ist auch die Zuweisung des<br />
Funktionswertes an eine Variable:<br />
...<br />
var a,b,c,ergebnis : integer;<br />
...<br />
ergebnis:=max(a,b,c);<br />
writeln ('Maximum der drei Zahlen = ',ergebnis);<br />
...<br />
Funktionsaufrufe können in Ausdrücken direkt verwendet werden, wie z.B.:<br />
ergebnis:=3*(max(a,b,c)+15);<br />
Aufbau einer Funktion (reservierte TP - Wörter in Großbuchstaben):<br />
Wolfgang Demel | TP Upro Skriptum Querformat.doc | Seite 5<br />
FUNCTION Funktionsname (Parameterliste):Ergebnistyp; {Funktionskopf}<br />
{Vereinbarungsteil}<br />
CONST ... {Vereinbarung von lokalen Konstanten}<br />
VAR ... {Vereinbarung von lokalen Variablen}<br />
BEGIN {Anweisungsteil}<br />
Anweisung 1;<br />
Anweisung 2;<br />
...<br />
Anweisung x;<br />
Funktionsname:=Funktionsergebnis; {Zuordnung des Funktionswertes}<br />
END; {Ende der Funktion}<br />
Wie wichtig benutzerdefinierte Funktionen sind, erkennen wir, wenn wir uns den Vorrat an Funktionen<br />
ansehen, den uns Turbo Pascal standardmäßig zur Verfügung stellt.<br />
Turbo Pascal Standardfunktionen:<br />
Ergebnis- Ergebnis der Funktion Beispiel<br />
typ Argument Ergebnis<br />
ABS(x) REAL Absolutbetrag von x -3.25 3.25<br />
SQR(x) REAL Quadrat von x 5.0 25.0<br />
SQRT(x) REAL Quadratwurzel von x (x ≥ 0) 25.0 5.0<br />
SIN(x) REAL Sinus von x (in Radiant) PI/2 1.0<br />
COS(x) REAL Cosinus von x (in Radiant) PI -1.0<br />
ARCTAN(x) REAL Arcustangens von x (in Radiant) PI 1.262...<br />
PI REAL die Konstante π ----- 3.141...<br />
LN(x) REAL Natürl. Logarithmus von x (positiv) 100 4.605...<br />
EXP(x) REAL Exponentialfunktion von x (e x ) 1.0 2.718...<br />
TRUNC(x) INTEGER Umwandlung in INTEGER durch abschneiden<br />
der Dezimalstellen<br />
11.8 11<br />
ROUND(x) INTEGER Rundung auf ganzzahligen Wert 11.8 12<br />
INT(x) REAL ganzzahliger Anteil von x 11.234 11.0<br />
FRAC(x) REAL nicht-ganzzahliger Anteil von x 11.234 0.234<br />
Es fehlen viele oft gebrauchte Funktionen. Als Beispiele sollen die Winkelfunktion Tangens und<br />
die Berechnung von Potenzen herausgegriffen werden.