• Keine Ergebnisse gefunden

Einf ¨uhrung in JAVA

N/A
N/A
Protected

Academic year: 2021

Aktie "Einf ¨uhrung in JAVA"

Copied!
143
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Einf ¨ uhrung in JAVA

– D

R

. P

ETER

M

ERZ

Wilhelm-Schickard-Institut f ¨ur Informatik Abteilung Rechnerarchitektur

Eberhard-Karls-Universit ¨at T ¨ubingen

(2)

Inhalte der Vorlesung

Einleitung 1

Programmiersprachen und Compiler 4

Imperative Programmierung mit Java 19

Objektorientierte Programmierung mit Java 63

Zusammenfassung der Java-Sprachkonzepte 133

(3)

WWW-Adressen

① Die aktuellen

Folien

/das

Skript

sind unter

http://www-ra.informatik.uni-tuebingen.de/lehre/ws02/java einf.html verf ¨ugbar.

J

AVA

-Entwicklungsumgebungen/DK

finden Sie unter http://java.sun.com/downloads/ (Sun JDK’s)

http://www.borland.com/jbuilder/ (Borland JBuilder)

J

AVA

-API-Dokumentation

finden Sie unter

http://www-ra.informatik.uni-tuebingen.de/local/doc/java/1.4.1/docs (Lokal) http://java.sun.com/j2se/1.4.1/docs/api/ (Sun)

④ Das

J

AVA

-Tutorial

finden Sie unter

http://www-ra.informatik.uni-tuebingen.de/local/doc/java/tutorial/ (Lokal) http://java.sun.com/docs/books/tutorial/ (Sun)

(4)

Programmiersprachen

Allgemeine Definition einer Programmiersprache:

Sprache zur Formulierung von Rechenvorschriften, die direkt oder indirekt von einem Rechner ausgef ¨uhrt werden k ¨onnen

indirekt: Umsetzung der Rechenvorschriften in ein f ¨ur den Rechner verst ¨andliches Format

Wichtige

Eigenschaften

einer Programmiersprache (PS):

✓ eindeutige Syntax

Festlegung, welche Zeichenfolgen als Programme zugelassen sind

✓ eindeutige Semantik

Festlegung, welche Auswirkung die Ausf ¨uhrung des Programms auf einem

(5)

Programmiersprachen

Klassifikation von Programmiersprachen:

• Maschinensprache

– Maschinenprogramm = Folge von elementaren, im Bin ¨arcode dargestellten Befehlen, d.h. im Befehlssatz eines Mikroprozessors

– Maschinenprogramme sind direkt auf der Hardware ausf ¨uhrbar – Maschinenprogramme sind nur sehr schwer verst ¨andlich

niedere, maschinenorientierte Programmiersprachen Assembler-Sprachen Programmierung der Hardware unter Verwendung symbolischer Namen

• h ¨ohere, problemorientierte Sprachen – Hardware-Unabh ¨angigkeit

– Orientierung an den zu bearbeitenden Problemfeldern

– Abbildung in eine Maschinensprache durch Verwendung eines ¨Ubersetzers

(6)

Programmiersprachen

Der Paradigmabegriff:

Synonyme Begriffe:

Denkmuster, Musterbeispiel

• Musterbeispiel

ein Beispiel, das typisch f ¨ur eine Klasse von Beispielen ist, und somit auch als Bezeichnung f ¨ur das diesen Beispielen Gemeinsame verwendet wird

• Verwendung des Paradigma-Begriffes in der Informatik – ein Paradigma bezeichnet ein ¨ubergeordnetes Prinzip – dieses Prinzip ist f ¨ur eine ganze Teildisziplin typisch

– es ist jedoch nicht klar ausformulierbar, sondern manifestiert sich in Beispielen

(7)

Programmiersprachen

Klassifikation von nach Programmierparadigmen:

imperative Programmiersprachen

funktionale Programmiersprachen

pr ¨adikative Programmiersprachen

deskriptive Programmiersprachen

objektorientierte Programmiersprachen

✗ Beachte:

Programmiersprachen k ¨onnen Konzepte mehrerer Programmierparadigmen enthalten!

Z.B. enthalten einige Objektorientierte Sprachen auch imperative Sprachkonzepte.

(8)

Programmiersprachen

Imperative Sprachen:

imperare (lat.): befehlen

• ein Programm besteht aus einer Folge von Befehlen an den Rechner, z.B.

– schreibe in die Variable a den Wert 3 – springe an die Stelle x im Programm

• wichtige Eigenschaften imperativer Programmiersprachen – wesentlich ist die Verwendung des Variablenkonzepts:

Eingabewerte werden in Variablen (Speicherzellen) gespeichert und weiterverarbeitet

– es spiegelt sich deutlich die Architektur des Von Neumann Rechners wider

• Beispielsprachen:

(9)

Programmiersprachen

Funktionale Sprachen:

• Programm = Menge von Ausdr ¨ucken, die Funktionen definieren

– eine Berechnung ist die Anwendung der Funktion auf eine Liste von Werten – eine solche Anwendung nennt man auch Applikation ➠ Programmaufruf

• Eigenschaften:

– das wichtigste Konstruktionsprinzip ist die Rekursion

– Variablen sind keine Beh ¨alter, denen Werte zugewiesen werden

– Variablen sind Platzhalter f ¨ur Werte und Funktionen, mit denen im mathematischen Sinne symbolisch gerechnet wird

– Funktionen k ¨onnen als Parameter und als Ergebnisse von Funktionen auftreten

Anwendungsgebiete: K ¨unstliche Intelligenz, Rapid Prototyping

(10)

Programmiersprachen

Pr ¨adikative Sprachen:

bei diesen Sprachen wird die Programmierung als Beweisen in einem System von Tatsachen und Schlußfolgerungen aufgefaßt

• prinzipielle Vorgehensweise:

– Vorgaben durch den Anwender:

Fakten ➠ g ¨ultige Pr ¨adikate

Regeln ➠ wie gewinnt man aus Fakten neue Fakten – Aufgabe des Rechners:

Beantwortung einer vom Anwender gestellten Frage als richtig, falsch oder durch Angabe der Variablenwerte, f ¨ur die die Aussage erf ¨ullt ist

➭ der Anwender muß sein Problem exakt spezifizieren, die Vorgabe eines Algorithmus zur Probleml ¨osung ist nicht notwendig (und auch nicht m ¨oglich)

(11)

Programmiersprachen

Deskriptive Sprachen:

• eine deskriptive Programmiersprache dient zur Beschreibung der Eigenschaften gesuchter Informationen ( ¨ublicherweise Daten aus einer Datenbank)

