true

Werbung
Boolesche Ausdrücke
• Ist der Rückgabewert eines Ausdrucks vom Typ
boolean, so wird dieser als Boolescher Ausdruck
bezeichnet (nach dem Mathematiker George Boole).
• Boolesche Ausdrücke können nur die zwei
(Wahrheits-)Werte true oder false annehmen.
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
1
Komplexe Boolesche Ausdrücke
Komplexe Boolesche Ausdrücke werden mit den
Mitteln der Aussagenlogik gebildet:
•
Nicht / Negation:
¬ true = false
¬ false = true
Negation in Java: ! Wert
false  false = false
false  true = false
true  false = false
true  true = true
Und-Verknüpfung in Java: Wert1 & Wert2
•
Und-Verknüpfung:
•
Oder-Verknüpfung:
false  false = false
false  true = true
true  false = true
true  true = true
Oder-Verknüpfung in Java: Wert1 | Wert2
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
2
Relationale Operatoren
• Relationale Operatoren setzen ihre Operanden
zueinander in Beziehung und liefern den
Wahrheitswert der Beziehung zurück.
– Beispiele:
5 < 3 ergibt false
(4-2)=2 ergibt true
Mathem. Notation
Java
Erläuterung
=
==
Identität (Gleichheit)

!=
Ungleichheit
<
<
kleiner als

<=
kleiner oder gleich als
>
>
größer als

