====== 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!