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 (32 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 (32 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) ¬(33) 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 (32 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) ¬(33) false G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03 20