• Keine Ergebnisse gefunden

Sie können verwendet werden, wo int s verwendet werden können, z.B. in for –Schleifen

N/A
N/A
Protected

Academic year: 2021

Aktie "Sie können verwendet werden, wo int s verwendet werden können, z.B. in for –Schleifen"

Copied!
24
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

enum

Problembezogene Konstanten

(2)

14.11.2002 Prof. Zavodnik 2

Verdeckte int s mit sinnvollen Namen

Sie können verwendet werden, wo int s verwendet werden können, z.B. in for –Schleifen

Sie werden gewöhnlicherweise mit

dem Typ enum erklärt

(3)

enum Wochentyp {Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag};

enum Wochentyp Tag;

(4)

14.11.2002 Prof. Zavodnik 4

Schlüsselwort enum bei

Deklaration von Tag erforderlich Wochentyp ist der Typ der

Variablen

Die Werte für Tag sind Montag, Dienstag, usw.

Man kann aufsteigende Werte für

Aufzählungstypen definieren

(5)

enum Wochentyp {Montag = 3, Dienstag, Mittwoch, Donnerstag = 10, Freitag,

Samstag = 100, Sonntag}

(6)

14.11.2002 Prof. Zavodnik 6

cpp

Mittels #define Sind zu meiden

Alte C-Sprache-Eigenschaft

(7)

#define Montag 1

#define Dienstag 2

#define Mittwoch 3

#define Donnerstag 4

#define Freitag 5

#define Samstag 6

#define Sonntag 7

(8)

14.11.2002 Prof. Zavodnik 8

#include <stdio.h>

