Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Institut für Kartographie und Geoinformation Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit Java 4. Vorlesung WS 2004/2005.

Ähnliche Präsentationen


Präsentation zum Thema: "Institut für Kartographie und Geoinformation Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit Java 4. Vorlesung WS 2004/2005."—  Präsentation transkript:

1 Institut für Kartographie und Geoinformation Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit Java 4. Vorlesung WS 2004/2005

2 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/052 Hausaufgabe: Erzeugt 4 zufällige double-Werte und gebt das Minimum, das Maximum sowie den Durchschnitt aller Werte aus. Hinweis: Das Minimum (Maximum) der Werte ist der kleinste (größte) aller Werte.

3 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/053 Hausaufgabe: Lösung public class MinMaxDurchschnitt{ public static void main(String[] args) { double min, max; double a1 = Math.random(); double a2 = Math.random(); double a3 = Math.random(); double a4 = Math.random(); max = Math.max(a1,a2); max = Math.max(max,a3); max = Math.max(max,a4); min = Math.min(a1,a2); min = Math.min(min,a3); min = Math.min(min,a4); double durchschnitt = (a1 + a2 + a3 + a4)/4; System.out.println(...); }

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

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

6 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/056 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

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

8 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/058 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?

9 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/059 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

10 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0510 Beispiel: For-Schleife mit komplexer Bedingung Es sollen die Zahlen von 1 bis 100 addiert werden, jedoch soll vorher abgebrochen werden,wenn die Summe die Zahl 2000 erreicht hat. int Summe =0; for(int i = 1; (i <= 100 & Summe < 2000); i = i+1) { Summe = Summe + i; }

11 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0511 Ü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)

12 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0512 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.

13 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0513 Ü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 );

14 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0514 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

15 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0515 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!

16 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0516 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!

17 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0517 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.

18 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0518 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

19 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0519 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

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

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

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

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

24 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0524 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

25 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0525 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

26 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0526 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

27 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/0527 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 Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit Java 4. Vorlesung WS 2004/2005."

Ähnliche Präsentationen


Google-Anzeigen