Projekt 1 : "Geheime Nachrichten" (Teil 1)

Website: Lerne ELEKTROTECHNIK und PROGRAMMIEREN
Kurs: Kurs zum Buch "Lerne Programmieren mit Projekten: C++"
Buch: Projekt 1 : "Geheime Nachrichten" (Teil 1)
Gedruckt von: Gast
Datum: Friday, 26. April 2024, 05:58

Beschreibung



1. Worum geht es?

In diesem Abschnitt wirst du dein erstes Programm entwickeln, in dem unter anderem if-else-Verzweigungen und while-Schleifen eine wichtige Rolle spielen. 

Ziel des Programms wird es sein, einen vom Benutzer eingegebenen Text nach einem bestimmten Schema in eine Geheimbotschaft zu verschlüsseln. Mit einer Verzweigung soll abgefragt werden, ob der Text verschlüsselt oder entschlüsselt werden soll und mit einer Schleife werden dann alle Buchstaben im eingegebenen Text nacheinander encodiert oder decodiert. 

Wenn das Programm fertig ist und alles funktioniert, dann kannst du damit z.B. diese Geheimbotschaft entschlüsseln: 

Ejf!Bouxpsu!bvg!ejf!Gsbhf!bmmfs!Gsbhfo-!obfnmjdi!ejf!obdi!efn!Mfcfo-!efn!Vojwfstvn!voe!efn!hbo{fo!Sftu!mbvufu!53

Das Programm lässt sich in mehrere Abschnitte aufteilen, die nacheinander ausgeführt werden. Diese sind im Lernheft zum Kurs ausführlich beschrieben. 

In diesem ersten Teil des Projekts geht es darum, mit Hilfe von Verzweigungen zu entscheiden, ob eine Botschaft ver- oder entschlüsselt werden soll. 


2. Verschlüsselung einschalten mit IF

Im ersten Teil des Verschlüsselungs-Programms soll entschieden werden, ob verschlüsselt oder entschlüsselt werden soll. Um diese Funktion zu programmieren, wird im folgenden Code-Beispiel eine if-Anweisung benutzt. Vorher müssen wir allerdings abfragen, ob verschlüsselt oder entschlüsselt werden soll. 


Zeile 1 : 'v' oder 'e'
Zeile 2 : Botschaft

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string input;
    cout << "Ver- oder Entschlüsseln? (v/e):" << endl;
    getline(cin, input);

    bool encode = false; // später ENTschlüsseln
    if (input == "v")
    {
        cout << "Text zum VERschlüsseln: " << endl;
        encode = true; // später VERschlüsseln
    }
    cout << "encode = " << encode << endl;

    return 0;
}   
Eine ausführliche Erklärung zu den einzelnen Code-Zeilen findest du im Lernheft zum Kurs auf S. X.

3. Entschlüsselung auswählen mit IF-ELSE

Der bisherige Code aus dem letzten Beispiel überprüft ja, ob die Variable input gleich dem Zeichen "v" ist. Wenn das der Fall ist, wird ein Text ausgegeben und die Variable encode auf true gesetzt.

Jetzt wollen wir einen weiteren Zweig einbauen für den Fall, dass der Wert von input gleich dem Buchstaben "e" ist. Dazu müssen wir nur unmittelbar hinter dem Ende des Blocks, d.h. nach der zweiten geschweiften Klammer, das Schlüsselwort else benutzen, um die nächste Verzweigung zu erzeugen.

Das Problem ist hierbei allerdings, dass der else-Zweig auch dann gewählt wird, wenn der Benutzer beliebige andere Zeichen eingibt. Was wir also noch brauchen, ist eine Möglichkeit, gezielt auf die Eingabe von "e" zu reagieren und zusätzlich ungültige Eingaben abzufangen.

Um dieses Verhalten zu erreichen, können wir die Schlüsselwörter else und if kombinieren, um auf die zweite gültige Taste "e" zu prüfen. 
Zeile 1 : 'v' oder 'e'
Zeile 2 : Botschaft

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string input;
    cout << "Ver- oder Entschlüsseln? (v/e): " << endl;
    getline(cin, input);

    bool encode = false; // später ENTschlüsseln
    if (input == "v")
    {
        cout << "Text zum VERschlüsseln: " << endl;
        encode = true;
    }
    else if (input == "e")
    {
        cout << "Text zum ENTschlüsseln: " << endl;
    }
    else
    {
        cout << "Ungültige Eingabe!" << endl;
        exit(EXIT_FAILURE); // Fehlercode melden
    }
    cout << "encode = " << encode << endl;

    return EXIT_SUCCESS; // wahlweise auch 0
}