Schleifen in C/C++/Java

Ähnliche Dokumente
Schleifen in C/C++/Java

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

3. Anweisungen und Kontrollstrukturen

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

C++ Teil Schleifen. Man kann bestimme Anweisungen in einem Programm mehrfach ausführen lassen. Dazu gibt es in C++ verschiedene Schleifen.

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

Einführung in die Programmierung II. 3. Kontrollstrukturen

Kompaktkurs Einführung in die Programmierung. 4. Kontrollstrukturen

Bedingte Anweisungen

Programmiertechnik Kontrollstrukturen

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

Java Anweisungen und Ablaufsteuerung

C++ - Einführung in die Programmiersprache Schleifen

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java

Objektorientierte Programmierung

Java Ablaufsteuerung (Beispiele)

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

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

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

Schleifen: Immer wieder dasselbe tun

2.5 Programmstrukturen Entscheidung / Alternative

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Einstieg in die Informatik mit Java

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

1.8.5 Wiederholungen. Beispiele Unendliche Schleife: 1.8 Kontrollstrukturen 75. ( Bedingung ) AnweisungOderBlock. ja Anweisung. Bedingung erfüllt?

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Kontrollstrukturen (1)

C# - Einführung in die Programmiersprache Bedingte Anweisungen und Schleifen

Kontrollstrukturen -- Schleifen und Wiederholungen

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

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

Programmierkurs Java

Einführung in die Programmierung Wintersemester 2011/12

Grundlagen der Programmierung Teil1 Einheit III Okt. 2010

Wenn... dann... if (condition) statement. if (kontostand < 0) System.out.println("Oops..."); false. condition. true. statement

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

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

Einstieg in die Informatik mit Java

Kontrollstrukturen Blöcke / Schleifen / Bedingungen

FACHHOCHSCHULE AUGSBURG Hochschule für Technik, Wirtschaft und Gestaltung

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

1.8 Kontrollstrukturen 73. default : ziffer = 0; if (ziffer > 0) { cout << "Ziffer = " << ziffer; else { cout << "keine römische Ziffer!

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

Einführung in die Programmierung

Programmieren in C/C++ und MATLAB

4.4 Imperative Algorithmen Verzweigung und Iteration

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

2 Teil 2: Nassi-Schneiderman

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

Übersicht Programmablaufsteuerung

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

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

Kapitel 4. Kontrollstrukturen

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

Schleifen Datenfelder (Arrays) Verzweigungen

4. Ablaufsteuerung (Kontrollstrukturen)

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

Objektorientierte Programmierung OOP Programmieren mit Java

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

C- Kurs 04 Anweisungen

Annehmende Schleife do while

5. Elementare Befehle und Struktogramme

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

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

Imperative Programmierung in Java: Kontrollfluß II

Javakurs für Anfänger

3. Grundanweisungen in Java

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

3 KONTROLLSTRUKTUREN ALLGEMEINES

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

Kapitel 4. Kontrollstrukturen

4. Einfache Programmstrukturen in C Einfache Programmstrukturen in C

Java: Eine kurze Einführung an Beispielen

Wiederholungen / Schleifen

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

Arbeitsblätter für Algorithmierung und Strukturierung C #

Arbeitsblätter für Algorithmierung und Strukturierung

Anweisungen und Kontrollstrukturen

Vorlesung Programmieren

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

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.

Grundlagen der Programmierung Teil1 Einheit III Okt. 2009

Grundlagen der Programmierung

Transkript:

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. Im Unterschied zur if-anweisung, bei der die davon abhängige Anweisung nur ein Mal durchlaufen wird (wenn überhaupt), wird bei Schleifen diese Anweisung (oder der ganze Block) so lange wiederholt, wie die Bedingung wahr bleibt (u.u. auch unendlich oft!). while Schleife while (Ausdruck) // die runden Klammern sind Pflicht // Einrücken erhöht die Übersichtlichkeit oder: while (Ausdruck) { Noch-eine-Anweisung;... } Die von while abhängige Anweisung (bzw. der ganze {}-Block) wird solange wiederholt, wie der Ausdruck wahr (ungleich 0 in C/true in C++) ist. Ist der Ausdruck schon am Beginn falsch (= 0), so wird die Schleife NIE durchlaufen. In Java muss die Bedingung ein Ausdruck vom Typ boolean sein. Eine sehr nützliche Eigenschaft der Streameingabe >> von C++ ist, dass sie bei der Verwendung als Bedingung in einer Schleife oder in einem if den Erfolg oder Misserfolg der Einleseoperation zurückgibt! Beispiel: while (x > 0) while (1) // Warte auf den Überlauf // die EWIGE Schleife in C/C++, in Java/C++: while (true) while (0) // die NIEMALS durchlaufene Schleife in C/C++, Fehler in Java while (cin >> x) // lies Werte ein, solange welche da sind cout << "Habe erfolgreich " << x << " eingelesen!\n";

Fehler: while (x > 0); // Der Strichpunkt zählt als leere Anweisung // ist NICHT MEHR in der Schleife while (x > 0) cout << "x: " << x << '\n'; // nicht mehr in der Schleife do while Schleife do while (Bedingung); oder do { noch eine Anweisung;... } while (Bedingung); Die do while Schleife wird mindestens 1x durchlaufen, da die Bedingung erst am Ende gecheckt wird. for Schleife for (vorher; Bedingung; am_ende_jedes_durchlaufs) Anweisung; // oder mit {} geklammerter Block Diese for-schleife lässt sich zu der folgenden äquivalenten while-schleife umschreiben: { vorher; while (Bedingung) {

} } Anweisung; am_ende_jedes_durchlaufs; vorher: Anweisung, die immer ausgeführt wird (auch wenn der eigentliche Schleifenrumpf gar nicht durchlaufen wird). Sie wird vor dem erstmaligen Check der Bedingung ausgeführt. Hier setzt man oft Zählvariablen oder Summenvariablen auf einen Anfangswert. Wird hier eine Variable deklariert, dann ist diese nur INNERHALB der Schleife bekannt. Bedingung: Was bei while in den runden Klammern steht. Die Bedingung wird hier OHNE die Klammern geschrieben. Eine fehlende Bedingung wird als immer wahr (true) interpretiert. am_ende_jedes_durchlaufs: Wird meist zum Erhöhen der Zählvariablen verwendet. Beispiel: Countdown von 10: for (int i = 10; i >= 0; --i) cout << i << '\n'; Da die for-schleife sehr kompakte Konstruktionen erlaubt, wird sie am häufigsten von allen Schleifentypen eingesetzt. Falls man keine vorher-anweisung oder kein am_ende_jedes_durchlaufs benötigt, muss man trotzdem die 2 Strichpunkte machen. for (i = 10; i >= 0;) cout << i-- << '\n'; // das Dekrementieren wurde // hierher verlagert Range based for-schleife in C++ Diese steht ab dem Sprachstandard C++11 zur Verfügung und erlaubt es, alle Elemente einer Containerklasse (z.b. std::vector, std::list aber auch normale Arrays) zu durchlaufen. Die Syntax ist: for (variablendeklaration : container-variable) Anweisung; // oder Block in {}

