Lektion 23:

Zeichen

 Zeichen werden normalerweise mit Variablen des Typs char verwaltet. Deshalb gibt cout char-Variablen nicht als Zahlen aus, sondern als das entsprechende ASCII-Zeichen (falls Ihr Rechner den ASCII-Zeichensatz verwendet).

 ASCII steht für American Standard Code for Information Interchange. Dieser Code ordnet den Zahlen von 0 bis 127 bestimmte Zeichen zu, d.h. Klein- und Großbuchstaben, Ziffern, Sonderzeichen, etc. Um eine ASCII-Zeichen-Tabelle zu sehen, führen Sie einfach folgendes Programm aus:

#include <iostream.h>
void main()
{
   for(int zeichenNummer=32;zeichenNummer<128;zeichenNummer=zeichenNummer+1)
   {
      char zeichen=zeichenNummer;
      cout<<zeichenNummer<<":"<<zeichen<<" ";
      if(zeichenNummer%8==7)
         cout<<endl;
   };
};

Die Zeichen von 0 bis 31 wurden ausgespart, da sie Sonderbedeutungen haben. Zum Beispiel steht das Zeichen mit der Nummer 8 für ein akustisches Signal (z.B. die Glocke am Fernschreiber). Auch Ihr Computer sollte einen Ton von sich geben, wenn Sie dieses Zeichen versuchen, auf den Bildschirm auszugeben.

C++ macht keinen Unterschied zwischen einem Zeichen und dessen ASCII-Code.

Sie können also z.B. folgendes schreiben:

char ch='A';
int i=ch;// jetzt steht in i die Zahl 65
int j='C'-'A';// 67-65==2
bool b='C'>'A';// ergibt true
int k='z'-'a';// ==25, 'z' ist der 26. Buchstabe im Alphabet

Beachten Sie auch, daß nicht auf allen Maschinen ASCII verwendet wird.

Für alle Zeichensätze, die ich kenne, gilt

'A'<'B'<'C'<...<'X'<'Y'<'Z'

und

'a'<'b'<'c'<...<'x'<'y'<'z'

und

'0'<'1'<'2'<...<'7'<'8'<'9'

Damit lassen sich also prima Vergleiche anstellen, ob ein Zeichen z.B. ein Großbuchstabe ist oder sogar ganze Wörter sortierten.

Leider gilt nicht immer

'z'-'a'==25

Es gibt also Zeichensätze, die "Lücken" haben. Im Zuge dieses Kurses werden wir diese Feinheiten aber ignorieren und davon ausgehen, daß wir nur auf ASCII-Rechnern arbeiten.

Übung:

Schreiben Sie folgende Funktionen:

bool isdigit(char ch)// ch ist eine Ziffer
bool isalpha(char ch)// ch ist ein Buchstabe (ohne Umlaute)
bool islower(char ch)// ch ist ein Kleinbuchstabe
bool isupper(char ch)// ch ist ein Großbuchstabe
char tolower(char ch)// macht aus ch einen Kleinbuchstaben
char toupper(char ch)// macht aus ch einen Großbuchstaben

Einsendungen:

Lösungsvorschlag


Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00