Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Größe: px
Ab Seite anzeigen:

Download "Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften"

Transkript

1 Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 3: Schleifen- und Sprunganweisungen Patrick Schreier Abteilung für Angewandte Mathematik Vorlesung vom 03. Mai 2015

2 Gliederung Bedingte Anweisungen II Motivation Schleifenanweisungen for-schleife while, do-while-schleifen Sprunganweisungen Lösung gewöhnlicher Differentialgleichungen

3 Gliederung Bedingte Anweisungen II Motivation Schleifenanweisungen for-schleife while, do-while-schleifen Sprunganweisungen Lösung gewöhnlicher Differentialgleichungen

4 Programmbeispiel Quelltext (Wurzelberechnung mit Fehlerbehandlung) 1 #include <math.h> 2 #include <stdio.h> 3 4 int main(void) 5 { 6 /* declare floating point variable */ 7 double x; 8 9 /* read from user input */ 10 printf ("x = "); 11 scanf("%lf", &x); if( x < 0 ) 14 { 15 printf("value x is less than zero\n"); 16 } 17 else 18 { 19 printf ("x = %f\n", x); 20 printf ("sqrt(x) = %f\n", sqrt(x)); 21 } return 0; 24 }

5 if-else-anweisung Syntax: if(expr) statement else statement Ob die Anweisungen des if- oder des else-zweigs bearbeitet werden, hängt vom Kontrollausdruck ab: Ist der Kontrollausdruck wahr, so wird der if-zweig bearbeitet, sonst werden die Anweisungen des else-zweigs bearbeitet. Sowohl im if- als auch im else-zweig können mehrere Anweisungen zu jeweils einem Block zusammengefasst werden.

6 Dangling else Vorsicht bei verschachtelten Fallunterscheidungen: Der else-zweig gehört immer zum vorangehenden if-zweig! Beispiel: int a;... if(a >= 0) if(a == 0) printf("a equals 0\n"); else printf("a is negative number\n"); Der Code liefert eine falsche Ausgabe für a > 0. Man spricht vom dangling else.

7 Dangling else vermeiden Lösungsmöglichkeit 1 (leere Anweisung): int a;... if(a >= 0) if(a == 0) printf("a equals 0\n"); else ; else printf("a is negative number\n");

8 Dangling else vermeiden Lösungsmöglichkeit 1 (leere Anweisung): int a;... if(a >= 0) if(a == 0) printf("a equals 0\n"); else ; else printf("a is negative number\n"); Lösungsmöglichkeit 2 (Blöcke): int a;... if(a >= 0) { if(a == 0) printf( "a equals 0\n" ); } else printf("a is negative number\n");

9 if-else if Schreibweise Für komplexe, verschachtelte Fallunterscheidungen ist die folgende Schreibweise üblich: if(expr) statement else if(expr) statement else if(expr) statement... else statementn Der else-zweig und die Zusammenfassung von Anweisungen zu Blöcken ist wieder optional.

10 Vorsicht, Falle I Gleitpunktoperationen sind immer mit einem kleinen Fehler behaftet. Gleitpunktzahlen sollten daher nie auf exakte Gleichheit überprüft werden: double x = ( ) + 0.3; double y = ( ); if(x == y) /* will be false */... Stattdessen kann man prüfen, ob zwei Gleitpunktzahlen hinreichend nah beieinander liegen: if(fabs(x-y) < 1e-12)...

11 Vorsicht, Falle II Ein häufiger Fehler bei Vergleichen auf Gleichheit ist der folgende: if(x = 1) /* always true */... Der Kontrollausdruck besteht aus einer Zuweisung. Ihr Wert entspricht dem der linken Seite nach der Zusweisung (hier 1). Dies entspricht einer wahren Aussage. Analog ist der folgende Kontrollausdruck immer unwahr : if(x = 0) /* always false */...

12 switch-anweisung Die switch-anweisung prüft einen ganzzahligen Ausdruck auf mehrere konstante Alternativen hin ab. Syntax: switch(expr) { case const_expr1 : statement case const_expr2 : statement... } default : statementn Alle case-konstanten müssen unterschiedliche Werte haben. Stimmt der switch-ausdruck expr mit einer der case-marken überein, wird der Programmfluss hinter der Marke fortgesetzt. Die default-marke ist optional; stimmt der switch-ausdruck mit keiner der angegebenen Konstanten überein, wird die default-marke angesprungen.

13 break in switch-anweisungen Stimmt der switch-ausdruck mit einer der case-marken überein, werden alle Anweisungen danach ausgeführt auch solche, die hinter späteren Marken stehen. Sollen nur die Anweisungen ausgeführt werden, die zu einer case-marke gehören, muss dies explizit durch eine break-anweisung erzwungen werden: int n = 1; switch(n) { case 1: printf("n = 1\n"); break; case 3: printf("n = 3\n"); break; case 2: printf("n = 2\n"); break; default: printf("n >= 4\n"); }

14 Konditionaloperator Der einzige ternäre Operator ist der Konditionaloperator?: expr1? expr2 : expr3 Der Wert des Typ und Wert des Ausdrucks stimmt entweder mit dem von expr2 oder expr3 überein und zwar abhängig von expr1: Zuerst wird der Ausdruck expr1 ausgewertet. Ist expr1 ungleich Null, so heißt der Ausdruck wahr. Ist expr1 wahr, wird der Ausdruck expr2 ausgewertet, sonst expr3. Nur genau einer der Ausdrücke expr2, expr3 wird ausgewertet! Beispiel: c = (a < b)? a : b /* c = min{a, b} */

