BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

der Universität Oldenburg
Rekursionen Erstellt von J. Rudolf im November 2001 /
Ausdrücke bezeichnen Elemente eines Datentyps induktive Definition:
10. Grundlagen imperativer Programmiersprachen
12. Iteration und Rekursion
Progwerkstatt JAVA Klasse, Objekte, Konstruktoren, Methoden
Rekursion Was ist Rekursion? Was sind rekursive Methoden?
Puck eine visuelle Programmiersprache für die Schule
Imperative Programmierung
der Universität Oldenburg
DINAMISCHE STRUKTUREN FACHBEGRIFFE 1. DER POINTERDER POINTER 2. DER BUFFERDER BUFFER 3. DER KNOTENDER KNOTEN DIE EINFACHVERKETTETE LISTE DEFINITION DEFINITION.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung Funktionen und Parameter
PKJ 2005/1 Stefan Dissmann Methoden (Motivation) Idee: Identische Programmabschnitte zusammenfassen und mit einem Namen versehen Vorteile: Übersichtlichkeit.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0);
DVG Methoden 1 Methoden. 2 int dezi = Integer.parseInt(args[0]); boolean vz = (dezi>=0); dezi = Math.abs(dezi); String Bin = ""; do { } while.
Grundkonzepte Java - Klassendefinition
Java programmieren mit JavaKara
Einführung in das Programmieren mit JavaScript Mag. Andreas Starzer weloveIT – EDV Dienstleistungen.
Informatik 1 Übung 2.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Basisinformationstechnologie HK-Medien
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Wiederholte Programmausführung
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 5 Dr. W. Narzt u. Dr. A. Stritzinger.
2.4 Rekursion Klassifikation und Beispiele
Konzept einer Programmiersprache!
Prozess-synchronisation
Grundkonzepte des Programmierens (mit ActionScript)
Purga - Scriptengine Ein Einblick.
Prof. Dr.-Ing. Franz-Josef Behr
Kapitel 2: Grundelemente von Programmiersprachen
Algorithmen und Datenstrukturen Übungsmodul 8
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Algorithmen und Datenstrukturen SS 2005
MODULA-2.
Agenda für heute, 18. Mai, 2006 Strukturierung von Programmen: ProzedurenStrukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units.
Datentypen: integer, char, string, boolean
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Variablen. var meineZahl:Number = 7; meineZahl 7 Name TypWert = Zuweisung von Variablen.
Informatik II Grundlagen der Programmierung Programmieren in C Funktionen, Adressen, Zeiger Hochschule Fulda – FB ET Sommersemester 2014
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
Kurzreferat über Funktionen und Prozeduren Von Alexander RothHomepage:
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
The Programming Language Pascal
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Programmiersprache PASCAL
Unterprogramme / Methoden
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Dr. Wolfram Amme, Funktionale Programmierung, Informatik II, FSU Jena, SS Funktionale Programmierung.
Parametrisierte Prozeduren und Funktionen
Einführung in die Programmierung
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
The Programming Language Pascal
 Präsentation transkript:

BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03

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.

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 ;

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 Hauptprogramm FOR Zeile := 1 TO 5 DO BEGIN Sterne(Zeile) ; Writeln END END.

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.

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.

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 := True ELSE Schalt := False; END ;

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.

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.

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 ; }

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".

BIT – Schaßan – WS 02/03 Beispiel Top-Down-Entwurf PROGRAM Spiel ; VAR Spieler : Integer ; Fertig : Boolean PROCEDURE ZeigeSpiel ; BEGIN END ; PROCEDURE MacheZug; BEGIN END ; FUNCTION SpielEnde : Boolean ; BEGIN SpielEnde := True ; END ; …

BIT – Schaßan – WS 02/03 Beispiel Top-Down-Entwurf (2) BEGIN Fertig := False ; Spieler := 1 ; REPEAT ZeigeSpiel ; MacheZug ; IF SpielEnde THEN Fertig := True ELSE SpielerWechsel UNTIL Fertig ; GratuliereDemSieger END.

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.

BIT – Schaßan – WS 02/03 Schachtelung von Unterprogrammen (2)

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.

BIT – Schaßan – WS 02/03 Beispiel Rekursive Funktion Beispiel: Fakultätsfunktionfact(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 := 1 ELSE fact := n*fact(n-1) END ;

BIT – Schaßan – WS 02/03 Beispiel Rekursive Funktion (2) IF n = 0 THEN fact := 1 ELSE fact := n*fact(n-1)

BIT – Schaßan – WS 02/03 Beispiel 2 Rekursive Funktion FUNCTION ggT(x,y : Integer) : Integer ; BEGIN IF x = y THEN ggT := x ELSE IF x > y THEN ggT := ggT(x-y,y) ELSE ggT := ggT(x,y-x) END ;

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 ;

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.

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 := True ELSE Even := Odd(n-1) END ; FUNCTION Odd( n : Integer ) : Boolean ; BEGIN IF n = 0 THEN Odd := False ELSE Odd := Even(n-1) END ;

BIT – Schaßan – WS 02/03 Zuweisungsorientierte Programmierung Die Anweisungen (statements) eines Programms sind folgendermaßen definiert: ::=nop |abort | | | | | |