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
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 />
}