pages/Kapitel03-page-01.svg

pages/Kapitel03-page-02.svg

pages/Kapitel03-page-03.svg

pages/Kapitel03-page-04.svg

pages/Kapitel03-page-05.svg

pages/Kapitel03-page-06.svg

pages/Kapitel03-page-07.svg

pages/Kapitel03-page-08.svg

pages/Kapitel03-page-09.svg

pages/Kapitel03-page-10.svg

pages/Kapitel03-page-11.svg

pages/Kapitel03-page-12.svg

pages/Kapitel03-page-13.svg

pages/Kapitel03-page-14.svg

pages/Kapitel03-page-15.svg

pages/Kapitel03-page-16.svg

pages/Kapitel03-page-17.svg

pages/Kapitel03-page-18.svg

pages/Kapitel03-page-19.svg

Live-Demo - while-Schleife

#include <iostream>

using namespace std;

int main() {
    int x = 0;

    while (x < 10) {
        cout << x << " ";
        x = x + 1;
    }
    cout << endl;

    return 0;
}
compiler
Beispiel '03-while-schleife.cpp'

pages/Kapitel03-page-20.svg

pages/Kapitel03-page-21.svg

pages/Kapitel03-page-22.svg

pages/Kapitel03-page-23.svg

pages/Kapitel03-page-24.svg

pages/Kapitel03-page-25.svg

pages/Kapitel03-page-26.svg

pages/Kapitel03-page-27.svg

pages/Kapitel03-page-28.svg

pages/Kapitel03-page-29.svg

pages/Kapitel03-page-30.svg

pages/Kapitel03-page-31.svg

pages/Kapitel03-page-32.svg

pages/Kapitel03-page-33.svg

pages/Kapitel03-page-34.svg

pages/Kapitel03-page-35.svg

pages/Kapitel03-page-36.svg

pages/Kapitel03-page-37.svg

pages/Kapitel03-page-38.svg

pages/Kapitel03-page-39.svg

pages/Kapitel03-page-40.svg

Live-Demo - do-while-Schleife

#include <iostream>

using namespace std;

int main() {
    int x = 0;

    do {
        cout << x << " ";
        x = x + 1;
    } while (x < 10);
    cout << endl;

    return 0;
}
compiler
Beispiel '03-do-while-schleife.cpp'

pages/Kapitel03-page-41.svg

pages/Kapitel03-page-42.svg

pages/Kapitel03-page-43.svg

pages/Kapitel03-page-44.svg

pages/Kapitel03-page-45.svg

pages/Kapitel03-page-46.svg

pages/Kapitel03-page-47.svg

pages/Kapitel03-page-48.svg

pages/Kapitel03-page-49.svg

pages/Kapitel03-page-50.svg

pages/Kapitel03-page-51.svg

pages/Kapitel03-page-52.svg

pages/Kapitel03-page-53.svg

pages/Kapitel03-page-54.svg

pages/Kapitel03-page-55.svg

pages/Kapitel03-page-56.svg

pages/Kapitel03-page-57.svg

pages/Kapitel03-page-58.svg

pages/Kapitel03-page-59.svg

pages/Kapitel03-page-60.svg

pages/Kapitel03-page-61.svg

pages/Kapitel03-page-62.svg

pages/Kapitel03-page-63.svg

pages/Kapitel03-page-64.svg

pages/Kapitel03-page-65.svg

pages/Kapitel03-page-66.svg

pages/Kapitel03-page-67.svg

pages/Kapitel03-page-68.svg

pages/Kapitel03-page-69.svg

pages/Kapitel03-page-70.svg

pages/Kapitel03-page-71.svg

pages/Kapitel03-page-72.svg

pages/Kapitel03-page-73.svg

pages/Kapitel03-page-74.svg

pages/Kapitel03-page-75.svg

pages/Kapitel03-page-76.svg

pages/Kapitel03-page-77.svg

pages/Kapitel03-page-78.svg

pages/Kapitel03-page-79.svg

pages/Kapitel03-page-80.svg

pages/Kapitel03-page-81.svg

