switch
Aufbau und Verwendung
Eine Kombination von Variablen und Konstanten mit einem int - Wert
Wichtig: Wert ist entweder = 0 oder
≠ 0.
Bedingungen können miteinander mittels logischer Operatoren kombiniert werden Sind <Bedingung1> und <Bedingung2>
log. Ausdrücke, so sind auch
!<Bedingung1> (log. Negation)
<Bedingung1>&&<Bedingung2> (UND)
<Bedingung1>||<Bedingung2> (ODER)
logische Bedingungen
Die logischen Operatoren !, && und ||
≠ 0
≠ 0
≠ 0 0
≠ 0
≠ 0 0
0
≠ 0 0
≠ 0
≠ 0 0
≠ 0 0
0
≠ 0 0 0
0
A||B A&&B
!A B
A
Von links nach rechts
Es gilt: Short circuit evaluation Für andere
Auswertungsreihenfolgen
Klammern verwenden!
a && b || c ist nicht a && ( b || c)
Arithmetische Ausdrücke sind auch erlaubt: (a + b) || (I < j) ist definiert Falls a = 10 ist , !!a ist nicht a, da
!0 = 1!
switch
Problem mit if : Mehrere Möglichkeiten bei Auswahl erfordert Verschachtelung Die switch –Anweisung ist übersichtlicher
Die switch –Anweisung ist auch
! "
switch (<Ausdruck>) {
case Wert1: <Anweisung1>;
[break;]
…
case Wertn: <Anweisungn>;
[break;]
default: <Ersatzanweisung>;
}
# $
Der int -Ausdruck <Ausdruck> wird ausgewertet
Das Ergebnis wird mit den Werten Wert1 bis Wertn verglichen
Wo Gleichheit besteht, wird die zum
passenden Wert zugehörige Anweisung
ausgeführt
#include <stdio.h>
%
int main() {
int a = 0, char c;
printf(“Roemische Zeichen eingeben: “);
c = getchar();
switch(c) {
case ‘I’: a = 1; break;
case ‘V’: a = 5; break;
case ‘X’: a = 10; break;
case ‘L’: a = 50; break;
case ‘C’: a = 100; break;
case ‘D’: a = 500; break;
case ‘M’: a = 1000; break;
}
if (a > 0) printf(“Wert von %c ist %d\n”, c,a);
&
#include <stdio.h>
int main(void){
char c; c = getchar();
if (((c >= ‘A’)&&(c <= ‘Z’))||(c >=‘a’)&&(c <= ‘z’))) switch (c){
case ‘a’:
case ‘A’:
case ‘e’:
case ‘E’:
case ‘i’:
case ‘I’:
case ‘o’:
'
Die Wahl von zulässigen Buchstaben wurde mit logischen Verknüpfungen realisiert
Um festzustellen zu können, ob ein Vokal eingetippt wurde, steht jeder Vokal nach einer case –Anweisung.
Verwendung von break hier genau
beachten
( ' '
Beispielprogramm mit if und for
#include <stdio.h>
int main(){
const int PRIMES = 100;
int i,j, PRIME;
for (i=3; i<PRIMES; i += 2){
PRIME = 1;
for(j = 3; j < i/2; j += 2){
if (i%j == 0){
PRIME = 0;