Mag. iur. Dr. techn. Michael Sonntag
Softwareentwicklung Sequenz, Verzweigungen, Schleifen
Institut für Informationsverarbeitung und Mikroprozessortechnik (FIM) Johannes Kepler Universität Linz, Österreich E-Mail:
[email protected] http://www.fim.uni-linz.ac.at/staff/sonntag.htm © Michael Sonntag 2004
?
? ?
Fragen?
?
Bitte gleich stellen!
? © Michael Sonntag 2004
?
Java Sequenz
Michael Sonntag
Sequenz, Verzweigungen, Schleifen
3
Sequenz in Java z z
z
Einzelne Anweisungen müssen durch ";" getrennt werden In einer Zeile oder in mehreren Zeilen ist egal
Der Beistrich „ , “ fügt mehrere Anweisungen zu einer einzigen zusammen Æ
Nur in besonderen Fällen möglich » Z. B. Variablen-Initialisierung, Startanweisung der for-Schleife
Æ
Ansonsten nicht verwenden; wird nicht gebraucht und führt leicht zu Mißverständnissen!
Sequenz.java Michael Sonntag
Sequenz, Verzweigungen, Schleifen
4
{ Blöcke in Java } z
Mehrere Anweisungen können mit geschweiften Klammern zu einer einzigen Anweisung zusammengefaßt werden Æ Æ Æ Æ Æ
Blöcke können beliebig verschachtelt werden, aber nicht verzahnt! Schleifen, Verzweigung, etc. gelten immer nur für eine einzige Anweisung! Sollen mehrere hineingesetzt werden, so müssen diese als Block zusammengefaßt werden. Sichtbarkeit von Variablen (siehe später bei Methoden) Kann jederzeit auch so beliebig eingesetzt werden » Eher vermeiden; Programm wird schwerer lesbar!
z
Konventionen: Æ
Der Inhalt eines Blockes wird eingerückt » 2-4 Leerzeichen oder ein Tabulator
Æ Michael Sonntag
Position von { und } je nach Vorliebe, aber konstant Sequenz, Verzweigungen, Schleifen
5
{ Blöcke in Java } Beispiele z
Beispiel 1: { int x=0; x=y/2+4; y=x+z; }
z
Beispiel 2: public static void main(String[] args) { System.out.println("Hello World\n"); } Bloecke.java
Michael Sonntag
Sequenz, Verzweigungen, Schleifen
6
Java Verzweigungen
Michael Sonntag
Sequenz, Verzweigungen, Schleifen
7
Verzweigung in Java z
"if (" Boolscher Ausdruck ")" Anweisung else Anweisung Æ Æ
Der "else" Zweig kann auch weggelassen werden Immer nur eine einzelne Anweisung möglich » Mehrere gewünscht: Block! Z. B.: {Anweisung;Anweisung;}
Æ
Die Bedingung (der Ausdruck) muß in Klammern stehen » Muß ein echter Ausdruck sein; d. h. kein automatisches "!=0" wie bei C!
Æ
z
Vergleiche mit dem Konditional-Operator!
Konventionen: Æ Æ
Michael Sonntag
Beide Anweisungen beginnen in einer neuen Zeile Beide Anweisungen werden eingerückt
Verzweigung.java Sequenz, Verzweigungen, Schleifen
8
Verzweigung in Java z
Beispiele: if(x35.0) System.out.println("Alarm!"); if(temp>30.0) { System.out.println("Heiß!"); hitzeFrei=true; }
Michael Sonntag
Sequenz, Verzweigungen, Schleifen
9
Verzweigung in Java „Dangling else“ z z
Werden zwei "if" geschachtelt, so stellt sich die Frage wozu ein else gehört: Innen oder außen? Beispiel: if(temp0 && --count>0) Æ
z
Wird nie einen Fehler ausgeben, daß durch 0 dividiert wird, da in diesem Fall keine Division berechnet wird Wenn count vorher mindestens 2 war; sinkt nicht unter 0 ab
if(c!=' ' || (c=in.getchar())!=' ') Æ
Wenn c ein Leerzeichen ist, wird noch ein Zeichen eingelesen, ansonsten jedoch nicht » Praxis: Ähnliches wird in while-Schleifen verwendet (siehe später)
Michael Sonntag
Sequenz, Verzweigungen, Schleifen
11
Verzweigung in Java Kaskade z
Mehrere Abfragen hintereinander werden nicht mehr eingerückt: if (a" Ausgabedatei
Kombinieren ist auch möglich: Æ
z
Eine Datei kann als Eingabe für das Programm verwendet werden "java " Programmname " 0) schreiben von buffer mit Länge len nach dst } while(len>0); z
Durchdenken: Wie oft wird die Schleife durchlaufen? Æ Æ
Michael Sonntag
len ist sofort 0; len ist beim zweiten Mal 0 Wie könnte man dies noch schreiben (while)?
Sequenz, Verzweigungen, Schleifen
22
Schleifen in Java While ⇒ Repeat z
Jede while-Schleife, kann durch eine repeat-Schleife ersetzt werden Æ Æ
Grundsatz: Bedingung bleibt gleich (klassische repeat-Schleife: Bedingung negieren; d. h. "!" davorsetzen) Um die Möglichkeit der Niemals-Ausführung zu sichern muß ein if eingesetzt werden: Verdopplung der Bedingung
if( Bedingung ) { do { Anweisung } while( Bedingung ); } Michael Sonntag
Sequenz, Verzweigungen, Schleifen
23
Schleifen in Java Repeat ⇒ While z
Jede repeat-Schleife, kann durch eine while-Schleife ersetzt werden Æ Æ
Grundsatz: Bedingung bleibt gleich (klassische repeat-Schleife: Bedingung negieren; d. h. "!" davorsetzen) Damit die Anweisung auf jeden Fall zumindest einmal ausgeführt wird, muß sie verdoppelt und vor die Schleife geschrieben werden
Anweisung; while( Bedingung ) { Anweisung; } Michael Sonntag
Sequenz, Verzweigungen, Schleifen
24
Schleifen in Java For z
"for(" StartA ";" AB ";" SchleifenA ")" Anweisung Æ
StartA (Startanweisung): Wird ein Mal vor dem Betreten der Schleife ausgeführt, dann nie wieder » Hier können lokale Variablen für die Schleife definiert werden » Kann leer bleiben
Æ
AB (Ausführungsbedingung): Die Schleife wird solange wiederholt, als dieser boolsche Ausdruck "true" ergibt. Der Ausdruck wird vor dem ersten Betreten und nach jedem Durchlauf neu berechnet » Fehlt dieser Ausdruck, wird er als "true" betrachtet » Endlosschleife: for(;;) Anweisung; Abbruch durch break (siehe unten)
Æ
SchleifenA (Schleifenanweisung): Wird nach jedem Schleifendurchlauf ausgeführt (nach Anweisung und vor AB) » Kann leer bleiben
z
Eigentlich eine generalisierte while-Schleife!
Michael Sonntag
For.java Sequenz, Verzweigungen, Schleifen
25
Schleifen in Java For-Beispiel Zählschleife: 10 Mal ausführen der Anweisung for(int i=0;i