pages/Kapitel03-page-82.svg

pages/Kapitel03-page-83.svg

pages/Kapitel03-page-84.svg

pages/Kapitel03-page-85.svg

pages/Kapitel03-page-86.svg

pages/Kapitel03-page-87.svg

pages/Kapitel03-page-88.svg

pages/Kapitel03-page-89.svg

pages/Kapitel03-page-90.svg

pages/Kapitel03-page-91.svg

pages/Kapitel03-page-92.svg

pages/Kapitel03-page-93.svg

Live-Demo - do-while-Schleife

#include <iostream>
using namespace std;

int main() {
    int n = 8, n2 = n;

    // mit Post-Dekrement
    n2 = n;
    while (n2--){
        cout << n2;
        cout << '*';
    }
    cout << endl;
    // mit Pre-Dekrement
    n2 = n;
    while (--n2) {
        cout << n2;
        cout << '*';
    }
    cout << endl;
    return 0;
}
compiler
Beispiel '03-do-while-Sterne-Pre-Post.cpp'

pages/Kapitel03-page-94.svg

pages/Kapitel03-page-95.svg

pages/Kapitel03-page-96.svg

pages/Kapitel03-page-97.svg

pages/Kapitel03-page-98.svg

pages/Kapitel03-page-99.svg

pages/Kapitel03-page-100.svg

pages/Kapitel03-page-101.svg

pages/Kapitel03-page-102.svg

pages/Kapitel03-page-103.svg

pages/Kapitel03-page-104.svg

pages/Kapitel03-page-105.svg

pages/Kapitel03-page-106.svg

pages/Kapitel03-page-107.svg

pages/Kapitel03-page-108.svg

pages/Kapitel03-page-109.svg

pages/Kapitel03-page-110.svg

pages/Kapitel03-page-111.svg

pages/Kapitel03-page-112.svg

pages/Kapitel03-page-113.svg

pages/Kapitel03-page-114.svg

pages/Kapitel03-page-115.svg

pages/Kapitel03-page-116.svg

pages/Kapitel03-page-117.svg

pages/Kapitel03-page-118.svg

pages/Kapitel03-page-119.svg

pages/Kapitel03-page-120.svg

pages/Kapitel03-page-121.svg

pages/Kapitel03-page-122.svg

pages/Kapitel03-page-123.svg

pages/Kapitel03-page-124.svg

pages/Kapitel03-page-125.svg

pages/Kapitel03-page-126.svg

pages/Kapitel03-page-127.svg

pages/Kapitel03-page-128.svg

pages/Kapitel03-page-129.svg

pages/Kapitel03-page-130.svg

pages/Kapitel03-page-131.svg

pages/Kapitel03-page-132.svg

pages/Kapitel03-page-133.svg

pages/Kapitel03-page-134.svg

pages/Kapitel03-page-135.svg

pages/Kapitel03-page-136.svg

pages/Kapitel03-page-137.svg

pages/Kapitel03-page-138.svg

pages/Kapitel03-page-139.svg

pages/Kapitel03-page-140.svg

pages/Kapitel03-page-141.svg

pages/Kapitel03-page-142.svg

pages/Kapitel03-page-143.svg

pages/Kapitel03-page-144.svg

pages/Kapitel03-page-145.svg

pages/Kapitel03-page-146.svg

pages/Kapitel03-page-147.svg

pages/Kapitel03-page-148.svg

pages/Kapitel03-page-149.svg

Live-Demo - foreach 1

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main() {
    vector<double> vecd =  {1.1, 2.2, 3.3, 4.4};

    // Ausgabe mit foreach-Schleife:
    for (double d : vecd){
        cout <<  d << " ";
    }
    cout << endl;

    return 0;
}
compiler
Beispiel '03-foreach.cpp (Ausschnitt 1)'

Live-Demo - foreach 2

#include <iostream>
#include <string>
#include <vector>

using namespace std;

