Programmierkurs Java

19
Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit 7 Kontrollstrukturen (Hamster-Modell)

description

Programmierkurs Java. Teil Imperative Programmierung Unterrichtseinheit 7 Kontrollstrukturen (Hamster-Modell). Dr. Dietrich Boles. Gliederung. Endlosschleife Beispiele Codekonventionen Zusammenfassung. Blockanweisung Leeranweisung Motivation Kontrollstrukturen Testbefehle - PowerPoint PPT Presentation

Transcript of Programmierkurs Java

Page 1: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 1

Programmierkurs Java

Dr. Dietrich Boles

Teil

Imperative Programmierung

Unterrichtseinheit 7

Kontrollstrukturen(Hamster-Modell)

Page 2: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 2

Gliederung

Blockanweisung

Leeranweisung

Motivation

Kontrollstrukturen

Testbefehle

Boolesche Ausdrücke

Bedingte Anweisung

Alternativanweisung

Wiederholungsanweisung

Endlosschleife

Beispiele

Codekonventionen

Zusammenfassung

Page 3: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 3

Blockanweisung

Anweisung (3)

Anweisungs-sequenz

{ }Blockanweisung

Grundbefehl

Prozeduraufruf

Blockanweisung

Syntax:

Semantik:

Zusammenfassung mehrerer Anweisungen zu einer (zusammengesetzten) Anweisung

Page 4: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 4

Leeranweisung

;Leer anweisung

Anweisung (4)Grundbefehl

Prozeduraufruf

Blockanweisung

Leeranweisung

Syntax:

Semantik:

keine Auswirkungen auf den Programmablauf

Page 5: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 5

Motivation Kontrollstrukturen

Motivation

Nur wenn der Hamster Körner im Maul hat, soll er eines davon ablegen Nur wenn die Kachel vor dem Hamster frei ist, soll er nach vorne

gehen; andernfalls soll er sich linksum drehen.

Solange der Hamster nicht vor einer Mauer steht, soll er wiederholt eine Kachel nach vorne gehen.

Solange sich noch Körner auf der Kachel des Hamsters befinden, soll er wiederholt ein Korn aufnehmen.

Solange der Hamster nicht vor einer Mauer steht und er noch Körner im Maul hat, soll er wiederholt eine Kachel nach vorne gehen und jeweils ein Korn ablegen.

Hamster-Programme für eine bestimmte Klasse von Territorien!

Page 6: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 6

Testbefehle

Drei Testbefehle:

Lieferung von booleschen Werten (true, false):

vornFrei() ist das Feld vor dem Hamster blockiert? maulLeer() ist das Maul des Hamsters leer? kornDa() liegt ein Korn auf der aktuellen Kachel?

)Testbefehl