• Anwendung:

Formulierung von Anfragen, Eingaben, ¨Anderungs- und L ¨oschoperationen in (relationalen) Datenbanken

• SQL (Structured Query Language) ist der wichtigste Vertreter deskriptiver Programmiersprachen

➭ werden in Vorlesung “Informationssyteme” ausf ¨uhrlich behandelt

(12)

Programmiersprachen

Objektorientierte Sprachen:

• objektorientierte Programmiersprachen basieren auf einem Programmiermodell, das von einer (Mini-) Welt ausgeht, welche aus gleichberechtigten und einheitlich erscheinenden Objekten besteht

• Daten und Anweisungen werden als Objekte aufgefaßt

• prinzipielle Struktur eines (rein) objektorientierten Programms:

– es gibt nur Objekte, die sich nach außen einheitlich verhalten und alle gleichberechtigt sind

– Objekte besitzen Zust ¨ande, f ¨uhren Operationen aus und k ¨onnen Nachrichten empfangen und verschicken

– Programme enstehen durch Interaktion von Objekten

• Anwendungsgebiete: wiederverwendbare Software, große Softwareprojekte

(13)

Interpretation und ¨ Ubersetzung von Programmen

Interpreter:

Ein Interpreter ist ein Programm, das Programme einer Programmiersprache A direkt ausf ¨uhrt.

• Arbeitsweise:

– Schrittweise syntaktische Analyse der Anweisungen des Quellprogramms – Ermittlung der Parameter und Aufruf einer internen Funktion zur Ausf ¨uhrung

einer Anweisung

• Interpretierte Sprachen:

APL, BASIC, LISP, PROLOG, POSTSCRIPT

(14)

Interpretation und ¨ Ubersetzung von Programmen

Compiler:

Ein ¨Ubersetzer (Compiler) ist ein Programm, das Programme aus einer Programmiersprache A in eine Programmiersprache B ¨ubersetzt.

Eine ¨Ubersetzung ist somit die folgende Abbildung:

Quellsprache A ⇒ Zielsprache B

Somit wird jedem Quellprogramm genau ein Zielprogramm zugeordnet.

Wichtig:

Quell- und Zielprogramm m ¨ussen gleiche Bedeutung haben - semantische Korrektheit!

Ziel:

Zielprogramm soll m ¨oglichst schnell ausf ¨uhrbar sein bei geringem

(15)

Interpretation und ¨ Ubersetzung von Programmen

Ubersetzungsphasen: ¨

Quellprogramm

Folge von Token

Ableitungsbaum

Zielprogramm Lexikalische Analyse

Syntaktische Analyse

Semantische Analyse und Codegenerierung

CodeOptimierung

Lexikalische Analyse:

Zerlegung in Token (Scanner) Syntaktische Analyse:

Erzeugung eines Ableitungsbaums (Parser) Semantische Analyse:

Analyse des Ableitungsbaums Codegenerierung:

Erzeugung des Zielprogramms aus dem Ableitungsbaum incl. Codeoptimierung

Vorlesung Compilerbau!

(16)

Interpretation und ¨ Ubersetzung von Programmen

Compilerarten:

• Compiler erzeugen i.d.R. Maschinencode f ¨ur den Zielrechner

➠ sehr schnelle hoch optimierte Programme, die vom Prozessor direkt ausgef ¨uhrt

werden k ¨onnen (Interpretation durch Hardware)

• Crosscompiler erm ¨oglichen ¨Ubersetzung f ¨ur andere Rechnerarchitekturen

• Konzept der virtuellen Maschine:

– Generierung plattformunabh ¨angigen Programmcodes – Virtueller Maschinencode muß interpretiert werden

– Just-In-Time Compiler k ¨onnen die Ausf ¨uhrungsgeschwindigkeit deutlich erh ¨ohen

(17)

Interpretation und ¨ Ubersetzung von Programmen

Plattform(un)abh ¨angige ¨ Ubersetzungsvorg ¨ange:

Quellcode Compiler Runtime

System Virtueller

Machinencode

Native

Maschinencode Hardware

Quellcode Compiler Objectcode Linker Executable -

Maschinencode Hardware

Just-In-Time Compiler Platformunabhängige Sprachen:

Platformabhängige Sprachen:

✓ Anmerkung:

(18)

Programmbibliotheken

API (Application Programming Interface):

➠ Schnittstelle zu Programmbibliothek(en)

• API sind programmiersprachenabh ¨angig

• Heutige Anwendungsprogrammierung ist undenkbar ohne API

• Beispiele f ¨ur API:

– Benutzungsschnittstellen-API (GUI) – Datenbank-API

– API f ¨ur Internetfunktionen

– API f ¨ur Betriebssystemfunktionen

– API f ¨ur mathematische Berechnungen

(19)

Die Programmiersprache JAVA

J

AVA ist eine von der Firma Sun Microsystems entwickelte objektorientierte Programmiersprache

JAVA ist . . .

. . . a simple, object-oriented, distributed, interpreted, robust, secure,

architectural neutral, portable, high-performance, multithreaded, and

dynamic language. (Sun)

Historie

von JAVA:

• Mai 1995: Vorstellung von JAVA auf der SUNWORLD’95

• Anfang 1997: Freigabe der Version JAVA 1.1

• Ende 1998: Freigabe der Version JAVA 1.2 (JAVA 2)

• Ende 1999: Freigabe von Version 1.3

(20)

Die Programmiersprache JAVA

Eigenschaften von J

AVA

:

Plattformunabh ¨angigkeit - Write Once, Run Anywhere

➠ Leichte Entwicklung von Netzwerkanwendungen – insbesondere Internet

➠ Objektorientierung als Basiskonzept

➠ Besondere Unterst ¨utzung verteilter und paralleler Anwendungen

➠ Robuste und sichere Sprache

➠ Lauff ¨ahigkeit von JAVA-Programmen im WWW-Browser (Applets)

➠ JAVA ist frei verf ¨ugbar (JDK: Java Development Kit))

(21)

Die Programmiersprache JAVA

Sprachkonzepte von J

AVA

:

• angelehnt an C/C++, aber stark vereinfacht – Kein Pr ¨aprozessor

– keine Operatoren, Mehrfacherbung, Templates, . . .

• Bew ¨ahrte Konzepte anderer Sprachen wurden integriert, z.B.

– Exceptions : Fehlerbehandlung

– Garbage Collection : Automatische Speicherfreigabe – Package-Konzept : Zusammenfassung von Klassen – Concurrency : Nebenl ¨aufigkeit durch Threads

