Grundlagen für das Projekt

Website: Lerne ELEKTROTECHNIK und PROGRAMMIEREN
Kurs: Kurs zum Buch "Lerne Programmieren mit Projekten: C++"
Buch: Grundlagen für das Projekt
Gedruckt von: Guest user
Datum: Friday, 14. June 2024, 07:16

Beschreibung



1. Worum geht es?

In diesem Abschnitt lernst du in einer Kurzübersicht die wichtigsten Werkzeuge kennen, die du zum Verstehen und Erweitern des Projekts benötigen wirst. Alles, was du hier lernst, wird später im Kurs noch einmal ausführlich wiederholt - hier geht es vor allem darum, an einigen schnellen Beispielen einen ersten Überblick der Funktionsweise zu bekommen. 

Was du hier lernst: 

  • Wie sind Programme in C++ grundlegend strukturiert?
  • Was sind Variablen, Datentypen und Operatoren?
  • Wie kann man ereignisabhängig den Programmfluss verzweigen?
  • Wie können Anweisungen mehrere Male wiederholt werden?

Diese Online-Lernplattform enthält vor allem Aufgaben und Code-Beispiele, die du direkt in deinem Browser ausführen kannst. Die Theorie und ausführliche Beschreibungen zu den hier vorstellten Konzepten findest du im Lernheft zum Kurs.

2. Grundstruktur von Quellcode in C++

In diesem Code-Beispiel siehst du die Quellcode-Grundstruktur, die von jedem Programm, das du schreibst, eingehalten werden muss. Dein Ziel am Ende des Lern-Abschnitts sollte es sein, diese Struktur auswendig (ohne Google) aufschreiben zu können. Und um sinnvoll über Quellcode reden zu können, werden die einzelnen Zeilen (auch die Leerzeilen) aufsteigend nummeriert. Das ist nicht nur in diesem Kurs der Fall, sondern wird grundsätzlich so gemacht.  

Den Code im Beispiel kannst du verändern und ausführen. Experimentiere gerne ein wenig damit herum und sieh dir die Ausgaben an, die deine Änderungen verursachen (Wichtig: Du kannst hier nichts kaputt machen! 😉).

#include <iostream> // Ein- und Ausgabe einbinden

using namespace std; // Standard-Namensraum nutzen

int main() // Hier startet das Programm
{
    // Ausgabe von Text im Terminal 
    cout << "Moin, servus und Hallo!" << endl;

    // Mitteilung über erfolgreiche Ausführung
    return 0;
}

3. Variablen, Datentypen und Operatoren

Wenn du ein Programm schreibst, dann willst du damit einen bestimmten Zweck erfüllen: Es sollen Informationen aus einer Quelle in das Programm hinein gelangen, dort verarbeitet werden und am Ende soll ein Ergebnis zurückgeliefert werden. In diesem Abschnitt lernst du, wie du mit Hilfe von Variablen und Datentypen Informationen speichern kannst. Außerdem sehen wir uns an, was Operatoren sind und wie man damit den Inhalt von Variablen verändern kann. 

Hinweis: Dieser Abschnitt ist nur eine kurze Einführung in das Thema Variablen und Operatoren. Hier werden ausschließlich Themen behandelt, die zum Verständnis des Kapitel-Projekts nötig sind. Weitere Inhalte folgen später im Kurs.

3.1. Variablen & Datentypen

Variablen sind Behälter für Informationen, die bei der Ausführung deiner Programme auftreten. Dies können z.B. Zahlen oder Texte sein. Variablen belegen Platz im Speicher deines Computers und sind unter einer festen Speicheradresse darin abgelegt. 

Weil aber Speicheradressen sehr kryptisch aussehen und für einen Menschen schwierig zu nutzen sind, erhalten Variablen einen eindeutigen Namen, den du dir in gewissen Grenzen selber aussuchen kannst (hierzu später mehr).

Da es viele unterschiedliche Arten von zu speichernder Information gibt, muss in C++ außerdem ein Datentyp angegeben werden. Hiermit weiß dein Programm unter anderem, wie viel Platz im Speicher für eine Variable des jeweiligen Typs reserviert werden muss. 

In diesem Code-Beispiel sind einige Beispiele mit häufig vorkommenden Datentypen aufgeführt: 

#include <string>

int main()
{
    bool hat_gute_laune = true;     
    char geschlecht = 'm';    
    int alter = 44; 
    double groesse = 181.5;
    std::string name = "Andreas";

    return 0;
}

3.2. Operatoren

In den Beispielen zu Variablen & Datentypen hast du schon einige grundlegende Datentypen von Variablen kennen gelernt. Und ohne es explizit zu erwähnen, war in diesem Code-Beispiel auch schon ein Operator enthalten, nämlich der Zuweisungs-Operator =

