2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:

Größe: px
Ab Seite anzeigen:

Download "2.4 Schleifen. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung:"

Transkript

1 2.4 Schleifen Schleifen beschreiben die Wiederholung einer Anweisung bzw. eines Blocks von Anweisungen (dem Schleifenrumpf) bis eine bestimmte Bedingung (die Abbruchbedingung) eintritt. Schleifen unterscheiden sich hinsichtlich des Zeitpunktes der Prüfung der Abbruchbedingung: Prüfung vor jedem Durchlauf durch den Schleifenrumpf Prüfung nach jedem Durchlauf durch den Schleifenrumpf (Prüfung in jedem Durchlauf durch den Schleifenrumpf) Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 71

2 Wir unterscheiden in Java 3 verschiedene Schleifenarten: Die while-schleife: (Prüfung vor Durchlauf) while (n > 0) { erg = erg * n; n = n - 1; Solange n noch größer als 0 ist, führe Anweisungen im Schleifenrumpf aus. Der Schleifenrumpf wird 0 mal oder einmal oder mehr als einmal durchlaufen. Die do-schleife (Prüfung nach Durchlauf) do { while (n < 0); Lese einen Wert für n ein, solange n negativ ist. Der Schleifenrumpf wird einmal oder mehr als einmal durchlaufen. Die for-schleife (Prüfung vor Durchlauf) for (i = n; i > 0; i--) erg = erg * i; Für alle Werte i von n bis 1 multipliziere den Wert von erg mit dem Wert von i. Der Schleifenrumpf wird 0 mal oder einmal oder mehr als einmal durchlaufen. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 72

3 Die while-schleife Syntax <WhileSchleife> ::= while ( <Ausdruck> ) <Anweisung> while (n > 0) { erg = erg * n; n = n - 1; Semantik Solange die in <Ausdruck> angegebene Bedingung erfüllt ist, führe die Anweisung (bzwl. den Block von Anweisungen) in <Anweisung> aus. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 73

4 Die do-schleife Syntax <DoSchleife> ::= do <Anweisung> while ( <Ausdruck> ) do while (n < 0); Semantik Führe die Anweisung (bzw. den Block von Anweisungen) in <Anweisung> aus, solange die in <Ausdruck> angegebene Bedingung erfüllt ist. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 74

5 Die for-schleife Syntax <ForSchleife> ::= for ( <[For-Init]>; <[Ausdruck]>; <[For-Update]> ) <Anweisung> <For-Init> ::= <Ausdruck> <{,Ausdruck>... Variablendeklaration <For-Update> ::= <Ausdruck> <{,Ausdruck> for (i = n; i > 0; i--) erg = erg * i; Semantik Führe die Anweisungen in <For-Init> aus. Solange dann die in <Ausdruck> angegebene Bedingung erfüllt ist, führe die Anweisung (bzw. den Block von Anweisungen) in <Anweisung> aus. Nach jeder Ausführung eines Blockes führe die Anweisungen in <For-Update> aus, bevor die Bedingung in <Ausdruck> erneut geprüft wird. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 75

6 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: int for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { int p = i*j; Out.print(p + " "); Out.println(); Schleifen können beliebig ineinander verschachtelt werden. Im Beispiel links enthält der Schleifenrumpf der for-schleife mit Laufvariable i eine weitere for-schleife mit Laufvariable j. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

7 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: int for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { int p = i*j; Out.print(p + " "); Out.println(); Simulation per Hand für n = 2: i j p 1 Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

8 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: int for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { int p = i*j; Out.print(p + " "); Out.println(); Simulation per Hand für n = 2: i j p 1 1 Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

9 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: Simulation per Hand für n = 2: int for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { int p = i*j; Out.print(p + " "); Out.println(); Ausgabe: i j p Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

10 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: Simulation per Hand für n = 2: int for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { int p = i*j; Out.print(p + " "); Out.println(); Ausgabe: i j p Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

11 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: Simulation per Hand für n = 2: for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { int p = i*j; Out.print(p + " "); Out.println(); Ausgabe: i j p Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

12 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: Simulation per Hand für n = 2: int for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { int p = i*j ; Out.print(p + " ") ; Out.println(); Ausgabe: i j p Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

13 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: Simulation per Hand für n = 2: for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { int p = i*j ; Out.print(p + " ") ; Out.println(); Ausgabe: i j p Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

14 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: Simulation per Hand für n = 2: for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { int p = i*j ; Out.print(p + " ") ; Out.println(); Ausgabe: i j p Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

15 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: Simulation per Hand für n = 2: int for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { int p = i*j ; Out.print(p + " ") ; Out.println(); Ausgabe: i j p Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

16 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: Simulation per Hand für n = 2: for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { int p = i*j ; Out.print(p + " ") ; Out.println(); Ausgabe: i j p Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

17 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: Simulation per Hand für n = 2: for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { int p = i*j ; Out.print(p + " ") ; Out.println(); Ausgabe: i j p Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

18 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: Simulation per Hand für n = 2: for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { int p = i*j ; Out.print(p + " ") ; Out.println(); Ausgabe: i j p Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

19 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: Simulation per Hand für n = 2: int for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { int p = i*j ; Out.print(p + " ") ; Out.println(); Ausgabe: i j p Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

20 Schachtelung von Schleifen Beispiel: Für alle i, j {1,..., n berechne i j und gebe eine Tabelle der Produkte aus: Simulation per Hand für n = 2: for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { int p = i*j; Out.print(p + " "); Out.println(); Ausgabe: i j p Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 76

21 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben. i = 1; erg = 1; while (i <= n) { erg = erg * i; i = i + 1; Out.println("erg = "+ erg); Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 77

22 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben: Zusicherungen aus der Schleifenbedingung i = 1; erg = 1; while (i <= n) { // i <= n erg = erg * i; i = i + 1; // i > n Out.println("erg = "+ erg); Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 77

23 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben: Zusicherungen aus der Schleifenbedingung und Schleifeninvariante i = 1; erg = 1; while (i <= n) { // i <= n erg = erg * i; i = i + 1; // erg = (i-1)! // i > n Out.println("erg = "+ erg); Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 77

24 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben: Zusicherungen aus der Schleifenbedingung und Schleifeninvariante i = 1; erg = 1; while (i <= n) { // i <= n erg = erg * i; i = i + 1; // erg = (i-1)! // i > n Out.println("erg = "+ erg); Zu zeigen: 1) Die Schleifeninvariante gilt immer, dazu: Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 77

25 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben: Zusicherungen aus der Schleifenbedingung und Schleifeninvariante i = 1; erg = 1; while (i <= n) { // i <= n erg = erg * i; i = i + 1; // erg = (i-1)! // i > n Out.println("erg = "+ erg); Zu zeigen: 1) Die Schleifeninvariante gilt immer, dazu: 1a) Die Schleifeninvariante gilt vor dem ersten Durchlauf. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 77

26 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben: Zusicherungen aus der Schleifenbedingung und Schleifeninvariante i = 1; erg = 1; while (i <= n) { // i <= n erg = erg * i; i = i + 1; // erg = (i-1)! // i > n Out.println("erg = "+ erg); Zu zeigen: 1) Die Schleifeninvariante gilt immer, dazu: 1a) Die Schleifeninvariante gilt vor dem ersten Durchlauf. 1b) Gilt die Schleifeninvariante vor einem beliebigen Durchlauf, so gilt sie auch nach diesem Durchlauf (Induktion über die Anzahl der Durchläufe). Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 77

27 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben: Zusicherungen aus der Schleifenbedingung und Schleifeninvariante i = 1; erg = 1; while (i <= n) { // i <= n erg = erg * i; i = i + 1; // erg = (i-1)! // i > n Out.println("erg = "+ erg); Zu zeigen: 1) Die Schleifeninvariante gilt immer, dazu: 1a) Die Schleifeninvariante gilt vor dem ersten Durchlauf. 1b) Gilt die Schleifeninvariante vor einem beliebigen Durchlauf, so gilt sie auch nach diesem Durchlauf (Induktion über die Anzahl der Durchläufe). 2) Aus der Schleifeninvariante, der Schleifenbedingung (und evtl. einigen Anweisungen aus dem Schleifenblock) folgt die Korrektheit des Programmstückes. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 77

28 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben: Zusicherungen aus der Schleifenbedingung und Schleifeninvariante i = 1; erg = 1; while (i <= n) { // i <= n erg = erg * i; i = i + 1; // erg = (i-1)! // i > n Out.println("erg = "+ erg); Korrektheitsbeweis: 1a) Die Schleifeninvariante erg = (i 1)! gilt vor der ersten Ausführung der Schleife. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 78

29 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben: Zusicherungen aus der Schleifenbedingung und Schleifeninvariante i = 1; erg = 1; while (i <= n) { // i <= n erg = erg * i; i = i + 1; // erg = (i-1)! // i > n Out.println("erg = "+ erg); Korrektheitsbeweis: 1a) Die Schleifeninvariante erg = (i 1)! gilt vor der ersten Ausführung der Schleife, denn da ist i = 1 und erg = 1, also erg = 1 = 0! = (i 1)!. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 78

30 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben: Zusicherungen aus der Schleifenbedingung und Schleifeninvariante i = 1; erg = 1; while (i <= n) { // i <= n erg = erg * i; i = i + 1; // erg = (i-1)! Korrektheitsbeweis: 1a) Die Schleifeninvariante erg = (i 1)! gilt vor der ersten Ausführung der Schleife, denn da ist i = 1 und erg = 1, also erg = 1 = 0! = (i 1)!. 1b) Gilt die Schleifeninvariante vor einer Ausführung der Schleife, so gilt sie auch nach der Ausführung. // i > n Out.println("erg = "+ erg); Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 78

31 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben: Zusicherungen aus der Schleifenbedingung und Schleifeninvariante i = 1; erg = 1; while (i <= n) { // i <= n erg = erg * i; i = i + 1; // erg = (i-1)! // i > n Out.println("erg = "+ erg); Korrektheitsbeweis: 1a) Die Schleifeninvariante erg = (i 1)! gilt vor der ersten Ausführung der Schleife, denn da ist i = 1 und erg = 1, also erg = 1 = 0! = (i 1)!. 1b) Gilt die Schleifeninvariante vor einer Ausführung der Schleife, so gilt sie auch nach der Ausführung, denn aus erg = erg i = (i 1)! i und i = i + 1 folgt wieder erg = (i 1)!. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 78

32 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben: Zusicherungen aus der Schleifenbedingung und Schleifeninvariante i = 1; erg = 1; while (i <= n) { // i <= n erg = erg * i; i = i + 1; // erg = (i-1)! // i > n Out.println("erg = "+ erg); Korrektheitsbeweis: 1a) Die Schleifeninvariante erg = (i 1)! gilt vor der ersten Ausführung der Schleife, denn da ist i = 1 und erg = 1, also erg = 1 = 0! = (i 1)!. 1b) Gilt die Schleifeninvariante vor der Ausführung der Schleife, so gilt sie auch nach der Ausführung, denn aus erg = erg i = (i 1)! i und i = i + 1 folgt wieder erg = (i 1)!. 2) Nach der Schleife gilt die Zusicherung durch die Schleifenbedingung i > n, und da i zuletzt um 1 erhöht wurde, gilt i = n + 1. Da die Schleifeninvariante erg = (i 1)! gilt, folgt erg = n!. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 78

33 Zusicherungen bei Schleifen Wie bei Verzweigungen kann man auch bei Schleifen Zusicherungen angeben, die das Verständnis eines Programmstücks erleichtern oder evtl. sogar einen formalen Korrektheitsbeweis erlauben: Zusicherungen aus der Schleifenbedingung und Schleifeninvariante i = 1; erg = 1; while (i <= n) { // i <= n erg = erg * i; i = i + 1; // erg = (i-1)! // i > n Out.println("erg = "+ erg); Korrektheitsbeweis: 1a) Die Schleifeninvariante erg = (i 1)! gilt vor der ersten Ausführung der Schleife, denn da ist i = 1 und erg = 1, also erg = 1 = 0! = (i 1)!. 1b) Gilt die Schleifeninvariante vor der Ausführung der Schleife, so gilt sie auch nach der Ausführung, denn aus erg = erg i = (i 1)! i und i = i + 1 folgt wieder erg = (i 1)!. 2) Nach der Schleife gilt die Zusicherung durch die Schleifenbedingung i > n, und da i zuletzt um 1 erhöht wurde, gilt i = n + 1. Da die Schleifeninvariante erg = (i 1)! gilt, folgt erg = n!. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 78

34 Abbruch von Schleifen: Die break-anweisung Die break-anweisung erlaubt den Abbruch einer Schleife im Schleifenrumpf, unabhängig von der Abbruchbedingung. Beispiel: Wir wollen eine Folge von Zahlen größer als 0 von der Tastatur einlesen und aufsummieren. Das Ende der Zahlenfolge ist durch die Zahl 0 gekennzeichnet. Die Summe soll aber niemals größer als 1000 werden: do { sum = sum + n; if (sum > 1000) { Out.println("Summe ist zu groß "); break; /* Abbruch der do-schleife */ while (n!= 0); Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 79

35 Die Zahleneingabe kann auch ohne break-anweisung programmiert werden. Die Sache wird dann aber unübersichtlicher, weil die Abbruchbedingung der Schleife komplexer wird und die Fehler erst nach der Schleife abgefragt werden. do sum = sum + n; while (n!= 0 && sum <= 1000); if (sum > 1000) Out.println("Summe ist zu groß"); break-anweisung sollten nur sparsam eingesetzt werden, da sie die Programmlogik oft kompliziert machen. Zusicherungen bei Schleifenabbruch für Schleifen mit break-anweisung sind schwieriger zu formulieren/verstehen. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 80

36 Die break-anweisung in geschachtelten Schleifen outerloop: for (;;) { /* äußere Endlosschleife */ for (;;) { /* innere Endlosschleife */... if (...) break; /* terminiert innere Schleife */... if (...) break outerloop; /* terminiert äußere Schleife */ Schleifen können Namen erhalten (hier outerloop). Diese Schleifen können dann mit break <Schleifenname>; abgebrochen werden. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 81

37 Terminierung von Schleifen Wir haben gesehen: Eine Schleife for (;;)... terminiert nie, wenn sie nicht durch eine break-anweisung abgebrochen wird. Solche Endlosschleifen machen Sinn in Anwendungen, die endlos laufen sollen, wie z.b. Alarmanlagen oder Betriebssystemen. i = 1; j = 1; do { i = i + j; j++; while (i < 2000); i = 1; j = 20; while (i+j < i) { i = i+2; j--; i = 1; j = -1; while (i+j < i) { i = i+2; j--; terminiert terminiert terminiert nicht Frage: Können wir einer Schleife immer leicht ansehen, ob sie terminiert? Antwort: Nein! I.A. ist es sehr schwer zu beweisen, dass eine Schleife terminiert, oftmals ist es ohne Angabe von Zusicherungen sogar unmöglich. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 82

38 Terminierung von Schleifen: Die Collatz-Funktion (Collatz, 1937) public class Collatz { public static void main(string[] args) { int n; while (n!= 1) { if (n % 2 == 0) /* n gerade */ n = n / 2; else /* n ungerade */ n = 3*n + 1; /* end of while */ /* end of main */ Frage: Terminiert Programm Collatz? Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 83

39 Terminierung von Schleifen: Die Collatz-Funktion (Collatz, 1937) public class Collatz { public static void main(string[] args) { int n; while (n!= 1) { if (n % 2 == 0) /* n gerade */ n = n / 2; else /* n ungerade */ n = 3*n + 1; /* end of while */ /* end of main */ Frage: Terminiert Programm Collatz? Antwort: Es ist bis heute unklar, ob das Programm Collatz für jede natürliche Zahl n N terminiert. Bis 2008 wurden mit Computern alle Zahlen bis durchprobiert. Der Algorithmus terminierte immer. Beweise für die Terminierung eines Programmes können sehr schwer, oder sogar mit heutigen mathematischen Mitteln unmöglich sein. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 83

40 Vergleich der Schleifenarten while (B) { S; /* end of while */ if (B) do { S; while (B); for ( ; B; ) { S; /* end of for */ Jede while-schleife kann in ein äquivalentes Programmstück mit do-schleife bzw. for-schleife umgewandelt werden. Das Programmstück mit der do-schleife enthält eine if-anweisung mit Verdoppelung des Programmtextes für die Bedingung B und sollte unbedingt vermieden werden. Die for-schleife enthält keine Initialisierung und keine Aktualisierung. Sie ist jedoch in diesem Kontext weniger verständlich. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 84

41 Vergleich der Schleifenarten do { S; while (B); /* do */ S; while (B) { S; /* while */; S; for ( ; B; ) { S; /* for */ Jede do-schleife kann in ein äquivalentes Programmstück mit while-schleife bzw. for-schleife umgewandelt werden. Die Programmstücke mit der while-schleife und der for-schleife enthalten eine Verdoppelung des Programmtextes für S und sollten unbedingt vermieden werden. Die for-schleife enthält keine Initialisierung und keine Aktualisierung. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 85

42 Vergleich der Schleifenarten for (I; B; A) { S; /* for */ I; while (B) { S; A; /* while */; I; if (B) do { S; A; while (B); Jede for-schleife kann in ein äquivalentes Programmstück mit while-schleife bzw. do-schleife umgewandelt werden. Die Programmstücke mit der while-schleife und der do-schleife trennen die Initialisierung, Bedingung und Aktualisierung der for-schleife und sollten vermieden werden. Das Programmstück mit der do-schleife enthält eine if-anweisung mit Verdoppelung des Programmtextes für die Bedingung B und sollte unbedingt vermieden werden. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 86

43 Vergleich der Schleifenarten: Fazit while-schleife und for-schleife prüfen die Abbruchbedingung vor dem Schleifendurchlauf und sollten auch nur dann eingesetzt werden, wenn das gewünscht ist. Die do-schleife prüft die Abbruchbedingung nach dem Schleifendurchlauf und sollte ebenfalls nur dann eingesetzt werden, wenn das gewünscht ist. Die for-schleife erlaubt eine ortsnahe Beschreibung von Initialisierung, Abbruchbedingung und Aktualisierung und eignet sich besonders als Zählschleife, d.h. zum Aufzählen von Zahlen (for (i=0;...; i++). Alle Schleifen sollten nur dann eine break-anweisung enthalten, wenn sie einen Schleifenabbruch bei Fehler bewirken oder ohne die break-anweisung Programmstücke mehrfach aufgeschrieben werden müssten, ohne die break-anweisung Programmstücke mit if-anweisungen verschachtelt werden müssten. Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/10 87

Grundlagen der Programmierung Prof. H. Mössenböck. 4. Schleifen

Grundlagen der Programmierung Prof. H. Mössenböck. 4. Schleifen Grundlagen der Programmierung Prof. H. Mössenböck 4. Schleifen While-Schleife Führt eine Anweisungsfolge aus, solange eine bestimmte Bedingung gilt i 1 sum 0 i n sum sum + i i i + 1 i = 1; sum = 0; while

Mehr

3. Kontrollstrukturen Grundlagen der Programmierung 1 (Java)

3. Kontrollstrukturen Grundlagen der Programmierung 1 (Java) 3. Kontrollstrukturen Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 11. Oktober 2005 Agenda Agenda Verzweigungen

Mehr

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht:

Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht: Aufgabe 1.90: Ein Geschäft gibt ihren Kunden unterschiedliche Rabatte. Schreiben ein Programm, das folgende Rabattklassen vorsieht: o Klasse 0: kein Rabatt o Klasse 1: 4,5 % Rabatt o Klasse 2: 8,75% Rabatt

Mehr

Thomas Gewering Benjamin Koch Dominik Lüke. (geschachtelte Schleifen)

Thomas Gewering Benjamin Koch Dominik Lüke. (geschachtelte Schleifen) Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 6 2. November 2010 Übungsgruppenleiter: Matthias Fischer Mouns Almarrani Rafał Dorociak Michael Feldmann Thomas Gewering Benjamin

Mehr

Objektorientierte Programmierung OOP Programmieren mit Java

Objektorientierte Programmierung OOP Programmieren mit Java Übungen: 6 Schleifen Objektorientierte Programmierung OOP Programmieren mit Java 1. do-schleife 2. while-schleife 3. a) c) Verschiedene for-schleifen 6 Schleifen Übungen 4. for-schleife: halber Tannenbaum

Mehr

Kontrollstrukturen -- Schleifen und Wiederholungen

Kontrollstrukturen -- Schleifen und Wiederholungen Kontrollstrukturen -- Schleifen und Wiederholungen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14

Mehr

3. Grundanweisungen in Java

3. Grundanweisungen in Java 3. Grundanweisungen in Java Die Grundanweisungen entsprechen den Prinzipien der strukturierten Programmierung 1. Zuweisung 2. Verzweigungen 3. Wiederholungen 4. Anweisungsfolge (Sequenz) Die Anweisungen

Mehr

3. Anweisungen und Kontrollstrukturen

3. Anweisungen und Kontrollstrukturen 3. Kontrollstrukturen Anweisungen und Blöcke 3. Anweisungen und Kontrollstrukturen Mit Kontrollstrukturen können wir den Ablauf eines Programmes beeinflussen, z.b. ob oder in welcher Reihenfolge Anweisungen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit anschaulichen Beispielen aus der Java-Welt apl. Prof. Dr. Achim Ebert Inhalt Kapitel 3: Kontrollstrukturen Einfache Anweisungen Anweisungsblöcke Steuerung

Mehr

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung C Sprachelemente für Übung 2 Typumwandlungen (type casts) Bei Ausdrücken, in denen Operanden mit unterschiedlichem Typ vorkommen, werden diese vom Compiler vor der Ausführung automatisch in einen gemeinsamen

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 5. Kontrollstrukturen Allgemein Kontrollstrukturen dienen zur Steuerung des Programmablaufs. (Bemerkung: C und C++ besitzen die selben Kontrollstrukturen.)

Mehr

2.5 Programmstrukturen Entscheidung / Alternative

2.5 Programmstrukturen Entscheidung / Alternative Entscheidung, ob der folgende Anweisungsblock ausgeführt wird oder ein alternativer Block Entscheidung ob die Bedingung wahr oder falsch (True / False) ist Syntax: 2.5 Programmstrukturen 2.5.1 Entscheidung

Mehr

C++ - Einführung in die Programmiersprache Schleifen

C++ - Einführung in die Programmiersprache Schleifen C++ - Einführung in die Programmiersprache Schleifen Bedingung wiederhole ja Anweisung Anweisung Anweisung Leibniz Universität IT Services Anja Aue Schleifen Iterationsanweisungen. Wiederholung von Anweisungsblöcken.

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 6.11.07, Weitere Anweisungen Übersicht 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung 4 for Schleife 5 while Schleife 6 do Schleife 7 break Anweisung 8 continue Anweisung 9 Leere

Mehr

6. Iteration (Schleifenanweisungen)

6. Iteration (Schleifenanweisungen) 6. Iteration (Schleifenanweisungen) Java-Beispiel: TemperatureTable.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 9. Nov. 2015 2 Schwerpunkte While-Anweisung: "abweisende"

Mehr

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8 Java 8 Elmar Fuchs Grundlagen Programmierung 1. Ausgabe, Oktober 2014 JAV8 5 Java 8 - Grundlagen Programmierung 5 Kontrollstrukturen In diesem Kapitel erfahren Sie wie Sie die Ausführung von von Bedingungen

Mehr

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) 1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays) II.1.3. Anweisungen und Kontrollsttukturen - 1 - 3. Anweisungen und Kontrollstrukturen

Mehr

Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen Neben der Sequenz (Aneinanderreihung von Anweisungen)

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Kontrollstrukturen Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Kontrollstrukturen Wichtig: bedingte Ausführung

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 3. Kontrollstrukturen 09.11.2016 Jun.-Prof. Dr.-Ing. Anne Koziolek Version 1.1 ARBEITSGRUPPE ARCHITECTURE-DRIVEN REQUIREMENTS ENGINEERING (ARE) INSTITUT FÜR PROGRAMMSTRUKTUREN UND

Mehr

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010 Grundlagen der Programmierung Teil1 Einheit III - 22. Okt. 2010 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Einschub Bevor wir mit den

Mehr

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt

Klassen und Objekte. Klassen sind Vorlagen für Objekte. Objekte haben. Attribute. Konstruktoren. Methoden. Merkblatt Klassen und Objekte Klassen sind Vorlagen für Objekte. Objekte haben Attribute Konstruktoren Methoden Aus einer Klasse kann man beliebig viele Objekte herstellen. Attribute bestimmen die Eigenschaften

Mehr

Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen Heusch 8 Ratz Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen Neben der Aneinanderreihung von Anweisungen (Sequenz)

Mehr

Schleifen in C/C++/Java

Schleifen in C/C++/Java Schleifen in C/C++/Java Alle 3 Sprachen stellen mindestens die folgenden 3 Schleifenkonstruktionen zur Verfügung. In C gibt es auch keine weiteren, C++, Java und C# haben noch weitere nützliche Varianten.

Mehr

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A

Schachtelung der 2. Variante (Bedingungs-Kaskade): if (B1) A1 else if (B2) A2 else if (B3) A3 else if (B4) A4 else A 2.4.6. Kontrollstrukturen if-anweisung: Bedingte Ausführung (Verzweigung) 2 Varianten: if (Bedingung) Anweisung (Anweisung = einzelne Anweisung oder Block) Bedeutung: die Anweisung wird nur ausgeführt,

Mehr

Einführung in die Programmierung Wintersemester 2011/12

Einführung in die Programmierung Wintersemester 2011/12 Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Kontrollstrukturen Inhalt Wiederholungen - while

Mehr

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte

Kapitel 5: Abstrakte Algorithmen und Sprachkonzepte. Elementare Schritte Elementare Schritte Ein elementarer Berechnungsschritt eines Algorithmus ändert im Allgemeinen den Wert von Variablen Zuweisungsoperation von fundamentaler Bedeutung Zuweisungsoperator In Pascal := In

Mehr

C- Kurs 04 Anweisungen

C- Kurs 04 Anweisungen C- Kurs 04 Anweisungen Dipl.- Inf. Jörn Hoffmann jhoffmann@informa@k.uni- leipzig.de Universität Leipzig Ins@tut für Informa@k Technische Informa@k Ausdrücke Institut für Informatik Anweisungen C-Programm

Mehr

Tag 3 Repetitorium Informatik (Java)

Tag 3 Repetitorium Informatik (Java) Tag 3 Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2016/2017 Willkommen zum Informatik-Repetitorium!

Mehr

Labor Software-Entwicklung 1

Labor Software-Entwicklung 1 Labor Software-Entwicklung 1 Übereinkunft zu Programmablaufplänen PAP - Grundlagen Wintersemester 2015/2016 Seite 1 von 9 Inhalt DIN 66 001: Sinnbilder für Programmablaufplan... 3 Grenzstelle... 3 Ablauflinie...

Mehr

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15 EINI LW/ Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

4. Ablaufsteuerung (Kontrollstrukturen) 4.1 Anweisungen 4.2 Selektion (bedingte Anweisung) 4.3 Iteration 4.4 Flussdiagramm (Programmablaufplan)

4. Ablaufsteuerung (Kontrollstrukturen) 4.1 Anweisungen 4.2 Selektion (bedingte Anweisung) 4.3 Iteration 4.4 Flussdiagramm (Programmablaufplan) 4. Ablaufsteuerung (Kontrollstrukturen) 4.1 Anweisungen 4.2 Selektion (bedingte Anweisung) 4.3 Iteration 4.4 Flussdiagramm (Programmablaufplan) 4. Ablaufsteuerung 4-1 4.1 Anweisungen Ein Programm besteht

Mehr

Eine kleine Befehlssammlung für Java Teil1

Eine kleine Befehlssammlung für Java Teil1 Eine kleine Befehlssammlung für Java Teil1 Definition einer Klasse public class Klasse{ Hier wird der Name der Klasse definiert. In diesem Fall ist das Klasse. Der Name muss mit dem Namen der.class Datei

Mehr

2. Algorithmenbegriff

2. Algorithmenbegriff 2. Algorithmenbegriff Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen,... Algorithmus: Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter Elementaroperationen aus Eingabegrößen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 47 Einstieg in die Informatik mit Java Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 47 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung,

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren 3. Kontrollstrukturen 04.11.2015 Prof. Dr. Ralf H. Reussner Version 1.1 LEHRSTUHL FÜR SOFTWARE-DESIGN UND QUALITÄT (SDQ) INSTITUT FÜR PROGRAMMSTRUKTUREN UND DATENORGANISATION (IPD),

Mehr

Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4

Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4 Java Einführung ABLAUFSTEUERUNG Kapitel 3 und 4 Inhalt dieser Einheit Merkmale und Syntax der verschiedenen Kontrollstrukturen: if else switch while do while for break, continue EXKURS: Rekursion 2 Kontrollstrukturen

Mehr

4. Ablaufsteuerung (Kontrollstrukturen)

4. Ablaufsteuerung (Kontrollstrukturen) 4. Ablaufsteuerung (Kontrollstrukturen) 4.1 Anweisungen 4.2 Selektion (bedingte Anweisung) 4.3 Iteration 4.4 Flussdiagramm (Programmablaufplan) 4. Ablaufsteuerung 4-1 4.1 Anweisungen Ein Programm besteht

Mehr

Schleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten.

Schleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten. Folge 6 WHILE-Schleife JAVA 6.1 Schleifen Schleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten. Zu einer Schleife gehören die Schleifenbedingung und der Rumpf. Die Schleifenbedingung

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 05: Weitere Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme 1. Teil: Weitere Kontrollstrukturen Wiederholungsstrukturen (Schleifen) While-,do-,for-Schleifen

Mehr

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben 18.11.5 1 HEUTE 18.11.5 3 Schleifen Arrays while, do reichen aus, um alle iterativen Algorithmen zu beschreiben Nachteil: Steuermechanismus ist verteilt Übersicht nicht immer leicht dazu gibt es for (

Mehr

Programmiertechnik Kontrollstrukturen

Programmiertechnik Kontrollstrukturen Programmiertechnik Kontrollstrukturen Prof. Dr. Oliver Haase Oliver Haase Hochschule Konstanz 1 Was sind Kontrollstrukturen? Kontrollstrukturen erlauben es, ein Programm nicht nur Zeile für Zeile auszuführen,

Mehr

Elementare Konzepte von

Elementare Konzepte von Elementare Konzepte von Programmiersprachen Teil 2: Anweisungen (Statements) Kapitel 6.3 bis 6.7 in Küchlin/Weber: Einführung in die Informatik Anweisungen (statements) in Java Berechnung (expression statement)

Mehr

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel  Problem Grundzüge der Wirtschaftsinformatik WS 2002/03 Wiederholung Java Heiko Rossnagel www.m-lehrstuhl.de accelerate.com Grundzüge der Wirtschaftsinformatik WS 2002/03 1 Programmierzyklus Problem Formulierung

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken 4 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Blöcke Blöcke erweitern einzelne Anweisungen, etwa bei Kontrollstrukturen später Beispiel: Einzelne Anweisung: anweisung; Erweiterung

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 Einführung in die Programmiersprache Java (Teil II)... 4-2 4.4 Strukturierte Programmierung... 4-2 4.4.1 Strukturierung im Kleinen... 4-2 4.4.2 Addierer (do-schleife)... 4-3 4.4.3 Ein- Mal- Eins

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

Praktische Informatik I WS 1999/2000

Praktische Informatik I WS 1999/2000 Universität Mannheim Lehrstuhl für Praktische Informatik IV Prof. Dr. W. Effelsberg Christoph Kuhmünch, Gerald Kühne Praktische Informatik I WS 999/2 Übungsblatt 2 Ausgabe: Mi, 26.. Abgabe: Di,.2., 8 Uhr

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 16. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 3

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 3 Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 3 25. Oktober 2010 Übungsgruppenleiter: Matthias Fischer Mouns Almarrani Rafał Dorociak Michael Feldmann Thomas Gewering Benjamin

Mehr

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009 Grundlagen der Programmierung Teil1 Einheit III - 23. Okt. 2009 GDP DDr. Karl D. Fritscher basierend auf der Vorlesung Grundlagen der Programmierung von DI Dr. Bernhard Pfeifer Ausdrücke & Anweisungen

Mehr

Einfache Rechenstrukturen und Kontrollfluss II

Einfache Rechenstrukturen und Kontrollfluss II Einfache Rechenstrukturen und Kontrollfluss II Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.informatik.uni-muenchen.de/lehre/ss06/infoii/ SS 06 Ziele Lernen imperative

Mehr

Arrays und Schleifen

Arrays und Schleifen Arrays und Schleifen Javakurs 2014, 2. Vorlesung Sebastian Schuck basierend auf der Vorlage von Theresa Enghardt, Mario Bodemann und Sebastian Dyroff wiki.freitagsrunde.org 3. März 2014 This work is licensed

Mehr

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Kontrollstrukturen Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer Programmiertechnik Kontrollstrukturen Was sind Kontrollstrukturen Kontrollstrukturen erlauben es, ein Programm nicht nur Zeile für Zeile auszuführen,

Mehr

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration Algorithmen & Programmierung Steuerstrukturen im Detail Selektion und Iteration Selektion Selektion Vollständige einfache Selektion Wir kennen schon eine Möglichkeit, Selektionen in C zu formulieren: if

Mehr

In Java: Schleifen 1. Art: Vorabprüfung: while. Wiederholungen (Kapitel 8) Schleife mit Vorabprüfung. Schleifen 2. Art: Endprüfung: do while

In Java: Schleifen 1. Art: Vorabprüfung: while. Wiederholungen (Kapitel 8) Schleife mit Vorabprüfung. Schleifen 2. Art: Endprüfung: do while Wiederholungen (Kapitel 8) Schleifen 1. Art: Vorabprüfung: while Schleifenkopf while erfüllt erfüllt? Schleifenkörper Sie kennen die drei Arten von Wiederholungen / Schleifen: while, for, do... und können

Mehr

Kapitel 5. Programmierkurs. Kontrollstrukturen. Arten von Kontrollstrukturen. Kontrollstrukturen Die if-anweisung Die switch-anweisung

Kapitel 5. Programmierkurs. Kontrollstrukturen. Arten von Kontrollstrukturen. Kontrollstrukturen Die if-anweisung Die switch-anweisung Kapitel 5 Programmierkurs Birgit Engels, Anna Schulze ZAIK Universität zu Köln Kontrollstrukturen Die if-anweisung Die switch-anweisung Die for-schleife Die while-schleife Die do-schleife WS 7/8 /55 Kontrollstrukturen

Mehr

Einführung in die Informatik Iterations

Einführung in die Informatik Iterations Motivation Einführung in die Informatik Iterations Konstruktion, Anwendungen, Varianten Wolfram Burgard Im vorangegangenen Kapitel haben wir mit der while-schleife eine Form von Wiederholungsanweisungen

Mehr

ModProg 15-16, Vorl. 5

ModProg 15-16, Vorl. 5 ModProg 15-16, Vorl. 5 Richard Grzibovski Nov. 18, 2015 1 / 29 Übersicht Übersicht 1 Logische Operationen 2 Priorität 3 Verzweigungen 4 Schleifen 2 / 29 Logische Werte Hauptkonzept: Besitzt ein C-Ausdruck

Mehr

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

Einführung in die Informatik 1

Einführung in die Informatik 1 Einführung in die Informatik 1 Algorithmen und algorithmische Sprachkonzepte Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag,

Mehr

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue Java - Schleifen Bedingung wiederhole ja Anweisung Anweisung Anweisung Leibniz Universität IT Services Anja Aue Anweisung int zahl; zahl = 2; zahl = zahl * 10; int zahl; ; Jede Anweisung endet mit einem

Mehr

INE1 Wiederholungen while, do...while, for

INE1 Wiederholungen while, do...while, for INE1 Wiederholungen while, do...while, for Schleife mit Goto Schleife mit Anfangsprüfung Schleife mit Endprüfung Schleifen mit Zähler: for Mehr zum Thema Schleifen 1 Wiederholungen Oft wollen wir gleiche

Mehr

Beispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. else

Beispiel 1 zur Verifikation eines bedingten Anweisung. Hoare-Regel für die bedingte Anweisung. else Hoare-Regel für die bedingte Anweisung I1 : I2 : {B P } S 1 {Q} { nicht B P } {Q} {P } if (B) then S 1 {Q} {B P } S 1 {Q} { nicht B P } S 2 {Q} {P } if (B) then S 1 else S 2 {Q} In der Regel für bedingte

Mehr

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Rekursion Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-12-13/infoeinf WS12/13 Aufgabe 1: Potenzfunktion Schreiben Sie eine Methode, die

Mehr

System.out.println("TEXT");

System.out.println(TEXT); Inhaltsübersicht - Erstes Beispiel - Datentypen - Ausdrücke und Operatoren - Schleifen / Bedinungen - Struktogramme - Grundgerüst eines Programms in JAVA - Einlesen von Daten Erstes Beispiel public class

Mehr

Schleifen: Immer wieder dasselbe tun

Schleifen: Immer wieder dasselbe tun Schleifen: Immer wieder dasselbe tun Bei einer Schleife werden Anweisungen immer wieder ausgeführt, solange die Bedingung wahr ist. Dafür muss man eine Variable immer wieder ändern, solange bis eine Überprüfung

Mehr

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Programmieren I. Martin Schultheiß. Hochschule Darmstadt Wintersemester 2010/2011 Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2010/2011 1 Operatoren für elementare Datentypen 2 Bedingte Anweisungen 3 Schleifen Zuweisungsoperator Die Zuweisung von Werten an

Mehr

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort then S. d. I.: Programieren in C Folie 4-1 4 Anweisungen 4.1 if-anweisung 1) if (Ausdruck) 2) if (Ausdruck) } else im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then" es wird nur der numerische Wert

Mehr

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen Programmieren I Martin Schultheiß Hochschule Darmstadt Wintersemester 2011/2012 1 / 25 Operatoren für elementare Datentypen Bedingte Schleifen 2 / 25 Zuweisungsoperator Die Zuweisung von Werten an Variablen

Mehr

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue Java - Schleifen Bedingung wiederhole ja Anweisung Anweisung Anweisung Leibniz Universität Anja Aue Schleifen Iterationsanweisungen. Wiederholung von Anweisung in Abhängigkeit einer Bedingung. Eine Verschachtelung

Mehr

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C Einfache Programmstrukturen in C 4-1 Welche einfache Programmstrukturen sind zu unterscheiden? Arithmetische und logische Ausdrücke und Zuweisungen Verzweigungen Unvollständige bedingte Anweisungen Vollständige

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 31 Einstieg in die Informatik mit Java Effizienz Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 31 1 Überlegungen zur Effizienz 2 Landau-Symbole 3 Eier im Korb 4 Zyklische

Mehr

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik

Programmieren I. Kontrollstrukturen. Heusch 8 Ratz 4.5. www.kit.edu. Institut für Angewandte Informatik Programmieren I Kontrollstrukturen Heusch 8 Ratz 4.5 KIT Universität des Landes Baden-Württemberg und nationales Großforschungszentrum in der Helmholtz-Gemeinschaft www.kit.edu Arten von Kontrollstrukturen

Mehr

Steueranweisungen. Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 32

Steueranweisungen. Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/09 2 32 Steueranweisungen Bisher Programme mit Funktionen als einfache Folge von Befehlen Ablauf von Programmen darüber hinaus steuerbar über Bedingte Ausführung: Ausführung von Programmteilen (Befehlen oder Programmblöcken)

Mehr

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 -

Informatik I - Programmierung Globalübung Hoare-Kalkül. Thomas Weiler. Fachgruppe Informatik RWTH Aachen. T. Weiler, RWTH Aachen - 1 - Informatik I - Programmierung Globalübung 11.11.2003 Hoare-Kalkül Thomas Weiler Fachgruppe Informatik RWTH Aachen T. Weiler, RWTH Aachen - 1 - Ariane 5 Die Ariane 5 ist das jüngste Modell der Trägerrakete

Mehr

12 == 12 true 12 == 21 false 4 === 7 true 4 === "vier" false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false

12 == 12 true 12 == 21 false 4 === 7 true 4 === vier false 4 === 4.0 false 12!= 13 true 12!== 12 false 12!== 12.0 true. 1 < 3 true 3 < 1 false Die if-anweisung if (Bedingung 1) { Code 1 else { Code 2 ; Anm.1: Das ; kann entfallen, da innerhalb { ein sog. Codeblock geschrieben wird. Anm.2: Es gibt noch andere Schreibweisen, aber wir wollen uns

Mehr

Softwareentwicklung Sequenz, Verzweigungen, Schleifen

Softwareentwicklung Sequenz, Verzweigungen, Schleifen Mag. iur. Dr. techn. Michael Sonntag Softwareentwicklung Sequenz, Verzweigungen, Schleifen E-Mail: sonntag@fim.uni-linz.ac.at http://www.fim.uni-linz.ac.at/staff/sonntag.htm Institut für Informationsverarbeitung

Mehr

Kontrollfluss. Kontrollanweisungen. if-anweisung. if-else Anweisung. else. Auswahlanweisungen, Iterationsanweisungen, Blöcke, Sprunganweisungen

Kontrollfluss. Kontrollanweisungen. if-anweisung. if-else Anweisung. else. Auswahlanweisungen, Iterationsanweisungen, Blöcke, Sprunganweisungen Kntrllfluss Kntrllanweisungen bisher linear (vn ben nach unten) Für interessante Prgramme braucht man Verzweigungen und Sprünge Auswahlanweisungen, Iteratinsanweisungen, Blöcke, Sprunganweisungen Berechnung

Mehr

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 4

Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 4 Technische Informatik für Ingenieure WS 2010/2011 Musterlösung Übungsblatt Nr. 4 1. November 2010 Übungsgruppenleiter: Matthias Fischer Mouns Almarrani Rafał Dorociak Michael Feldmann Thomas Gewering Benjamin

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 4 C-Anweisungen...4-2 4.1 Ausdrucksanweisungen...4-3 4.2 Zusammengesetzte Anweisungen (Anweisungsblöcke)...4-3 4.3 Schleifenanweisungen...4-4 4.3.1 while - Schleife...4-4 4.3.2 do - Schleife...4-5

Mehr

Informatik für Ingenieure (InfIng)

Informatik für Ingenieure (InfIng) Informatik für Ingenieure (InfIng) C - Kontrollstrukturen Doz. Dipl.-Ing. H. Hiller WS 2012/13 Kontrollstrukturen Erinnern Sie sich? Frühstücks-Ei kochen, 6 Minuten Was tun, wenn kein Topf vorhanden ist?

Mehr

Übersicht. Informatik 1 Teil 4: Programmwiederholungen (Schleifen), Entwurf, Mathematikfunktionen

Übersicht. Informatik 1 Teil 4: Programmwiederholungen (Schleifen), Entwurf, Mathematikfunktionen Übersicht 4.1 Inkrementieren und Dekrementieren 4.2 Die for-schleife (Zählschleife) 4.3 Die for-schleife (Beispiel) 4.4 Bemerkungen zur for-schleife 4.5 Die while-schleife 4.6 Die while-schleife - Beispiel

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 24 Einstieg in die Informatik mit Java Variablenarten Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Lokale Variablen 2 Lokale Variablen in Blocks 3 Lokale Variablen

Mehr

Grundlegende Programmierkonzepte: Abläufe mit Wiederholungen (Schleifen)

Grundlegende Programmierkonzepte: Abläufe mit Wiederholungen (Schleifen) Grundlegende Programmierkonzepte: Abläufe mit Wiederholungen (Schleifen) Wiederholung mit Abbruchbedingung (while-schleife) Kara soll geradeaus laufen, bis er vor einem Baum steht: Situation vor dem Start

Mehr

Verzweigungen und Wiederholungen

Verzweigungen und Wiederholungen 3 Verzweigungen und Wiederholungen 3-1 Verzweigungen und Wiederholungen Inhalt if while do while for break, continue switch Beispiele Übungsaufgaben if Will man eine Anweisung nur unter einer Bedingung

Mehr

Programmieren I. Kapitel 5. Kontrollfluss

Programmieren I. Kapitel 5. Kontrollfluss Programmieren I Kapitel 5. Kontrollfluss Kapitel 5: Kontrollfluss Ziel: Komplexere Berechnungen im Methodenrumpf Ausdrücke und Anweisungen Fallunterscheidungen (if, switch) Wiederholte Ausführung (for,

Mehr

Informatik I - Einstiegskurs

Informatik I - Einstiegskurs Informatik I - Einstiegskurs Dr. Henrik Brosenne Georg-August-Universität Göttingen Institut für Informatik Basiert auf dem Einstiegskurs im Wintersemester 2009/10 von Markus Osterhoff Wintersemester 2012/13

Mehr

5. Tutorium zu Programmieren

5. Tutorium zu Programmieren 5. Tutorium zu Programmieren Dennis Ewert Gruppe 6 Universität Karlsruhe Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by IPD Snelting

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");

Mehr

Webbasierte Programmierung

Webbasierte Programmierung Webbasierte Programmierung Eine Einführung mit anschaulichen Beispielen aus der HTML5-Welt apl. Prof. Dr. Achim Ebert Inhalt Kapitel 6: JavaScript Kontrollstrukturen Verzweigungen Einseitig, zweiseitig,

Mehr

9 Anweisungen und Kontrollstrukturen

9 Anweisungen und Kontrollstrukturen 9 Anweisungen und Kontrollstrukturen Hier beziehen wir uns auf Kapitel 6 von Go To Java 2. Die Steuerung des Programmablaufs geschieht durch sogenannte Anweisungen. Jede Anweisung bewirkt irgendwelche

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 4-1 Übung 1) Schreiben Sie ein Programm, das die Fläche unter einer Parabel, also das Integral

Mehr

5. Elementare Befehle und Struktogramme

5. Elementare Befehle und Struktogramme 5. Elementare Befehle und Struktogramme Programmablauf Beschreibung des Programmablaufs mittel grafischer Symbole Beispiel : Flussdiagramme ja nein Besser : Struktogramme Dr. Norbert Spangler / Grundlagen

Mehr

Kontrollstrukturen: Wiederholungsanweisungen

Kontrollstrukturen: Wiederholungsanweisungen Kontrollstrukturen: Wiederholungsanweisungen Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-16-17/infoeinf WS16/17 Action required now 1.

Mehr

Präzedenz von Operatoren

Präzedenz von Operatoren Präzedenz von Operatoren SWE-30 Die Präzedenz von Operatoren bestimmt die Struktur von Ausdrücken. Ein Operator höherer Präzedenz bindet die Operanden stärker als ein Operator geringerer Präzedenz. Mit

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Der Begriff des Algorithmus Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 48 Der Begriff

Mehr