std::vector<int> v{1,2,3,4,5}; for (int i : v) // oder: for (auto i : v) cout << i <<'\n'; double u[] = {1,2,3,4,5}; for (auto x : u) cout << x <<'\n'; // x hat den Typ, der in u gespeichert ist // gibt alle Werte von u aus for (auto x : u) x = 5; // x hat den Typ, der in u gespeichert ist // ändert die Variable x aber nicht u (= Unsinn) for (auto& x : u) // x ist Referenz auf den Typ, der in u gespeichert ist x = 5; // ändert alle Elemente von u!!!!! for (const auto& x : u) // x ist konstante Referenz x = 5; // das ist ein Fehler, da x konstant ist break und continue Anweisungen Diese 2 Anweisungen zählt man zu den erweiterten Sprunganweisungen. Sie sind nur in Schleifen erlaubt (break zusätzlich noch in switch case Blöcken). break: Bricht die innerste (bei mehreren ineinander geschachtelten Schleifen) Schleife ab und verzweigt hinter diese. continue: Bricht den aktuellen Durchlauf der innersten (bei mehreren ineinander geschachtelten Schleifen) Schleife ab und beginnt einen neuen Durchlauf. Hierbei wird nicht die Schleife selbst beendet sondern nur der aktuelle Durchlauf durch diese. Bei einer while oder do while Schleife springt continue auf den Test der Bedingung, bei einer for Schleife auf am_ende_jedes_durchlaufs gefolgt von der Bedingung. Beispiel: Wir fordern ganze Zahlen an (bis 0 kommt) und untersuchen die geraden positiven int x, gelesen, positiv, gerade; for (gerade = positiv = gelesen = 0;;) { cout << "int Nr. " << ++gelesen << "(Ende bei 0): "; if (! (cin >> x) x == 0) break; // Keine Zahl oder 0 wurde eingegeben!

} if (x < 0) // negative Zahlen ignorieren wir continue; // brich hier ab und lies die nächste Zahl ein ++positiv; // hier muss die Zahl sicher positiv sein if (x % 2!= 0) // Divisionsrest durch 2 nicht 0 => ungerade continue; ++gerade; Hier haben wir z.b. keine Bedingung, also handelt es sich im Prinzip um eine Endlosschleife. Wir haben aber in der Schleife selbst ein ordnungsgemäßes Ende mittels if und break programmiert. Mit der continue-anweisung halten wir die Anzahl der Einrückungen klein, weil wir sofort zur Eingabe der nächsten Zahl verzweigen, wenn wir die Bearbeitung der aktuellen abgeschlossen haben (keine verschachtelten if else Konstruktionen). Die break Anweisung beendet nur die innerste Schleife. Will man gleich mehrere verschachtelte Schleifen auf einmal beenden, verwendet man am besten eine goto- Anweisung, selbst wenn diese einen schlechten Ruf besitzt (Spaghetti-Code). Auch ein return (falls möglich) beendet sämtliche Schleifen auf einmal und verlässt die Funktion.