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 3. 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 3. 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 3. Vorlesung WS 2002/2003

2 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/032 Übersicht Besprechung der Übungsaufgabe Nachtrag zu Ausdrücken –Zahlenkonstanten in arithmetischen Ausdrücken –Verkürzt ausgewertete logische Ausdrücke Kontrollstrukturen –Schleifen –bedingte Programmausführung Komplexe Datentypen: Arrays –ein- und mehrdimensionale Arrays

3 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/033 Zahlenwerte in arithmetischen Ausdrücken ganzzahlige Konstanten (z.B. 113, -73147, 0) werden immer als int interpretiert Gleitkommakonstanten (z.B. 3.1415, -4.56e-10, 0.0) werden immer als double interpretiert Bei Zuweisung eines konstanten Zahlenwertes zu einer Variablen eines kleineren Typs muss eine explizite Typumwandlung angegeben werden. Beispiele: float f = (float) 3.0; short kleinezahl = (short) 10;

4 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/034 Typkonversion Problemlos (vom kleineren zum größeren): double d; int i = 3; d = i + 7; Explizit (vom größeren zum kleineren): double d = 3.0; int i; i = (int) (d + 7); Wert_mit_neuem_Typ = (Typname) Wert_mit_altem_Typ explizite Typkonvertierung wird als Casting bezeichnet Primitive Datentypen

5 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/035 Mathematische Funktionen: die Klasse "Math" Die wichtigsten mathematischen Funktionen sind in der Klasse Math definiert. Funktionen (präziser: Methoden) von Math können in Ausdrücken verwendet werden –Aufruf der Funktion f(x) durch Voranstellen von des Klassennamens „Math.“ –Beispiel: double a = Math.sin(34.21); Die Klasse Math ist Bestandteil der Standard- Funktionsbibliothek java.lang Die Funktionen sind in der Online-Dokumentation von Java (des JDK) erläutert.

6 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/036 Funktionen der Klasse Math (1) Trigonometrische Funktionen –double sin(double x)Sinus –double cos(double x)Cosinus –double tan(double x)Tangens –double asin(double x)Arcussinus (sin -1 ) –double acos(double x)Arcuscosinus (cos -1 ) –double atan(double x)Arcustangens (tan -1 ) Winkel werden im Bogenmaß angegeben! Potenzierung, Wurzeln, Logarithmen –double exp(double x)Eulerfunktion e x –double log(double x)natürlicher Logarithmus –double pow(double x, double y)x y –double sqrt(double x)Quadratwurzel

7 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/037 Funktionen der Klasse Math (2) Minimum und Maximum –int min(int x, int y)minimum(x,y) –long min(long x, long y)minimum(x,y) –float min(float x, float y)minimum(x,y) –double min(double x, double y)minimum(x,y) –int max(int x, int y)maximum(x,y) –long max(long x, long y)maximum(x,y) –float max(float x, float y)maximum(x,y) –double max(double x, double y)maximum(x,y) Mathematische Konstanten (Pi, E) –double PIKreiszahl  –double EEulerzahl e

8 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/038 Funktionen der Klasse Math (3) Runden und Abschneiden –int abs(int x)| x | –long abs(long x)| x | –float abs(float x)| x | –double abs(double x)| x | –double ceil(double x)  x  –double floor(double x)  x  –int round(float x)  x+0.5  Zufallszahlen –double random()0  Zufallszahl < 1

9 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/039 Dokumentation ist abrufbar über Forté: Die Klassen-Dokumentation des JDK Alle Klassen der Standard-Funktionsbibliothek sind vollständig dokumentiert 1. Anwählen des Edit-Tabs 2. Anwählen des Javadoc-Tabs 3. Aufklappen des Javadoc- Verzeichnisses 4. Öffnen des Browsers durch Doppelklick auf index

10 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0310 Klassen-Dokumentation in Forté (1) Klassen-Dokumentation

11 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0311 Klassen-Dokumentation in Forté (2) Alle Klassen der Java-Standard- Bibliothek Erläuterungen

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