int main() {
    // klappt auch beim Array:
    int a[] {1,2,3,4};
    for (int i : a){
        cout << i << " ";
    }
    cout << endl;

    string s {"Dortmund"};
    for (int c: s) { // <-- probiert hier mal einen anderen Datentyp aus
        cout << c << " ";
    }
    cout << endl;

    return 0;
}
compiler
Beispiel '03-foreach.cpp (Ausschnitt 2)'

pages/Kapitel03-page-150.svg

pages/Kapitel03-page-151.svg

pages/Kapitel03-page-152.svg

pages/Kapitel03-page-153.svg

pages/Kapitel03-page-154.svg

pages/Kapitel03-page-155.svg

pages/Kapitel03-page-156.svg

pages/Kapitel03-page-157.svg

pages/Kapitel03-page-158.svg

pages/Kapitel03-page-159.svg

pages/Kapitel03-page-160.svg

pages/Kapitel03-page-161.svg

pages/Kapitel03-page-162.svg

pages/Kapitel03-page-163.svg

pages/Kapitel03-page-164.svg

Live-Demo - Ungenauigkeit bei float-Datentypen 1

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
	float a = 0.4, b = 10.4;

	for (int i = 0; i < 10; i++) {
		a++;
	}

	cout << std::setprecision(32);
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "a == b? " << (a == b) << endl;

    return 0;
}
compiler

Live-Demo - Ungenauigkeit bei float-Datentypen 2

#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    float x;
    int i = 0;

    for (x = 0.4; x != 10.4; x++, i++){
        // cout << "i = " << i << ", x = " << x << endl;
        // Eine Endlosschleife verhindern.
        // Bei irgendwas größer 11 brechen wir zur Sicherheit ab.
        if (x > 11) {
            break;
        }
    }
    cout << "Ende" << endl;
    cout << "i = " << i << ", x = " << x << endl;

    return 0;
}
compiler

Wissensspeicher 3

  • Kontrollstrukturen zur wiederholten Durchführung von Operationen
  • while-Schleife prüft erst die Bedingung, führt dann Anweisungen aus
  • do-while-Schleife führtt erst Anweisungen aus, prüft dann die Bedingungen → immer mind. eine Iteration
  • for-Schleife vereint Handhabung der Laufvariablen im Schleifenkopf: for (Initialisierung; Bedingung; Veränderung)
  • Schlüsselwort break erlaubt das vorzeitige Beenden der aktuellen, innersten Schleife

Live-Demo - break 1

#include <iostream>

using namespace std;

int main() {
    // Deklaration von s vor der Schleife, damit
    // s nach der Schleife noch sichtbar ist
    int s;

    // for-Schleife ohne Bedingung!
    for (s = 0;  ; ++s){
        cout << s << endl;
        if (s % 17 == 0 && s > 1000){
            cout << "break" << endl;
            break;
        }
    }

    return 0;
}
compiler
Beispiel '03-break.cpp' (Ausschnitt 1)

Live-Demo - break 2

#include <iostream>

using namespace std;

int main() {
    // 2. Beispiel:
    for (int i = 0; i < 10; ++i){
        cout << i << ": ";
        for (int j = 0; j < 10; ++j){
            cout << j << " ";
            if (i + j >= 5) break;
        }
        cout << endl;
    }

    return 0;
}
compiler
Beispiel '03-break.cpp' (Ausschnitt 2)

pages/Kapitel03-page-165.svg

pages/Kapitel03-page-166.svg

pages/Kapitel03-page-167.svg

pages/Kapitel03-page-168.svg

pages/Kapitel03-page-169.svg

pages/Kapitel03-page-170.svg

pages/Kapitel03-page-171.svg

pages/Kapitel03-page-172.svg

pages/Kapitel03-page-173.svg

pages/Kapitel03-page-174.svg

pages/Kapitel03-page-175.svg

pages/Kapitel03-page-176.svg

pages/Kapitel03-page-177.svg

pages/Kapitel03-page-178.svg

pages/Kapitel03-page-179.svg

pages/Kapitel03-page-180.svg

pages/Kapitel03-page-181.svg

pages/Kapitel03-page-182.svg

pages/Kapitel03-page-183.svg

pages/Kapitel03-page-184.svg

