FHZ - User Websites on enterpriselab.ch

Werbung
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
7 DECISIONS – IF AND SWITCH
7 DECISIONS – IF AND SWITCH
Mit Hilfe von Entscheidungen kann der Programmablauf von Resultaten abhängig gemacht werden.
1 Elementarer Datentyp boolean
Eine Variable vom Datentyp boolean kann nur die Wahrheitswerte true (wahr) oder false (falsch) annehmen. Solche Variablen speichern typisch bestimmte Zustände.
Boolesche Operatoren:
ƒ
logisches UND (AND):
&&
ƒ
logisches ODER (OR):
||
ƒ
logisches NICHT (NOT):
!
Vergleichsoperatoren (z.B. für float, double, int, long,
char) liefern als Ergebnis ebenfalls einen Wert vom Typ boolean:
<, >, ==, !=, <=, >=
Achtung: Der Vergleich eines float- oder double-Wertes mit
Null ist sehr gefährlich (z.B. temperature == 0.0)! Wieso
wohl?
Ein extrem kleiner Wert ist ungleich Null!
Es empfiehlt sich, mit Hilfe von runden Klammern Missverständnisse bei booleschen Ausdrücke auszuschliessen, z.B.:
!((a > 10) && (x == 0))
7 Decisions - if and switch.doc, V48
© H. Diethelm
Seite 1/9
Abteilung Informatik, Fach Programmieren
FHZ
Hochschule Technik+Architektur Luzern
7 DECISIONS – IF AND SWITCH
2 IF-Anweisung
Struktogramm:
boolescher Ausdruck
true
false
Anweisung
oder Block 1
Anweisung
oder Block 2
UML-Aktivitätsdiagramm:
Syntax:
if (geschwindigkeit <= 120) {
g.drawString("Gratuliere!", 50, 50);
g.drawString("Tempo i.O.", 50, 70);
} else {
g.drawString("Sie Raser!", 50, 50);
g.drawString("zu schnell", 50, 70);
}
Der else-Teil ist nicht zwingend.
7 Decisions - if and switch.doc, V48
© H. Diethelm
Seite 2/9
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
7 DECISIONS – IF AND SWITCH
2.1 Beispiel "Dice2"
NEU: boolean, if, Button, ActionListener, actionPerformed()
Es gewinnt, wer zwei gleiche Zahlen würfelt.
Die Methode Math.random() liefert einen "Zufallswert" vom Datentyp double im Bereich 0.0 bis 0.9999999... .
import java.awt.*; import java.applet.Applet;
import java.awt.event.*;
public class Dice2 extends Applet
implements ActionListener {
private Button throwDice;
private boolean thrown = false;
int die1 = 0; int die2 = 0;
public void init() {
throwDice = new Button("Throw");
add (throwDice);
throwDice.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
thrown = true;
die1 = (int)(Math.random() * 6)+1;
7 Decisions - if and switch.doc, V48
© H. Diethelm
Seite 3/9
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
7 DECISIONS – IF AND SWITCH
die2 = (int)(Math.random() * 6)+1;
repaint();
}
public void paint(Graphics g) {
if(thrown) {
g.drawString("The dice are
die1 + " and " + die2, 20,
if (die1 == die2)
g.drawString ("a win",
else
g.drawString ("sorry",
}
}
" +
40);
20, 60);
20, 60);
}
2.2 Beispiel "Little and Large"
NEU: Event-Quelle ausfindig machen (getSource())
Mit Hilfe von 2 Buttons die Kreisgrösse verändern.
7 Decisions - if and switch.doc, V48
© H. Diethelm
Seite 4/9
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
7 DECISIONS – IF AND SWITCH
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class LittleAndLarge extends Applet
implements ActionListener {
private int diameter=20;
private Button little, large;
public void init() {
little = new Button("Little");
add (little);
little.addActionListener(this);
large = new Button("Large");
add (large);
large.addActionListener(this);
}
public void paint(Graphics g) {
g.drawOval (25,25, diameter, diameter);
}
public void actionPerformed(ActionEvent e){
if (e.getSource() == little)
diameter = diameter - 10;
if (e.getSource() == large)
diameter = diameter + 10;
repaint();
}
}
7 Decisions - if and switch.doc, V48
© H. Diethelm
Seite 5/9
Abteilung Informatik, Fach Programmieren
FHZ
Hochschule Technik+Architektur Luzern
7 DECISIONS – IF AND SWITCH
3 Switch-Anweisung
Anstelle von verschachtelten IF-Anweisungen ist in der Regel
eine Switch-Anweisung wesentlich besser lesbar.
Struktogramm:
Der Ausdruck muss einen ganzzahligen Wert repräsentieren oder
vom Datentyp char sein!
UML-Aktivitätsdiagramm:
7 Decisions - if and switch.doc, V48
© H. Diethelm
Seite 6/9
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
7 DECISIONS – IF AND SWITCH
Syntax:
switch (note) {
case 6: g.drawString("sehr gut!", 50, 50);
break;
case 5: g.drawString("gut", 50, 50);
break;
case 4: g.drawString("befriedigend",50,50);
break;
default: g.drawString("ungenügend", 50,50);
}
Der default-Teil ist nicht zwingend.
ACHTUNG: Ohne break's ändert die Semantik!! Alle nachfolgenden case's werden ausgeführt!!
3.1 Beispiel "Resistor"
NEU: switch, TextField, ActionListener, actionPerformed(), Konvertierung nach int
Via Textfeld Farbcode für eine Ziffer bestimmen.
7 Decisions - if and switch.doc, V48
© H. Diethelm
Seite 7/9
FHZ
Hochschule Technik+Architektur Luzern
Abteilung Informatik, Fach Programmieren
7 DECISIONS – IF AND SWITCH
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Resistor extends Applet
implements ActionListener {
private TextField numberField;
private int number = 10;
public void init() {
Label label = new Label("Ziffer:");
add(label);
numberField = new TextField(10);
add(numberField);
numberField.addActionListener(this);
}
public void actionPerformed(ActionEvent e){
if (e.getSource() == numberField)
number = Integer.parseInt
(numberField.getText());
repaint();
}
public void paint (Graphics g) {
int x = 150;
int y = 50;
switch (number) {
case 0: g.drawString("= schwarz",
x, y); break;
case 1: g.drawString("= braun",
x, y); break;
case 2: g.drawString("= rot",
7 Decisions - if and switch.doc, V48
© H. Diethelm
Seite 8/9
Abteilung Informatik, Fach Programmieren
FHZ
Hochschule Technik+Architektur Luzern
7 DECISIONS – IF AND SWITCH
x, y); break;
case 3: g.drawString("= orange",
x, y); break;
case 4: g.drawString("= gelb",
x, y); break;
case 5: g.drawString("= grün",
x, y); break;
case 6: g.drawString("= blau",
x, y); break;
case 7: g.drawString("= violett",
x, y); break;
case 8: g.drawString("= grau",
x, y); break;
case 9: g.drawString("= weiss",
x, y); break;
default: g.drawString("falsche
Ziffer!", x, y);
}
}
}
7 Decisions - if and switch.doc, V48
© H. Diethelm
Seite 9/9
Herunterladen