• JAVA kommt mit sehr umfangreichen API

– GUI-API: Swing, AWT, Datenbank-Schnittstelle (JDBC)

– Network/Internet API inkl. Remote Method Invocation (RMI)

(22)

JAVA Programme

① JAVA-

Applikationen

(Anwendung, engl. Application)

• Eine JAVA-Applikation ist ein JAVA-Programm, das direkt auf der Betriebssystemebene gestartet werden kann

• die Applikation besteht aus einer oder mehreren Klassen

• (mindestens) eine Klasse muß eine main-Methode enthalten

• eine Applikation wird mit Hilfe des JAVA-Interpreters gestartet und ausgef ¨uhrt

② JAVA-

Applets

• Applets sind JAVA-Programme, die in HTML-Seiten eingebunden werden k ¨onnen (HTML: HyperText Markup Language)

• Applets k ¨onnen durch das Programm appletviewer (Teil des JDK) oder einen WWW-Browser mit JAVA-Unterst ¨utzung, wie Netscape Communicator oder Microsoft Internet Explorer ausgef ¨uhrt werden

(23)

JAVA Programme

Ein einfaches J

AVA

Programm:

Der Quellcode eines einfachen JAVA-Programms (Dateiname: Hello.java):

// Hello.java

// A simple programm displaying ”Hello World”

class Hello {

public static void main( String [] args ){

// System.out.println () : Ausgabefunktion aus der Syatem API System.out.println ( ”Hello World!” );

} }

Ubersetzen und zu starten mit dem J¨ DK:

– javac Hello.java (Erzeugt die Datei Hello.class) – java Hello (startet das Programm)

(24)

JAVA Programme

N ¨ otige Schritte zu einem J

AVA

-Programm:

Erstellen eines Quellprogrammes mit Hilfe eines Texteditors, z.B. Notepad (Windows) oder kwrite (Unix/KDE)

② Ubersetzen¨ aller Quelldateien/Klassen, z.B. mit javac in der Eingabeaufforderung

Ergebnis: Eine Sammlung von JAVA-Klassen im Bytecode (Dateiendung:

.class)

③ Start des Programmes durch Aufruf einer Klasse mit einer statischen main-Methode mit dem JAVA-Interpreter java

Anmerkung: Die Endung .class muß weggelassen werden!

➭ JAVA-Programm = Sammlung von JAVA-Klassen im Bytecode

(25)

Programmierparadigmen in JAVA

Unterscheidung zwischen

Programmierung im Großen

Die Konzentration auf das Zusammenwirken von Teilen nennt man Programmierung im Großen, weil hier von der Gestalt der Teile abstrahiert wird und nur das Außenverhalten betrachtet wird.

und

Programmierung im Kleinen

Die Ausformulierung von Teilen nennt man Programmierung im Kleinen, weil auf die Einzelheiten eines Teils bzw. die interne Realisierung geachtet wird.

Programmierung im Großen ➠ Objektorientierte Programmierung Programmierung im Kleinen ➠ Imperative Programmierung

(26)

JAVA Syntax

Aufbau eines J

AVA

-Programms:

• Alle Zeichen zwischen ”/*” und ”*/” oder ”//” und dem Zeilenende werden als Kommentar aufgefaßt

Ein Programm ist eine Folge von Token, die durch Whitespaces (Leerzeichen, Tabulatoren, Zeilenumbr ¨uche) getrennt werden

• Ein oder mehrere Token ergeben eine Anweisung

➠ Ein JAVA-Programm besteht aus einer Folge von Anweisungen!

• Anweisungen sind:

– Deklarationen von Variablen

– (Mathematische) (Wert-)Zuweisungen – Methoden-/Funktionsaufrufe

(27)

JAVA Syntax - Anweisungen und Ausdr ¨ ucke

Anweisungen und Ausdr ¨ ucke:

Vorl ¨aufige Definition einer Anweisung:

<Anweisung> ::= <Variablen-Deklaration> | <Wertzuweisung> |

<Deklaration und Wertzuweisung> | <Prozeduraufruf>

<Variablen-Deklaration> ::= <Typ> <Bezeichner>;

<Wertzuweisung> ::= <Bezeichner> = <Ausdruck>;

<Deklaration und Wertzuweisung> ::= <Typ> <Bezeichner> = <Ausdruck>;

Ein Ausdruck ist in JAVA ein Bool’scher oder arithmetischer Ausdruck (vorl ¨aufige Def.):

<Ausdruck> ::= <Konstante> | <Variable> | (<Ausdruck>) |

<Un ¨arer Operator> <Ausdruck> |

<Ausdruck> <Bin ¨arer Operator> <Ausdruck> |

(28)

JAVA Syntax - G ¨ ultige Bezeichner

G ¨ ultige Bezeichner in J

AVA

f ¨ ur Variablen:

• G ¨ultige Bezeichner beginnen mit einem Buchstaben

• G ¨ultige Bezeichner bestehen aus Buchstaben und Zahlen

• Die folgenden reservierten W ¨orter sind nicht als Bezeichner zugelassen:

abstract default if private throw boolean do implements protected throws break double import public transient byte else instanceof return try case extends int short void catch final interface static volatile char finally long super while class float native switch const for new synchronized continue goto package this

sowie true false null !

(29)

JAVA Syntax - Primitive Datentypen

Primitive Datentypen in J

AVA

:

Datentyp Inhalt Bits KE Minimalwert

Maximalwert

boolean true oder false 1

char UNICODE-Zeichen 16 c \u0000

\uFFFF byte vorzeichenbehaftete Integer-Zahl 8 b -128

127 short vorzeichenbehaftete Integer-Zahl 16 -32768

32767 int vorzeichenbehaftete Integer-Zahl 32 -2147483648

2147483647 long vorzeichenbehaftete Integer-Zahl 64 l -9223372036854775808

9223372036854775807 float IEEE 754-1985 Floating-Point-Zahl 32 f ±1.40239846 E -45

±3.40282347 E 38 double IEEE 754-1985 Floating-Point-Zahl 64 d ±4.94065645841246544 E- 324

±1.79769313486231570 E 308

(30)

JAVA Syntax - Primitive Datentypen

Beispiele f ¨ ur Variablendeklarationen:

int i , j ; // Deklaration von Integervariable i und j

float x ; double y; // Deklaration von zwei Fliesskommazahlen i = 10; // Eine ganze Zahl mit dem Wert 10

j = i ; // Die Variable j erhaelt den Wert von i x = 5 f ; // Das f gibt eine floatKonstante an y = 1.2e3; // Eine Zahl mit Exponent 1.2 10 hoch 3

