11.03.2014 Aufrufe

Informatik 1 - Übungen -WS 01/02 Softwareentwicklung mit Java

Informatik 1 - Übungen -WS 01/02 Softwareentwicklung mit Java

Informatik 1 - Übungen -WS 01/02 Softwareentwicklung mit Java

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Entwicklungsumgebung<br />

Editor<br />

TEXTPAD<br />

DOS-Fenster<br />

javac<br />

java<br />

javadoc<br />

Internet-<br />

Browser<br />

Schreiben des <strong>Java</strong>-Quellcodes und Speichern unter einem Namen <strong>mit</strong> der Endung “.java“ . Der Dateiname<br />

muß gleich dem Klassennamen in der Datei sein (z.B. BspKlasse.java)<br />

kann i.d. Regel über Start/Programme/MS-DOS-Eingabeaufforderung geöffnet werden.<br />

Verzeichnis wechseln <strong>mit</strong> cd \<strong>Java</strong>Arbeitsverzeichnis<br />

doskey ermöglicht Rückgriff auf vorhergehende Befehle über Richtungstasten.<br />

<strong>mit</strong> Strg + c kann ein laufendes <strong>Java</strong>-Programm abgebrochen werden.<br />

Compiler, übersetzt den Quellcode in ausführbaren Code<br />

javac BspKlasse.java<br />

Es wird eine neue Datei BspKlasse.class erzeugt<br />

Ausführung des Programms (Virtuelle <strong>Java</strong>-Maschine)<br />

java BspKlasse<br />

(Achtung: Die Endung „.class“ wird nicht angegeben)<br />

BspKlasse.java muss eine main-Methode enthalten<br />

Erzeugen einer <strong>Java</strong>-Dokumentation als HTML-Datei<br />

(Vorraussetzung: Kommenmtare in der Klasse)<br />

javadoc BspKlasse.java<br />

Zum Nachschlagen von Information in der API-Spezifikation (=~ Bibliotheken)<br />

Dipl.-Inform. (FH) Helga Gabler 1


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Literaturhinweise und Links<br />

viele Links über <strong>Java</strong>:<br />

Online-Kurs von Sun<br />

http://java.rrzn.uni-hannover.de<br />

http://www.rz.fh-karlsruhe.de/intern/Kurse/java/gj22/html/cover.html<br />

http://www.fbi-lkt.fh-karlsruhe.de/~voho00<strong>01</strong><br />

/Vorlesungen/Softwarelabor/Softwarelabor.2.pdf<br />

http://java.sun.com/docs/books/tutorial/<br />

<strong>Java</strong>-API<br />

<strong>Java</strong>-Zertifizierung<br />

http://java.sun.com/j2se/1.3/docs/api/index.html<br />

http://www.lanw.com/java/javacert<br />

Dipl.-Inform. (FH) Helga Gabler 2


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

// einzeiliger Kommentar<br />

/* über<br />

mehrere<br />

Zeilen */<br />

/** für Dokumentation <strong>mit</strong> javadoc */<br />

Tags für Dokumentation von Klassen:<br />

@author autorin<br />

@see klassenname<br />

@see klassenname#methodenname<br />

@version text<br />

Kommentare<br />

Verweis auf entsprechende Klasse wird eingefügt<br />

Tags für die Dokumentation von Methoden<br />

@param parametername parameterbeschreibung<br />

@return beschreibung<br />

@exception name beschreibung<br />

@throws name beschreibung<br />

@deprecated text<br />

veraltete Methoden<br />

Dipl.-Inform. (FH) Helga Gabler 3


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Konventionen<br />

Klammern wie im Beispielprogramm.<br />