(vornFrei

maulLeer

kornDa

Syntax:

Semantik:

Page 7: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 7

Boolesche Ausdrücke

( )

booleschesLiteral

boolescher Ausdruck

!

&&

||

boolescher Ausdruck

boolescher Ausdruck

boolescher Ausdruck

boolescher Ausdruck

boolescher Ausdruck

Testbefehl

false

true

boolesches Literal

boolescher AusdruckSyntax:

Semantik: siehe Aussagenlogik

Page 8: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 8

Bedingte Anweisung (1)

( )

bedingte Anweisung

Auswahlanweisung (1)

boolescher Ausdruck

Anweisungbedingte Anweisung

Anweisung (5)Grundbefehl

Prozeduraufruf

Blockanweisung

Leeranweisung

Auswahl-anweisung

if

Syntax:

Page 9: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 9

Bedingte Anweisung (2)

Beispiele:

if (vornFrei()) vor();

if (!maulLeer()) { gib();}

if (kornDa() && vornFrei()) { nimm(); vor();}

if (kornDa()) if (vornFrei()) { nimm(); vor(); }

Semantik:

1. Werte den booleschen Ausdruck aus.2. Nur falls der Ausdruck den Wert true liefert, führe die true-

Anweisung aus.

Page 10: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 10

Alternativanweisung (1)

Alternativanweisung

bedingte AweisungAuswahlanweisung (2)

else Anweisungbedingte AweisungAlternativanweisung

Semantik:

1. Werte den booleschen Ausdruck aus.2. Falls der Ausdruck den Wert true liefert, führe die true-

Anweisung aus.3. Andernfalls führe die false-Anweisung aus.

Syntax:

Page 11: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 11

Alternativanweisung (2)

if (vornFrei()) { vor();} else { linksUm();}

if (maulLeer()) ;else gib();linksUm();

if (vornFrei()) vor();else if (kornDa()) nimm();else if (!maulLeer()) gib();else linksUm();

Beispiele:

Page 12: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 12

Wiederholungsanweisung (1)

Motivation: Der Hamster soll bis zur nächsten Wand laufen.

void main() { vor(); vor();}

void main() { vor(); vor(); vor(); }

Allgemeingültig: solange vornFrei(): vor();

Page 13: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 13

Wiederholungsanweisung (2)

Grundbefehl

Prozeduraufruf

Blockanweisung

Leeranweisung

Auswahl-anweisung

Anweisung (6)

Wiederholungs-anweisung

while-Anweisung( )boolescher

AusdruckAnweisungwhile ( )boolescher

AusdruckAnweisungwhile

while- Anweisung

Wiederholungsanweisung

Syntax:

Page 14: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 14

Wiederholungsanweisung (3)

Beispiel:

Semantik:

1. Werte den booleschen Ausdruck (Schleifenbedingung) aus.2. Falls die Schleifenbedingung den Wert false liefert, beende

die Wiederholungsanweisung.3. Falls die Schleifenbedingung den Wert true liefert, führe die

Anweisung (Iterationsanweisung) aus und fahre bei (1.) fort.

void main() { while (vornFrei()) { vor(); }} Demo

Page 15: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 15

Endlosschleife

void main() { while (vornFrei()) { linksUm(); }}

Page 16: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 16

Beispiel 1

Aufgabe:Landschaft beliebig! Der Hamster soll bis zur nächsten Wand laufen und dabei alle Körner fressen.

void laufeBisZurNaechstenWandUndSammle() { sammle(); while (vornFrei()) { vor(); sammle(); }}

void sammle() { while (kornDa()) { nimm(); }}

Demo

Page 17: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 17

Beispiel 2

Aufgabe: Typische Landschaften:Der Hamster steht vor einemregelmäßigen Berg unbekannterHöhe. Er soll den Gipfel erklimmen.

Programm:void main() { laufeZumBerg(); erklimmeGipfel();}void laufeZumBerg() { while (vornFrei()) vor();}void erklimmeGipfel() { while (!vornFrei()) { erklimmeEineStufe(); }}

void erklimmeEineStufe() { linksUm(); vor(); rechtsUm(); vor();}

void rechtsUm() { linksUm(); linksUm(); linksUm();}

Demo

Page 18: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 18

Codekonventionen

Hinter if und while ein Leerzeichen

Vor und hinter duadischen Operatoren ein Leerzeichen

Für true-, false- und Iterationsanweisung möglichst immer die

Blockanweisung verwenden

falls Blockanweisung:

) und { in dieselbe Zeile, durch Leerzeichen getrennt

} unter i von if bzw. w von while

innere Anweisungen um 4 Spalten einrücken

Alternativanweisung: } else { (in eine Zeile)

geschachtelte Schleifen vermeiden ( Prozeduren)

Page 19: Programmierkurs Java

Programmierkurs Java UE 7 Kontrollstrukturen Dietrich Boles Seite 19

Zusammenfassung

Kontrollstruktur: Schema, welches die Reihenfolge der Abarbeitung

von Anweisungen festlegt

Sequenz: nacheinander

if-Anweisung: Ausführung von Anweisungen abhängig von einer

Bedingung

while-Anweisung: wiederholte Ausführung von Anweisungen,

abhängig von einer Bedingung