SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel:...
-
Upload
gisela-neubert -
Category
Documents
-
view
106 -
download
3
Transcript of SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel:...
![Page 1: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/1.jpg)
SWITCH - Anweisung
![Page 2: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/2.jpg)
Aufgabe:Zur Nummer eines Tages
soll der Wochentag ausgegeben werden.
Beispiel:2 --> Dienstag
Schreiben Sie dazu ein C-Programm
![Page 3: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/3.jpg)
Programmieren Sie den Eingabeteil.
![Page 4: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/4.jpg)
int main(){ int i;
printf("\nEingabe der Nummer: "); scanf("%d", &i); fflush(stdin); // Wie geht es weiter ?
Mit If – Else – If Kette
![Page 5: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/5.jpg)
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 ...
![Page 6: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/6.jpg)
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
![Page 7: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/7.jpg)
else if (i==6){ printf("Samstag"); } else if (i==7){ printf("Sonntag"); } else{ printf("ungültige Eingabe"); }
![Page 8: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/8.jpg)
Dies kann auch durch eine sogenannte
SWITCH-Anweisung realisiert werden
![Page 9: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/9.jpg)
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
![Page 10: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/10.jpg)
switch (i){ case 1: printf("Montag\n"); break; //... case 7: printf("Sonntag\n"); break; default: printf("ungültig\n"); break;}
ganzzahliger Ausdruck (char, int)
Konstante
Wenn kein Wert passt
Verlassen der switch-Anweisung
Unnötig, aber guter Programmierstil
![Page 11: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/11.jpg)
C-Syntax fürSWITCH
![Page 12: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/12.jpg)
switch (Ausdruck){ case Wert1: Anweisungen; break; //... case Wertn: Anweisungen; break; default: Anweisungen; break;} default ist optional
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.
![Page 13: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/13.jpg)
Beispiel
![Page 14: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/14.jpg)
...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?
MontagDienstagMittwochDonnerstagFreitagSamstagSonntagungültig
Hier beginnt der Einstieg und das break unten bringt den Ausstieg.
![Page 15: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/15.jpg)
...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?
Sonntagungültig
Hier beginnt der Einstieg und das break unten bringt den Ausstieg.
![Page 16: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/16.jpg)
Beispiel
![Page 17: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/17.jpg)
...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 1 eingegeben wird?
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!
MontagDienstagMittwochDonnerstagFreitagSamstagungültigSonntag
![Page 18: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/18.jpg)
...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
![Page 19: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/19.jpg)
...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ültigSonntag
![Page 20: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/20.jpg)
Beispiel
![Page 21: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/21.jpg)
...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
Wenn i den Wert 6 oder 7, Ausgabe: "Wochenende" sonst Ausgabe:"werktags"
![Page 22: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/22.jpg)
SWITCH-Anweisung
als Struktogramm
![Page 23: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/23.jpg)
Ausdruck
...
case Konst. 1
Anweis. 1
case Konst. 2 default
Anweis. 2 ... Anweis. n
![Page 24: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/24.jpg)
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.
Aufgabe:
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
![Page 25: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/25.jpg)
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); }
![Page 26: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/26.jpg)
// Verarbeitung switch(e){ case 1: erg=a+b; break; case 2: erg=a-b; break; case 3: erg=a*b; break; case 4: erg=a/b; break; }
![Page 27: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/27.jpg)
// Ausgabe switch(e){ case 1: case 2: case 3: case 4: printf("Ergebnis=%f\n",erg); break; default: printf("Programmende"); break; }}
![Page 28: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/28.jpg)
Geben Sie ein Zeichen ein.Das Programm soll feststellen, welche Eigenschaft dieses Zeichen hat:
- Selbstlaut (Vokal)- Mitlaut (Konsonant)- Ziffer - sonst
Aufgabe:
![Page 29: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/29.jpg)
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;
Was geschieht, wenn das break fehlt ?
Es wird an der zum nächsten case zugehörigen Anweisung weitergemacht.
![Page 30: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/30.jpg)
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':
![Page 31: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/31.jpg)
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':
![Page 32: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/32.jpg)
case 'y': case 'Y': case 'z': case 'Z': printf("Mitlaut\n"); break;
![Page 33: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/33.jpg)
case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': printf("Ziffer\n"); break; default: printf("sonst\n"); break; } return 0;}
Was würde bei Eingabe des Zeichens 'a' auf dem Bildschirm ausgegeben, wenn überall das break fehlen würde ?
SelbstlautMitlautZiffersonst
![Page 34: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/34.jpg)
Alternative Lösung:
![Page 35: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/35.jpg)
#include "stdafx.h"#include "stdio.h"
int main(){ char c; int z; printf("Bitte ein Zeicheneingeben\n"); scanf("%c", &c); z = (int)c;
![Page 36: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/36.jpg)
if(z==97||z==65||z==101||z==69|| z==105||z==73||z==111||z==79|| z==112||z==85||z==117){ printf("Dieses Zeichen ist ein Selbstlaut\n"); } else if(z>=65 && z<=90 || z>=97 && z<=122){ printf("Dieses Zeichen ist ein Mitlaut\n"); } else if(z>=48 && z<=57){ printf("Dieses Zeichen ist eine Ziffer\n"); }
![Page 37: SWITCH - Anweisung. Aufgabe: Zur Nummer eines Tages soll der Wochentag ausgegeben werden. Beispiel: 2 --> Dienstag Schreiben Sie dazu ein C- Programm.](https://reader036.fdocument.pub/reader036/viewer/2022081518/55204d6549795902118bac73/html5/thumbnails/37.jpg)
else{ printf("Dies ist sonst irgend ein Zeichen\n"); } return 0;}