int n = 20; // Die Kombination von Deklaration und Wertzuweisung i = j = 42; // Dies ist auch moeglich

✗ Beachte:

Der R ¨uckgabewert einer Zuweisung ist der zugewiesene Wert!

(31)

JAVA Syntax - Operatoren

Un ¨are Operatoren:

Operator Operandentyp Ergebnistyp Beschreibung

numerisch numerisch Vorzeichen ¨anderung

! boolean boolean Negierung

integral integral bitweises Komplement

(type) numerisch numerisch Typumwandlung (cast)

Bin ¨are Operatoren:

Operator Operandentyp Ergebnistyp Beschreibung

,+ numerisch numerisch Addition und Subtraktion

,/,% numerisch numerisch Multiplikation, Division, Rest

<<,>>,>>> integral integral Bitweise Links-/Rechts-Verschiebung

>,<,==, ! =, <=,

>=

numerisch boolean Vergleichsoperatoren

&&,|| boolean boolean Logische UND-/ODER-Verkn ¨upfung

(32)

JAVA Syntax - Operatoren

Sonderformen:

• Dekrement/Inkrementoperatoren: --, ++

– x--, --x dekrementiert eine numerische Variable (x) um 1 – x++, ++x inkrementiert eine numerische Variable (x) um 1

– ist der Operator vorangestellt (nachgestellt), ist der R ¨uckgabewert des Ausdruckes der neue (alte) Wert der Variable

• Kombinierte Zuweisung und Arithmetik:

Operatoren: +=, -=, *=, /=, %=, &=, |=, ˆ=, <<=, >>=, >>>=.

– Die Anweisung x ⊗= y; ist eine Kurzschreibweise f ¨ur x = x ⊗ y;

(33)

JAVA Syntax - Operatoren

Beispiele zur Verwendung von Operatoren:

int i , j ; // Zwei IntegerVariablen

float x ; // Flieskommazahl einfacher Genauigkeit double y; // Flieskommazahl doppelter Genauigkeit boolean b; // Eine Boolsche Variable

i = 42; // i bekoomt einen sinnvollen Wert j = i >>1; // j bekommt den Wert 21 == 42 / 2

i = j−−; // i bekommt den Wert 21 und j den Wert 20

b = (0 <= i && i <= 50); // i liegt zwischen 0 und 50, also b = true b = ! b ; // b = false

x = 5; // x bekommt den Wert 5 x /= 10; // x = 5 / 10 = 0.5

y = x + 4; // y = 0.5 + 4 = 4.5 j = ( int )y ; // j = 4

i ++; // So wird der InkrementOperator verwendet!

(34)

JAVA Syntax - Operatoren

Operator-Priorit ¨aten:

Operator Priorit ¨at

Zuweisung, Zuweisung mit arithm. Operation 1

Logisches ODER, UND 2, 3

Bitweises OR, XOR, AND 4, 5, 6

Vergleich == und != 7

Vergleich <, >, >=, <= 8

Verschiebungsoperatoren 9

Addition und Subtraktion 10

Multiplikation, Division und Rest 11 Typumwandlung und restl. un ¨are Operatoren 12

✓ Anmerkung:

Die Klammerung eines Teilausdrucks ¨andert die Reihenfolge der Auswertung!

(35)

JAVA Syntax - Operatoren

Implizite Typumwandlung:

Wenn die Operanden eines bin ¨aren numerischen Operators verschiedene Typen haben,

erfolgt eine implizite Typumwandlung (Numeric Promotion):

• Wenn einer der Operanden von Typ double ist, wird der andere nach double konvertiert.

• Andernfalls, wenn einer der Operanden von Typ float ist, wird der andere nach float konvertiert.

• Andernfalls, wenn einer der Operanden von Typ long ist, wird der andere nach long konvertiert.

• Andernfalls werden beide nach int konvertiert.

(36)

JAVA Syntax - Operatoren

Beispiel f ¨ ur Typumwandlung und geschachtelte Ausdr ¨ ucke:

int i = 4, j = 1;

float x = 5, y;

double u = 5, v;

y = x + 10 / x ; // y = 5 + 2 = 7 Punkt vor StrichRechnung!

y = ( x + 10) / x ; // Erst die Addition : y = 15 / 5 = 3 float z = i x ; // i wird implizit nach float gewandelt int k = ( int )( i y ); // Das Ergebnis von i y ist ein float ! x = ( float )u ; // Von double nach float casten!

v = x ; // Von float nach double nicht noetig y = x + 1 / i ; // y = 5 + 0 = 5 !!

y = x + 1.0 f / i ; // y = 5 + 0.25 = 5.25 !!

y = x + ( float ) j / i ; // y = 5 + 0.25 = 5.25 !!

(37)

Zeichenketten in JAVA

Zeichenketten - Strings:

Zeichenketten sind in JAVA vom Typ String, und werden mit Hilfe von (doppelten) Anf ¨uhrungsstrichen definiert:

¨Dies ist eine Zeichenkette, also ein String!¨ .

Der + -Operator – auf Strings angewandt – bewirkt eine Konkatenation dieser Strings:

¨Hello ¨ + ¨World¨ ist ¨aquivalent zu ¨Hello World¨

Wenn einer der Datentypen kein String ist, wird er in einen String gewandelt!

String text = ¨Einundzwanzig: ¨ + (17+4);

(38)

JAVA Programmbeispiel zu Operatoren

Beispiel Satz des Pythagoras:

// Programm zur Berechnung des Flaecheninhalts sowie der Hypotenuse // eines Dreieckes

class Pythagoras {

public static void main(String [] args) { double a = 3.5, b = 5.5;

double flaeche, hypotenuse;

flaeche = a b / 2;

// Math.sqrt(x ) berechnet die Quadratwurzel von x: (aus Math API) hypotenuse = Math.sqrt(aa + bb);

System.out.println (”Katheten: ” + a + ” cm und ”+ b + ” cm”);

System.out.println (”Flaecheninhalt: ” + flaeche + ” qcm”);

System.out.println (”Hypothenusenlaenge: ” + hypotenuse + ” cm”);

} }

(39)

JAVA Programmierregeln

Regeln f ¨ urs strukturierte Programmieren:

✓ Deklarationen und Zuweisungen trennen

✓ Mehrfachzuweisungen vermeiden

✓ Dekrement-/Inkrementoperatoren sowie Zuweisungen nur in separaten Anweisungen verwenden

✓ Jeden neuen Anweisungsblock einr ¨ucken

✓ Kommentare!

✓ Komplexe Ausdr ¨ucke klammern, um Lesbarkeit zu erh ¨ohen