pages/Kapitel03-page-185.svg

pages/Kapitel03-page-186.svg

pages/Kapitel03-page-187.svg

pages/Kapitel03-page-188.svg

pages/Kapitel03-page-189.svg

pages/Kapitel03-page-190.svg

pages/Kapitel03-page-191.svg

pages/Kapitel03-page-192.svg

pages/Kapitel03-page-193.svg

pages/Kapitel03-page-194.svg

pages/Kapitel03-page-195.svg

pages/Kapitel03-page-196.svg

pages/Kapitel03-page-197.svg

pages/Kapitel03-page-198.svg

pages/Kapitel03-page-199.svg

pages/Kapitel03-page-200.svg

pages/Kapitel03-page-201.svg

pages/Kapitel03-page-202.svg

pages/Kapitel03-page-203.svg

pages/Kapitel03-page-204.svg

pages/Kapitel03-page-205.svg

pages/Kapitel03-page-206.svg

pages/Kapitel03-page-207.svg

pages/Kapitel03-page-208.svg

pages/Kapitel03-page-209.svg

pages/Kapitel03-page-210.svg

pages/Kapitel03-page-211.svg

pages/Kapitel03-page-212.svg

pages/Kapitel03-page-213.svg

pages/Kapitel03-page-214.svg

pages/Kapitel03-page-215.svg

pages/Kapitel03-page-216.svg

pages/Kapitel03-page-217.svg

pages/Kapitel03-page-218.svg

pages/Kapitel03-page-219.svg

pages/Kapitel03-page-220.svg

pages/Kapitel03-page-221.svg

pages/Kapitel03-page-222.svg

pages/Kapitel03-page-223.svg

pages/Kapitel03-page-224.svg

pages/Kapitel03-page-225.svg

Live-Demo - if-else 1

#include <iostream>

using namespace std;

int main() {
    cout << "Programm weiter ausführen? (j)a, (n)ein" << endl;

    char c = 'J';
    //cin >> c;

    if (c == 'j' || c == 'J'){
        cout << "Programm wird weiter ausgeführt" << endl;
    } else {
        if (c == 'n' || c == 'N'){
            cout << "Programm wird beendet" << endl;
        } else {
            cout << "Falsche Eingabe!" << endl;
        }
    }

    return 0;
}
compiler
Beispiel '03-if-else.cpp' (Ausschnitt 1)

Live-Demo - if-else 2

#include <iostream>

using namespace std;

int main() {
    cout << "Programm weiter ausführen? (j)a, (n)ein" << endl;

    char c = 'J';
    //cin >> c;

    // ohne Klammerung
    if (c == 'j' || c == 'J')
        cout << "Programm wird weiter ausgeführt" << endl;
    else if (c == 'n' || c == 'N')
            cout << "Programm wird beendet" << endl;
        else cout << "Falsche Eingabe!" << endl;

    return 0;
}
compiler
Beispiel '03-if-else.cpp' (Ausschnitt 2)

pages/Kapitel03-page-226.svg

pages/Kapitel03-page-227.svg

pages/Kapitel03-page-228.svg

pages/Kapitel03-page-229.svg

pages/Kapitel03-page-230.svg

pages/Kapitel03-page-231.svg

pages/Kapitel03-page-232.svg

pages/Kapitel03-page-233.svg

pages/Kapitel03-page-234.svg

pages/Kapitel03-page-235.svg

pages/Kapitel03-page-236.svg

pages/Kapitel03-page-237.svg

pages/Kapitel03-page-238.svg

pages/Kapitel03-page-239.svg

pages/Kapitel03-page-240.svg

pages/Kapitel03-page-241.svg

pages/Kapitel03-page-242.svg

pages/Kapitel03-page-243.svg

pages/Kapitel03-page-244.svg

pages/Kapitel03-page-245.svg

pages/Kapitel03-page-246.svg

pages/Kapitel03-page-247.svg

pages/Kapitel03-page-248.svg

pages/Kapitel03-page-249.svg

pages/Kapitel03-page-250.svg

pages/Kapitel03-page-251.svg