3.2 Mehrseitige Auswahl

Werbung
3
Ko n tr o lls t ru k t ur en
2 Mehrseitige Auswahl
3 Wiederholung
3.2 Mehrseitige Auswahl
Es gibt zwei Formen der mehrseitigen Auswahl, die sich darin unterscheiden, wie man sie programmieren kann. Die erste Art ist sehr speziell und beruht darauf, dass die einzelnen Fälle sich durch
feste Einzelwerte bestimmen lassen.
Struktogramm:
Ausdruck
Wert 1
Wert 2
Wert 3
Anweisung 1
Anweisung 2
Anweisung 3
sonst
Anweisung n
Die mehrseitige Auswahl stützt ihre Wahl auf einen abzählbaren (ordinal) Datentyp, den Selektor, der
mehr als zwei Werte annehmen kann, z. B. int oder char. In Abhängigkeit des aktuellen Wertes wird
dann eine von vielen Möglichkeiten ausgewählt und ausgeführt.
Die Syntax lautet in Java:
switch(c)
{
case wert1: Anweisung1;
case wert2: Anweisung2;
case wert3: Anweisung3;
case wert4: Anweisung4;
case wert5: Anweisung5;
default: AnweisungS;
}//switch
break;
break;
break;
break;
break;
Der default-Teil kann auch weggelassen werden, wenn keine sonstige Anweisung nötig ist.
Grundlagen der Programmierung mit JAVA
© datadidact 2016
33
Ko n tr o lls t ru k t ur en
3
2 Mehrseitige Auswahl
3 Wiederholung
Problemstellung
Ein Programm Notenausgabe soll wie folgt ergänzt werden: Es soll eine Note (1..6) eingegeben werden. Das Programm wandelt die Note in den entsprechenden Text um (1 = sehr
gut; 2 = gut;..; 6 = ungenuegend)
Struktogramm (verkürzte Schreibweise):
note
1
3
2
A:"sehr gut"
A:"gut"
4
A:"befriedigend"
A:"ausreichend"
sonst
6
5
A:"mangelhaft"
A:"ungenügend"
A:"Fehler!"
Die Problemlösung Notenausgabe:
[1] public class Notenausgabe
[2] {
[3]
public static void main(String argv[])
[4]
{
[5]
int note;
[6]
note = 3;//sollte über Tastatur eigelesen werden...
[7]
switch(note)
[8]
{
[9]
case 1: System.out.println(″sehr gut″);break;
[10]
case 2: System.out.println(″gut″);break;
[11]
case 3: System.out.println(″befriedigend″);break;
[12]
case 4: System.out.println(″ausreichend″);break;
[13]
case 5: System.out.println(″mangelhaft″);break;
[14]
case 6: System.out.println(″ungenuegend″);break;
[15]
default: System.out.println(″Fehler.″);
[16]
}//switch(note)
[17]
System.out.println(″Programmende Notenausgabe.″);
[18]
}//public static void main(String argv[])
[19]
}//public class Notenausgabe
34
Grundlagen der Programmierung mit JAVA
© datadidact 2016
Ko n tr o lls t ru k t ur en
3
2 Mehrseitige Auswahl
3 Wiederholung
Falls der Selektor aus einem ganzen zusammenhängenden Bereiche besteht, so muss auf die zweifache Auswahl zurückgegriffen werden.
Struktogramm:
Ausdruck
Bereich 1
Bereich 2
Bereich 3
Anweisung 1
Anweisung 2
Anweisung 3
sonst
Anweisung n
Problemstellung
Das Programm Ziffer untersucht eine positive ganze Zahl (im Bereich von 0 bis 99) und
stellt fest, ob die Zahl eine oder zwei Stellen hat. Wird eine Zahl eingegeben, die
außerhalb des zu untersuchenden Bereiches liegt, dann wird die Meldung „mehr als zwei
Ziffern!“ auf dem Bildschirm ausgegeben.
Struktogramm (verkürzte Schreibweise):
zahl
0..9
A:"eine Ziffer!"
10..99
A:"zwei Ziffern!"
sonst
A:"mehr als zwei Ziffern!"
Lösung:
[1] public class Ziffer
[2] {
[3]
public static void main(String argv[])
[4]
{
[5]
int zahl;
[6]
zahl = 5;//Kann auch über Tastatur eingelesen werden
[7]
if(zahl>=0 && zahl <=9) System.out.println(″Eine Ziffer! ″);
[8]
else if (zahl>=10 && zahl <=99) System.out.println(″Zwei Ziffern! ″);
[9]
else System.out.println(″Mehr als zwei Ziffern! ″);
[10]
System.out.println(″Programmende Ziffer.″);
[11] }//public static void main(String argv[])
[12] }//public class Ziffer
Grundlagen der Programmierung mit JAVA
© datadidact 2016
35
3
Ko n tr o lls t ru k t ur en
2 Mehrseitige Auswahl
3 Wiederholung
Grundlegende Übungsaufgaben
1.
Arbeitsauftrag
3.3
(MonName.java) Schreiben Sie ein Programm, das die Monatsnamen „Januar“ bis
„Dezember“ ausgibt, wenn eine der Zahlen von 1 bis 12 eingegeben wird.
2. (Brief.java) Briefe werden nach ihrem Gewicht frankiert. Es gelten folgende
Portobeträge:
bis (g)
20
50
100
250
500
1000
Euro
1,-
1,70
2,40
3,20
4,00
4,80
Sendungen schwerer als 1kg werden als Päckchen oder Paket verschickt. Schreiben
Sie ein Programm, das nach Eingabe des Gewichtes das Porto ausgibt.
3. (QuadGl.java) Die quadratische Gleichung ax2 + bx + c = 0 ist zu lösen. Denken Sie
daran, dass die Lösungen imaginär sein können. Hinweis: Wurzeln werden in Java
mit der Funktion Math.sqrt(x) berechnet (Bemerkung: x muss vom Typ double sein!).
4. (Volumen.java) Es sollen die Volumina und Oberflächen von Zylinder, Würfel,
Quader, Kreiskegel oder Kugel berechnet werden. Erstellen Sie ein Programm, das
die Eingabe der Körperform und der notwendigen Maße erlaubt und danach die
Werte berechnet. Hinweis: Die Kreiszahl Pi ist in Java über Math.PI benutzbar.
1. MonName.java:
Ausgabe des Monatsnamens
Nummer des Monats (1..12): 4
Der 4. Monat heisst April.
Programmende MonName.
Ausgabe des Monatsnamens
Nummer des Monats (1..12): 15
Es gibt nur 12 Monate!
Programmende MonName.
2. Brief.java:
Portoberechnung
Gewicht des Briefes in g: 75.6
Kosten: 2.40 Euro
Programmende Brief.
Portoberechnung
Gewicht des Briefes in g: 1500
Das wird ein Paket!
Programmende Brief.
36
Grundlagen der Programmierung mit JAVA
© datadidact 2016
Herunterladen