✓ Eine Anweisung pro Zeile!

✓ Aussagekr ¨aftige Variablennamen verwenden!

(40)

Verzweigungen in JAVA

Verzweigungen im Programmfluß

(auch Spr ¨unge genannt) lassen sich ebenfalls in JAVA realisieren.

Zun ¨achst lassen sich Anweisungen zu einem (Anweisungs-)Block zusammenfassen, der selbst eine Anweisung darstellt:

<Anweisungsfolge> ::= <Anweisung> |

<Anweisungsfolge> <Anweisungsfolge>

<Anweisungsblock> ::= { <Anweisungsfolge> }

Die zuvor gegebene Definition einer Anweisung wird nun erweitert:

<Anweisung> ::= . . . | <Anweisungsblock> | <Bedingte Anweisung> | <Schleife>

(41)

JAVA Syntax - Bedingte Anweisungen

Die If-Anweisung:

Will man eine Anweisung nur unter einer Bedingung ausf ¨uhren lassen, so verwendet man eine if-Anweisung:

<If-Anweisung> ::= if ( <Bedingung> ) <Anweisung> |

if ( <Bedingung> ) <Anweisung>

else <Anweisung>

Somit besteht die If-Anweisung aus einer Bedingung, die durch einen (bool’schen) Ausdruck gegeben ist, und einer Anweisung, die ausgef ¨uhrt wird, wenn die Auswertung des Ausdruckes true ergibt.

Optional kann ein else-Zweig angegeben werden, der ausgef ¨uhrt wird, wenn die Bedingung nicht erf ¨ullt ist.

(42)

JAVA Syntax - Bedingte Anweisungen

Beispiele f ¨ ur if-Anweisungen:

/ Eine ganz einfache IfAnweisung /

if ( x < 0) x = x; // somit ist x immer positiv ( Betragfunktion) / Eine IfAnweisung mit elseZweig /

if ( x != 0) y = y / x;

else y = 0;

/ Eine IfAnweisung mit elseZweig und Anweisungsablock / if ( x < 0){

System.out.println (”x war negativ”);

x = x;

} else{

System.out.println (”x war positiv ”);

}

(43)

JAVA Syntax - Bedingte Anweisungen

Die Switch-Anweisung:

F ¨ur aufwendige Fallunterscheidungen eignet sich die switch-Anweisung:

<Switch-Anw.> ::= switch ( <Ausdruck> ) {

case <Konstante-1>: <Anweisungsfolge>

case <Konstante-2>: <Anweisungsfolge>

. . .

default: <Anweisungsfolge>

}

Ergibt der Ausdruck den Wert von Konstante-i, so werden alle Anweisungen nach der

entsprechenden case <Konstante-i >: -Anweisung ausgef ¨uhrt bis zum Ende der Switch-Anweisung oder bis zum ersten Auftreten der Anweisung break !

(44)

JAVA Syntax - Bedingte Anweisungen

Beispiele f ¨ ur Switch-Anweisungen:

int zahl;

zahl = 42; // Setze zahl auf irgendeinen Wert, z.B. 42 / Zwei Switch Anweisungen/

switch (zahl){

case 0: System.out.println(” Null ” ); break;

case 1: System.out.println(”Eins”); break;

case 2: System.out.println(”Zwei”); break;

case 3: System.out.println(”Drei” ); break;

default : System.out.println (”So hoch kann ich nicht zaehlen!”);

}

