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

Slides:



Advertisements
Ähnliche Präsentationen
Ein Beispiel in Java.
Advertisements

Forschungszentrum caesar
Verzweigung oder bedingte Anweisung Weiter mit PP.
der Universität Oldenburg
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
SWITCH - Anweisung.
SWITCH - Anweisung.
Datentyp- umwandlung. Literale sind: Bezeichner mit einem festen Wert wie z.B:
Java- Syntax.
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
ARRAY oder FELD oder VEKTOR
Schleifen-beobachtung
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Konstruktoren.
WHILE - Anweisung.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
FOR Anweisung.
Der Präprozessor. Bevor der Compiler das Programm in Maschinencode übersetzt (nur dieser kann von der CPU, dem Herz des Computers, bearbeitet werden)
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
Exceptions. import java.sql.*; public class MyException{ boolean b; Statement stat; public MyException(){ b = stat.execute("xyz"); } Beim Übersetzen dieses.
DO...WHILE Anweisung.
DO...WHILE Anweisung.
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
Zusammenfassung Vorwoche
DVG Ablaufsteuerung
Schleifen mit der Turtle
Informatik Grundkurse mit Java
Struktogramme IF-ELSE FOR – Schleife
Guten Nachmittag!.
Wir haben gesehen Das Gerüst ist bei JavaKara fix vorgegeben
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Wiederholte Programmausführung
Einführung in PHP.
Einführung in PHP 5.
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
PHP: Operatoren und Kontrollstrukturen
Hochschule Fulda – FB ET Sommersemester 2014
Programmiervorkurs WS 2014/15 Schleifen
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Schleifen
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
MATLAB Control Statements.
Einführung in die Programmiersprache C 2
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Variablen und Datentypen
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Verzweigung oder bedingte Anweisung. Aufgabe: Ein Autofahrer tankt sein Auto voll und schreibt den Kilometerstand auf (drei- stelliger Tageszähler).Wenn.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Funktionen, Felder und Parameter- übergabe. Funktionsaufruf mit Feld als Parameter: Parameter = Name des Feldes.
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
1 freedroidz – spielend Programmieren lernen. 2 Was ist freedroidz?
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Struktogramme.
Java-Kurs - 2. Übung primitive Datentypen, Konstanten
Unterschiedliche Kontrollstrukturen
Arten von Kontrollstrukturen
Schleifen mit der Turtle
Zufallszahlen in C erzeugen
Schleifen Datenfelder (Arrays) Verzweigungen
 Präsentation transkript:

FOR Anweisung

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

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

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

Programmverlauf

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

Dynamische Entwicklung des Inhalts der Variablen i

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

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

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

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

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

C-Syntax für FOR - Anweisung

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

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

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

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

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); }

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) ;

Was wird also ausgegeben ? 101

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

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

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

Oder alternativ:

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

Struktogramm:

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

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

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

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

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

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.

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

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.

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

Beispiele

Was gibt das folgende Programm auf dem Bildschirm aus?

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= /2= /1= 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

Was gibt das folgende Programm auf dem Bildschirm aus?

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= /2= /1= /-1= /-2= /-3= Hallo Welt Warum wird bei teiler=0 nicht die Schleife verlassen? Wenn der teiler 0 wird, wird wieder an den Anfang der Schleife gesprungen.

Was gibt das folgende Programm auf dem Bildschirm aus?

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= /-1= /2= /-2= /1= 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