public class ErsteKlasse {<br />

public static void main (String [] args ) {<br />

for (int i = 0; i


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Konventionen<br />

Mit großem Buchstaben beginnen:<br />

- Klassennamen BspKlasse, Vector<br />

Mit kleinem Buchstaben beginnen<br />

- Variable int intWert, String s<br />

- Paketnamen java.io<br />

siehe auch:<br />

http://www.fbi-lkt.fh-karlsruhe.de/~voho000 /Vorlesungen/Softwarelabor/Softwarelabor.2.pdf<br />

~ ab Seite 50<br />

Dipl.-Inform. (FH) Helga Gabler 5


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Applikationen<br />

Applikationen sind <strong>Java</strong>-Programme, die direkt auf dem lokalen Rechner ausgeführt werden<br />

(standalone-Programme)<br />

public class Hallo<strong>Java</strong> {<br />

public static void main ( String [] args ) {<br />

System.out.println ("Hallo <strong>Java</strong>");<br />

}<br />

}<br />

Beachte: Groß-/Kleinschreibung, Klammern, Semikolon<br />

Übersetzen: javac Hallo<strong>Java</strong>.java è Hallo<strong>Java</strong>.class<br />

wenn keine Syntaxfehler è Applikation ausführen <strong>mit</strong><br />

è java HalloClass (hier nicht .class angeben)<br />

Dipl.-Inform. (FH) Helga Gabler 6


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Applet<br />

import java.applet.*;<br />

import java.awt.*;<br />

public class Hallo<strong>Java</strong>Applet extends Applet {<br />

}<br />

public void paint ( Graphics g ) {<br />

g.drawString ("Hallo <strong>Java</strong>", 20, 20);<br />

}<br />

Übersetzen: javac Hallo<strong>Java</strong>.java è Hallo<strong>Java</strong>.class<br />

wenn keine Syntaxfehler: è Applet über HTML-Datei ausgeführen<br />

Dipl.-Inform. (FH) Helga Gabler 7


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

HTML-Datei für den Applet-Aufruf<br />

<br />

<br />

RRZN <strong>Java</strong>-Handbuch<br />

<br />

<br />

Hallo <strong>Java</strong> <br />

<br />

<br />

<br />

<br />


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Format und Zeichensatz<br />

public class Hallo<strong>Java</strong> {<br />

public static void main ( String [] args ) {<br />

System.out.println ("Hallo <strong>Java</strong>");<br />

}<br />

}<br />

oder so<br />

public class Hallo<strong>Java</strong> {public static void main ( String<br />

[] args ) { System.out.println ("Hallo <strong>Java</strong>");}}<br />

(Erste Form wird dringend empfohlen)<br />

Groß-/Kleinschreibung relevant!!<br />

Schlüsselwörter: public, class, static, void<br />

Namen der Methoden:<br />

(nicht als Variablennamen verwenden)<br />

main() System.out.println()<br />

==> http://java.rrzn.uni-hannover.de/tkji/javakurs/start-frame.html<br />

Dipl.-Inform. (FH) Helga Gabler 9


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Dipl.-Inform. (FH) Helga Gabler 10


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Unicode-Zeichensatz<br />

<strong>Java</strong> verwendet für alle Zeichen den 16-Bit-Unicode-Zeichensatz.<br />

Unicode umfaßt derzeit 34000 Zeichen.<br />

Der Unicode-Zeichensatz ist in den ersten 126 Zeichen kompatibel zu ASCII,<br />

und bis Zeichen 256 kompatibel zu ISO8859-1 (Latin-1).<br />

Unicode-Zeichen können dargestellt werden als:<br />

xxxx ist die Hex-Darstellung des Unicode-Zeichens<br />

\uxxxx<br />

public class HalloUnicode {<br />

public static void main ( String [] args ) {<br />

System.out.println<br />

("\u0048\u0061\u006C\u006C\u006F");;<br />

}<br />

}<br />

Dipl.-Inform. (FH) Helga Gabler 11


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Escape-Sequenzen für Zeichen- und Stringliterale<br />

Steuer- und Sonderzeichen werden benötigt, z.B. für erzwungenen Zeilenumbruch<br />

oder Tabulator<br />

Escape-Sequenzen:<br />

\b BS, backspace<br />

\t HT, horizontaler Tabulator<br />

\n LF, linefeed<br />

\f FF, formfeed<br />

\r CR, carriage return<br />

\“ doppeltes Anführungzeichen<br />

\‘ einfaches Anführungszeichen<br />

\\ backslash<br />

Beispiele:<br />

System.out.println ("Hallo\<strong>Java</strong>“);<br />

System.out.println ("Er sagt: \”Hallo\<strong>Java</strong>\””);<br />

Dipl.-Inform. (FH) Helga Gabler 12


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Bezeichner<br />

public class Format<strong>01</strong> {<br />

public static void main ( String [] args ) {<br />

String ga, gA, ro;<br />

ga = "Asterix";<br />

gA = "Obelix";<br />

ro = "Roemer";<br />

int r;<br />

r = 3;<br />

System.out.println (ga + " und " + gA + " sehen "+ r + " "+ro);<br />

}<br />

}<br />

Regeln für Bezeichner:<br />

- Beginn <strong>mit</strong> Buchstaben, Unterstrich_ oder Dolarzeichen $, dahinter Buchstaben und<br />

Ziffern; - Groß-/Kleinschreibung relevant; -keine Schlüsselwörter (s. rrzn) verwenden<br />

Konventionen für Bezeichner:<br />

- Bezeichner für Klassen beginnen <strong>mit</strong> einem Großbuchstaben<br />

- Bezeichner für Methoden und Variablen beginnen <strong>mit</strong> einem Kleinbuchstaben<br />

- Bezeichner für Konstanten bestehen nur aus Großbuchstaben<br />

Dipl.-Inform. (FH) Helga Gabler 13


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufbau von <strong>Java</strong>-Programmen<br />

public class HalloAsterix {<br />

public static void main ( String [] args ) {<br />

String asterix = “Hallo, Asterix”;<br />

System.out.println (asterix);<br />

}<br />

}<br />

Das Programm besteht aus folgenden Bausteinen:<br />

- Klasse HalloAsterix<br />

- Methode main()<br />

- Variable asterix vom Typ String<br />

- Ausgabeanweisung System.out.println ()<br />

è diese Bausteine werden für fast jedes <strong>Java</strong>-Programm benötigt<br />

Dipl.-Inform. (FH) Helga Gabler 14


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

<strong>Java</strong>-Programme und Klassen<br />

Jedes <strong>Java</strong>-Programm besteht aus mindestens einer Klasse<br />

Klasse besteht aus<br />

- Schlüsselwort class (davor können Modifikatoren stehen, z.B. public)<br />

- Bezeichner der Klasse<br />

- Klassenrumpf wird durch {} gebildet<br />

im Klassenrumpf stehen die weiteren Programmteile<br />

Modifikatoren legen die Eigenschaften der Klasse fest<br />

Dipl.-Inform. (FH) Helga Gabler 15


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

<strong>Java</strong>-Programmen und Klassen<br />

Bsp.: selbst erstellte einfache Klasse „KlasseHallo“:<br />

class KlasseHallo {<br />

String hallo() {<br />

return "Hallo";<br />

}<br />

}<br />

Die Klasse wird üblicherweise in KlasseHallo.java gespeichert.<br />

Aus einer solchen Klasse können Objekte (Instanzen) erzeugt werden.<br />

Die Methode hallo() kann aufgerufen werden.<br />

Dipl.-Inform. (FH) Helga Gabler 16


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Methoden<br />

Methoden<br />

- sind eine Zusammenfassung von Deklarationen und Anweisungen<br />

- habenNamen und können unter diesem aufgerufen werden<br />

Methoden ersetzen in <strong>Java</strong> Funktionen, Prozeduren, Unterprogrammen<br />

(gibt es in <strong>Java</strong> nicht)<br />

public class Methode<strong>01</strong> {<br />

public static void main (String [] args ) {<br />

System.out.println (hallo() );<br />

}<br />

static String hallo() {<br />

return "Hallo";<br />

}<br />

}<br />

Dipl.-Inform. (FH) Helga Gabler 17


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Methoden<br />

è die Klasse Methode<strong>01</strong> enthält außer der Methode main() noch die Methode hallo()<br />

è Methode hallo() wird innerhalb der Klasse Methode<strong>01</strong> deklariert <strong>mit</strong>:<br />

Schlüsselwort static, Angabe String, Signatur hallo() und Methodenrumpf <strong>mit</strong> der Anweisung<br />

return "Hallo";<br />

è wird die Methode hallo() aufgerufen, liefert sie die Zeichenfolge "Hallo“ .<br />

è Aufruf der Methode hallo() steht innerhalb der Ausgabeanweisung System.out.println ()<br />

<strong>mit</strong> static deklarierte Methoden è statische Methoden oder Klassenmethoden (Ausnahmefall in OO-Progr.)<br />

Klassenmethoden können aufgerufen werden, ohne Instanzen der Klasse erzeugen zu müssen<br />

Rückgabetyp string: <strong>mit</strong> der Angabe string in der Deklaration wird Rückgabetyp festgelegt<br />

Rückgabewert: erfolgt <strong>mit</strong> der Anweisung return "Hallo";<br />

Methoden, die keinen Rückgabewert liefern, sind <strong>mit</strong> void deklariert.<br />

Methoden können Werte als Parameter übernehmen.<br />

(werden in der Deklaration als formale Parameter in runden Klammern festgelegt)<br />

Dipl.-Inform. (FH) Helga Gabler 18


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Methoden<br />

Beispiel für Methode <strong>mit</strong> Parametern: Methode summe()<br />

public class Methode<strong>02</strong> {<br />

public static void main (String [] args ) {<br />

System.out.println (" 1 + 1 ="+summe(1,1) );<br />

}<br />

static int summe (int a, int b) {<br />

return a+b;<br />

}<br />

}<br />

Methode liefert zwei int-Werte.<br />

Methode summe() wird <strong>mit</strong> den Werte 1 und 1 aufgerufen<br />

An der aufrufenden Stelle im Programm steht der Rückgabewert der Methode<br />

(=berechnete Summe 2 vom Typ int)<br />

static int summe (int a, int b):<br />

- Jeder formale Parameter muss separat als Variable <strong>mit</strong> Typ und Bezeichnung deklariert werden<br />

- so dekl. formale Parameter sind innerhalb der Methgode lokale Variablen<br />

Dipl.-Inform. (FH) Helga Gabler 19


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufgabe<br />

1. Was ist an der folgenden Zeile fehlerhaft?<br />

public static void Main (string [] args)<br />

Dipl.-Inform. (FH) Helga Gabler 20


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Grundtypen<br />

- vier Typen: (byte, short, int, long) für ganzzahlige Integerwerte<br />

- zwei Typen: (float, double) für Fließkommawerte (Gleitpunktwerte)<br />

- einen Typ: (char) für Character- oder Zeichenwerte<br />

- einen Typ: (boolean) für Wahrheitswerte (boolesche Werte)<br />

è http://java.rrzn.uni-hannover.de<br />

Typkonvertierung:<br />

niederwertigen è höherwertigen Typ ((=erweiterte Konvertierung) automatisch:<br />

byte > short > int > long > float > double und char > int<br />

höherwertigen è niederwertigen Typ (=eingeschränkte Konvertierung):<br />

<strong>mit</strong> dem cast-Operator (Konvertierungs-Operator): Ziel-Typ in runden Klammern<br />

i = (int) 99.9999; // double-wert 99.9999 wird nach int konvertiert<br />

// der Nachkommateil wird abgeschnitten.<br />

Dipl.-Inform. (FH) Helga Gabler 21


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Variablen<br />

Alle Variablen in <strong>Java</strong> haben folgende Eigenschaften:<br />

- Name oder Bezeichner<br />

- Typ<br />

- Wert<br />

- Sichtbarkeitsbereich und Lebensdauer (Modifikatoren)<br />

Beispiele:<br />

double x;<br />

x = 8.9;<br />

char c = ‘a‘;<br />

Alle Variablen müssen in <strong>Java</strong> deklariert werden.<br />

Dipl.-Inform. (FH) Helga Gabler 22


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Es gibt drei Arten von Variablen:<br />

Variablen<br />

- Lokale Variablen:<br />

- Deklaration: innerhalb einer Methode oder innerhalb eines Blocks einer Methode<br />

- müssen explizit initialisiert werden<br />

- Instanzvariablen:<br />

- Deklaration: innerhalb des Rumpfes einer Klasse<br />

- Existieren zusammen <strong>mit</strong> den Instanzen der Klasse<br />

- - Modifikatoren sind zulässig’<br />

- werden beim Erzeugen der Instanz initialisiert<br />

- Klassenvariablen<br />

- Deklaration: innerhalb des Rumpfes einer Klasse und<br />

explizit <strong>mit</strong> static als Klassenvariable vereinbart.<br />

- Existieren unabhängig von den Instanzen der Klasse<br />

- Modifikatoren sind zulässig<br />

- werden beim Laden der Klasse initialisiert<br />

Dipl.-Inform. (FH) Helga Gabler 23


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Variablen<br />

Beispiel:<br />

public class AsterixUndRoemer {<br />

public static void main ( String [] args ) {<br />

String ga, ro;<br />

int r;<br />

ga = "Asterix";<br />

ro = "Roemer";<br />

r = 1+1;<br />

System.out.println (ga + " sieht " + r + " "+ro);<br />

}<br />

}<br />

Beispiel<br />

private static int;<br />

// Klassenvariable<br />

private double y;<br />

private final String beispielString; // Konstante<br />

private Vector rechnungsPositionen;<br />

Dipl.-Inform. (FH) Helga Gabler 24


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Ausdrücke und Operatoren<br />

Arithmetische Operatoren: + - * / %<br />

Relationale Operatoren: > >= < > >>> >>=<br />

Sonstige Operatoren ?: [] . (parameterliste) (type) new instanceof +<br />

Prioritäten è http://java.rrzn.uni-hannover.de/tkji/javakurs/start-frame.html<br />

Dipl.-Inform. (FH) Helga Gabler 25


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufgaben<br />

public class ErsteKlasse {<br />

public static void main ( String [] args ) {<br />

for (int i = 0; < args.length; i++) {<br />

System.out.println (args [i]);<br />

}<br />

}<br />

}<br />

Was macht das oben stehende Programm?<br />

gibt aus, was eingegeben wurde<br />

Welche Variablen von welchem Typ werden verwendet?<br />

Integer i<br />

Was steht in <strong>Java</strong> am Ende einer Anweisung?<br />

ein Semikolon<br />

Welches Wort weist auf eine Schleife hin?<br />

for<br />

Wie oft wird die Schleife durchlaufen?<br />

sooft wie Anzahl Parameter vorhanden<br />

Wie werden Anweisungsblöcke geklammert?<br />

in geschweiften Klammern<br />

Aufgabe:<br />

1.Geben Sie das Programm ein und bringen Sie es zur Ausführung<br />

2. Suchen Sie in der Online-Dokumentation (API) nach der Beschreibung der<br />

Methode println und des Objekts System.out<br />

Dipl.-Inform. (FH) Helga Gabler 26


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen<br />

Es gibt zwei Gruppen von Kontrollstrukturen:<br />

- Verzweigungen<br />

- Schleifen (Wiederholungen)<br />

Entscheidungsanweisung if und if-else (Einfachverzweigungen)<br />

if-Anweisung: if (bedingung) anweisung<br />

Beispiel: if (x


Programm-Beispiel1<br />

<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen<br />

If und if-else:<br />

class Aufgabe4 {<br />

public static void main(String[] args) {<br />

int x=2, y=3, z=4;<br />

if ( x == 2 && y


Programm-Beispiel2<br />

<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen<br />

If und if-else:<br />

public class Kontroll05 {<br />

/* if-else-Anweisung<br />

Test, ob der String <strong>mit</strong> einem großen oder kleine "a" beginnt<br />

*/<br />

public static void main ( String [] args ) {<br />

String s;<br />

s = "Asterix";<br />

if (s!=null) { // aeusserer if-Block<br />

if (s.charAt (0) == 'a' || s.charAt (0) == 'A')<br />

System.out.println("String beginnt <strong>mit</strong> a,A");<br />

else<br />

System.out.println("String beginnt nicht <strong>mit</strong> a,A");<br />

} // Ende if<br />

} // Ende main<br />

}// Ende class<br />

geschachtelte if-else-Anweisung:<br />

<strong>mit</strong> der äußeren if-Abfrage wird getestet, ob der String initialisiert ist, d.h. ob eine Instanz existiert,<br />

auf die die Variable s verweist)<br />

(<strong>mit</strong> der Initialisierung erhält eine Referenzvariable einen Wert ungleich null)<br />

Dipl.-Inform. (FH) Helga Gabler 29


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen – Aufgabe<br />

• Schreiben Sie ein <strong>Java</strong>-Programm, welches einer Variablen x eine Zufallszahl<br />

zuweist und, je nachdem ob der erzeugte Zufallswert kleiner-gleich 0.5 ist oder<br />

nicht, für die Variable i den Wert 100 (für kleiner-gleich) oder -100 ausgibt.<br />

Suchen Sie dazu in der API-Spezifikation nach der Beschreibung der Methode<br />

Math.random()<br />

Dipl.-Inform. (FH) Helga Gabler 30


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen – Aufgabe<br />

public class Kontroll<strong>02</strong> {<br />

public static void main ( String [] args ) {<br />

double x;<br />

int i=0;<br />

x = Math.random();<br />

if (x


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen<br />

switch-Anweisung (Mehrfachverzweigung)<br />

Die switch-Anweisung kann die Folge von if-else-Anweisungen ersetzen<br />

switch (ausdruck {<br />

case konstante1: anweisung 1<br />

...<br />

case konstante2: anweisung 20<br />

...<br />

default: anweisung<br />

...<br />

}<br />

switch-Anweisung wird durch ausdruck gesteuert<br />

audruck muss vom Typ byte, short, char oder int sein.<br />

case = Einsprungziel<br />

default, wenn der Wert nicht übereinstimmt<br />

Dipl.-Inform. (FH) Helga Gabler 32


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Programmbeispiel: switch-Anweisung (Mehrfachverzweigung)<br />

public class Kontroll06 {<br />

public static void main ( String [] args ) {<br />

int a;<br />

a = (int) (Math.random() *4);<br />

System.out.println (a);<br />

switch (a) {<br />

case 0 : System.out.println ("Null");<br />

case 1 : System.out.println ("Eins");<br />

case 2 : System.out.println ("Zwei");<br />

case 3 : System.out.println ("default");<br />

} // Ende switch<br />

} // Ende main<br />

}// Ende class<br />

Ausgabe des Programms, wenn a = 1 ist:<br />

1<br />

Eins<br />

Zwei<br />

default<br />

è break-Anweisung<br />

Dipl.-Inform. (FH) Helga Gabler 33


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Programmbeispiel: switch-Anweisung <strong>mit</strong> break<br />

public class Kontroll06 {<br />

public static void main ( String [] args ) {<br />

int a;<br />

a = (int) (Math.random() *4);<br />

System.out.println (a);<br />

switch (a) {<br />

case 0 : System.out.println ("Null");<br />

break;<br />

case 1 : System.out.println ("Eins");<br />

break;<br />

case 2 : System.out.println ("Zwei");<br />

break;<br />

case 3 : System.out.println ("default");<br />

break;<br />

}<br />

}<br />

}<br />

Ausgabe des Programms, wenn a = 1 ist:<br />

1<br />

Eins<br />

Dipl.-Inform. (FH) Helga Gabler 34


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen – Aufgabe<br />

• Schreiben Sie ein <strong>Java</strong>-Programm, <strong>mit</strong> eine Methode namens zeigeTage,<br />

die am Bildschirm ausgibt, wie viele Tage ein Monat hat. Als Parameter<br />

erwartet sie zuerst den Monat (1-12), dann das Jahr. Das Jahr wird vierstellig<br />

eingegeben. Testen Sie die Funktion innerhalb von main durch folgende<br />

Aufrufe:<br />

zeigeTage (7, 1999);<br />

zeigeTage (12, 2000);<br />

zeigeTage (2, 1999);<br />

zeigeTage (2,2000);<br />

Dipl.-Inform. (FH) Helga Gabler 35


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

class Aufgabe11 {<br />

public static void main(String[] args) {<br />

zeigeTage(7, 1999);<br />

zeigeTage(12, 2000);<br />

zeigeTage(2, 1999);<br />

}<br />

public static void zeigeTage(int monat, int jahr) {<br />

int tage = 0;<br />

if(monat < 1 || monat >12) {<br />

System.out.println("Ungültiger Monat!");<br />

return;<br />

}<br />

switch(monat) {<br />

case 4: case 6: case 9: case 11:<br />

tage = 30;<br />

break;<br />

case 2:<br />

if(jahr % 4 ==0 && (jahr % 100 !=0 || jahr % 400 ==0))<br />

tage = 29;<br />

else<br />

tage = 28;<br />

break;<br />

default:<br />

tage = 31;<br />

}<br />

System.out.println(<br />

"Der Monat "+monat+" hat "+tage+" Tage.");<br />

Dipl.-Inform. } (FH) Helga Gabler 36<br />

}


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen – Schleifen<br />

while-Schleife in <strong>Java</strong><br />

while(bedingung)<br />

anweisung<br />

bzw.:<br />

while(bedingung) {<br />

anweisung<br />

...<br />

}<br />

Bei einer while-Schleife wird erst die Bedingung geprüft und wenn sie wahr ist<br />

wird die anweisung ausgeführt.<br />

Beispiel:<br />

int j=1;<br />

while (j


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufgabe: while-Schleife<br />

Notieren Sie folgende Aussagen als Bedingung für eine while – Schleife.<br />

‣ Solange summe ungleich 24<br />

‣ Solange zahl größer oder gleich x<br />

‣ Solange x minus y ungleich 234<br />

‣ Solange der Rest von a durch b ungleich 0<br />

Dipl.-Inform. (FH) Helga Gabler 38


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Lösung zur Aufgabe: while-Schleife<br />

while (summe != 24)<br />

while (zahl >= x)<br />

while (x-y != 234)<br />

while (a % b != 0)<br />

Dipl.-Inform. (FH) Helga Gabler 39


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen – Schleifen<br />

do-Schleife in <strong>Java</strong><br />

do<br />

anweisung<br />

while(bedingung)<br />

bzw.:<br />

do {<br />

anweisung<br />

...<br />

}<br />

while(bedingung)<br />

Bei einer do-Schleife wird die Schleife mindestens einmal durchlaufen, bis die bedingung<br />

zum Beenden der Schleife geprüft wird. (è nicht-abweisende Schleife)<br />

Beispiel:<br />

int i=0;<br />

do {<br />

System.out.println(“do while i


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen – Schleifen<br />

for-Schleife in <strong>Java</strong><br />

Die for-Schleife besteht aus Schleifenkopf und Schleifenkörper.<br />

for (init; bedingung; zaehlen)<br />

anweisung;<br />

bzw.:<br />

for (init; bedingung; zaehlen) {<br />

anweisung;<br />

...<br />

}<br />

Beispiel:<br />

for (int j=0; j


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen – Schleifen<br />

init-Ausdruck,<br />

- wird beim Eintritt einmal ausgeführt. (è Initialisierung von Werten).<br />

- innerhalb init-Ausdruck sind Variablen-Deklarationen zulässig (è lokale Variablen)<br />

- darf aus mehreren Ausdrücken bestehen, die durch Komma getrennt sind.<br />

bedingung:<br />

- wird vor jedem Durchlaufen der for-Schleife getestet<br />

- for-Schleife wird sooft durchlaufen, wie bedingung true ist<br />

zaehlen<br />

- dieser Ausdruck wird nach jedem Durchlaufen der Schleife ausgeführt (è<br />

Schleifenvariablen aktualisieren)<br />

- darf aus mehreren Ausdrücken bestehen, die durch Komma getrennt sind.<br />

init; bedingung; zaehlen sind optional<br />

Dipl.-Inform. (FH) Helga Gabler 42


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen – Schleifen<br />

public class Kontroll12 {<br />

/* In der for-Schleife werden die Einzelzeichen einer<br />

String-Zeichenfolge analysiert. Es werden die großen und die kleinen<br />

"e" in der Zeichenfolge gezählt.<br />

*/<br />

public static void main ( String [] args ) {<br />

String s = "Alle meine Entchen";<br />

int e=0;<br />

for (int i=0; i


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufgabe- Kontrollstrukturen<br />

public class ErsteKlasse {<br />

public static void main ( String [] args ) {<br />

for (int i = 0; < args.length; i++) {<br />

System.out.println (args [i]);<br />

}<br />

}<br />

}<br />

Fragen<br />

1. Welches Wort weist auf eine Schleife hin?<br />

2. Wie oft wird die Schleife durchlaufen?<br />

Aufgaben:<br />

1. Schreiben Sie ein <strong>Java</strong>-Programm, das die ganzen Zahlen von 1 bis 4 <strong>mit</strong>einander<br />

multipliziert. In der Mathematik heißt dieses Produkt Fakultät, geschrieben n! (4!<br />

Entspricht also 1*2*3*4 = 24..<br />

2. Schreiben Sie ein <strong>Java</strong>-Programm, das eine vorgegebene Anzahl von Integer-Werten<br />

addiert, den Mittelwert berechnet und am Bildschirm ausgibt.<br />

3. Schreiben Sie ein <strong>Java</strong>-Programm, das 20 positive ganzzahlige Zufallszahlen addiert,<br />

den Mittelwert errechnet und am Bildschirm ausgibt.<br />

Dipl.-Inform. (FH) Helga Gabler 44


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufgabe1- Kontrollstrukturen<br />

class Aufgabe7 {<br />

public static void main(String[] args) {<br />

double produkt=1;<br />

for(int i=1; i


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufgabe2- Kontrollstrukturen<br />

public class Mittelwert<br />

{<br />

public static void main (String [] args )<br />

{<br />

int x = 0;<br />

double y;<br />

for (int i = 1; i < 10 ; i++) {<br />

x = x + i;<br />

System.out.println (x);<br />

}<br />

System.out.print ("Summe von 1 bis 10 ist ");<br />

System.out.println (x);<br />

}<br />

}<br />

// Mittelwert bilden<br />

if (x > 0) {<br />

y = x / 10;<br />

System.out.print ("Mittelwert ist ");<br />

System.out.println (y);<br />

}<br />

Dipl.-Inform. (FH) Helga Gabler 46


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufgabe3- Kontrollstrukturen<br />

public class ZufallSummeMittel<br />

{<br />

public static void main (String [] args )<br />

{<br />

int x = 0;<br />

double y;<br />

int j;<br />

for (int i=0; i 0) {<br />

y = x / 10;<br />

System.out.print ("Mittelwert ist ");<br />

System.out.println (y);<br />

}<br />

Dipl.-Inform. (FH) Helga Gabler 47


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen break und continue<br />

Anweisungen break und continue:<br />

- zusätzliche Möglichkeit, die Schleifen und switch-Anweisung steuern<br />

- gibt es jeweils <strong>mit</strong> und ohne Marken (labeled und unlabeled break bzw. continue)<br />

break-Anweisung ohne Marken:<br />

- beendet aktuelle Schleife<br />

- setzt Programmausführung hinter der Schleife fort<br />

Beispielprogramm (Sucht in einem Array das erste negative Element):<br />

public class Kontroll16 {<br />

public static void main ( String [] args ) {<br />

int [] zahlen = { 30, 34, 93, 129, -12, 33, 89, 89};<br />

int pos = -1;<br />

for (int i=0; i < zahlen.length; i++) {<br />

if (zahlen[i] < 0) {<br />

pos=i;<br />

break;<br />

}<br />

}<br />

}<br />

System.out.println("Erstes negatives Element"+ " an Position zahlen["+pos+"]");<br />

Dipl.-Inform. (FH) Helga Gabler 48<br />

}


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen break und continue<br />

Beispiel (sucht in einem verschachteltenArray das erste negative Element –Zeile für Zeile):<br />

public class Kontroll17 {<br />

public static void main ( String [] args ) {<br />

int [] [] zahlen = { {23, 34, 678},<br />

{33, -3, 1<strong>01</strong>9},<br />

{3, 78, -4} };<br />

int ipos = -1;<br />

int jpos = -1;<br />

ende:<br />

for (int i=0; i < zahlen.length; i++) {<br />

for (int j=0; j


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen break und continue<br />

Verschachtelte Schleifen:<br />

- <strong>mit</strong> break-Anweisung kann man nur die innerste Schleife verlassen<br />

- <strong>mit</strong> break die äußeren Schleifen beenden è Marke setzen<br />

Zum Beispiel oben:<br />

- Array wird Zeile für Zeile durchsucht<br />

- aüßere for-Schleife = erster Array-Index<br />

- innere for-Schleife = zweiter Array-Index<br />

- wird ein neg. Element gefunden è <strong>mit</strong> break beide Schleifen beenden!<br />

- è vor die äußere Schleife wird die ende-Marke gesetzt<br />

- ende: frei wählbarer Bezeichner<br />

- der Doppelpunkt : Syntax-Element das die Marke kennzeichnet<br />

- Obwohl Marke vor der Anweisung steht, wird die Programmausführung hinter der<br />

Anweisung fortgesetzt.<br />

Dipl.-Inform. (FH) Helga Gabler 50


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen break und continue<br />

Anweisung continue:<br />

- beendet den aktuellen Schleifendurchlauf<br />

- setzt das Programm <strong>mit</strong> dem nächsten Durchlauf der Schleife fort.<br />

public class Kontroll18 {<br />

public static void main ( String [] args ) {<br />

}<br />

}<br />

String s1 = "Alle meine Entchen";<br />

int ne = 0;<br />

for (int i=0; i < s1.length(); i++) {<br />

if (s1.charAt(i) != 'e') continue;<br />

System.out.println("e an Position "+i);<br />

ne++;<br />

} // Ende for<br />

System.out.println(ne);<br />

Dipl.-Inform. (FH) Helga Gabler 51


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Kontrollstrukturen break und continue<br />

public class Kontroll19 {<br />

public static void main ( String [] args ) {<br />

String s = "Asterix und Obelix";<br />

String such = "ix";<br />

test:<br />

for (int i=0; i < s.length()-such.length(); i++) {<br />

int n = such.length();<br />

int j = i; int k = 0;<br />

while (n-- != 0) {<br />

if (s.charAt(i) != such.charAt (k++)) continue test;<br />

System.out.println(s.substring(i,s.length() ));<br />

} // Ende while<br />

} // Ende for<br />

}<br />

}<br />

Dipl.-Inform. (FH) Helga Gabler 52


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Array<br />

- Anzahl der Elemente wird bei Erzeugung des Arrays festgelegt,<br />

kann danach nicht mehr geändert werden.<br />

- Wertebereich des Laufindex ist 0 bis length-1<br />

- Array kann nur Elemente gleichen Typs enthalten<br />

- es gibt verschachtelte Arrays (keine mehrdimensionale Arrays)<br />

Deklaration von Arrays:<br />

int [] izahlen; oder int kzahlen []; // Array vom Typ int<br />

Erzeugen eines Arrays:<br />

double werte []; // Array vom Typ double deklarieren<br />

werte = new double [10]; // Array werte <strong>mit</strong> 10 Elementen erzeugen<br />

Dipl.-Inform. (FH) Helga Gabler 53


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Arrays<br />

Deklaration + Erzeugung in einer Anweisung:<br />

char carray[] = new char[40]; // char-Array carray für 40 Elemente deklarieren und erzeugen<br />

String s[] = new String[4]; // String-Array s für 4 Elemente deklarieren und erzeugen<br />

carray.length=40; s.length=4<br />

Deklaration + Erzeugung + <strong>mit</strong> Werte belegen in einer Anweisung:<br />

double xwerte [] = {1.9, 4.6, 0.009, 99.<strong>01</strong> };<br />

è Array vom Typ double <strong>mit</strong> vier Elementen (Werte in geschw. Klammer)<br />

Bearbeiten des Arrays:<br />

for (int i=0; i


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Arrays<br />

public class Arrays06 {<br />

public static void main(String[] args) {<br />

double x[] = new double [10];<br />

for(int i = 0; i < x.length; i++)<br />

x[i] = (i+1) * (i+1);<br />

int j = x.length;<br />

while (j-- > 0)<br />

System.out.println (x[j]);<br />

}<br />

}<br />

public class Arrays07 {<br />

public static void main(String[] args) {<br />

String lied[] = {"Alle", "meine", "Entchen" };<br />

for(int i = 0; i < lied.length; i++)<br />

System.out.println (lied[i]);<br />

}<br />

}<br />

Dipl.-Inform. (FH) Helga Gabler 55


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Arrays von Arrays<br />

public class Arrays10 {<br />

public static void main(String[] args) {<br />

int iab[] [] = new int [3] [2];<br />

int wert;<br />

for(int i = 0; i < iab.length; i++) {<br />

wert = (i+1)*100;<br />

for (int j = 0; j < iab[i].length; j++)<br />

iab[i] [j] = wert+(j+1);<br />

} // Ende for i - aeussere Schleife<br />

System.out.println(iab[0] [0]);<br />

System.out.println(iab[2] [1]);<br />

} // Ende main<br />

} // Ende Arrays10<br />

Dipl.-Inform. (FH) Helga Gabler 56


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufgaben ARRAY<br />

• Gegeben ein Array aus n ganzen Zahlen. Gesucht ein Array, bei dem<br />

jede Zahl um 1 höher ist, als im Ausgangs Array.<br />

• Schreiben Sie ein <strong>Java</strong>-Programm, das ein Array <strong>mit</strong> einer Länge zwischen 0<br />

und 19 anlegt . Die Anzahl der Elemente des Arrays soll <strong>mit</strong> Hilfe von<br />

Zufallszahlen bestimmt werden. (Die Werte der Arrayelemente sind null)<br />

3. Erweitern Sie Ihr Programm, indem Sie die Werte des Arrays <strong>mit</strong><br />

Zufallswerten zwischen 0 und 99 belegen.<br />

4. Schreiben Sie ein <strong>Java</strong>-Programm, welches die ersten 100 Primzahlen ausgibt.<br />

(Sieb des Erathostenes)<br />

Dipl.-Inform. (FH) Helga Gabler 57


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufgabe1 ARRAY<br />

public class ArrayInkrement {<br />

public static void main(String[] args) {<br />

int[] a1 = { 5, 2, 3, 20, 19 };<br />

int[] a2;<br />

a2 = a1;<br />

for(int i = 0; i < a1.length; i++)<br />

System.out.println("a1[" + i + "] vorher = " + a1[i]);<br />

for(int i = 0; i < a2.length; i++) {<br />

a2[i]++; /* a2[i] = a2[i]+1, dabei verändert sich a1 <strong>mit</strong><br />

==> Inhalte a1 = a2 */<br />

}<br />

for(int i = 0; i < a1.length; i++)<br />

System.out.println ("a1[" + i + "] nachher= " + a1[i]);<br />

}<br />

static void prt(String s) {<br />

System.out.println(s);<br />

}<br />

}<br />

Dipl.-Inform. (FH) Helga Gabler 58


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufgabe2 ARRAY<br />

import java.util.*;<br />

public class ArrayNewNull {<br />

static Random rand = new Random();<br />

static int pRand(int mod) {<br />

return Math.abs(rand.nextInt()) % mod;<br />

/*Math.abs ==> liefert den Absolut-Wert<br />

eines Integerwertes rand.nextInt() ==> liefert<br />

nächste Zufallszahl als 32-Bit-Intergerwert */<br />

}<br />

public static void main(String[] args) {<br />

int[] a;<br />

a = new int[pRand(20)];<br />

System.out.println("length of a = " + a.length);<br />

}<br />

for(int i = 0; i < a.length; i++)<br />

System.out.println("a[" + i + "] = " + a[i]);<br />

}<br />

static void prt(String s) {<br />

System.out.println(s);<br />

}<br />

Dipl.-Inform. (FH) Helga Gabler 59


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufgabe3 ARRAY<br />

import java.util.*;<br />

public class ArrayNewZufall {<br />

static Random rand = new Random();// Instanz rand der Klasse<br />

Random()<br />

static int pRand(int mod) {<br />

return Math.abs(rand.nextInt()) % mod;<br />

}<br />

public static void main(String[] args) {<br />

Integer[] a = new Integer[pRand(10)]; /* Integer-Array a<br />

einer Länge zw 0 und 9 wird deklariert */<br />

prt("length of a = " + a.length);<br />

for(int i = 0; i < a.length; i++) { // Inhalt von a ist null<br />

a[i] = new Integer(pRand(100));<br />

prt("a[" + i + "] = " + a[i]);<br />

}<br />

}<br />

static void prt(String s) {<br />

System.out.println(s);<br />

}<br />

}<br />

Dipl.-Inform. (FH) Helga Gabler 60


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufgabe4 ARRAY<br />

ublic class Erath {<br />

public static void main(String[] args) {<br />

int N=100;int j=0;<br />

boolean [] primliste=new boolean[N+1];<br />

prim_sieb(N,primliste);<br />

for (int i=2;i


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Ausgabeanweisungen<br />

Beispiele:<br />

System.out.println (“Hallo“)<br />

String a=“Guten“;<br />

String b=”Tag”;<br />

System.out.println (a+“ “+b);)<br />

System.out.print (“Hallo“)<br />

System.out.print (“<strong>Java</strong>“)<br />

è Hallo <strong>Java</strong><br />

Dipl.-Inform. (FH) Helga Gabler 62


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Ausgabeanweisungen<br />

Beispiele:<br />

public class Echo1 {<br />

public static void main (String echo[] ) {<br />

System.out.println (echo[0] );<br />

}<br />

}<br />

Benutzerfreundliches Einlesen von Aufrufparametern:<br />

public class Echo2 {<br />

public static void main (String echo[] ) {<br />

if (echo.length ==0)<br />

System.out.println (echo[0] );<br />

else<br />

for (int i=0; i


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Beispiele:<br />

String az;<br />

String a=“ABC“;<br />

String a=“XYZ“;<br />

az = a+z;<br />

int j;<br />

j=1+1;<br />

String ergebnis=“j=“+j;<br />

Zeichenfolgen und Strings<br />

public class AufbauString<strong>01</strong> {<br />

public static void main ( String [] args ) {<br />

String s = "Eine Zeichenfolge";<br />

int l;<br />

l = s.length ();<br />

System.out.println (" l = " +l);<br />

}<br />

}<br />

Ausgabe: l=17<br />

Dipl.-Inform. (FH) Helga Gabler 64


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Zeichenfolgen und Strings<br />

methode charAT (int index)<br />

public class AufbauString<strong>02</strong> {<br />

public static void main ( String [] args ) {<br />

String a;<br />

a = "Asterix";<br />

}<br />

char c1, c2;<br />

c1=a.charAt(0); è liefert das Zeichen an Position 0 (=A)<br />

c2=a.charAt(a.length()-1);è liefert das letzte Zeichen (x)<br />

System.out.println (c1+","+c2);<br />

}<br />

methode substring (aindex, eindex)<br />

public class AufbauString03 {<br />

public static void main ( String [] args ) {<br />

String s="Asterix und Obelix";<br />

String sub1, sub2, sub3;<br />

sub1 = s.substring(0,7);<br />

sub2 = s.substring(8,11);<br />

sub3 = s.substring(12,s.length());<br />

System.out.println (sub1+"\n"+sub2+"\n"+sub3);<br />

}<br />

}<br />

Dipl.-Inform. (FH) Helga Gabler 65


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Aufbau von <strong>Java</strong>-Programmen<br />

public class HalloAsterix {<br />

public static void main ( String [] args ) {<br />

String asterix = “Hallo, Asterix”;<br />

System.out.println (asterix);<br />

}<br />

}<br />

Das Programm besteht aus folgenden Bausteinen:<br />

- Klasse HalloAsterix<br />

- Methode main()<br />

- Variable asterix vom Typ String<br />

- Ausgabeanweisung System.out.println ()<br />

è diese Bausteine werden für fast jedes <strong>Java</strong>-Programm benötigt<br />

Dipl.-Inform. (FH) Helga Gabler 66


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

<strong>Java</strong>-Programme und Klassen<br />

Jedes <strong>Java</strong>-Programm besteht aus mindestens einer Klasse<br />

Klassen<br />

- zentrale Elemente in der OO-Programmierung<br />

- jedes <strong>Java</strong>-Programm besteht aus mindestens einer Klasse<br />

Klasse besteht aus<br />

- Schlüsselwort class (davor könne Modifikatoren stehen, z.B. public)<br />

- Bezeichner der Klasse<br />

- Klassenrumpf wird durch {} gebildet<br />

im Klassenrumpf stehen die weiteren Programmteile<br />

Modifikatoren legen die Eigenschaften der Klasse fest<br />

Dipl.-Inform. (FH) Helga Gabler 67


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

<strong>Java</strong>-Programmen und Klassen<br />

Bsp.: selbst erstellte einfache Klasse „KlasseHallo“:<br />

class KlasseHallo {<br />

String hallo() {<br />

return "Hallo";<br />

}<br />

}<br />

Die Klasse wird üblicherweise in KlasseHallo.java gespeichert.<br />

Aus einer solchen Klasse können Objekte (Instanzen) erzeugt werden.<br />

Die Methode hallo() kann aufgerufen werden.<br />

Dipl.-Inform. (FH) Helga Gabler 68


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

<strong>Java</strong>-Programmen und Klassen<br />

<strong>mit</strong> dem Modifikator public wird die Klasse als „öffentlich“ deklariert,<br />

d.h. die Klasse ist in allen Klassen sichtbar<br />

Klassen, die als Applikation ausgeführt werden sollen (Bsp. HalloAsterix) müssen<br />

public sein, da<strong>mit</strong> die<strong>Java</strong>-VM auf die Klasse zugreifen kann.<br />

public class HalloAsterix {<br />

public static void main ( String [] args ) {<br />

String asterix = “Hallo, Asterix”;<br />

System.out.println (asterix);<br />

}<br />

}<br />

Deklaration einer Klasse = vollständige Beschreibung einer Klasse.<br />

Der Quelltext des Programms HalloAsterix besteht aus<br />

den Deklaration der Klassen HalloAsterix.<br />

Dipl.-Inform. (FH) Helga Gabler 69


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

<strong>Java</strong>-Programmen und Klassen<br />

allgem. Regeln und Konventionen für Klassen und <strong>Java</strong>-Quelltext:<br />

- Quelltext-Dateien in <strong>Java</strong> bestehen aus einer Folge von Klassen-Deklarationen<br />

(Außerhalb von Klassendeklarationen sind im <strong>Java</strong>-Quelltext nur die<br />

Anweisungen import und package sowie Kommentare zulässig)<br />

- Wird im Quelltext eine Klasse public deklariert, muss der Name der<br />

Quelltext-Datei <strong>mit</strong> dem Namen der public-Klasse übereinstimmen.<br />

Eine Quelltextdatei darf maximal eine Klasse vom Typ public enthalten.<br />

- Üblicherweise wird der Quelltext jeder Klasse in einer eigenen Datei<br />

gespeichert.<br />

wesentliches Merkmal einer Klassse<br />

aus Klassen können Objekte, bzw. Instanzen gebildet werden.<br />

Dipl.-Inform. (FH) Helga Gabler 70


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Programmelemente innerhalb von Klassen<br />

Rumpf einer Klasse:<br />

- Deklaration (Festlegung, Vereinbarung) von Methoden<br />

- Deklaration (Festlegung, Vereinbarung) von Variablen<br />

innerhalb einer Klasse deklarierte Variablen = Instanzvariablen oder Klassenvariablen<br />

innerhalb einer Methode deklarierte Variablen = lokale Variablen<br />

Eine Klasse besteht aus Datenelementen. Konstruktoren und Methoden.<br />

Dipl.-Inform. (FH) Helga Gabler 71


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Programmbeispiel<br />

public class Konto {<br />

// Datenelemente<br />

private int nr;<br />

private String name;<br />

private double betrag;<br />

//private hießt: „Zugriffsklasse für Datenelemente“ es darf nur innerhalb einer Klasse zugegriffen werden<br />

// Konstruktor (legt fest, wie ein Objekt der Klasse konstruiert wird.<br />

(muß wie die Klasse heißen, hat kein Ergebnistyp)<br />

public Konto (int nr1, String name1) { //public: weil andere darauf arbeiten<br />

this.nr = nr1; // Verweisoperator<br />

this.name = name1;<br />

}<br />

// Methode 1: Geld abheben<br />

}<br />

public void abheben (double b) { //void è Methode liefert keinen Wert zurück<br />

betrag = (betrag - b);<br />

}<br />

// Methode 2: Geld einbezahlen<br />

public void einzahlen ( double b) {<br />

betrag = betrag + b;<br />

}<br />

Dipl.-Inform. (FH) Helga Gabler 72


<strong>Informatik</strong> 1 - Übungen -<strong>WS</strong> <strong>01</strong>/<strong>02</strong><br />

<strong>Softwareentwicklung</strong> <strong>mit</strong> <strong>Java</strong><br />

Programmbeispiel: switch-Anweisung <strong>mit</strong> Fehlerabfrage<br />

class Aufgabe12 {<br />

public static void main(String[] args) {<br />

System.out.print("Zeichen eingeben: ");<br />

try {<br />

char b = (char)System.in.read();<br />

switch(b) { //(1)<br />

case '0': case '1': case '2': case '3':<br />

case '4': case '5': case '6': case '7':<br />

case '8': case '9': //(2)<br />

System.out.println("Ziffer!");<br />

break;<br />

case '.': case ',': case ';':<br />

case '?': case '!': case ':':<br />

System.out.println("Satzzeichen!");<br />

break;<br />

default:<br />

System.out.println("Buchstabe/Sonderzeichen!");<br />

}<br />

}<br />

catch (java.io.IOException e) {<br />

System.out.println("Eingabefehler");<br />

return;<br />

}<br />

}<br />

Dipl.-Inform. (FH) Helga Gabler 73<br />

}

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!