13 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0313 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 Und-Verknüpfung:false  false = false false  true = false true  false = false true  true = true Und-Verknüpfung in Java: Wert 1 & Wert 2 Oder-Verknüpfung:false  false = false false  true = true true  false = true true  true = true Oder-Verknüpfung in Java: Wert 1 | Wert 2

14 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0314 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)=2ergibt true Mathem. NotationJavaErläuterung ===Identität (Gleichheit)  !=Ungleichheit <<kleiner als  <=kleiner oder gleich als >>größer als  >=größer oder gleich als

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

16 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0316 Übung im GIS-Labor Simulation eines Würfels: Schreibt ein Programm, das bei jedem Aufruf eine zufällige ganze Zahl zwischen 1 und 6 ausgibt.

17 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0317 1. Übungsaufgabe vom 31. 10. Schreiben Sie ein Programm, das bei jedem Aufruf eine zufällige ganze Zahl zwischen 1 und 6 ausgibt. Lösung: Verwendung von Math.random() Programm „Zufall.java“ class Zufall { public static void main (String args[]) { double z = Math.random(); // 0 <= z < 1 int würfel = (int) z*6.0+1.0; // 1 <= würfel <= 6 System.out.print("Zufallszahl: "); System.out.println(würfel); }

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

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

20 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0320 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) zu b)  true  false

21 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0321 Kontrollstrukturen: for-Schleife dient zur Iteration von Anweisungen Syntax: for ( Initialisierung ; Test ; Inkrementierung ) Anweisung; // Schleifenrumpf Initialisierung ist eine Anweisung, in der typischerweise eine Zählvariable (i.d.R. ganzzahlig) mit einem Startwert initialisiert wird. Test ist ein boolean-Ausdruck. Der Schleifenrumpf wird solange wiederholt, wie der Ausdruck wahr (true) ist. Inkrementierung ist eine Anweisung, in der typischerweise die Zählvariable inkrementiert (erhöht) oder dekrementiert (erniedrigt) wird.

22 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0322 Beispiel zur for-Schleife Anmerkung: Sind im Schleifenrumpf mehrere Anweisungen auszuführen, so sind diese Anweisungen durch geschweifte Klammern zu einem Block zusammenzufassen. Programm: class Schleife1 { public static void main (String args[]) { int i; for (i=1; i<=5; i=i+1) System.out.println("Hallo Welt!"); } Ausgabe: Hallo Welt! Initialisierung Test Inkrementierung Schleifenrumpf

23 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0323 Kontrollstrukturen: if-then-else dient zur bedingten Ausführung von Programmteilen Syntax: if ( boolean-Ausdruck ) Anweisung1; // Then-Teil else Anweisung2; // Else-Teil Anmerkung: Sind im Then- oder Else-Teil mehrere Anweisungen auszuführen, so sind diese Anweisungen durch geschweifte Klammern zu einem Block zusammenzufassen.

24 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0324 Beispiel zur for-Schleife und if-then-else Programm: class Schleife2 { public static void main (String args[]) { int i; for (i=1; i<=8; i=i+1) { System.out.print(i); if (i % 2 == 0) // ist i modulo 2 = 0? System.out.println(" ist gerade"); else System.out.println(" ist ungerade"); } Ausgabe: 1 ist ungerade 2 ist gerade 3 ist ungerade 4 ist gerade 5 ist ungerade 6 ist gerade 7 ist ungerade 8 ist gerade

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

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

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

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

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

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

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

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

33 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0333 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=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); } Ausgabe: Die kleinste Zahl ist -23

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

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

36 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0336 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 Wert 1 Wert 2 Wert 3  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

37 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0337 Übungsaufgaben 1.Erzeugen Sie ein Array mit 1000 zufälligen double- Werten und geben Sie das Minimum, das Maximum sowie den Durchschnitt aller Werte aus. 2.Drehen Sie die Reihenfolge der Elemente eines Arrays mit Integerzahlen um und geben Sie das Ergebnis aus. Beispiel:gegeben: {4,12,67,90,-10,39,0,1} Ausgabe: {1,0,39,-10,90,67,12,4} a)unter Verwendung eines zweiten Arrays (Zielarray) b)innerhalb des selben Arrays

38 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/0338 Ü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. ?


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

Ähnliche Präsentationen


Google-Anzeigen