Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 4. Vorlesung WS 2002/2003.

Ähnliche Präsentationen


Präsentation zum Thema: "Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 4. Vorlesung WS 2002/2003."—  Präsentation transkript:

1 Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 4. Vorlesung WS 2002/2003

2 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/032 Übersicht Besprechung der Übungsaufgaben Boolesche Ausdrücke (Werte wahr/falsch) –Relationale Operatoren (==, >,<,..) –boolesche Operatoren (und, oder, nicht) Kontrollstrukturen –while –do - while –switch –break Arrays

3 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Hausaufgabe vom Erzeugen Sie 1000 zufällige double-Werte und geben Sie das Minimum, das Maximum sowie den Durchschnitt aller Werte aus.

4 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/034 Lösung zur Hausaufgabe public class Statistik extends Object { public static void main (String args[]) { double zufallswert, mittelwert; double min = 1; //Zufallswerte zwischen 0 und 1 double max = 0; double summe = 0; for (int i=0; i<1000; i=i+1){ zufallswert = Math.random(); summe = summe + zufallswert; if (zufallswert < min) min = zufallswert; if (zufallswert > max) max = zufallswert; } mittelwert = summe / 1000; System.out.print("Minimum: " + min + " Maximum: " + max + " Mittelwert: " + mittelwert ); }}

5 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/035 Alternative Lösung: statt if (zufallswert max) max = zufallswert; min = Math.min(min,zufallswert); max = Math.max(max,zufallswert);

6 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/036 Boolesche Ausdrücke Bedingungen in if oder for: Boolesche Ausdrücke Boolesche Ausdrücke liefern als Rückgabewert nur einen der zwei (Wahrheits-)Werte true oder false Beispiele: –if(i == 0)... –for(int i = 0 ; i < 1000 ; i = i + 1)...

7 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/037 Relationale Operatoren Relationale Operatoren bilden spezielle Boolesche Ausdrücke Relationale Operatoren setzen ihre Operanden zueinander in Beziehung und liefern den Wahrheitswert der Beziehung zurück. –Beispiele: 5 < 3 ergibt false (4-2)=2ergibt true Mathem. NotationJavaErläuterung ===Identität (Gleichheit)  !=Ungleichheit <>größer als  >=größer oder gleich als

8 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/038 Arithmetische und Boolesche Ausdrücke Die Operanden von Relationalen Operatoren können arithmetische Ausdrücke sein Beispiel: Math.min(5,9) == 5 * * Math.sin(Math.Pi/2) Arithmetischer Ausdruck 5 Arithmetischer Ausdruck 5 Boolescher Ausdruck wahr

9 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/039 Komplexe Boolesche Ausdrücke Bildung komplexer Boolescher Ausdrücke mit aussagenlogischen Operatoren (nicht, und, oder): Nicht / Negation: ¬ true = false in Java: ! Wert ¬ false = true Und-Verknüpfung:false  false = false in Java: Wert 1 & Wert 2 false  true = false true  false = false true  true = true Oder-Verknüpfung:false  false = false in Java: Wert 1 | Wert 2 false  true = true true  false = true true  true = true Beispiel: ((x < 7) | (y == 6)) & !(z < 5) Wert bei x = 2 ; y = 6 ; z = 1?

10 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0310 Operatorenreihenfolge (Priorität) PrioritätOperatorenAssoziativität 1 + -Vorzeichen (unär)rechts 1 !logische Negationrechts 1 (Typ)Typkonversionrechts 2 * / %Multiplikation, Division, Restlinks 3 + -Addition, Subtraktionlinks 4 < <=kleiner, kleiner gleichlinks 4 > >=größer, größer alslinks 5 ==Gleichheitlinks 5 !=Ungleichheitlinks 6 &logisches Undlinks 7 |logisches Oderlinks 8 =Wertzuweisungrechts

11 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0311 Verkürzte Auswertung Bool. Ausdrücke (I) Vor der Berechnung des Wertes eines (logischen) Operators werden die Werte aller seiner Operatoren bestimmt. Die Und-Verknüpfung && (Konjunktion) und Oder- Verknü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.

12 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0312 Verkürzte Auswertung Bool. 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.ä.)

13 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0313 Übung im GIS-Labor Schreibt ein Programm, das die Zahlen von 1 bis 50 aufzählt, wobei anstelle der durch drei oder durch sieben, aber nicht durch 5 teilbaren Zahlen „autsch“ ausgegeben werden soll. Tip: Verwendet die Operation % (Rest der ganzzahligen Division): z.B. 11 % 3 = 2 (11 geteilt durch 3 ist 9 mit Rest 2) z.B. 33 % 9 = 6 (33 geteilt durch 9 ist 27 mit Rest 6)

14 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0314 Kontrollstrukturen: while- und do-while-Schleife while-Schleife: Syntax: while ( boolean-Ausdruck ) Anweisung; Schleife mit Eintrittsbedingung –Anweisung wird 0 bis x-mal ausgeführt do-while-Schleife: Syntax: do Anweisung; while ( boolean-Ausdruck ); Schleife mit Wiederholungsbedingung –Anweisung wird mindestens einmal ausgeführt Hinweis: Sollen mehrere Anweisungen im Schleifenrumpf aus- geführt werden, so müssen diese durch geschweifte Klammern zu einem Block zusammengefasst werden.

15 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0315 Übung im GIS-Labor Schreibt ein Programm, das die natürlichen Zahlen solange summiert, bis die Summe die Zahl 3000 erstmals überschreitet. Gebt die Summe und die Anzahl der natürlichen Zahlen aus. Tip: Verwendet while-Schleifen: –while ( boolean-Ausdruck ) Anweisung; –do Anweisung; while ( boolean-Ausdruck );

16 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0316 Kontrollstrukturen: switch-Anweisung dient zur Realisierung von Fallunterscheidungen Syntax: switch (Ausdruck ) { case Wert1 : Anweisung1; // 1. Fall Ausdruck=Wert1 case Wert2 : Anweisung2; // 2. Fall Ausdruck=Wert2... default: Ansonsten-Anweisung; // ansonsten } es werden alle Anweisungen ab der ersten erfüllten case- Bedingung ausgeführt (inkl. der Ansonsten-Anweisung ) Ausdruck muss vom Typ byte, short, int oder char sein Wert i muss eine Konstante vom gleichen Typ wie Ausdruck sein

17 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0317 Beispiel 1 zur switch-Anweisung Programm: class Switch1 { public static void main (String args[]) { int i; for (i=0; i < 10; i=i+1) switch(i) { case 1: System.out.println("eins"); case 2: System.out.println("zwei"); case 5: System.out.println("fünf"); default: System.out.println(i); } Ausgabe: 0 eins zwei fünf 1 zwei fünf fünf Problem: fehlerhafte Ausgabe, da jeweils nach der ersten passenden case-Bedingung alle anderen Anweisungen ohne weitere Überprüfung ausgeführt werden!

18 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0318 Die break-Anweisung (1) dient zum Abbruch von switch-Fallunterscheidungen Syntax: switch ( Ausdruck ) { case Wert1 : { Anweisung1; break; } case Wert2 : { Anweisung2; break; }... default: Ansonsten-Anweisung; } Der Programmablauf wird bei Ausführung eines break- Befehls hinter der switch-Anweisung fortgesetzt!

19 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0319 Beispiel 2 zur switch-Anweisung Programm: class Switch2 { public static void main (String args[]) { int i; for (i=0; i < 10; i=i+1) switch(i) { case 1: {System.out.println("eins"); break;} case 2: {System.out.println("zwei"); break;} case 5: {System.out.println("fünf"); break;} default: System.out.println(i); } Ausgabe: 0 eins zwei 3 4 fünf Die Ausgabe ist nun korrekt, da die switch-Anweisung jeweils nach der Ausführung der passenden case-Bedingung mittels break verlassen wird.

20 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0320 Die break-Anweisung (2) kann auch zum Abbruch von Schleifen (for, while, do- while) eingesetzt werden Beispiel while-Schleife: while ( boolean-Ausdruck1 ) {... if ( boolean-Ausdruck2 ) break; // Abbruch... } Der Programmablauf wird hinter der Schleifenanweisung fortgesetzt

21 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0321 Arrays 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 Integer-Array mit fünf Elementen

22 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0322 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];

23 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0323 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).

24 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0324 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]; Die Größe eines einmal instantiierten Arrays kann nicht verändert werden. Größe eines Arrays kann mittels arrayname.length abgefragt werden: int laenge = my_array.length;

25 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0325 Beispiel zu Arrays Programm: // 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; minimum=my_array[0]; for (i=0; i

26 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0326 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 [d 1 ][d 2 ]...[d n ]; Beispiel: int[][] matrix = new int[6][3]; erschafft eine zweidimensionale Matrix mit 6 Zeilen und 3 Spalten

27 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0327 Hinweise zu Arrays (I) 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 (Array-Variablen sind Referenzen). Beispiel: int[] myArray=new int[3]; myArray Wert 1 Wert 2 Wert 3  kein simpler Vergleich zweier Arrays möglich: int[] a = {7,12,13,0};int i = 3; int[] b = {7,12,13,0};int j = 3; System.out.println(a = = b);System.out.println(i = = j); ergibt die Ausgabe false ergibt die Ausgabe true

28 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0328 Hinweise zu Arrays (II) Arrayvariablen sind Referenzen –Wertzuweisung zweier Arrayvariablen kopiert nicht das Array, sondern setzt beide auf denselben Speicherbereich: –Bsp: int[] a = {1,2,3}; int[] b = {4,5,6}; a = b; a[0] = 77; System.out.println(b[0]); a b vor Wertzuweisung a = b a b nach Wertzuweisung a = b

29 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0329 Hausaufgabe Schreibt ein Programm, das den Wert einer ganzzahligen Variablen w im Bereich von 20 bis 99 so als Text ausgibt, wie er ausgesprochen wird. Gebt dabei alle Werte von 20 bis 99 entsprechend aus. Ausgabe: w = 20 Ausgabe: "zwanzig" w = 98 Ausgabe: „achtundneunzig" w = 99 Ausgabe: "neunundneunzig"


Herunterladen ppt "Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 4. Vorlesung WS 2002/2003."

Ähnliche Präsentationen


Google-Anzeigen