Alp ii objektorientierte programmierung sommersemester 2006
Download
1 / 14

ALP II: Objektorientierte Programmierung Sommersemester 2006 - PowerPoint PPT Presentation


  • 69 Views
  • Uploaded on
  • Presentation posted in: General

ALP II: Objektorientierte Programmierung Sommersemester 2006. Elfriede Fehr, Mohammad Al Saad. WHILE-Anweisungen: x := 0; x := x + 1; x := x – 1; while x  y do <Anweisungen> end. Befehlssatz der Registermaschine: zero i succ i pred i je i, j, m goto m.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha

Download Presentation

ALP II: Objektorientierte Programmierung Sommersemester 2006

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


ALP II: Objektorientierte ProgrammierungSommersemester 2006

Elfriede Fehr, Mohammad Al Saad


WHILE-Anweisungen:

x := 0;

x := x + 1;

x := x – 1;

while x  y do

<Anweisungen>

end

Befehlssatz der Registermaschine:

zero i

succ i

pred i

je i, j, m

goto m

Teil I: Grundlagen der BerechenbarkeitDie Programmiersprache WHILE unddie universelle Registermaschine


Übersetzung von WHILE-Programmen in Registermaschinenprogramme:Erster Schritt: Erzeugen der Symboltabelle stBeispiel für eine Symboltabelle


Zweiter Schritt: Anwendung des Übersetzungsschemas (Ü)

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


Übersetzung von WHILE nach Java

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

}

}


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: PrimitiverTypVerweisTyp

PrimitiverTyp:

NumerischerTyp

boolean

NumerischerTyp:

GanzzahligerTyp

GleitkommaTyp

GanzzahligerTyp: einer von

byte short int long char

GleitkommaTyp: einer von

float double

Teil II: Datentypen in Java Syntax


Primitive Datentypen


Arithmetische Operationenerklärt auf allen numerischen Typen


Vergleichsoperationen erklärt auf allen numerischen Typen, die beiden letzten auch auf boolean


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


Syntaxregeln für Bedingte Anweisungen und Schleifen

CondStmt:if (Exp) Stmt [ else Stmt ]

WhileStmt:while (Exp) Stmt

ForStmt:for ( [Init]; [Exp]; [Update]) Stmt


ad
  • Login