Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

WHILE - Anweisung.

Ähnliche Präsentationen


Präsentation zum Thema: "WHILE - Anweisung."—  Präsentation transkript:

1 WHILE - Anweisung

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

3 Schreibaufwendige Lösung:

4 int main(){ printf("0 \n"); printf("1 \n"); printf("2 \n"); // usw. //
int main(){ printf("0 \n"); printf("1 \n"); printf("2 \n"); // usw. // printf("100 \n"); return 0; }

5 Elegantere Lösung:

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

7 while (i<=100){ printf("%d\n",i); i=i+1; }
Bedingung while (i<=100){ printf("%d\n",i); i=i+1; } Bedingung wahr printf("Das war es"); return 0; } Die while–Anweisung ist EINE (komplexe) Anweisung, in der Anweisungen vorkommen. Bedingung falsch

8 Programmverlauf

9 while (i<=100){ printf("%d\n",i); i=i+1; }
printf("Das war es"); return 0; }

10 des Inhalts der Variablen
Dynamische Entwicklung des Inhalts der Variablen i

11 while (i<=100){ printf("%d\n",i); i=i+1; }
printf("Das war es"); i 1

12 while (i<=100){ printf("%d\n",i); i=i+1; }
printf("Das war es"); i 1 2

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

14 while (i<=100){ printf("%d\n",i); i=i+1; }
printf("Das war es"); i 1 2 ... 100 101

15 while (i<=100){ printf("%d\n",i); i=i+1; }
printf("Das war es"); i 1 2 ... 100 101

16 C-Syntax für WHILE - Anweisung

17 while (Ausdruck){ Anweisung(en); }
bei einer Anweisung sind Klammern nicht nötig. Trotzdem: Immer Klammern machen. while (Ausdruck){ Anweisung(en); } Blockende kein Semikolon

18 Warum Endlosschleife ? i=0; { while (i<=3); i = i+1; }

19 Warum Endlosschleife ? i=0; { while (i<=3); i = i+1; }
man braucht keine öffnende { Klammer, da es nur 1 Anweisung gibt i = i+1; } Nach der Bedingung (i<=3) 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<=3 (in diesem Fall: 0 <=3) ist, also immer.

20 Diese Schleife ist also eine Endlosschleife.
Warum Endlosschleife ? i=0; { while (i<=3); i = i+1; } Diese Schleife ist also eine Endlosschleife.

21 wird vom Compiler wie folgt interpretiert:
Das heißt while (i<=3); wird vom Compiler wie folgt interpretiert: while (i<=3) ;

22 Aufgabe: Flußdiagramm der WHILE – Anweisung mit einer beliebigen Bedingung B und beliebigen Anweisung(en) A, also der folgenden Anweisung …

23 while (B) { A; }

24 falsch B wahr A

25 WHILE - Anweisung als Struktogramm

26 Bedingung Anweisung(en)

27 AUFGABE: Stellen Sie den Programmteil unten als Struktogramm dar
i = 0; while (i<=100){ printf("%d\n",i); i=i+1; } printf("Das war es");

28 i = 0 while(i<=100) Ausgabe(i) i = i+1 Ausgabe("Das war es")

29 Die WHILE - Anweisung nennt man auch kopfgesteuerte bzw
Die WHILE - Anweisung nennt man auch kopfgesteuerte bzw. abweisende Schleife, weil die Bedingung am Kopf der Schleife steht, bzw. die Schleife nicht durchlaufen werden muss (Durchgang wird abgewiesen)

30 Wie oft wird eine kopfgesteuerte Schleife durchlaufen.
Nennen Sie die obere bzw. untere Grenze.

31 0 ...  Durchgänge

32 Zum Schluss ein kleiner Ausflug.

33 Manchmal braucht man Zufallszahlen, um z. B
Manchmal braucht man Zufallszahlen, um z.B. die Gewinnchancen beim Lotto zu simulieren. Dies ist für Leute von Vorteil, die keine größeren Kenntnisse in Wahrscheinlichkeitstheorie haben.

34 Dafür stellt die Entwicklungsumgebung die Funktionen srand(
Dafür stellt die Entwicklungsumgebung die Funktionen srand(...) und rand() zur Verfügung.

35 srand(...) bewirkt, dass bei jedem Programmstart ein anderer Satz von Zufallszahlen gewählt wird. Würde dies nicht gemacht, würde jeder Programmlauf mit dem gleichen Satz von Zufallszahlen arbeiten.

36 srand(...) soll als erste Anweisung im Programm genau einmal verwendet werden.
rand() liefert eine Zufallszahl zwischen 0 und einer (großen) maximalen Zahl (siehe Hilfe)

37 #include "stdafx. h" #include <stdlib. h> #include <stdio
#include "stdafx.h" #include <stdlib.h> #include <stdio.h> #include <time.h> int main(){ int i = 0; int zufallszahl; srand((unsigned)time(NULL)); while(i<100){ i=i+1; zufallszahl=rand(); printf("%d\n",zufallszahl); } return 0; } genau ein Mal am Programmanfang verwenden erzeugt eine Zufallszahl

38 Ist die folgende Schleife eine Endlosschleife?

39 #include <stdio.h> int main(){ int i; i = 0; while (i>=0){
#include "stdafx.h" #include <stdio.h> int main(){ int i; i = 0; while (i>=0){ i=i+1; } printf("i=%d ", i); return 0; Beachten Sie dazu, dass i eine integer-Variable ist und 4 Byte Speicher benötigt. Der Zahlenbereich geht von: bis

40 #include <stdio.h> int main(){ int i; i = 0; while (i>=0){
#include "stdafx.h" #include <stdio.h> int main(){ int i; i = 0; while (i>=0){ i=i+1; } printf("i=%d ", i); return 0; i wird also bis hochgezählt, das ist als Dualzahl: dies um 1 hochgezählt ergibt: Das ist als Dezimalzahl: (die kleinste negative Zahl) also keine Endlosschleife !! was wird also auf dem Bildschirm ausgegeben?


Herunterladen ppt "WHILE - Anweisung."

Ähnliche Präsentationen


Google-Anzeigen