Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

SWITCH - Anweisung.

Ähnliche Präsentationen


Präsentation zum Thema: "SWITCH - Anweisung."—  Präsentation transkript:

1 SWITCH - Anweisung

2 Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel:
Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C-Programm

3 Programmieren Sie den Eingabeteil.

4 int main(){ int i; printf("\nEingabe der Nummer: "); scanf("%d", &i); fflush(stdin);  // Wie geht es weiter ? Mit If – Else – If Kette

5 if (i==1) printf("Montag"); else if (i==2) printf("Dienstag"); else if (i==3) printf("Mittwoch"); else if (i==4) printf("Donnerstag"); else if (i==5) printf("Freitag"); else if (i==6) printf("Samstag"); else if (i==7) printf("Sonntag"); else printf("ungültige Eingabe"); Besser: printf(...) jeweils zwischen geschweifte Klammern setzen, also ...

6 if (i==1){ printf("Montag"); } else if (i==2){ printf("Dienstag"); } else if (i==3){ printf("Mittwoch"); } else if (i==4){ printf("Donnerstag"); } else if (i==5){ printf("Freitag"); } // gleich geht es weiter

7 else if (i==6){ printf("Samstag"); } else if (i==7){ printf("Sonntag"); } else{ printf("ungültige Eingabe"); }

8 Dies kann auch durch eine sogenannte
SWITCH-Anweisung realisiert werden

9 switch (i){ case 1: printf("Montag\n"); break; //
switch (i){ case 1: printf("Montag\n"); break; //... case 7: printf("Sonntag\n"); break; default: printf("ungültig\n"); break; } Ein switch ist ein Schalter, der verschiedene Zustände (wie bei einer Gangschaltung) haben kann. Hier sind die Zustände 1, 2, 3, 4, 5, 6, 7 Fragen: 1) Warum ist break am Ende überflüssig ?

10 Konstante switch (i){ case 1: printf("Montag\n"); break; //... case 7: printf("Sonntag\n"); break; default: printf("ungültig\n"); break; } ganzzahliger Ausdruck (char, int) Verlassen der switch-Anweisung Fragen: 1) Warum ist break am Ende überflüssig ? Wenn kein Wert passt Unnötig, aber guter Programmierstil

11 C-Syntax für SWITCH

12 case-Marken sind nicht abweisend
switch (Ausdruck){ case Wert1: Anweisungen; break; //... case Wertn: Anweisungen; break; default: Anweisungen; break; } Was passiert, wenn dieses break fehlen würde ? Antwort: trifft es zu, dass der Ausdruck gleich dem Wert einer Konstanten ist, dann werden alle nachfolgenden Anweisungen bearbeitet (und zwar so lange, bis ein break kommt, oder das Ende der switch-Anweisung erreicht wird). Dies gilt auch dann, wenn vor diesen Anweisungen (so wie hier), wiederum "case Konstante" oder default steht. Man sagt: case-Marken sind nicht abweisend Mit case bezeichnete Stellen im Programm sind also keine Verzweiger sondern lediglich Einstiegsmarkierer und break ist der Ausstiegsmarkierer. default ist optional

13 Beispiel

14 scanf("%d", &i); switch (i){ case 1: printf("Montag\n"); //
... scanf("%d", &i); switch (i){ case 1: printf("Montag\n"); //... case 7: printf("Sonntag\n"); default: printf("ungültig\n"); break; } Was gibt das Programm aus, wenn 1 eingegeben wird? Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntag ungültig Hier beginnt der Einstieg und das break unten bringt den Ausstieg.

15 scanf("%d", &i); switch (i){ case 1: printf("Montag\n"); //
... scanf("%d", &i); switch (i){ case 1: printf("Montag\n"); //... case 7: printf("Sonntag\n"); default: printf("ungültig\n"); break; } Was gibt das Programm aus, wenn 7 eingegeben wird? Sonntag ungültig Hier beginnt der Einstieg und das break unten bringt den Ausstieg.

16 Beispiel

17 Was gibt das Programm aus, wenn 1 eingegeben wird?
... scanf("%d", &i); switch (i){ case 1: printf("Montag\n"); //... default: printf("ungültig\n"); case 7: printf("Sonntag\n"); } default muss nicht am Ende stehen. Aber: default am Ende ist der bessere Programmierstil !!!!!! Wenn kein break vorhanden ist, ist der Ausstieg am Ende der switch-Anweisung! Was gibt das Programm aus, wenn 1 eingegeben wird? Montag Dienstag Mittwoch Donnerstag Freitag Samstag ungültig Sonntag

18 Was gibt das Programm aus, wenn 7 eingegeben wird?
... scanf("%d", &i); switch (i){ case 1: printf("Montag\n"); //... default: printf("ungültig\n"); case 7: printf("Sonntag\n"); } Was gibt das Programm aus, wenn 7 eingegeben wird? Sonntag

19 Was gibt das Programm aus, wenn 8 eingegeben wird?
... scanf("%d", &i); switch (i){ case 1: printf("Montag\n"); //... default: printf("ungültig\n"); case 7: printf("Sonntag\n"); } Was gibt das Programm aus, wenn 8 eingegeben wird? ungültig Sonntag

20 Beispiel

21 Was macht dieses Programm
... scanf("%d", &i); switch (i){ case 6: case 7: printf("Wochenende"); break; default: printf("werktags"); break; } break fehlt case Marken sind nicht abweisend Was macht dieses Programm Fragen: Was geschieht, wenn i = 6 ist ? Was geschieht, wenn default fehlt ? Wenn i den Wert 6 oder 7, Ausgabe: "Wochenende" sonst Ausgabe: "werktags"

22 SWITCH-Anweisung als Struktogramm

23 Ausdruck case Konst. 1 case Konst. 2 ... ... Anweis. n Anweis. 1
default ... ... Anweis. n Anweis. 1 Anweis. 2

24 Aufgabe: Auf dem Bildschirm erscheint diese Maske:
Bei Eingabe einer Zahl 1, 2, 3, 4 wird der entsprechende Programmteil aufgerufen (z.B. Summe zweier Zahlen) Bei Eingabe einer anderen Zahl als 1, 2, 3, 4 wird das Programm beendet. Geben Sie eine Zahl ein. 1: berechnet die Summe zweier Zahlen, 2: berechnet die Differenz zweier Zahlen, 3: berechnet das Produkt zweier Zahlen, 4: berechnet den Quotienten zweier Zahlen. sonst: Programmende

25 int main(){ int e; double a,b,erg; // Eingabe printf("1: Summe\n"); printf("2: Differenz\n"); printf("3: Produkt\n"); printf("4: Quotient\n"); printf("sonst: Programmende\n"); scanf("%d", &e); fflush(stdin); if((e>=1)&&(e<=4)){ printf("1.Zahl eingeben\n"); scanf("%lf", &a); printf("2.Zahl eingeben\n"); scanf("%lf", &b); fflush(stdin); }

26 // Verarbeitung switch(e){ case 1: erg=a+b; break; case 2: erg=a-b; case 3: erg=a*b; case 4: erg=a/b; }

27 // Ausgabe switch(e){ case 1: case 2: case 3: case 4: printf("Ergebnis=%f\n",erg); break; default: printf("Programmende"); break; }

28 Aufgabe: Geben Sie ein Zeichen ein.
Das Programm soll feststellen, welche Eigenschaft dieses Zeichen hat: - Selbstlaut (Vokal) - Mitlaut (Konsonant) - Ziffer - sonst

29 Was geschieht, wenn das break fehlt ?
int main(){ char z; printf("Zeichen eingeben\n"); scanf("%c", &z); fflush(stdin); switch(z){ case 'a': case 'A': case 'e': case 'E': case 'i': case 'I': case 'o': case 'O': case 'u': case 'U': printf("Selbstlaut\n"); break; Es wird an der zum nächsten case zugehörigen Anweisung weitergemacht. Was geschieht, wenn das break fehlt ?

30 case 'b': case 'B': case 'c': case 'C': case 'd': case 'D': case 'f': case 'F': case 'g': case 'G': case 'h': case 'H': case 'j': case 'J': case 'k': case 'K': case 'l': case 'L': case 'm':

31 case 'M': case 'n': case 'N': case 'p': case 'P': case 'q': case 'Q': case 'r': case 'R': case 's': case 'S': case 't': case 'T': case 'v': case 'V': case 'w': case 'W': case 'x': case 'X':

32 case 'y': case 'Y': case 'z': case 'Z': printf("Mitlaut\n"); break;

33 case '0': case '1': case '2': case '3': case '4': case '5': case '6':
printf("Ziffer\n"); break; default: printf("sonst\n"); } return 0; Was würde bei Eingabe des Zeichens 'a' auf dem Bildschirm ausgegeben, wenn überall das break fehlen würde ? Selbstlaut Mitlaut Ziffer sonst

34 Alternative Lösung:

35 #include "stdafx.h" #include "stdio.h" int main(){ char c; int z; printf("Bitte ein Zeicheneingeben\n"); scanf("%c", &c); z = (int)c;

36 if(z==97||z==65||z==101||z==69||
printf("Dieses Zeichen ist ein Selbstlaut\n"); } else if(z>=65 && z<=90 || z>=97 && z<=122){ Mitlaut\n"); else if(z>=48 && z<=57){ printf("Dieses Zeichen ist eine Ziffer\n");

37 else{ printf("Dies ist sonst irgend ein Zeichen\n"); } return 0;


Herunterladen ppt "SWITCH - Anweisung."

Ähnliche Präsentationen


Google-Anzeigen