Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.

Ähnliche Präsentationen


Präsentation zum Thema: "FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm."—  Präsentation transkript:

1 FOR Anweisung

2 Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm

3 int main(){ int i; i=0; // wie geht es // weiter ??

4 for (i=0; i<=100; i=i+1){ printf("%d\n",i); } Bedingung Bedingung wahr Bedingung falsch printf("Das wars schon"); return 0; } InitialisierungSchleifenzähler verändern

5 Programmverlauf

6 printf("Das wars schon"); return 0; } for (i=0; i<=100; i=i+1){ printf("%d\n",i); }

7 Dynamische Entwicklung des Inhalts der Variablen i

8 printf("Das wars schon"); i0 1 for (i=0; i<=100; i=i+1){ printf("%d\n",i); }

9 printf("Das wars schon"); i0 1 for (i=0; i<=100; i=i+1){ printf("%d\n",i); } 2

10 .... usw. bis i den Wert 100 hat

11 printf("Das wars schon"); i0 1 for (i=0; i<=100; i=i+1){ printf("%d\n",i); } 2...100101

12 printf("Das wars schon"); i0 1 for (i=0; i<=100; i=i+1){ printf("%d\n",i); } 2...100101

13 C-Syntax für FOR - Anweisung

14 for (Ausdr1; Ausdr2; Ausdr3){ Anweisung(en); } Bedingung Initialisierung Den Schleifenzähler verändern bei einer Anweisung sind Klammern nicht nötig. Trotzdem: Immer Klammern machen. Blockende kein Semikolon

15 for (Ausdr1; Ausdr2; Ausdr3){ Anweisung(en); } Diesen Teil innerhalb einer for-Anweisung nennt man auch Schleifenrumpf

16 Warum gibt es nur eine Ausgabe auf dem Bildschirm ? { for (i=0; i<=100; i=i+1); printf("%d\n",i); }

17 Weil der Compiler dieses Konstrukt als die zwei folgenden Anweisungen auffasst:

18 Nach for (...) muss eine Anweisung kommen ! Diese Anweisung ist die "leere Anweisung" (die nichts macht bzw. bewirkt), die durch den leeren Ausdruck, der mit einem Semikolon abgeschlossen wird, zu einer Anweisung wird. Diese wird solange ausgeführt, solange i<=100, also 101 mal. DANACH wird einmal printf("%d\n",i) ausgeführt. for (i=0; i<=100; i=i+1); { printf("%d\n",i); }

19 Das heißt wird vom Compiler wie folgt interpretiert: for (i=0; i<=100; i=i+1); for (i=0; i<=100; i=i+1) ;

20 Was wird also ausgegeben ? 101

21 Aufgabe: Flußdiagramm der FOR - Anweisung mit beliebigem A1, A2, A3 und beliebigen Anweisung(en) A, also der folgenden Anweisung …

22 for (A1; A2; A3){ A; }

23 Initialisierung (A1) Bedingung (A2) falsch wahr A Schleifenzähler verändern (A3)

24 Oder alternativ:

25 Initialisierung (A1) A Schleifenzähler verändern (A3) Bedingung (A2) falsch wahr

26 Struktogramm:

27 Anweisung(en) for(Ausdr1; Ausdr2; Ausdr3)

28 Wie oft wird der Schleifenrumpf einer for- Schleife durchlaufen. Nennen Sie die obere bzw. untere Grenze.

29 0...  Durchgänge, wobei die Initialisierung (Ausdr1) aber auf jeden Fall genau 1 Mal gemacht wird.

30 Die for-Schleife nennt man auch Zählschleife, weil durch den Anfangswert und den Endwert der Schleifenvariablen die Anzahl der Schleifendurchgänge festgelegt sind.

31 Zum Schluss: Eine Besonderheit von allen 3 Schleifenarten: break und continue

32 Für alle drei Arten von Schleifen, for Schleife, while Schleife und do-while Schleife existieren noch zwei wichtige Anweisungen, nämlich break und continue.

33 Die break-Anweisung veranlaßt, daß die Schleife sofort verlassen wird. Bei verschachtelten Schleifen wird die aktuelle Schleife sofort verlassen.

34 Die continue-Anweisung veranlaßt, daß sofort zum Anfang der Schleife (Schleifen-Bedingung) gesprungen wird. Im Gegensatz zur break- Anweisung wird die Schleife nicht verlassen.

35 Bei einer for-Schleife wird dagegen mit dem Abarbeiten des letzten Ausdrucks in der for-Klammer weitergemacht.

36 Beispiele

37 Was gibt das folgende Programm auf dem Bildschirm aus?

38 int main(){ double teiler,erg; teiler=4; while(teiler>=-2){ teiler--; if(teiler==0){ break; } erg=10/teiler; printf("10/%f=%f\n",teiler,erg); } printf("Hallo Welt\n"); return 0; } 10/3=3.333333 10/2=5.000000 10/1=10.000000 Hallo Welt Warum wird nicht 10/0=... ausgegeben? Wenn der teiler 0 wird, wird break ausgeführt. Dies veranlaßt das Verlassen der Schleife und die Ausführung der nächsten Anweisung

39 Was gibt das folgende Programm auf dem Bildschirm aus?

40 int main(){ double teiler,erg; teiler=4; while(teiler>=-2){ teiler--; if(teiler==0){ continue; } erg=10/teiler; printf("10/%f=%f\n",teiler,erg); } printf("Hallo Welt\n"); return 0; } 10/3=3.333333 10/2=5.000000 10/1=10.000000 10/-1=-10.000000 10/-2=-5.000000 10/-3=-3.333333 Hallo Welt Warum wird bei teiler=0 nicht die Schleife verlassen? Wenn der teiler 0 wird, wird wieder an den Anfang der Schleife gesprungen.

41 Was gibt das folgende Programm auf dem Bildschirm aus?

42 int main(){ double teiler, erg; for(teiler=3;teiler>=-2;teiler--){ if(teiler==0){ continue; } erg=10/teiler; printf("10/%f=%f\n",teiler,erg); } printf("Hallo Welt\n"); return 0; } 10/3=3.333333 10/-1=-10.000000 10/2=5.000000 10/-2=-5.000000 10/1=10.000000 Hallo Welt Warum wird bei teiler=0 nicht die Schleife verlassen? Wenn der teiler 0 wird, wird sofort an den letzten Ausdruck der for-Klammer gesprungen. Aus Platzmangel wurden die Ausgaben nicht untereinander geschrieben


Herunterladen ppt "FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm."

Ähnliche Präsentationen


Google-Anzeigen