Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

ALP II: Objektorientierte Programmierung Sommersemester 2006 Elfriede Fehr, Mohammad Al Saad.

Ähnliche Präsentationen


Präsentation zum Thema: "ALP II: Objektorientierte Programmierung Sommersemester 2006 Elfriede Fehr, Mohammad Al Saad."—  Präsentation transkript:

1 ALP II: Objektorientierte Programmierung Sommersemester 2006 Elfriede Fehr, Mohammad Al Saad

2 Teil I: Grundlagen der Berechenbarkeit Die Programmiersprache WHILE und die universelle Registermaschine WHILE-Anweisungen: x := 0; x := x + 1; x := x – 1; while x y do end Befehlssatz der Registermaschine: zero i succ i pred i je i, j, m goto m

3 Übersetzung von WHILE-Programmen in Registermaschinenprogramme : Erster Schritt: Erzeugen der Symboltabelle st Beispiel für eine Symboltabelle Variablen im WHILE- Programm Korrespondierende Adressen im Datenspeicher a0 x1 y2 h3

4 Zweiter Schritt: Anwendung des Übersetzungsschemas (Ü) x := 0;zero st(x) x := x + 1;succ st(x) x := x – 1;pred st(x) while x y do m : je st(x), st(y), k Ü endgoto m k : … Achtung: m ist die Adresse des ersten Befehls, der zur While-Schleife gehört und k ist die Adresse des ersten Befehls, der nicht mehr zur While-Schleife gehört.

5 Beispiel: Fakultätsfunktion Funktionales Programm (Haskell): f 0 = 1 f x = x * f (x - 1) Imperatives Programm (in der Sprache WHILE): y := 1; h:= 0; while x h do y := x * y; x := x - 1; end

6 Übersetzung des WHILE-Programms in ein Registermaschinenprogramm WHILE- Anweisung Nr. im Befehls- register Maschinenbefehl y := 1; 0one 0 h := 0; 1zero 2 while x h do 2je 1, 2, 6 y := h y; 3mult 0 1 h := h - 1; 4pred 1 end 5goto 2 6stop

7 Übersetzung von WHILE nach Java y := 1;y = 1; while x 0 dowhile (x != 0) { y := x y; y = x y; x := x - 1; x = x - 1; end} Übersetzung von Java in Bytecode analog zur Übersetzung von WHLIE in Registermaschinenprogramme. Illustration unter

8 Ein vollständiges Java-Programm public class Fak { //Aufruf: Fak x, Ausgabe: Fakultät von x = Ergebnis //Hauptprogramm public static void main (String[] args) { // Deklaration aller benötigter Variablen int x, y, h; // Eingabe von x x = Integer.parseInt (args[0]); // Berechne y := Fakultät von x y = 1; h = x; while (h != 0) { y = h y; h = h - 1; } // Ausgabe des kommentierten Ergebnisses System.out.println("Fakultät von " + x + " = " + y); }

9 Teil II: Datentypen in Java Syntax Type: PrimitiveType ReferenceType PrimitiveType: NumericType boolean NumericType: IntegralType FloatingPointType IntegralType: one of byte short int long char FloatingPointType: one of float double James Gosling et al.: The Java Language Specification, sun microsystems 2005 Datentyp: PrimitiverTyp VerweisTyp PrimitiverTyp: NumerischerTyp boolean NumerischerTyp: GanzzahligerTyp GleitkommaTyp GanzzahligerTyp: einer von byte short int long char GleitkommaTyp: einer von float double

10 Primitive Datentypen TypeWertebereichSpeicherungBsp.Konstante byte-128 … 1271 Byte (8 Bits)-78 short-2 15 … Bytes32767 int-2 31 … Bytes long-2 63 … Bytess.o. float 6 signifikante Ziffern ( ) 4 Bytes F double 15 signifikante Ziffern ( ) 8 Bytes1.32E-20 charUnicode-Zeichen2 BytesA booleanfalse, true1 Bytetrue

11 Arithmetische Operationen erklärt auf allen numerischen Typen OperatorBedeutungBeispielErgebnis einstelliges + einstelliges - Identität Negation (4 + 5) Multiplikation Division Rest / 3 8 % Addition Subtraktion (4 + 5)

12 Vergleichsoperationen erklärt auf allen numerischen Typen, die beiden letzten auch auf boolean OperatorBedeutungBeispielErgebnis < <= kleiner kleiner gleich 25 < <= 44 true false > >= größer größer gleich 3 > 3 3 >= 3 false true == != gleich ungleich 3 == 5 3 != 5 false true

13 Typanpassung –Implizit von engeren zu weiteren Typen –Explizit in beide Richtungen Definition der Relation enger ( byte short int long float double char int Bemerkung: Die Relation ist transitiv Explizite Typanpassung des Wertes eines Ausdrucks A an einen Typ t durch Anwendung des einstelligen Operators (t) auf den Ausdruck A. Beispiele: byte b = 9; b = b + 1; ist illegal! byte b = 9; b = (byte) (b+1); ist legal. int x = 6, y = 10; double q = x / y; der Wert von q ist 0.0 double q = (double)x / y; der Wert von q ist 0.6

14 Syntaxregeln für Bedingte Anweisungen und Schleifen CondStmt:if (Exp) Stmt [ else Stmt ] WhileStmt:while (Exp) Stmt ForStmt:for ( [Init]; [Exp]; [Update]) Stmt


Herunterladen ppt "ALP II: Objektorientierte Programmierung Sommersemester 2006 Elfriede Fehr, Mohammad Al Saad."

Ähnliche Präsentationen


Google-Anzeigen