15 Inkrement- und Dekrement-Operatoren Um eine Variable um den Wert 1 zu erhöhen oder um den Wert 1 zu erniedrigen gibt es in C die unären Operatoren ++ (Inkrementoperator) und -- (Dekrementoperator). Die Operatoren können auf alle arithmetischen Typen angewandt werden, und stehen entweder vor (Präfix-Notation) oder hinter (Postfix-Notation) der Variablen: ++x x++ x x x wird um den Wert 1 erhöht, bevor x im Ausdruck weiterverwendet wird x wird um den Wert 1 erhöht, nachdem x im Ausdruck verwendet wurde x wird um den Wert 1 erniedrigt, bevor x im Ausdruck weiterverwendet wird x wird um den Wert 1 erniedrigt, nachdem x im Ausdruck verwendet wurde Beispiel: int a = 0, b = 2; ++a; /* a = 1 */ b--; /* b = 1 */

16 Seiteneffekte Jeder Zuweisungsausdruck darf selbst wieder in einem Ausdruck auftauchen: int a = 1, b; b = (a += 1) + 1; /* a = 2, b = 3 */ Solche verschachtelten Ausdrücke verursachen sog. Seiten- oder Nebeneffekte, d. h. neben der Auswertung des Ausdrucks wird durch die Zuweisung auch der Wert einer Variablen geändert. Seiteneffekte machen den Code schwer lesbar und sind damit potentielle Fehlerquellen. Beispiel (Inkrement-Operatoren): int i, j, k; i = 1; j = i++; /* j = 1, side effect: i = 2 */ k = ++i; /* k = 3, side effect: i = 3 */

17 Komma-Operator Das Komma kennen wir bislang als Trennzeichen in Variablendefinitionen: int a1, a2, a3, a4; Es gibt auch den Komma-Operator: expr1, expr2 Seine Semantik ist etwas gewöhnungsbedürftig: Zuerst wird der Ausdruck expr1 ausgewertet, dann expr2. Der Typ und Wert des Gesamtausdrucks ist der Typ und der Wert des zweiten Operanden expr2. Beispiel: int a; double x; a = 1, x = 2.; /* value of expression is 2. */

18 Gliederung Bedingte Anweisungen II Motivation Schleifenanweisungen for-schleife while, do-while-schleifen Sprunganweisungen Lösung gewöhnlicher Differentialgleichungen

19 Schleifenanweisungen Schleifenanweisungen... sind Kontrollanweisungen, die die sonst sequentielle Verarbeitung der Programmanweisungen ändern. führen eine Anweisung (oder mehrere Anweisungen in einem Block) wiederholt aus. werden erst beendet, wenn ein vorher angegebenes Abbruchkriterium erreicht ist (oder die Schleife mit einer Sprunganweisung verlassen wird). In C gibt es mehrere Schleifenanweisungen zur Verfügung (for-, while- und do-while-schleife).

