Softwareentwicklung Sequenz, Verzweigungen, Schleifen

Mag. iur. Dr. techn. Michael Sonntag Softwareentwicklung Sequenz, Verzweigungen, Schleifen Institut für Informationsverarbeitung und Mikroprozessort...
Author: Sophie Dresdner
1 downloads 0 Views 521KB Size
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