int main(void) {

float Stunden, Lohn, Stundenlohn;

int i;

Lohn = 0.0;

printf("Bitte Stundenlohn eingeben: ");

scanf("%f“, &Stundenlohn);

for (i=1; i < 8; i++){

printf("Bitte Anzahl Stunden fuer Tag %d eingeben: ",i);

scanf("%f", &Stunden); printf("\n");

if ((i==1)||(i==2)||(i==3)||(i==4)||(i==5)) Lohn = Lohn + Stunden*Stundenlohn;

else if (i == 6) Lohn = Lohn + 1.5*Stunden*Stundenlohn;

else if (i == 7) Lohn = Lohn + 2.0*Stunden*Stundenlohn;

else printf("Unmoeglich"); } /*for*/

printf("Lohn fuer die Woche ist %8.2f\n", Lohn);

return 0;

}

(9)

Programm ist schwer zu lesen

Aufzählungen hier nicht verwendet

Was ist die Rolle von i ?

(10)

14.11.2002 Prof. Zavodnik 10

#include <stdio.h>

#define Montag 1

#define Dienstag 2

#define Mittwoch 3

#define Donnerstag 4

#define Freitag 5

#define Samstag 6

#define Sonntag 7 int main(void)

{

float Stunden, Lohn, Stundenlohn;

int Tag;

Lohn = 0.0;

printf("Bitte Stundenlohn eingeben: ");

scanf("%f“, &Stundenlohn);

for (Tag = Montag; Tag <= Sonntag; Tag++)

(11)

{

printf("Bitte Anzahl Stunden fuer ");

switch (Tag){

case Montag : printf("Montag");

break;

case Dienstag : printf("Dienstag");

break;

case Mittwoch : printf("Mittwoch");

break;

case Donnerstag : printf("Donnersatg");

break;

case Freitag : printf("Freitag");

break;

case Samstag : printf("Samstag");

break;

case Sonntag : printf("Sonntag");

break;

}

printf(" eingeben: ");

(12)

14.11.2002 Prof. Zavodnik 12

scanf("%f", &Stunden); printf("\n");

switch (Tag){

case Montag: case Dienstag: case Mittwoch: case Donnerstag:

case Freitag:

Lohn = Lohn + Stunden*Stundenlohn;

break;

case Samstag:

Lohn = Lohn + 1.5*Stunden*Stundenlohn;

break;

case Sonntag:

Lohn = Lohn + 2.0*Stunden*Stundenlohn;

break;

} /*switch*/

} /*for*/

printf("Lohn fuer die Woche ist %8.2f\n", Lohn);

return 0;

}

(13)

Umständlich, mit vielen Aufzählungen zu arbeiten

Programm ist immer noch schwer zu lesen

Besser: mit enum in einem sog.

typedef zu arbeiten

(14)

14.11.2002 Prof. Zavodnik 14

typedef

typedef <vorhanden_Typ> <neuer_Name>

(15)

#include <stdio.h>

typedef enum {Montag, Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag} WochentagTyp;

int main(void) {

float Stunden, Lohn, Stundenlohn;

WochentagTyp Tag;

Lohn = 0.0;

printf("Bitte Stundenlohn eingeben: ");

scanf("%f“, &Stundenlohn);

for (Tag = Montag; Tag <= Sonntag; Tag++)

(16)

14.11.2002 Prof. Zavodnik 16

{

printf("BitteAnzahl Stunden fuer ");

switch (Tag){

case Montag : printf("Montag");

break;

case Dienstag : printf("Dienstag");

break;

case Mittwoch : printf("Mittwoch");

break;

case Donnerstag : printf("Donnersatg");

break;

case Freitag : printf("Freitag");

break;

case Samstag : printf("Samstag");

break;

case Sonntag : printf("Sonntag");

break;

}

printf(" eingeben: ");

(17)

scanf("%f", &Stunden); printf("\n");

switch (Tag){

case Montag: case Dienstag: case Mittwoch: case Donnerstag:

case Freitag:

Lohn = Lohn + Stunden*Stundenlohn;

break;

case Samstag:

Lohn = Lohn + 1.5*Stunden*Stundenlohn;

break;

case Sonntag:

Lohn = Lohn + 2.0*Stunden*Stundenlohn;

break;

} /*switch*/

} /*for*/

printf("Lohn fuer die Woche ist %8.2f\n", Lohn);

return 0;

(18)

14.11.2002 Prof. Zavodnik 18

! " #

(19)

$ % &

Autoinkrement: Effekt vom #

Operator a += 1 ; aber

geschrieben a++ oder ++a.

Autodekrement: Effekt vom Operator a -= 1; aber

geschrieben a-– oder --a.

++ und – können vor (Präfix) und

nach (Postfix) einer Variablen

(20)

14.11.2002 Prof. Zavodnik 20

'( ) %

a++ heißt: Der Wert ist der aktuelle Wert von a . Nach Verwendung

wird a um 1 erhöht.

++a heißt: Aktueller Wert von a wird inkrementiert. Bei

Verwendung gilt dieser Wert Autodekrement ähnlich

Aufpassen: Seiteneffekte!

(21)

* # ?:

Syntax: <Ausdr1>?<Ausdr2>:<Ausdr3>

Vorgehensweise

<Ausdr1> wird ausgewertet

Falls Wert ≠ 0 ist, wird Wert von

<Ausdr2> zurückgegeben

Sonst wird Wert von <Ausdr3> zurück-

gegeben

(22)

14.11.2002 Prof. Zavodnik 22

int a,b,c;

a = …;

b = …;

c = (a>b)?a:b;

weist der Variable c den maximalen Wert von a und b

(23)

int i,j,k;

i = 0;

j = i++;

k = ++j;

printf("%d %d %d\n", i,j,k);

(24)

14.11.2002 Prof. Zavodnik 24

$ * &#

Besteht aus einer Folge von

Ausdrücken, die voneinander mit ',' getrennt sind

Wird von links nach rechts ausgewertet

Wert des Ausdrucks ist der Wert des letzten Ausdrucks

int sum, i;

for (sum = 0, i = 1; i <= n; sum +=i, i++)

Beispiel:

Referenzen

ÄHNLICHE DOKUMENTE

FI = Enthält Fisch und/oder daraus hergestellte Erzeugnisse, EN = Enthält Erdnüsse und/oder daraus hergestellte Erzeugnisse, SO = Enthält Soja und/oder daraus hergestellte

Handelt es sich außerdem um frisches oder tiefgefrorenes Obst ohne Zucker und Süßungsmittel, wird dies zusätzlich in der entsprechenden Zeile für Obst frisch oder tiefgekühlt

Die kleinen Krabbeltiere sieht man überall in der Natur. Es gibt kleine und große Arten. Sie sind rotbraun, schwarz oder gelblich. Wie alle Insekten haben sie sechs Beine. Mit

[r]

Malfolgen – Schreibe folgende Türmchen in dein Heft und löse sie.. 3 Zeichne die Strecken auf ein

Beim Rennrodeln sitzt man allein oder zu zweit auf dem Schlitten. Beim Start stößt man sich ab und beschleunigt dann noch mit den Händen. Im Eiskanal liegen die Sportler flach

Anordnungen des Landes Niedersachsen. Mit Anmeldung Ihres Kindes erklären Sie sich automatisch mit einer möglichen Veröffentlichung von Fotos in Presse oder Internet

Die Impfung soll verhindern, dass man an Corona erkrankt. Bald ist die Hälfte der Menschen in Deutschland einmal geimpft. Weil der Impfstoff knapp ist, durften sich zuerst