PDF Archive

Easily share your PDF documents with your contacts, on the Web and Social Networks.

Share a file Manage my documents Convert Recover PDF Search Help Contact



Datentypen und Algorithmen in C++.pdf


Preview of PDF document datentypen-und-algorithmen-in-c.pdf

Page 1 2 3 456133

Text preview


2 Datentypen und Algorithmen in C++

C++ Programmierung

L2

Definition benutzerdefinierter Aufzählungstypen

Die Lösung für die oben beschriebenen Anforderungen bieten die Aufzählungs- oder Enumerationstypen.
Diese werden folgendermaßen definiert bzw. deklariert:
enum Typname {Aufzählung} Variablenliste;

Es ist also möglich, den Datentyp und die Variablen in einer Anweisung zu codieren. Übersichtlicher ist
es hingegen, zunächst nur den Datentyp zu definieren und dann in einer weiteren Anweisung die
Variablenzu deklarieren.
enum Typname {Aufzählung};
Typname Variablenliste;
An dieser Stelle sei noch angemerkt, dass das alte C bei der Variablendeklaration ebenfalls ein Schlüsselwort enum verlangt:
enum Typname {Aufzählung};
enum Typname Variablenliste;

Die Datentypen Ampel und Wochentag kann man damit so definieren:
enum Ampel { rot, gelb, gruen };
enum Wochentag { Mon, Die, Mit, Don, Fre, Sam, Son };

Wenn der Datentyp definiert ist, können Variablen deklariert werden:
Ampel Stadtmitte, Ortseingang;
Wochentag feiertag, werktag;
Wochentag heute = Die;

// Definitionen
// Definitionen
// Definition und Initialisierung

Falls man eine Variable mit selbstdefiniertem Typ nur ein einziges Mal benötigt, kann man eine anonyme
Typdefinition vornehmen, indem man den Typbezeichner wegläßt:
enum {fahrrad, mofa, lkw, pkw} fahrzeug;

Aufzählungstypen sind eigenständige Datentypen, die jedoch programmintern auf natürliche Zahlen
abgebildet werden, beginnend bei 0. Der dafür benötigte Speicherplatz richtet sich nach dem größten
erforderlichen Zahlenwert. Wenn notwendig, kann man die Zahlenabbildung ändern:
enum Ampel {rot=1, gelb=2, gruen=3};

//
//
enum fall { A=3, B=6, C=9 };
//
//
enum GroßZahl {min = -10, max=1000000}; //
fall
fall
fall
fall

afall
bfall
cfall
dfall

=
=
=
=

Speicherplatz: 2 Bit
(Bereich 0..3)
Speicherplatz: 4 Bit
(Bereich 0..15)
Speicherplatz: 21 Bit

5;
// Typfehler: 5 ist nicht vom Typ fall
fall(5); // Explizite Konvertierung, deshalb ok!
fall(15); // auch ok, da noch im Bereich von fall
fall(20); // undefiniert: 20 ist nicht im Bereich von fall

int i = Die; // ok, implizite Konvertierung nach int
heute = Mon; // ok
Mon = heute; // Fehler: Montag ist Konstante
i = rot + gruen; // ok
feiertag = Mon + Die; // Fehler: Typkonvert. von int-Ergebnis nicht möglich
afall++;
// Fehler: aus gleichem Grund;
if (afall > A) afall = C; // ok

Programmieren mit C++

datadidact
2-4

2000-12