Download - BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03
![Page 1: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/1.jpg)
BIT – Schaßan – WS 02/03
Basisinformationstechnologie
HK-Medien
Teil 1, 11.SitzungWS 02/03
![Page 2: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/2.jpg)
BIT – Schaßan – WS 02/03
Unterprogramme
Große Programmierprobleme sollten in kleinere Teilprobleme, und diese möglich-erweise wiederum in kleinere Teilprobleme, zerlegt werden.Das Programm löst das Problem, die Unterprogramme lösen die Teilprobleme.Unterprogramme müssen im Hauptpro-gramm deklariert und von dort aus aufge-rufen werden.
![Page 3: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/3.jpg)
BIT – Schaßan – WS 02/03
Beispiel Unterprogramm
PROCEDURE Sterne( k : Integer) ;VAR i := Integer ;BEGIN
FOR i := 1 TO k DO write( 'x' )END ;
![Page 4: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/4.jpg)
BIT – Schaßan – WS 02/03
Beispiel Unterprogramm (2)
PRORAM Dreieck;VAR Zeile : integer;PROCEDURE Sterne( k : Integer) ;
VAR i : Integer ;BEGIN
FOR i := 1 TO k DO write( 'x' )END ;
BEGIN hier beginnt das HauptprogrammFOR Zeile := 1 TO 5 DOBEGIN
Sterne(Zeile) ;Writeln
ENDEND.
![Page 5: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/5.jpg)
BIT – Schaßan – WS 02/03
Prozedurale Abstraktion
Die Vorgehensweise, Teilprobleme durch Prozeduren zu lösen, nennt man prozedurale Abstraktion.Ein Prozeduraufruf ist eine Anweisung und darf überall dort stehen, wo syntaktisch eine Anweisung erlaubt ist.
![Page 6: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/6.jpg)
BIT – Schaßan – WS 02/03
Funktionale Abstraktion
Wenn ein Unterprogramm nicht nur eine Anweisung ausführen, sondern einen Wert zurückgeben soll, muss der Aufruf anders formuliert und weitere Parameter angegeben werden.Der Aufruf muss ein wohlgeformter Ausdruck sein und darf überall dort stehen, wo syntaktisch ein Ausdruck erlaubt ist.
![Page 7: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/7.jpg)
BIT – Schaßan – WS 02/03
Beispiel Funktionale Abstraktion
FUNCTION Schalt ( x : Integer ) : Boolean ;BEGIN
IF x MOD 4 = 0 THEN IF x MOD 100 = 0 THEN IF x MOD 400 = 0 THEN Schalt := True ELSE Schalt := False ELSE Schalt := TrueELSE Schalt := False;
END ;
![Page 8: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/8.jpg)
BIT – Schaßan – WS 02/03
Bestimmung des Rückgabewertes
In Pascal dient der Name der Funktion gleichzeitig als Variable zur Aufnahme des Rückgabewertes. Maßgeblich ist der Wert, der sich in der Variable befindet, wenn das Unterprogramm terminiert.Der Programmierer muss Sorge tragen, dass der gewünschte Wert gespeichert wird.
![Page 9: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/9.jpg)
BIT – Schaßan – WS 02/03
Abstraktionen bei C und Java
In C und Java müssen Rückgaben explizit vorgenommen werden. Dies geschieht mit Hilfe der Anweisung return. Das Unterprogramm wird sofort verlassen.In diesen Sprachen gibt es keine klare Trennung zwischen Anweisungen und Ausdrücken, bzw. zwischen Funktionen und Prozeduren.
![Page 10: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/10.jpg)
BIT – Schaßan – WS 02/03
Beipiel Abstraktion in C und Java
int ggT (int x, int y) {while ( x != y ) {
if ( x > y ) x = x – y ;else y = y – x ;
}return x ;
}
![Page 11: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/11.jpg)
BIT – Schaßan – WS 02/03
Top-Down-Entwurf
In der Praxis der Programmierung kann man die prozedurale Abstraktion einsetzen, um ein Problem von Anfang an in immer kleiner werdende Teilprobleme zu zerlegen.Jedes Teilproblem wird sofort als Prozedur (ohne Anweisungen) deklariert und ist damit "compilierbar".
![Page 12: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/12.jpg)
BIT – Schaßan – WS 02/03
Beispiel Top-Down-Entwurf
PROGRAM Spiel ;VAR Spieler : Integer ; Fertig : BooleanPROCEDURE ZeigeSpiel ;
BEGINEND ;
PROCEDURE MacheZug;BEGINEND ;
FUNCTION SpielEnde : Boolean ;BEGIN
SpielEnde := True ;END ;
…
![Page 13: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/13.jpg)
BIT – Schaßan – WS 02/03
Beispiel Top-Down-Entwurf (2)
BEGINFertig := False ;Spieler := 1 ;REPEAT
ZeigeSpiel ;MacheZug ;IF SpielEnde THEN Fertig := TrueELSE SpielerWechsel
UNTIL Fertig ;GratuliereDemSieger
END.
![Page 14: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/14.jpg)
BIT – Schaßan – WS 02/03
Schachtelung von Unterprogrammen
Jedes Unterprogramm kann seinen eigenen lokalen Deklarationsteil haben, wo Variablen oder weitere Unterprogramme deklariert werden.Dort erklärte, lokale Variablen sind nach außen nicht sichtbar, alle Variablen des umfassenden (aus Sicht des Unterprogramms globalen) Programms sind sicht- und veränderbar.In Pascal sind beliebige Schachtelungstiefen von Unterprogrammen möglich.
![Page 15: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/15.jpg)
BIT – Schaßan – WS 02/03
Schachtelung von Unterprogrammen (2)
![Page 16: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/16.jpg)
BIT – Schaßan – WS 02/03
Rekursive Funktionen
Funktionen können rekursiv sein, d.h. innerhalb der Funktion wird die gleiche Funktion wieder aufgerufen, sie ruft sich gleichsam selbst auf.Die Funktion muss terminieren, d.h. die rekursiv aufgerufene Funktion muss irgendwann einen Wert erhalten, welcher in die anderen Funktionen eingesetzt werden kann.
![Page 17: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/17.jpg)
BIT – Schaßan – WS 02/03
Beispiel Rekursive Funktion
Beispiel: Fakultätsfunktion fact(n) = n!
fact(0) = 1 fact(n) = n * fact(n-1), für alle n > 0
FUNCTION fact(n : Integer) : Integer ;BEGIN
IF n = 0 THEN fact := 1ELSE fact := n*fact(n-1)
END ;
![Page 18: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/18.jpg)
BIT – Schaßan – WS 02/03
Beispiel Rekursive Funktion (2)
IF n = 0 THEN fact := 1 ELSE fact := n*fact(n-1)
![Page 19: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/19.jpg)
BIT – Schaßan – WS 02/03
Beispiel 2 Rekursive Funktion
FUNCTION ggT(x,y : Integer) : Integer ;BEGIN
IF x = y THEN ggT := xELSE IF x > y THEN ggT := ggT(x-y,y)ELSE ggT := ggT(x,y-x)
END ;
![Page 20: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/20.jpg)
BIT – Schaßan – WS 02/03
Rekursive Prozeduren
Wie eine Funktion kann auch eine Prozedur rekursiv aufgerufen werden.
Beispiel: writeBin wandelt eine natürliche Zahl in eine Binärzahl um
PROCEDURE writeBin (n : Integer)BEGIN
IF n < 2 THEN write(n)ELSE BEGIN writeBin(n div 2) ; write(n mod 2) END
END ;
![Page 21: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/21.jpg)
BIT – Schaßan – WS 02/03
Backtracking
Es ist möglich, mit der Rekursion eine "Abfrage" zu verknüpfen: Möglichkeiten werden der Reihe nach getestet; wenn eine nicht erfolgreich war, wird der Versuch zurückgezogen und die nächste Möglichkeit getestet.Diese Möglichkeit heißt Backtracking.
![Page 22: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/22.jpg)
BIT – Schaßan – WS 02/03
Wechselseitige Rekursion
Wenn in der Definition f ein Aufruf der Funktion g vorkommt und umgekehrt, liegt eine wechselseitige Rekursion vor.
FUNCTION Even( n : Integer ) : Boolean ;BEGIN
IF n = 0 THEN Even := TrueELSE Even := Odd(n-1)
END ;FUNCTION Odd( n : Integer ) : Boolean ;BEGIN
IF n = 0 THEN Odd := FalseELSE Odd := Even(n-1)
END ;
![Page 23: BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03](https://reader035.vdokument.com/reader035/viewer/2022062417/55204d7549795902118c97e5/html5/thumbnails/23.jpg)
BIT – Schaßan – WS 02/03
Zuweisungsorientierte Programmierung
Die Anweisungen (statements) eines Programms sind folgendermaßen definiert:
<statement> ::= nop |abort | <sequential composition>
|<assignment statement> |<conditional stmt> |<while stmt> | <block> |<procedure call>