>=
größer oder gleich als
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
3
Verkürzte Auswertung logischer Ausdrücke (II)
• Vorteile von && und || gegenüber & und |
– oftmals schnellere Programmausführung
– Realisierung von Bedingungen mit Vorbedingungen
Beispiel:
if (d!=0 && 20/d > 5) ...
Für den Fall d=0 darf der zweite Operand des &&-Operators
nicht ausgewertet werden.
• Aber: auch die Nebeneffekte abgekürzter Operatoren
werden nicht ausgeführt (wie z.B. Bildschirmausgaben
innerhalb von Funktionen u.ä.)
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
4
Operatorenreihenfolge (Priorität)
Priorität
1
Operatoren
Assoziativität
+ -
Vorzeichen (unär)
rechts
!
logische Negation
rechts
(Typ)
Typkonversion
rechts
2
* / %
Multiplikation, Division, Rest
links
3
+ -
Addition, Subtraktion
links
4
< <=
kleiner, kleiner gleich
links
> >=
größer, größer als
links
==
Gleichheit
links
!=
Ungleichheit
links
6
&
logisches Und
links
7
|
logisches Oder
links
8
=
Wertzuweisung
links
5
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
5
Verkürzte Auswertung logischer Ausdrücke (I)
• Vor der Berechnung des Wertes eines (logischen)
Operators werden die Werte aller seiner Operatoren
bestimmt.
• Die Und-Verknüpfung && (Konjunktion) und OderVerknüpfungen || (Disjunktion) verkürzen u.U. die
Auswertung:
– Eine Oder-Verknüpfung ist generell wahr, sobald der erste wahre
Operand gefunden wird.
– Eine Und-Verknüpfung ist generell falsch, sobald der erste falsche
Operand gefunden wird.
– In diesen Fällen werden bei den Operatoren && und || die restlichen
Operanden nicht mehr ausgewertet.
– Die Auswertung findet im Regelfall von links nach rechts statt, es sei
denn sie wird durch runde Klammern anders vorgegeben.
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
6
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
7
Übung im GIS-Labor
• Schreiben Sie ein Programm, das die Zahlen von 1
bis 50 aufzählt, wobei anstelle der durch drei oder
durch sieben teilbaren Zahlen „autsch“ ausgegeben
werden soll.
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
8
Kontrollstrukturen: while- und do-while-Schleife
while-Schleife:
do-while-Schleife:
Syntax:
Syntax:
while ( boolean-Ausdruck )
Anweisung;
do
• Schleife mit
Eintrittsbedingung
• Schleife mit
Wiederholungsbedingung
– Anweisung wird 0 bis
x-mal ausgeführt
Anweisung;
while ( boolean-Ausdruck );
– Anweisung wird mindestens
einmal ausgeführt
Hinweis: Sollen mehrere Anweisungen im Schleifenrumpf ausgeführt werden, so müssen diese durch geschweifte Klammern
zu einem Block zusammengefasst werden.
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
9
Übung im GIS-Labor
1. Simulation eines Würfels:
Schreiben Sie ein Programm, das bei jedem Aufruf
eine zufällige ganze Zahl zwischen 1 und 6 ausgibt.
2. Logische Ausdrücke
a) true & false | true
b) (10>2) & (!true==false)
c) true==(4!=3) & !(3<=3)
1. Notieren Sie die Ausdrücke 1.-3. in mathematischer
Schreibweise; z.B.: ¬ true  (32  true)
2. Wie lauten die Wahrheitswerte der Ausdrücke 1.-3. ?
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
10
Arrays
Index
Wert
0
45
1
-117
2
12
3
0
4
999
Integer-Array mit
fünf Elementen
• Bisher: primitive Datentypen
(int, double, ...)
• Arrays als erster nicht-primitiver
Datentyp
• Alle Werte haben denselben Typ
(z.B. int)
• Zugriff über Index:
my_array[2] = 12;
• Indizes fangen mit 0 an
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
11
Arbeiten mit Array-Variablen (I)
3 Schritte:
(nur Schritt 2 ist wirklich neu)
1. Deklaration
int[] my_array;
// Array von Integerzahlen
2. Instantiierung
my_array = new int[3];
// Erschafft Array mit 3 Elem.
3. Initialisierung
my_array[0] = 17;
my_array[1] = 0;
my_array[2] = -4*my_array[0];
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
12
Arbeiten mit Array-Variablen (II)
Alternative:
• alle drei Schritte auf einmal
• Deklaration mit impliziter Erschaffung und Initialisierung:
int[] my_array = {45, -117, 12, 0, 999};
erschafft ein 5-elementiges Array und initialisiert es mit den
aufgezählten Werten (angefangen bei Index 0).
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
13
Hinweise zu Arrays (I)
• Größe eines Arrays kann erst zur Laufzeit feststehen:
int[] my_array;
int i = .... //zur Laufzeit berechnet
my_array = new int[i];
• Größe eines Arrays kann mittels arrayname.length
abgefragt werden:
int laenge = my_array.length;
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
14
Beispiel zu Arrays
Programm:
Ausgabe:
// Bestimmung der kleinsten Zahl eines ganzzahligen Arrays
class Minimum {
public static void main (String args[]) {
int[] my_array = {45,12,1,13,-4,0,-23,1001};
int minimum, i;
Die kleinste
Zahl ist -23
minimum=my_array[0];
for (i=1; i<my_array.length; i=i+1)
if (my_array[i]<minimum)
minimum=my_array[i];
System.out.print("Die kleinste Zahl ist ");
System.out.println(minimum);
}
}
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
15
Übung im GIS-Labor
• Schreiben Sie ein Programm, das ein Array mit 6
double-Werten erzeugt, dieses mit selbst gewählten
Werten initialisiert und die Summe dieser 6 Werte
ausgibt.
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
16
Mehrdimensionale Arrays
• Anwendungen
– zweidimensional: Repräsentation von Matrizen
– zwei- und mehrdimensional: Speicherung von Wertetabellen
• Mehrdimensionale Arrays werden durch Arrays von
Arrays dargestellt
• Syntax zur Deklaration und Instantiierung eines
n-dimensionalen Arrays:
Typ [ ][ ]...[ ] Arrayname = new Typ [d1][d2]...[dn];
• Beispiel:
int[][] matrix = new int[6][3];
erschafft eine zweidimensionale Matrix mit 6 Zeilen und 3 Spalten
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
17
Hinweise zu Arrays (II)
• Arrays sind keine primitiven Datentypen
– Array-Variablen enthalten nicht selbst das Array, sondern
verweisen auf ein Array, das durch new irgendwo im
Hauptspeicher angelegt wird.
Beispiel: int[] myArray=new int[3];
myArray
Wert1 Wert2 Wert3
 kein simpler Vergleich zweier Arrays möglich:
int[] a={7,12,13,0};
int[] b={7,12,13,0};
System.out.println(a==b);
ergibt die Ausgabe false
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
18
2. Übungsaufgabe vom 31. 10.
Logische Ausdrücke
1. true & false | true
2. (10>2) & (!true==false)
3. true==(4!=3) & !(3<=3)
a) Notieren Sie die Ausdrücke 1.-3. in mathematischer
Schreibweise; z.B.: ¬ true  (32  true)
b) Wie lauten die Wahrheitswerte der Ausdrücke 1.-3. ?
Lösung
zu a)
1. true  false  true
2. (10>2)  (¬true=false)
3. true=(4  3)  ¬(33)
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
19
2. Übungsaufgabe vom 31. 10.
Logische Ausdrücke
1. true & false | true
2. (10>2) & (!true==false)
3. true==(4!=3) & !(3<=3)
a) Notieren Sie die Ausdrücke 1.-3. in mathematischer
Schreibweise; z.B.: ¬ true  (32  true)
b) Wie lauten die Wahrheitswerte der Ausdrücke 1.-3. ?
Lösung
zu a)
zu b)
1. true  false  true
 true
2. (10>2)  (¬true=false)
 true
3. true=(4  3)  ¬(33)
 false
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03
20
Herunterladen