ALP II: Objektorientierte Programmierung Sommersemester 2006

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
der Universität Oldenburg
Forschungszentrum caesar
Variablen und Datentypen
Zusammenfassung der Vorwoche
10. Grundlagen imperativer Programmiersprachen
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
der Universität Oldenburg
Verteilte Software - Java - Prozedurale Programmierung 1
Java: Objektorientierte Programmierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Objekte und Arbeitsspeicher
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
ARRAY oder FELD oder VEKTOR
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Basisinformationstechnologie WS 2003/04 T.Schaßan
Sommersemester 2003 Lars Bernard
Robotik mit LEGO Mindstorms
Imperative Programmierung Funktionen und Parameter
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
Zusammenfassung Vorwoche
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.
Einführung in die Programmierung Anweisungen und Datentypen
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Grundkonzepte Java - Klassendefinition
Rekursive Funktionen (Fakultät)
Programmieren Kapitel 3 – Variablen.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Allgemeines zu Java Universelle, objektorientierte Programmiersprache
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
2.4 Rekursion Klassifikation und Beispiele
Kapitel 2: Grundelemente von Programmiersprachen
Variablen in Programmiersprachen
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Datentypen Überblick Datentypen Einfache / fundamentale Datentypen
BMEVIEEA100 Grundlagen der Programmierung
Programmierung von Agenten in Java: Implementierung einer Supply-Chain
PI Burgenland Java und JavaScript 1. Teil
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Grundlagen C 2
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Übersicht Nachtrag zu Ausdrücken
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Ausnahmen Vorlesung besteht aus zwei Teilen Programmierung (4 SWS)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Diskrete Mathematik I Vorlesung 2 Arrays.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Einführung in die Programmierung mit Java
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java Programme nur ein bisschen objektorientiert.
Inhalte der Übungen 1.Grundlagen, Ein- und Ausgabe 2.Kontrollstrukturen (Projekt 1) 3.Funktionen 4.Zeiger, Felder (Projekt 2) 5.Strings, Strukturen 6.Fileverarbeitung.
Hello World! Javakurs 2013 Arne Kappen
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Java-Kurs - 2. Übung primitive Datentypen, Konstanten
SS 04 Christiane Rauh Christian Hellinger
 Präsentation transkript:

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

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

Ü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 a x 1 y 2 h 3

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 <Anweisungen> Ü <Anweisungen> end goto 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. 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.

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

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

Übersetzung von WHILE nach Java y := 1; y = 1; while x ≠ 0 do while (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 http://www.artima.com/insidejvm/applets/EternalMath.html

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

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

Primitive Datentypen Type Wertebereich Speicherung Bsp.Konstante byte -128 … 127 1 Byte (8 Bits) -78 short -215 … 215-1 2 Bytes 32767 int -231 … 231-1 4 Bytes -2147483648 long -263 … 263-1 8 Bytes s.o. float 6 signifikante Ziffern (10-46 1038) 3.14159F double 15 signifikante Ziffern (10-324 10308) 1.32E-20 char Unicode-Zeichen ‘A‘ boolean false, true 1 Byte true

Arithmetische Operationen erklärt auf allen numerischen Typen Operator Bedeutung Beispiel Ergebnis einstelliges + einstelliges - Identität Negation + 4 - (4 + 5) 4 - 9 * / % Multiplikation Division Rest 8 * 3 8 / 3 8 % 5 24 2 3 + - Addition Subtraktion 5 + 6 11

Vergleichsoperationen erklärt auf allen numerischen Typen, die beiden letzten auch auf boolean Operator Bedeutung Beispiel Ergebnis < <= kleiner kleiner gleich 25 < 59 45 <= 44 true false > >= größer größer gleich 3 > 3 3 >= 3 == != gleich ungleich 3 == 5 3 != 5

Typanpassung Definition der Relation „enger“ (  ): 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

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