20 Auswertung monomialer Ausdrücke Wir wollen ein Programm schreiben, dass die n-potenz x n einer reellen Zahl x berechnet. Der Definition eines Ausdrucks lässt sich nicht immer auch gleich ein geeigneter Algorithmus zu seiner Auswertung entnehmen: n x n = x, i=1 n x = x }. {{.. x }, n Mal i=1 0 x = 1. i=1 Für unsere Zwecke besser geeignet ist die Darstellung in rekursiver Form: x n+1 = x x n, x 0 = 1.

21 Algorithmus in Pseudo-Code Wir halten den der rekursiven Formulierung oben entsprechenden Algorithmus in Form von Pseudo-Code fest. Pseudo-Code (n-te Potenz): y 1 for i = 0, 1,..., n-1 y x*y return y % initialization % number of iterations is fixed % loop body, y is updated in each step Im obigen Verfahren wird der Wert von y in jedem Iterationsschritt überschrieben. Damit kommt dem Startwert y 1 besondere Bedeutung zu.

22 Gliederung Bedingte Anweisungen II Motivation Schleifenanweisungen for-schleife while, do-while-schleifen Sprunganweisungen Lösung gewöhnlicher Differentialgleichungen

23 for-schleife Die for-schleife hat von allen Schleifenanweisungen die aufwändigste Syntax. Syntax: for(expr1; expr2; expr3) statement Der erste Ausdruck expr1 heißt Initialisierungsausdruck. Er wird vor dem Kontrollausdruck und nur ein einziges Mal ausgewertet.

24 for-schleife Die for-schleife hat von allen Schleifenanweisungen die aufwändigste Syntax. Syntax: for(expr1; expr2; expr3) statement Der erste Ausdruck expr1 heißt Initialisierungsausdruck. Er wird vor dem Kontrollausdruck und nur ein einziges Mal ausgewertet. An zweiter Stelle steht der Kontrollausdruck. Er wird vor dem ersten und dann nach jedem weiteren Schleifendurchlauf bewertet. Die Schleife wird beendet, sobald der Kontrollausdruck unwahr ist.

25 for-schleife Die for-schleife hat von allen Schleifenanweisungen die aufwändigste Syntax. Syntax: for(expr1; expr2; expr3) statement Der erste Ausdruck expr1 heißt Initialisierungsausdruck. Er wird vor dem Kontrollausdruck und nur ein einziges Mal ausgewertet. An zweiter Stelle steht der Kontrollausdruck. Er wird vor dem ersten und dann nach jedem weiteren Schleifendurchlauf bewertet. Die Schleife wird beendet, sobald der Kontrollausdruck unwahr ist. Der dritte Ausdruck wird nach jedem Schleifendurchlauf ausgewertet. Normalerweise werden hier Schleifenvariablen inkrementiert oder dekrementiert.

26 Programmbeispiel (n-te Potenz) In einer for-schleife lässt sich die n-te Potenz wie folgt berechnen: int i, n; double x, y;... /* initialize x, n */ y = 1.; for(i = 0; i < n; ++i) y *= x; Zur Wahl der einzelnen Ausdrücke in der Schleife: for( i = 0 ; i < n; ++i) An erster Stelle steht der Initialisierungsausdruck. In C beginnen Laufindizes in der Regel bei 0.

27 Programmbeispiel (n-te Potenz) In einer for-schleife lässt sich die n-te Potenz wie folgt berechnen: int i, n; double x, y;... /* initialize x, n */ y = 1.; for(i = 0; i < n; ++i) y *= x; Zur Wahl der einzelnen Ausdrücke in der Schleife: for(i = 0; i < n; ++i ) Nach jedem Schleifendurchlauf muss der Laufindex i inkrementiert werden.

28 Programmbeispiel (n-te Potenz) In einer for-schleife lässt sich die n-te Potenz wie folgt berechnen: int i, n; double x, y;... /* initialize x, n */ y = 1.; for(i = 0; i < n; ++i) y *= x; Zur Wahl der einzelnen Ausdrücke in der Schleife: for(i = 0; i < n ; ++i) Der Kontrollausdruck sorgt dann dafür, dass die Schleife soll nach n Iterationen beendet wird.

29 Auswertung der Fakultät Ein weiteres einfaches Beispiel zur Verwendung der for-schleife ist die Auswertung der n-ten Fakultat: n! = n i = n. i=1 Dieser Ausdruck lässt sich leicht in Pseudo-Code übertragen: Pseudo-Code (Fakultät): y 1 for i = 1, 2,..., n y i*y return y % initialization % range based iteration % index i is used in loop statement

30 Programmbeispiel (Auswertung der Fakultät) Wie das folgende Programmbeispiel illustriert, ist es ohne weiteres möglich, den Laufindex i im Schleifenkörper zu verwenden: int factorial, i, n;... /* initialize n */ for(factorial = 1, i = 1; i <= n; ++i) factorial *= i; Es kann mehr als eine Variable im ersten Ausruck der Schleife initialisiert werden (Komma-Operator). Analog können auch die übrigen Ausdrücke komplexer gestaltet werden: for(factorial = 1, i = 1; i <= n; factorial *= i++) ;

31 Gliederung Bedingte Anweisungen II Motivation Schleifenanweisungen for-schleife while, do-while-schleifen Sprunganweisungen Lösung gewöhnlicher Differentialgleichungen

32 Beispiel: Der Euklidische Algorithmus Der Euklidische Algorithmus ein klassisches Verfahren zur Berechnung des größten gemeinsamen Teilers zweier natürlicher Zahlen a, b. In Pseudo-Code lautet der Algorithmus: Pseudo-Code (Euklidischer Algorithmus): if a = 0 return b while b 0 if a > b a a - b else b b - a return a Die Anzahl der Iterationsschritte (Anweisungen innerhalb von while und return) hängt von den Eingabegrößen a und b ab und ist nicht a-priori bekannt.

33 while-schleife Die while-schleife hat von allen drei C-Schleifen die einfachste Syntax: while(expr) statement Der Ausdruck expr heißt Kontrollausdruck. Er muss von einem arithmetischen Typ (oder ein Zeiger) sein. Der Kontrollausdruck wird mit allen Seiteneffekten ausgewertet. Ist er wahr (d. h. ungleich 0), wird die folgende Schleifenanweisung statement wiederholt ausgeführt.

34 while-schleife Die while-schleife hat von allen drei C-Schleifen die einfachste Syntax: while(expr) statement Der Ausdruck expr heißt Kontrollausdruck. Er muss von einem arithmetischen Typ (oder ein Zeiger) sein. Der Kontrollausdruck wird mit allen Seiteneffekten ausgewertet. Ist er wahr (d. h. ungleich 0), wird die folgende Schleifenanweisung statement wiederholt ausgeführt. Nach jedem Schleifendurchlauf wird der Kontrollausdruck erneut ausgewertet.

35 while-schleife Die while-schleife hat von allen drei C-Schleifen die einfachste Syntax: while(expr) statement Der Ausdruck expr heißt Kontrollausdruck. Er muss von einem arithmetischen Typ (oder ein Zeiger) sein. Der Kontrollausdruck wird mit allen Seiteneffekten ausgewertet. Ist er wahr (d. h. ungleich 0), wird die folgende Schleifenanweisung statement wiederholt ausgeführt. Nach jedem Schleifendurchlauf wird der Kontrollausdruck erneut ausgewertet. Ist der Kontrollausdruck unwahr, wird die Schleife beendet.

36 Abweisende Schleife Ob und wie häufig der Schleifenkörper (auch Schleifenrumpf genannt) durchlaufen wird, hängt vom Kontrollausdruck ab. In einer while-schleife wird der Kontrollausdruck vor dem Eintritt in die Schleife und bei jedem erneuten Schleifendurchlauf ausgewertet. Die while-schleife heißt auch abweisende Schleife: Ist der Kontrollausdruck bereits vor Eintritt in die Schleife unwahr, wird der Schleifenkörper nie durchlaufen (d. h. die nach while folgende Anweisung wird nicht ausgeführt).

37 Programmbeispiel (Euklidischer Algorithmus) Quelltext #include <stdio.h> int main(void) { int a, b; printf("enter a: "); scanf("%d", &a); printf("enter b: "); scanf("%d", &b); if(a == 0) { printf("greatest common divisor(a,b) = %d\n", b); return 0; } while(b!= 0) { if(a > b) a -= b; else b -= a; } printf("greatest common divisor(a,b) = %d\n", a); return 0; }

38 Endlosschleifen Eine Schleife wird erst verlassen, wenn der Kontrollausdruck unwahr ist. Wird das Abbruchkriterium nie erreicht (d. h. bleibt der Kontrollausdruck immer wahr), kommt es zu einer Endlosschleife: while(1) ; /* results in infinite loop */ Hängt ein Programm in einer Endlosschleife fest, muss es vom User oder vom System abgebrochen werden. Der Compiler kann eine Endlosschleifen nicht entdecken: das Programm ist syntaktisch korrekt!

39 Gleitpunktzahlen in Kontrollausdrücken Auch das folgende Beispiel liefert eine Endlosschleife: float x = 1./9.; while(x!= 1.) x += 1./9.; Aufgrund von unvermeidbaren Approximationsfehlern liefert der Kontrollausdruck x!= 1. stets den Wert 0 ( Unwahr ). Eine Lösung dieses Problems könnte so aussehen: float x = 0.1; while(x <= 1.0) x += 0.1;

40 do-while-schleife Die do while-schleife funktionert ähnlich wie eine while-schleife mit dem Unterschied, dass der Schleifenkörper mindestens einmal durchlaufen wird. Syntax: do statement while(expr); Die Anweisung statement (auch ein Block ist erlaubt) wird ausgeführt, danach wird der Kontrollausdruck expr ausgewertet.

41 do-while-schleife Die do while-schleife funktionert ähnlich wie eine while-schleife mit dem Unterschied, dass der Schleifenkörper mindestens einmal durchlaufen wird. Syntax: do statement while(expr); Die Anweisung statement (auch ein Block ist erlaubt) wird ausgeführt, danach wird der Kontrollausdruck expr ausgewertet. Dies wird solange wiederholt ausgeführt, wie der Kontrollausdruck wahr ist.

42 do-while-schleife Die do while-schleife funktionert ähnlich wie eine while-schleife mit dem Unterschied, dass der Schleifenkörper mindestens einmal durchlaufen wird. Syntax: do statement while(expr); Die Anweisung statement (auch ein Block ist erlaubt) wird ausgeführt, danach wird der Kontrollausdruck expr ausgewertet. Dies wird solange wiederholt ausgeführt, wie der Kontrollausdruck wahr ist. Ist der Kontrollausdruck unwahr, wird die Schleife verlassen.

43 Äquivalenz von for- und while-schleife Alle Schleifenanweisungen sind äquivalent, d. h. man kann jede der drei Schleifen durch jede der jeweils anderen beiden in Verbindung mit bedingten Anweisungen ersetzen. Eine for-schleife beispielsweise for(expr1; expr2; expr3) statement lässt sich stets äquivalent als while-schleife formulieren: expr1 while(expr2) { statement expr3 }

44 Gliederung Bedingte Anweisungen II Motivation Schleifenanweisungen for-schleife while, do-while-schleifen Sprunganweisungen Lösung gewöhnlicher Differentialgleichungen

45 Sprunganweisungen Sprunganweisungen ändern den sequentiellen Programmablauf, indem ohne weitere Bedingungen an eine andere Stelle im Programm (im Quellcode) gesprungen wird. In C gibt es die folgenden Sprunganweisungen: break continue goto return Sprunganweisungen werden gebraucht... um Schleifen oder eine switch-anweisung (s. u.) zu verlassen oder um ein Programm oder eine Funktion zu beenden.

46 break-anweisung Die break-anweisung bewirkt, dass die innerste umgebende Schleife einer for-, while- oder do while-anweisung oder eine switch-anweisung sofort verlassen wird. Syntax: break; Beispiel: int i = 0; while(1) /* no infinite loop due to break */ { i++; if(i > 99) break; }

47 continue-anweisung Die continue-anweisung darf nur innerhalb einer for-, whileoder do while-schleife verwendet werden. Sie bewirkt, dass der aktuelle Schleifendurchlauf beendet wird und die Schleife mit der nächsten Iteration fortgesetzt wird. Syntax: continue; Beispiel: int i; for(i = 0; i < 10; ++i) { if(i%2) continue; printf("%d is an even number\n", i); }

48 return-anweisung Die return-anweisung beendet eine Funktion. Handelt es sich bei dieser Funktion um main, so wird das Programm beendet. Syntax: return expr; Manche Funktionen (z. B. main) geben einen Wert zurück. Dies geschieht im Quellcode durch den Aufruf von return. Rückgabetyp und -wert stimmen dann mit expr überein. Auch return gehört zu den Sprunganweisungen: der Programmfluss wird an der Stelle fortgesetzt, an der die Funktion aufgerufen wurde.

49 DIE Sprunganweisung goto Mit der Sprunganweisung goto kann an eine beliebige andere, mit einer Marke ausgezeichnete Stelle (innerhalb derselben Funktion) gesprungen werden: 11: printf( "First I'm here." ); 12: goto label; 126: label: 127: printf( "Now I'm here.");

50 Marken und Sprunganweisung Eine Marke (engl. label) zeichnet eine mögliche Einsprungstelle im Quellcode für die goto-anweisung aus. Marken können an jeder beliebigen Stelle im Quellcode stehen. Eine Marke besteht aus einem Bezeichner und einem Doppelpunkt: label: statement Dem Standard nach muss auf eine Marke mindestens eine Anweisung (auch eine leere Anweisung) folgen. Mit der Sprunganweisung goto label; wird eine Marke innerhalb derselben Funktion angesprungen.

51 Kritik an goto Die goto-anweisungen wird häufig kritisch kommentiert. Das Urteil ist nicht immer einheitlich. Pro: + Tief verschachtelte Schleifen können z. B. im Fehlerfall gezielt verlassen werden. Contra: - Die Sprunganweisung kann immer mit anderen Sprachmitteln vermieden werden. - Extensiver Gebrauch macht Programme schwer lesbar und damit fehleranfällig. Manche Programmiersprachen unterbinden die Verwendung von goto (z. B. Java). Im Handbuch der Skriptsprache Lua hingegen werden die Vorteile unter bestimmten Bedingungen betont.

52 Akademisches Beispiel: Schleifen mit goto Mit bedingten Sprunganweisungen (d. h. Kombination von if + goto) lassen sich die oben vorgestellten Schleifenanweisungen simulieren. Beispielsweise ist der folgende Code int i; i = 0; loop: if(i < 10) { printf("i = %d\n", i); ++i; goto loop; } äquivalent zu der for-schleife: int i; for(i = 0; i < 10; ++i) printf("i = %d\n", i);

53 Gliederung Bedingte Anweisungen II Motivation Schleifenanweisungen for-schleife while, do-while-schleifen Sprunganweisungen Lösung gewöhnlicher Differentialgleichungen

54 Bakterienwachstum Obwohl wir erst wenige Sprachmittel zur Verfügung haben, können wir bereits einige interessante Fragestellungen praktisch untersuchen. Wir betrachten das Wachstum eines Bakterienkultur über einen Zeitraum [0, T ]. Zu Beginn der Beobachtung t = 0 werden p 0 Bakterien geschätzt. Wir möchten ein Programm näherungsweise bestimmen lassen, wie groß die Bakterienpopulation p in der Probe zum Zeitpunkt t [0, T ] ist.

55 Mathematische Modellierung I Angenommen, die Zahl der Bakterien p(t) zum Zeitpunkt t ist bekannt. Wir beobachten, dass sich kurze Zeit später, zum Zeitpunkt t + t, die Population wie folgt verändert hat: p(t + t) = p(t) + tλp(t). Wir formulieren die obige Gleichung um zu p(t + t) p(t) t = λp(t). Lassen wir nun t 0 gehen, so erhalten wir die gewöhnliche Differentialgleichung: p (t) = λp(t) für t (0, T ).

56 Mathematische Modellierung II Die Größe der Population ist zum Zeitpunkt t = 0 bekannt. Die Lösung p erfüllt also das Anfangswertproblem p (t) = λp(t) für t (0, T ), p(0) = p 0. Das obige Problem hat eine eindeutige Lösung, die wir sogar angeben können: p(t) = p 0 e λt Im allgemeinen sind in Anwendungen keine Lösungen in geschlossener analytischer Form gegeben. Dann ist man auf numerische Verfahren angewiesen.

57 Numerisches Verfahren Sei t eine gewählte Zeitschrittweite, dann setzen wir t k = k t. Gesucht sind Näherungen p k p(t k ), wobei der Anfangswert p 0 bekannt ist. Aus der Näherung p(t + t) p(t) + tλp(t) erhalten wir die folgende Vorschrift: p k+1 = p k + tλp k. Dieses sog. explizite Verfahren lässt sich sehr einfach implementieren.

58 Komplettes Programmbeispiel Quelltext (Unbeschränktes Wachstum) #include <stdio.h> int main(void) { double initial =.5; double rate = 1.; double time, endtime = 4.; double deltat = 0.05; double population; for(time = 0., population = initial; time < endtime; time += deltat) { printf("%f %f\n", time, population); population += deltat*rate*population; } printf("%f %f\n", time, population); return 0; }

59 Visualisierung von Daten I Das obige Programm liefert je nach gewählter Zeitschrittweite t eine große Menge an Daten. Daten werden in der Regel zur späteren Verarbeitung (Postprocessing) in Dateien gespeichert. Für den Moment nutzen wir dazu die Unix-Shell. Ausgabe in Datei population.out umleiten: $./population > population.out Aufruf von gnuplot und Plotten der Daten: $ gnuplot gnuplot> plot "population.out"

60 Visualisierung von Daten II 30 numerical solution exact solution Population p(t) Time t Abbildung : Ergebnis für λ = 1, p 0 = 0.5, t = 0.05

61 Logistisches Wachstum I Beim sog. logistischen Wachstum wird die Populationsgröße durch eine Kapazitätsgrenze C beschränkt. Das modifizierte mathematische Modell lautet: p (t) = λ(c p(t))p(t) für t (0, T ), p(0) = p 0 mit p 0 C. Aus der Herleitung oben erhalten wir die folgende Vorschrift: p k+1 = p k + tλ(c p k )p k.

62 Logistisches Wachstum II numerical solution exact solution 1 Population p(t) Time t Abbildung : Ergebnis für λ = 1, C = 1, p 0 = 0.5, t = 0.05

63 Autoren Autoren die an diesem Skript mitgewirkt haben: : Christoph Gersbacher 2014 : Patrick Schreier This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License. licenses/by-sa/4.0/legalcode

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 3: Anweisungen, Blöcke und Programmfluss Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg i. Br. Vorlesung

Mehr

Einführung in die Programmierung für Physiker. Die Programmiersprache C Kontrollstrukturen

Einführung in die Programmierung für Physiker. Die Programmiersprache C Kontrollstrukturen Einführung in die Programmierung für Physiker Die Programmiersprache C Kontrollstrukturen Marc Wagner Institut für theoretische Physik Johann Wolfgang Goethe-Universität Frankfurt am Main WS 2017/18 Anweisungen

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

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

Java Anweisungen und Ablaufsteuerung

Java Anweisungen und Ablaufsteuerung Informatik 1 für Nebenfachstudierende Grundmodul Java Anweisungen und Ablaufsteuerung Kai-Steffen Hielscher Folienversion: 24. Januar 2017 Informatik 7 Rechnernetze und Kommunikationssysteme Inhaltsübersicht

Mehr

C-Propädeutikum Anweisungen

C-Propädeutikum Anweisungen C-Propädeutikum Anweisungen Stefan Freitag freitag@uni-leipzig.de Universitätsrechenzentrum Universitätsbibliothek Universität Leipzig basiert auf den Originalfolien von Jörn Hoffmann Ausdrücke Institut

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

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

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick 2 Verbundanweisung 3 Bedingte Anweisung 4 Auswahlanweisung

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 25

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf  Seite 1 von 25 Kapitel 9 Schleifen Seite 1 von 25 Schleifen - Schleifen werden zur wiederholten Ausführung von Anweisungen verwendet. - Es werden drei Arten von Schleifen unterschieden: o for -Schleife o while -Schleife

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

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 34 Einstieg in die Informatik mit Java weitere Anweisungen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 34 1 Verbundanweisung 2 Bedingte Anweisung 3 Auswahlanweisung

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

4.4 Imperative Algorithmen Verzweigung und Iteration

4.4 Imperative Algorithmen Verzweigung und Iteration Eine weitere bedingte Schleife kann in Java mit dem Schlüsselwort for definiert werden: for (; i ; ) Alle drei Bestandteile im Schleifenkopf sind Ausdrücke

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

Wiederholungen / Schleifen

Wiederholungen / Schleifen Wiederholungen / Schleifen Repetitive Ausführung von Instruktionen InE1 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Beispiel Quadratzahlen von 1000 bis 1009 berechnen

Mehr

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht

Kontrollfluss. man Verzweigungen und Sprünge. o bisher linear (von oben nach unten) o Für interessante Programme braucht Kontrollanweisungen Kontrollfluss o bisher linear (von oben nach unten) o Für interessante Programme braucht man Verzweigungen und Sprünge Kontrollfluss o bisher linear (von oben nach unten) o Für interessante

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

Schleifenanweisungen

Schleifenanweisungen Schleifenanweisungen Bisher: sequentielle Abarbeitung von Befehlen (von oben nach unten) Nun: Befehle mehrfach ausführen (= Programmschleife): for-anweisung - wenn feststeht, wie oft z.b.: eine Berechnung

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

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

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

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

Kontrollstrukturen (1)

Kontrollstrukturen (1) Kontrollstrukturen (1) Selektionen, if ermöglicht das alternative Ausführen von Programteilen in Abhängigkeit einer Bedingung if (Bedingung) Block 1 else Block 2 Ist die Bedingung wahr, also ungleich 0,

Mehr

2 Teil 2: Nassi-Schneiderman

2 Teil 2: Nassi-Schneiderman 2 Teil 2: Nassi-Schneiderman Wie kann man Nassi-Schneiderman in einer objektorientierten Sprache verwenden? Jedes Objekt besitzt Methoden, welche die Attribute des Objektes verändern. Das Verhalten der

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

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 3 C-Ausdrücke...3-2 3.1 Arithmetische Ausdrücke...3-3 3.2 Wertzuweisungen...3-5 3.3 Inkrementieren und Dekrementieren...3-6 3.4 Logische Ausdrücke (Bedingungen)...3-7 3.5 Bedingte Ausdrücke...3-8

Mehr

Java Ablaufsteuerung (Beispiele)

Java Ablaufsteuerung (Beispiele) Informatik 1 für Nebenfachstudierende Grundmodul Java Ablaufsteuerung (Beispiele) Kai-Steffen Hielscher Folienversion: 16. Januar 2018 Informatik 7 Rechnernetze und Kommunikationssysteme Blöcke Anweisungen

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

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

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 4. November 2015 Administratives Zur Abgabe von Übungsaufgaben Nein, wir

Mehr

4.4 Imperative Algorithmen Prozeduren

4.4 Imperative Algorithmen Prozeduren 4.4.2 Prozeduren Der Wert eines Ausdrucks u in Zustand z Z lässt sich damit auch leicht definieren (jetzt W Z statt W σ ) Dazu erweitern wir die rekursive Definition von Folie 57 (Wert eines Ausdrucks):

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

Abschnitt 5. Grundlagen der funktionalen & imperativen Programmierung

Abschnitt 5. Grundlagen der funktionalen & imperativen Programmierung Übersicht Abschnitt 5. Grundlagen der funktionalen & imperativen Programmierung Einführung in die Programmierung 5. Grundlagen der funktionalen & imperativen Programmierung 1 Übersicht 5.1 Sorten und Abstrakte

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der

Mehr

Intensivübung zu Algorithmen und Datenstrukturen

Intensivübung zu Algorithmen und Datenstrukturen Intensivübung zu Algorithmen und Datenstrukturen Silvia Schreier Informatik 2 Programmiersysteme Martensstraße 3 91058 Erlangen Übersicht Programmierung Fallunterscheidung Flussdiagramm Bedingungen Boolesche

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

Bei der Und-Verknüpfung müssen beide Ausdrücke wahr sein, dass der gesamte Ausdruck wahr wird. a=1; b=2; a=1; b=3; else. endif

Bei der Und-Verknüpfung müssen beide Ausdrücke wahr sein, dass der gesamte Ausdruck wahr wird. a=1; b=2; a=1; b=3; else. endif 1. Kontrollstrukturen in Octave 1.1 Logische Vergleichs- und Verknuepfungsoperatoren Es existieren die gleichen logischen Vergleichs- und Vernüpfungsoperatoren wie bei praktisch allen Programmiersprachen.

Mehr

Einführung in die Programmierung II. 3. Kontrollstrukturen

Einführung in die Programmierung II. 3. Kontrollstrukturen Einführung in die Programmierung II 3. Kontrollstrukturen Thomas Huckle, Stefan Zimmer 2.5.2007-1- Anweisungen: was bisher geschah Bisher kennen wir zwei Formen von Anweisungen Ein Ausdruck mit Semikolon

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java Vorlesung vom 25.4.07, Anweisungen Übersicht 1 Ausdrucksanweisung 2 Einfache Ausgabeanweisung 3 Einfache Eingabeanweisung, Vorbereitungen 4 Verbundanweisung 5 Bedingte Anweisung 6 Auswahlanweisung 7 for

Mehr

Tagesprogramm

Tagesprogramm 1 2015-10-22 Tagesprogramm Syntax und Semantik Varianten von Schleifen Varianten von Programmverzweigungen 2 2015-10-22 Syntax und Semantik Darstellung der Syntax Syntax: Aufbau der Sätze bzw. Programme

Mehr

Kompaktkurs Einführung in die Programmierung. 4. Kontrollstrukturen

Kompaktkurs Einführung in die Programmierung. 4. Kontrollstrukturen Kompaktkurs Einführung in die Programmierung 4. Kontrollstrukturen Stefan Zimmer 28.2.2008-1- Anweisungen: was bisher geschah Bisher kennen wir zwei Formen von Anweisungen Ein Ausdruck mit Semikolon ist

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 2017/2018 Übersicht Typkonvertierung

Mehr

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen

4.2 Gleitkommazahlen. Der Speicherbedarf (in Bits) ist üblicherweise. In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen . Gleitkommazahlen In vielen Anwendungen benötigt man gebrochene Werte. Physikalische Größen Umrechnen von Einheiten und Währungen Jede Zahl x Q mit x 0 lässt sich folgendermaßen schreiben: x = s m e mit

Mehr

Praxisorientierte Einführung in C++ Lektion: "Kontrollstrukturen"

Praxisorientierte Einführung in C++ Lektion: Kontrollstrukturen Praxisorientierte Einführung in C++ Lektion: "Kontrollstrukturen" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ April 24, 2014

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung 8. Vorlesung 25.05.2016 1 Ausdrücke "Befehle", die ein Ergebnis liefern 3 + 4 sin(x) x < 10 getchar() Ausdrücke können Teil eines anderen Ausdrucks sein x = sin( x + y ) Auswertung:

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

Programmieren für Wirtschaftswissenschaftler SS 2015

Programmieren für Wirtschaftswissenschaftler SS 2015 DEPARTMENT WIRTSCHAFTSINFORMATIK FACHBEREICH WIRTSCHAFTSWISSENSCHAFT Programmieren für Wirtschaftswissenschaftler SS 2015 Lucian Ionescu Blockveranstaltung 16.03 27.3.2015 3. Verzweigungen und Schleifen

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

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

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

Wo sind wir? Kontrollstrukturen

Wo sind wir? Kontrollstrukturen Wo sind wir? Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets,

Mehr

Java: Eine kurze Einführung an Beispielen

Java: Eine kurze Einführung an Beispielen Java: Eine kurze Einführung an Beispielen Quellcode, javac und die JVM Der Quellcode eines einfachen Java-Programms besteht aus einer Datei mit dem Suffix.java. In einer solchen Datei wird eine Klasse

Mehr

Kontrollstrukturen. Wo sind wir? Anweisung mit Label. Block. Beispiel. Deklarationsanweisung

Kontrollstrukturen. Wo sind wir? Anweisung mit Label. Block. Beispiel. Deklarationsanweisung Java-Umgebung Lexikale Konventionen Datentypen Kontrollstrukturen Ausdrücke Klassen, Pakete, Schnittstellen JVM Exceptions Java Klassenbibliotheken Ein-/Ausgabe Collections Threads Applets, Sicherheit

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 06: Einführung in Kontrollstrukturen Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Einführung in Kontrollstrukturen 3 Grundstrukturen von

Mehr

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr. Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 6 Pkt.) a) Erklären