Operatoren sind in der Informatik nämlich Schlüsselwörter, die für die Zuweisung und den Vergleich von Werten oder für Berechnungen und logische Operationen genutzt werden. Operatoren führen die eigentliche Datenverarbeitung in einem Programm aus.

Je nach ihrer Funktionsweise lassen sich Operatoren in Kategorien einteilen: Im nachstehenden Code sind z.B. Zuweisungsoperatoren, arithmetische Operatoren und Vergleichsoperatoren aufgeführt.

#include <iostream>
using namespace std;

int main()
{
    // ZUWEISUNGSOPERATOREN
    int zahl1 = 1; // Zuweisung
    zahl1++;       // Inkrement um 1
    zahl1--;       // Dekrement um 1

    // ARITHMETISCHE OPERATOREN
    int zahl2 = zahl1 + 5;
    int zahl3 = 10 - 5;
    int zahl4 = 5 * 3;

    double zahl5 = 5 / 3;
    int zahl6 = 5 / 3; // Achtung Rest!
    int zahl7 = 5 % 3; // Modulo

    // BEISPIEL: MODULO IN SCHLEIFE
    int cnt = 1;
    while (cnt <= 100)
    {
        if ((cnt % 10) == 0)
            cout << "cnt=" << cnt << "  ";

        cnt++;
    }
    cout << endl;

    // VERGLEICHSOPERATOREN
    int zahl8 = 5;
    if (zahl8 <= 6)
        cout << "Variable ist kleiner gleich 6" << endl;

    if (zahl8 == 5)
        cout << "Variable ist gleich 5" << endl;

    if (zahl8 != 4)
        cout << "Variable ist ungleich 4" << endl;
    return 0;
}

4. Programmfluss verzweigen mit IF-ELSE

Mit Verzweigungen bist du in der Lage, den Ablauf eines Programms von bestimmten Bedingungen abhängig zu machen. Du könntest z.B. eine Benutzereingabe über die Tastatur einlesen und auf Basis der eingegebenen Daten entscheiden, was in deinem Programm als Nächstes passieren soll. 

Wenn du z.B. möchtest, dass sich dein Programm in Abhängigkeit von einem bestimmten Zahlenwert auf eine bestimmte Weise verhält, dann könntest du mit einer Verzweigung einen Pfad den Fall eröffnen, dass die geprüfte Zahl negativ ist und einen anderen Pfad für den Fall, dass die Zahl positiv ist. 

Verzweigungen im Code führen dazu, dass nicht alle Anweisungen eines Programms auch tatsächliche ausgeführt werden. Die zeitlich sortierte Liste aller ausgeführten Anweisungen wird übrigens als Ausführungspfad bezeichnet. Würde es keine Verzweigungen geben, dann wäre der Ausführungspfad immer gleich. 

Im nachstehenden Code siehst du auch schon ein Beispiel für eine Verzweigung, die mit den Schlüsselwörtern if und else erzeugt wurde.

#include <iostream>
using namespace std;

int main()
{
    int zahl = 1; // TODO: Verändere die Zahl

    if (zahl < 0) // entweder...
    {
        cout << zahl << " ist NEGATIV." << endl;
    }
    else // oder...
    {
        cout << zahl << " ist POSITIV." << endl;
    }    

    return 0;
}

5. Anweisungen wiederholen mit WHILE

Eine der großen Stärken von Computern liegt darin, eine Reihe von Anweisungen sehr häufig und sehr schnell zu wiederholen. Stell dir vor, du willst herausfinden, welche Summe die Zahlen von 1 bis 100 ergeben. Du kannst nun anfangen, 100 Zahlen mühsam in deinen Taschenrechner einzugeben (und nach der Hälfte feststellen, dass du dich vertippt hast), oder du schreibst ein Programm, das diese Arbeit mit Hilfe einer Schleife für dich erledigt. 

Mit Schleifen lassen sich mehrere Anweisungen gruppieren und so lange ausführen, bis eine bestimmte Bedingung (die 'Schleifenbedingung') erfüllt ist. Schau dir dazu das folgende Beispiel an, in dem du du die drei Bestandteile einer typischen Schleife (in diesem Fall die while-Schleife) siehst: 

#include <iostream>
using namespace std;

int main()
{
    int cnt=1; // Schleifen-Zählvariable
    while(cnt<=3) // Schleifenbedingung
    {
        // Schleifenkörper mit Anweisungen
        cout << "Durchlauf Nr." << cnt << endl;
        cnt = cnt + 1; // Zähler "inkrementieren"
    }

    return 0;
}