switch (zahl){

case 0: System.out.println(” Null ” ); break;

case 1:

case 2: System.out.println(”Kleiner als Drei” ); break;

case 3: System.out.println(”Drei” ); break;

default : System.out.println (”So hoch kann ich nicht zaehlen!”);

(45)

JAVA Syntax - Schleifen

Die While-Schleife:

Die While-Schleife erm ¨oglicht die wiederholte Ausf ¨uhrung einer Anweisung (oder eines Anweisungsblockes) solange eine Bedingung (bool’scher Ausdruck) erf ¨ullt ist.

<While-Schleife> ::= while( <Bedingung> ) <Anweisung> |

do <Anweisung> while( <Ausdruck> );

Es gibt zwei Varianten der While-Schleife:

Bei der ersten (zweiten) Variante wird die Bedingung vor (nach) Betreten der Schleife gepr ¨uft.

(46)

JAVA Syntax - Schleifen

Beispiele f ¨ ur While-Schleifen:

int i , n;

i = 1; n = 42; // i und n werden initialisiert / Zaehle von 1 bis 42 /

while ( i <= n ) {

System.out.println ( i );

i = i + 1; // Kurzschreibweise: i++;

}

/ i ist jetzt n + 1, Schleife wird nicht durchlaufen / while ( i <= n ) i ++;

System.out.println ( i ); // Ausgabe: 43 / i wird um eins erhoeht /

do i++; while ( i <= n );

System.out.println ( i ); // Ausgabe: 44

(47)

JAVA Syntax - Schleifen

Die For-Schleife:

Eine Alternative zur While-Schleife ist die For-Schleife:

<For-Schleife> ::= for(<Zuweisung> <Bedingung>; <Ausdruck>)

<Anweisung>

Vor Beginn der Schleife wird die Zuweisung ausgef ¨uhrt, dann wird eine Bedingung

¨uberpr ¨uft, und solange diese erf ¨ullt ist, die Anweisung

(oder ein Anweisungsblock) ausgef ¨uhrt und <Ausdruck> ausgewertet.

Sie wird h ¨aufig wie folgt verwendet:

<For-Schleife> ::= for( <Variable> = <Konstante>;

<Variable> <Vergleichsoperator> <Ausdruck>;

(48)

JAVA Syntax - Schleifen

Beispiele f ¨ ur For-Schleifen:

int i ; int n;

n = 10;

/ Ausgabe der Zahlen von 0 bis n 1 = 9 / for( i = 0; i < n ; i ++) {

System.out.println ( i );

}

/ Ausgabe der Zahlen von 10 bis 1 in absteigender Reihenfolge/ for( i = 10; i > 0; i−−){

System.out.println ( i );

}

(49)

JAVA Syntax - Schleifen

Anmerkungen zu Schleifen:

• Schleifen k ¨onnen beliebig geschachtelt werden!

• Vorsicht vor Endlosschleifen!

Mit break kann das sofortige Verlassen einer Schleife erzwungen werden

Mit continue kann sofort an den Anfang der Schleife gesprungen werden – Die restlichen Anweisungen im Anweisungsblock werden ¨ubersprungen – Bei For -Schleifen wird <Ausdruck> ausgef ¨uhrt

break und continue sollten m ¨oglichst nicht verwendet werden

(50)

JAVA Syntax - Schleifen

Aquivalente Ausdr ¨ucke:¨

/ A : /

while ( true ){

// ... Anweisungen ...

if ( bedingung ) break;

// ... Anweisungen ...

}

/ B : /

while ( bedingung ){ // ... Anweisungen ...

if (! bedingung ) { // ... Anweisungen ...

} }

/ A : /

for ( i = 0; i < n ; i ++ ) { // ... Anweisungen ...

if ( bedingung ) continue;

// ... Anweisungen ...

}

/ B : /

for ( i = 0; i < n ; i ++ ) { // ... Anweisungen ...

if (! bedingung ){ // ... Anweisungen ...

} }

break und continue nicht erforderlich!

(51)

Schleifen in JAVA - Programmbeispiele

Beispielprogramm 1:

Ausgabe des ASCII-Zeichensatzes

// Programm zur Darstellung des ASCIIZeichensatzes class ZeichenSatz {

public static void main(String [] args) { int i , j ;

System.out.println (”Der ASCIIZeichensatz:”);

for( i = 2; i < 16; i ++) { for( j = 0; j < 16; j ++) {

char zeichen = (char)(16 i + j );

System.out.print(zeichen);

}

System.out.println ();

} }

(52)

Schleifen in JAVA - Programmbeispiele

Beispielprogramm 2:

Berechnung der Quadratwurzel:

Gesucht ist ein JAVA-Programm zur Berechnung der Quadratwurzel nach der Newtonschen Methode.

(Iterationsverfahren, das ausgehend von einem willk ¨urlich vorgegebenen Startwert eine Folge besser werdender Approximationen von √

x liefert.)

Bei gegebenem Startwert s0 ergeben sich die Folgewerte nach der Vorschrift:

si+1 =

x

si +si 2 Z.B. Iterationen F ¨ur die Quadratwurzel von 2:

(53)

Schleifen in JAVA - Programmbeispiele

// Programm zur Berechnung der Quadratwurzel class QuadratWurzel {

public static void main(String [] args) { double x, s , genauigkeit;

int i ;

s = 1; // Startwert s0

x = 17; // Die Wurzel von x=17 soll berechnet werden genauigkeit = 1e8; // Die Genauigkeit der Annaeherung

i = 0;

while( Math.abs(ss x) > genauigkeit){ // Math.abs(): Math API System.out.println ( i + ”. Naeherung: ”+ s);

s = ( x / s + s ) / 2;

i ++;

}

System.out.println (”Quadratwurzel von ” + x + ”: ” + s );

} }

(54)

Arrays in JAVA

Eindimensionale Arrays:

Arrays (dt.: Felder) bieten die M ¨oglichkeit, eine beliebige Anzahl von Variablen gleichen Typs simultan zu erzeugen.

Zun ¨achst muß eine Referenz-Variable deklariert werden:

<Array-Referenz-Deklaration> ::= <Typ> [] <Bezeichner>;

Die Erzeugung eines Feldes mit vorgegebener Gr ¨oße (<Ausdruck>) erfolgt anschließend:

<Array-Definition> ::= <Bezeichner> = new <Typ>[<Ausdruck>];

(55)

Arrays in JAVA

Eindimensionale Arrays (con’t):

Der Zugriff auf diese Variablen erfolgt durch Indizierung (<Ausdruck>):

<Array-Variable> ::= <Bezeichner>[<Ausdruck>]

<Ausdruck> muß einen ganzzahligen Wert (vom Typ int) gr ¨oßer gleich 0 ergeben.

Die L ¨ange/Gr ¨oße eines Arrays ergibt folgender Ausdruck:

<Array-Gr ¨oße> ::= <Bezeichner>.length

(56)

Arrays in JAVA

Beispiele f ¨ ur eindimensionale Arrays:

double [] a ; // ArrayReferenz bereitstellen int i , n;

int ersterWert, letzterWert ; n = 42;

a = new double[n]; // Erzeugen des Feldes // a.length == n!

for( i = 0; i < a.length ; i ++) {

a[ i ] = 42 i ; // Wertzuweisung }

ersterWert = a [0]; // Ermittlung des ArrayWertes fuer Index 0 letzterWert = a[n 1]; // Ermittlung des ArrayWertes fuer letzten Index System.out.println (”Laenge: ” + a.length + ” == ” + n);

System.out.println (”Wert von a[0]: ” + ersterWert);

(57)

Arrays in JAVA

Programmbeispiel zu Arrays:

Berechnung von Minimum, Maximum, Mittelwert und Standardabweichung einer Zufallszahlenfolge x = {x1, . . . ,xn}:

Mittelwert berechnet sich ¨uber die Formel:

¯

x = 1 n

n i=1

xi

Die Standardabweichung ist definiert als:

σ(x) =

s 1 n−1

n i=1

(xix)¯ 2

(58)

Arrays in JAVA

// Programm zur Berechnung von Minimum, Maximum, Mittelwert und // Standardabweichung einer Zufallsfolge

class Statistik {

public static void main(String [] args) {

int n = 10000; // Anzahl der Zufallszahlen

double [] zufall ; // Die Referenz des Zufallszahlenvektors double standardabw;

double mittelwert;

double min, max; // Die zu berechnenden Werte

double sum; // Eine Hilfvariable fuer die Summenbildung int i ; // Ein Schleifenzaehler

/ Erzeuge n Zufallszahlen: /

zufall = new double[n]; // erzeugt Platz fuer n Zahlen

for ( i = 0; i < n ; i ++) zufall [ i ] = Math.random(); //< Math API / Berechnung des Mittelwertes, Min und Max: /

sum = 0; min = 1; max = 0;

(59)

Arrays in JAVA

for ( i = 0; i < n ; i ++) {

sum += zufall[ i ]; // berechne Summe if ( min > zufall [ i ]) min = zufall [ i ];

if ( max < zufall[ i ]) max = zufall [ i ];

}

mittelwert = sum / n;

/ Berechnung der Standardabweichung: / sum = 0;

for ( i = 0; i < n ; i ++) {

sum += (mittelwert zufall [ i ]) ( mittelwert zufall [ i ]);

}

standardabw = Math.sqrt(sum / (n 1.0));

/ Bildschirmausgabe: /

System.out.println (”Minimum : ”+ min);

System.out.println (”Maximum : ”+ max);

System.out.println (” Mittelwert : ” + mittelwert );

System.out.println (”Standardabweichung : ” + standardabw);

}

(60)

Arrays in JAVA

Mehrdimensionale Arrays:

Analog zu eindimensionalen Arrays k ¨onnen mehrdimensionale Arrays definiert werden:

Statt einem eckigen Klammerpaar werden jetzt mehrere Klammernpaare (in Abh ¨angigkeit der Dimensionszahl) ben ¨otigt

• Ein mehrdimensionales Array kann als Array von Arrays angesehen werden

• Die Anzahl der Elemente der einzelnen Arrays kann unterschiedlich sein

(61)

Arrays in JAVA

Beispiele f ¨ ur mehrdimensionale Arrays:

double [][] a ; // ArrayReferenz bereitstellen int [][] b;

// ... Werte fuer n und m festlegen ...

a = new double[n][m]; // Erzeugen des Feldes for( i = 0; i < n ; i ++)

for( j = 0; j < m; j ++) {

a[ i ][ j ] = (42 i ) j ; // Wertzuweisung }

b = new int[n ][];

for( i = 0; i < b.length ; i ++) {

b[ i ] = new int[i + 2]; // b[ i ]’ s sind unterschiedlich lang!

}

for( i = 0; i < b.length ; i ++)

for( j = 0; j < b[ i ]. length ; j ++) {

b[ i ][ j ] = i j ; // Wertzuweisung

(62)

Parameter eines JAVA-Programms

Verarbeitung von Programmparametern:

Die Argumente (Parameter beim Programmaufruf) einer JAVA-Applikation werden der main() -Funktion in einem Array von Strings ¨ubergeben.

Das folgende kleine Programm gibt diese Parameter als einen String aus:

// Ein Programm zur Ausgabe der Parameter einer // JAVAApplikation

class Parameters{

public static void main( String [] args ){ String parameters = ””;

for( int i = 0; i < args.length ; i ++) parameters += args[i] + ” ”; System.out.println (parameters);

} }

(63)

Einf ¨ uhrung in die Objektorientierung

Was ist eine

Klasse

?

Eine Klasse beschreibt die Eigenschaften und das Verhalten einer Menge gleichartiger Objekte.

• Eine Klasse kapselt Daten und Operationen auf diesen Daten

Datenkapselung!

Eigenschaften – Attribute – werden durch primitive Datentypen oder komplexe Datentypen = Klassen festgelegt

• Operationen sind Prozeduren/Funktionen, die die Daten lesen oder ver ¨andern, sie werden Methoden genannt

• i.d.R. legt eine Klasse keine Auspr ¨agung von Eigenschaften fest

• Die Schnittstelle legt von außen verwendbare Methoden/Attribute fest

• Interne Methoden/Attribute dienen zur Realisierung des Verhaltens und werden

(64)

Einf ¨ uhrung in die Objektorientierung

Was ist ein

Objekt

?

Ein Objekt erh ¨alt alle Eigenschaften seiner beschreibenden Klasse, d.h. es erh ¨alt alle Attribute und Methoden dieser Klasse. Dar ¨uber hinaus erh ¨alt es Auspr ¨agungen f ¨ur alle Eigenschaften, d.h. es besitzt einen Zustand, in dem es sich von anderen Objekten derselben Klasse unterscheiden kann.

Ein Objekt wird auch als Instanz einer Klasse bezeichnet

• In einem Objekt nehmen in der Klasse definierte Attribute konkrete Werte an

• Es k ¨onnen beliebig viele Objekte einer Klasse gleichzeitig existieren

(65)

Einf ¨ uhrung in die Objektorientierung

Beispiele f ¨ ur Klassen und Objekte aus der realen Welt:

Klasse Objekt Attribute

Auto Mein Golf, Ernies Ente, Toms Trabbi Besitzer, Farbe, Alter Katze Moritz, Omas scharzer Kater Name, Besitzer

Schauspieler Heinz R ¨uhmann, Sandra Bullock Alter, Geschlecht, Genre

Beispiele in der Informationsverarbeitung:

Klasse Objekt Attribute

Fenster Editorfenster Hintergrundfarbe, Titel, Gr ¨oße

Drucker HP SW Laser, Canon Tintenstrahldr. Aufl ¨osung, Befehlssatz Grafikelement Linie, Kreis, Rechteck Koordinaten, F ¨ullmuster

(66)

Einf ¨ uhrung in die Objektorientierung

Schritte der objektorientierten Softwareerstellung:

① Problemanalyse (OOA)

② Designphase (OOD)

• Einteilung der Daten und Funktionalit ¨at des Programmes in Klassen/Objekte – Bilden einer Klassenhierarchie: Generalisierung und Spezialisierung

– Festlegen von Ist-Teil-von-Beziehungen, . . .

• Festlegung der Schnittstellen der Klassen

• Definition der Interaktion zwischen Objekten verschiedener oder gleicher Klassen

③ Implementation

• Implementierung der Schnittstellenfunktionen und internen Funktionen

(67)

Objektorientierte Programmierung in JAVA

Syntax einer Klassendefinition

(vorl ¨aufig):

<Klasse> ::= class <Klassen-Bezeichner> {

<Attribute>

<Konstruktoren>

<Methoden>

}

Eine Klasse kann also aus einer Reihe von Attributen, Konstruktoren und Methoden bestehen.

Im folgenden werden der Reihe nach Attributdefinitionen sowie Konstruktor- und Methodendefinitionen besprochen.

(68)

Objektorientierte Programmierung in JAVA

Modifizierer:

Modifizierer bestimmen den Zugriff auf Methoden und Attribute:

<Modifizierer> ::= public | protected

public: von anderen Objekten aus aufrufbar

protected: nur innerhalb des Objektes benutzbar

✗ Anmerkung:

Diese Definition ist vorl ¨aufig. Weitere Modifizierer kommen sp ¨ater hinzu.

(69)

Objektorientierte Programmierung in JAVA

Attribute sind i.d.R. Variablen von primitiven Datentypen, die Eigenschaften von Klassen/Objekten beschreiben:

<Attribute> ::= ε | <Attribute> <Attribute> |

<Modifizierer> <Typ> <Bezeichner>;

Beispiele:

public int size ; // Die Laenge einer Datenstruktur protected double [] x; // Ein Array von Flieskommazahlen

protected String name; // Der Name eines Objektes als Zeichenkette protected float prozentsatz; // Der Prozentsatz einer Statistischen Erhebung

(70)

Objektorientierte Programmierung in JAVA

Parameter-Definitionen

kann man sich als eine Folge von Variablen-Deklarationen vorstellen, die durch Kommata getrennt werden. Die Definition von Parametern hat folgende Syntax:

<ParameterDef> ::= ε | <P-Liste>

<P-Liste> ::= <TYP> <Bezeichner> | <P-Liste>, <P-Liste>

Parameter

werden durch eine Folge von Ausdr ¨ucken, die durch Komma getrennt sind, beschrieben.

<Parameter> ::= ε | <Ausdr-Liste>

<Ausdr-Liste> ::= <Ausdruck> | <Ausdr-Liste>, <Ausdruck>

(71)

Objektorientierte Programmierung in JAVA

Konstruktoren:

Konstruktoren werden nur bei Instanziierung (Erzeugung) eines Objektes der Klasse aufgerufen. Sie tragen den Namen der Klasse:

<Konstruktoren> ::= ε | <Konstruktoren> <Konstruktoren> |

<Modifizierer> <Klassen-Bezeichner>(<ParameterDef>)

<Anweisungsblock>

Beispiele:

public MeineKlasse(){ // Ein Konstruktor ohne Parameter // ..

}

public MeineKlasse(String text) { // Ein Konstruktor mit einem Parameter //..

(72)

Objektorientierte Programmierung in JAVA

Methoden:

Methoden haben einen R ¨uckgabewert f ¨ur den der Typ angegeben werden muß, sowie eine Parameterliste, die leer sein kann:

<Methoden> ::= ε | <Methoden> <Methoden> |

<Modifizierer> <Typ> <Bezeichner>(<ParameterDef>)

<Anweisungsblock>

Mit der Anweisung return <Ausdruck>; wird ein R ¨uckgabewert festgelegt, dessen Typ dem deklarierten R ¨uckgabe-Typ entsprechen muß.

Wird anstelle eines R ¨uckgabe-Typs das Schl ¨usselwort void verwendet, hat die Methode keinen R ¨uckgabewert.

(73)

Objektorientierte Programmierung in JAVA

Beispiele f ¨ ur Methodendefinitionen:

// Eine Prozedur die nur Klassenintern verwendet werden kann protected void init ( int n){

// ...

}

// Eine (Mathematische) Funktion public double sinus(double x){

// ...

}

// Eine methode mit Parametern unterschiedlicher Typen // ( MyClass ist eine selbstdefinierte Klasse)

public int doit ( int m, double x, float y , int [] a , String s , MyClass obj){ // ...

}

(74)

Objektorientierte Programmierung in JAVA

Beispiel f ¨ ur eine Klassendefinition:

class BeispielKlasse{

// Definition von Datenfeldern protected int value;

// Definition von Konstruktoren public BeispielKlasse() {

value = 0;

}

// Definition von Methoden public int getValue() {

return value;

}

public void setValue(int v) { value = v;

}

(75)

Objekte in JAVA

Erzeugung von Objekten:

Klassen werden w ¨ahrend des Programmierens festgelegt, Objekte hingegen zur Laufzeit erzeugt ➠ Mechanismus zur Instanziierung notwendig

In Java gibt es keine Objekt-Variablen. Es gibt nur Objektreferenzen, d.h. Verweise auf Objekte!

Syntax zur Deklaration einer Objekt-Referenz:

<Objektreferenz-Deklaration> ::= <Klasse> <Bezeichner>;

Ist ein Bezeichner eine g ¨ultige Objektreferenz, so kann mit Hilfe von new ein neues Objekt erzeugt und dieser Referenz zugewiesen werden:

(76)

Objekte in JAVA

Beispiel f ¨ ur die Erzeugung von Objekten:

class MyClass{ // ...

}

MyClass object1;

object1 = new MyClass();

MyClass object2 = new MyClass();

object1 und object2 sind Instanzen der Klasse MyClass.

Die Objekte m ¨ussen nicht explizit nach ihrer Benutzung gel ¨oscht werden, dies

¨ubernimmt der Garbage Collector!

Klassen sind Typen ➠ sie werden ¨ahnlich wie primitive Datentypen

(77)

Objekte in JAVA

Zugriff auf Methoden und Attribute:

Der Zugriff auf ¨offentliche Attribute und Methoden erfolgt mit Hilfe des Dereferenzierungsoperators “.” :

Syntax f ¨ur den Attributzugriff:

<Attribut-Zugriff> ::= <Objekt-Referenz>.<Attribut-Bezeichner>

Syntax f ¨ur den Methoden-Aufruf:

<Methoden-Aufruf> ::= <Objekt-Referenz>.<M-Bezeichner>(<Parameter>);

✗ Anmerkung:

Innerhalb einer Klasse braucht keine Objektreferenz dem Methodennamen oder

(78)

Objekte in JAVA

Beispiel f ¨ ur Objektdereferenzierung:

// Beispielklasse fuer Dereferenzierung class Beispiel {

// Attribut

public int value;

// Methoden

public void calculate () { // ...

}

public double sinus(double x) { // ...

return y;

} }

double x, y;

int n;

Beispiel object ;

object = new Beispiel();

// Zugriff auf Attribut : x = 3.0 object .value;

object .value = 12 n;

// MethodenAufruf object . calculate ();

y = 1.0 / object .sinus(x );

Referenzen

ÄHNLICHE DOKUMENTE

I Wenn Bedingung nicht erf¨ ullt und zweite Anweisung vorhanden, wird diese ausgef¨

Mit dem Transfusionsge- setz sollen dem Bundesmini- sterium für Gesundheit zufol- ge Konsequenzen aus dem Bericht des Untersuchungs- ausschusses „HIV-Infektio- nen durch Blut

Sind Gebäudeeinmessungen oder ihre Dokumentation nicht zur Übernahme in das Liegenschaftska- taster geeignet, so ist dem Auftraggeber eine einmalige Frist zur Nachbearbeitung von

Er hat personenbezogene Daten zu berichtigen, zu löschen und zu sperren, wenn der Auftraggeber dies in der getroffenen Vereinbarung (siehe oben Nr. 2.3) oder einer Weisung

Wirklich Anden ßch einiche, so die Erdäpfel sie« den, sie schälen, i« vier oder mehrere stüke zer« schneiden, und sie in dem ofen dörren, man hat selbst dergleichen stüke auf

leicht Die Rothbuche kommt vom Samen auf/der im Herbst oder Frühling gefäet, und leicht muß ; folche kau auch durch Sezeingeeget werden ße schlagt auch gerne linge

man ein loch durch, in welches eine schraube pas> set, die in die feite der schachtet der Boussole eingehet, und durch ihr gcwind fo befestigt wird, bis daß ste frey fpielen und

habe ich meine Auslage von 4 Luidor noch nicht erhalten, und es hat auch keine Eile damit, doch wollte ich es der Ordnung halber dir anzeigen.. Die Nachricht daβ die Venus der