Mehr

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.

Nachklausur: Grundlagen der Informatik I, am 02. April 2008 Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr. Seite 1 von 9 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 4 Pkt.) Gegeben

Mehr

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

EINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12 EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2015 Matthias Wieczorek Computer-Aided Medical Procedures Technische Universität München Administratives Zentralübung (Mittwoch, 09:45

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

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

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

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

Grundlagen der Programmierung in C++ Kontrollstrukturen

Grundlagen der Programmierung in C++ Kontrollstrukturen Grundlagen der Programmierung in C++ Kontrollstrukturen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Block Keine Kontrollstruktur im eigentlichen Sinn Dient

Mehr

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML. JavaScript JavaScript wird direkt in HTML-Dokumente eingebunden. Gib folgende Zeilen mit einem Texteditor (Notepad) ein: (Falls der Editor nicht gefunden wird, öffne im Browser eine Datei mit der Endung

Mehr

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff. Gedächtnis Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet Hauptspeicher 38265 Telefon CPU Gedächtnis Vorlesender Zugriff Verarbeitungseinheit

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

6. Kontrollanweisungen II

6. Kontrollanweisungen II Sichtbarkeit 6. Kontrollanweisungen II Sichtbarkeit, Lokale Variablen, While-Anweisung, Do-Anweisung, Sprunganweisungen main block Deklaration in einem Block ist ausserhalb des Blocks nicht sichtbar. int

Mehr

5. Kontrollanweisungen II

5. Kontrollanweisungen II Sichtbarkeit 5. Kontrollanweisungen II Sichtbarkeit, Lokale Variablen, While-Anweisung, Do-Anweisung, Sprunganweisungen main block Deklaration in einem Block ist ausserhalb des Blocks nicht sichtbar. int

Mehr

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens Grundlagen von C Jonas Gresens Proseminar C Grundlagen und Konzepte Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität

Mehr

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben.

Übungen zur Vorlesung Wissenschaftliches Rechnen I. Grundelemente von Java. Eine Anweisung. wird mit dem Wertzuweisungsoperator = geschrieben. Eine Anweisung wird mit dem Wertzuweisungsoperator = geschrieben. Eine Anweisung wird mit dem Wertzuweisungsoperator = geschrieben. Daher ist y = x + 5.6; keine Gleichung, sondern die Anweisung den Wert

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

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil

Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++, 1. Teil MÜNSTER Übung zur Vorlesung Wissenschaftliches Rechnen Sommersemester 2012 Auffrischung zur Programmierung in C++ 1. Teil 11. April 2012 Organisatorisches MÜNSTER Übung zur Vorlesung Wissenschaftliches

Mehr

Bedingte Anweisungen

Bedingte Anweisungen Bedingte Anweisungen Bedingte Anweisungen werden nicht immer ausgeführt, sondern nur, wenn eine Bedingung erfüllt (wahr) ist. C/C++/Java bieten hier 2 Konstruktionen an: if-anweisung sowie switch-case

Mehr

Einführung in die Programmierung

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

Mehr

C- Kurs 03 Ausdrücke und Operatoren

C- Kurs 03 Ausdrücke und Operatoren C- Kurs 03 Ausdrücke und Operatoren Dipl.- Inf. Jörn Hoffmann jhoffmann@informadk.uni- leipzig.de Universität Leipzig InsDtut für InformaDk Technische InformaDk Ausdrücke Institut für Informatik Ausdrücke

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

Kapitel 4. Kontrollstrukturen

Kapitel 4. Kontrollstrukturen Kapitel 4 Kontrollstrukturen Kontrollstrukturen 1 Ziele Kontrollstrukturen in imperativen Programmen kennenlernen und verstehen. Realisierung der Kontrollstrukturen in Java. Kontrollstrukturen 2 Anweisungen

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

Entscheidungen. INE1, Montag M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert

Entscheidungen. INE1, Montag M. Thaler, Office TG ZHAW, M. Thaler, K. Rege, G. Burkert Entscheidungen INE1, Montag M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Ablaufstrukturen bis jetzt nur Sequenzen von Code neu Auswahl (Programmverzweigung) - Code aufgrund

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

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

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 6: Ausdrücke und Typumwandlung Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg i. Br. Vorlesung vom

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

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

6. Kontrollanweisungen II

6. Kontrollanweisungen II Sichtbarkeit Deklaration in einem Block ist ausserhalb des Blocks nicht sichtbar. 6. Kontrollanweisungen II Sichtbarkeit, Lokale Variablen, While-Anweisung, Do-Anweisung, Sprunganweisungen main block int

Mehr

Grundlagen der Programmierung in C++ Kontrollstrukturen

Grundlagen der Programmierung in C++ Kontrollstrukturen Block Keine Kontrollstruktur im eigentlichen Sinn Grundlagen der Programmierung in C++ Kontrollstrukturen Wintersemester 2005/2006 G. Zachmann Clausthal University, Germany zach@in.tu-clausthal.de Dient

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

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Textausgabe per printf Die Funktion printf ist kein Bestandteil der C Sprache sondern gehört zur C Bibliothek. printf

Mehr