====== Datentyp char in C++ ====== In C++ wird der Datentyp **char** verwendet, um einzelne Zeichen zu speichern. Ein ''char''-Wert wird immer in einfachen Anführungszeichen geschrieben, z. B. 'A'. Intern wird ein ''char'' als Zahl gemäß dem ASCII-Code gespeichert. ===== Deklaration und Initialisierung ===== Ein ''char'' kann folgendermaßen deklariert und initialisiert werden: #include using namespace std; int main() { char buchstabe = 'A'; cout << "Der Buchstabe ist: " << buchstabe << endl; return 0; } ===== Wichtige Eigenschaften von char ===== * Ein ''char'' speichert genau ein Zeichen. * ''char''-Werte werden in einfachen Anführungszeichen geschrieben (z. B. ''B''). * Man kann mit ''char''-Werten rechnen, da sie intern als ASCII-Werte gespeichert sind. * Ein ''char'' kann in einen ''int'' konvertiert werden, um seinen ASCII-Wert zu erhalten. ===== Grundlegendes ===== Variablen vom Datentyp ''char'' können ein Zeichen als Wert annehmen. Als Zeichen oder Character bezeichnet man: * Buchstaben ('A'...'Z', 'a'...'z') * Ziffern ('0'...'9') * Sonderzeichen ('!', '#', '$', '%',...) * Leerzeichen (' ') * Steuerzeichen gemäß ASCII-Codetabelle *(weiter Informationen auf: http://www.goascii.de/) ASCII steht für "American Standard Code for Information Interchange". Im ASCII sind die Zeichen 0 bis 127 laut Tabelle genormt. Dieser Code wird von fast allen Rechnern verwendet. Die Zeichen 0 bis 31 sind Steuerzeichen (z.B. \n hat den Wert 10) und werden im allgemeinen nicht gedruckt und deshalb in der Liste nicht dargestellt. ''char''-Variablen werden, wie auch alle anderen Variablen - im Vereinbarungsteil deklariert. **Beispiel:** char zeichen; Konstanten vom Typ ''char'' werden im Programm zwischen Hochkommata gestellt (z.B. 'A', 'x'). **Beispiel:** char zeichen; zeichen='A'; Da ''char''-Werte durch ihre Nummern im verwendeten Zeichensatz dargestellt werden, können sie wie Zahlen mit Vergleichsoperatoren (z.B. <, >, ==,...) miteinander verglichen werden. Man kann einer Varialbe vom Typ ''char'' auch einen ganzzahligen Wert zuweisen. Ausgegeben wird dann jedoch das entsprechende Zeichen der ASCII-Tabelle. **Beispiel:** char zeichen; zeichen=65; //Ausgabe: 'A' Um beispielsweise Zeichen einzulesen oder am Bildschirm auszugeben gibt es verschiedene **Bibliotheksfunktionen**, welche in ''conio.h'' enthalten sind. Einige wichtige daraus sind: * getch(): liest ein Zeichen von der Tastatur, ohne es am Bildschirm darzustellen. * putch(): schreibt ein Zeichen auf den Bildschirm, z.B. putch(s) schreibt s auf den Bildschirm * weitere folgen! **Die Ascii-Tabelle:** {{:inf:allgemeine_grundlagen_zur_programmierung:ascii.jpg?800|ASCII-Tabelle}} ===== Beispiele ===== **1. Eingabe und Ausgabe eines Zeichens** #include using namespace std; int main() { char zeichen; cout << "Geben Sie ein Zeichen ein: "; cin >> zeichen; cout << "Sie haben das Zeichen '" << zeichen << "' eingegeben." << endl; return 0; } **2. ASCII-Wert eines Zeichens ausgeben** #include using namespace std; int main() { char buchstabe = 'C'; cout << "Der ASCII-Wert von " << buchstabe << " ist " << int(buchstabe) << endl; return 0; } **3. Zeichen in Groß- oder Kleinbuchstaben umwandeln** #include using namespace std; int main() { char klein = 'a'; char gross = klein - 32; // Konvertierung von Klein- zu Großbuchstabe cout << "Großbuchstabe: " << gross << endl; return 0; } ===== Aufgaben ===== ===== Beginner ===== ==== 1. Zeichen eingeben und ausgeben ==== Schreibe ein Programm, das ein Zeichen vom Benutzer einliest und es ausgibt. ==== 2. ASCII-Wert berechnen ==== Schreibe ein Programm, das ein Zeichen einliest und den ASCII-Wert ausgibt. ==== 3. Zeichen vergleichen ==== Schreibe ein Programm, das zwei Zeichen einliest und ausgibt, welches den kleineren ASCII-Wert hat. ===== Intermediate ===== ==== 4. Vokal oder Konsonant ==== Schreibe ein Programm, das jeweils prüft, ob ein eingegebenes Zeichen ein Vokal oder ein Konsonant ist. Das Programm endet, sobald die ESC-Taste gedrückt wird (ASCII-Code: 27) ==== 5. Buchstabenart bestimmen ==== Schreibe ein Programm, das ein Zeichen einliest und jeweils bestimmt, ob es ein Großbuchstabe, Kleinbuchstabe, eine Ziffer oder ein Sonderzeichen ist. * Großbuchstaben: 'A'–'Z' * Kleinbuchstaben: 'a'–'z' * Ziffern: '0'–'9' * Sonderzeichen: Alle anderen Zeichen * Das Programm endet, sobald die ESC-Taste gedrückt wird (ASCII-Code: 27) ==== 6. Klein- zu Großbuchstaben ==== Schreibe ein Programm, das beim Eingeben eines Textes Kleinbuchstaben in einen Großbuchstaben umwandelt. Das Programm endet, sobald die ESC-Taste gedrückt wird (ASCII-Code: 27) ==== 7. Vokale in Sonderzeichen umwandeln ==== Schreibe ein Programm, das eine Zeichenkette einliest und alle Vokale durch bestimmte Sonderzeichen ersetzt. * Ersetzungen: * a → @ * e → 3 * i → ! * o → 0 * u → µ Beispiel: Eingabe Hallo, Ausgabe H@ll0 ==== 8. Zeichen in Morsecode umwandeln ==== Schreibe ein Programm, das ein Zeichen (A–Z oder 0–9) einliest und den zugehörigen Morsecode ausgibt. * Beispiel: Eingabe S, Ausgabe: ... * Zahlen sollen ebenfalls korrekt in Morsecode umgewandelt werden. * Abbruch mit ESC ==== 9. Spiegelung im Alphabet === Schreibe ein Programm, das einen Buchstaben einliest und den gespiegelten Buchstaben im Alphabet ausgibt. Beispiel: * Eingabe: A → Ausgabe: Z * Eingabe: B → Ausgabe: Y * Eingabe: C → Ausgabe: X * Eingabe: a → Ausgabe: z ==== 10. ASCII-Tabelle ==== Schreibe ein Programm, dass alle Zeichen der ASCII-Tabelle von einer eingegebenen Untergrenze bis zu einer gewünschten Obergrenze mit der entsprechenden Nr. ausgibt. ==== 11. ASCII-Code ==== Schreibe ein Programm, dass bei einem Tastendruck mit der Ausgabe des jeweiligen Zeichens und seines ASCII-Codes reagiert. Das Programm soll solange laufen, bis die Taste ESC (ASCII-Code 27) gedrückt wird. Hinweise: Lies den Tastendruck mit t=getch() ein, du erhältst den ASCII-Code mittels ''(int)t'', wenn t eine char-Variable ist. Du kannst mit der Bedingung t==27 überprüfen, ob die Taste ESC gedrückt wurde. ===== Advanced ===== ==== 12. Zeichen einlesen ==== Schreibe ein Programm, welches ein Zeichen einliest. Erlaubt sind nur Groß-, Kleinbuchstaben und Ziffern. Andere Zeichen werden ignoriert. Anschließend gibt das Programm aus, ob es sich um einen Groß-, Kleinbuchstaben oder eine Ziffer gehandelt hat.\\ Das Programm soll so lange laufen, bis die Taste Esc (ASCII-Code 27) gedrückt wird. ==== 13. Dual -> Dezimal ==== Schreibe ein Programm, welches eine duale Ziffernfolge vom Bildschirm zeichenweise einliest und in eine Dezimalzahl umrechnet. ==== 14. Hexadezimal -> Dezimal ==== Schreibe ein Programm, welches eine hexadezimale Ziffernfolge vom Bildschirm zeichenweise einliest und in eine Dezimalzahl umrechnet. ==== 15. Cäsar-Verschlüsselung ==== Eines der ältesten Codierungsverfahren ist die Verschlüsselungstechnik von Julius Cäsar. Dabei wird jeder Buchstabe des Alphabets wird durch seinen k-ten Vorgänger ersetzt. Das Alphabet wird dabei zyklisch verwendet. Für k=4 sieht dies folgendermaßen aus: |Eingabe|A|B|C|D|E|F|…|P|Q|R|S|T|U|V|W|X|Y|Z| |verschlüsselter Text|E|F|G|H|I|J|…|T|U|V|W|X|Y|Z|A|B|C|D| Schreibe einen Programmcode, der einen vom Benutzer eingegebenen Text auf diese Weise verschlüsselt. Der Schlüsselwert k soll vom Benutzer selbst eingegeben werden. Beispiel eines Benutzerdialogs: (die darin enthaltenen Funktionen soll auch dein Programm beinhalten!): Das folgende Programm verschlüsselt den von Ihnen eingegeben Text lt. Caesar. Geben Sie den Text in Großbuchstaben ein! Beenden Sie Ihre Eingabe mit „$“! Wählen Sie einen Schlüsselwert k: 4 Geben Sie nun den Text ein: (Der Benutzer gibt MORGENGRAUEN ein) QSVKIRKVEYIR Möchten Sie noch einen weiteren Text verschlüsseln (0|1)? 0 TIPP: Bevor du mit der Programmierarbeit beginnst, solltest du dir überlegen, wie du die „Verschiebung“ der Buchstaben mit einfachen Operationen realisieren könntest. Orientiere dich dabei an der ASCII-Tabelle! Beachte dass Buchstaben intern als Zahlen gespeichert werden!