Einführung in die Programmierung mit Java

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
Imperative Programmierung
Forschungszentrum caesar
Zusammenfassung der Vorwoche
SWITCH - Anweisung.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Robotik mit LEGO Mindstorms
Imperative Programmierung Funktionen und Parameter
Imperative Programmierung
Einführung in die Programmierung mit Java
Einführung in die Programmierung mit Java
Boolesche Ausdrücke Ist der Rückgabewert eines Ausdrucks vom Typ boolean, so wird dieser als Boolescher Ausdruck bezeichnet (nach dem Mathematiker George.
Diskrete Mathematik I Vorlesung Arrays-
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Zusammenfassung Vorwoche
DVG Ablaufsteuerung
Grundkonzepte Java - Klassendefinition
Java programmieren mit JavaKara
Informatik 1 Übung 2.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Einführung in die Programmierung
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Variablenkonzept Klassisch, in Java Basistyp
CuP - Java Neunte Vorlesung Entspricht Kapitel 4.2 und 5 des Skriptums
CuP - Java Sechste Vorlesung Entspricht ungefähr Kapitel 3. 1 – 3
PHP: Operatoren und Kontrollstrukturen
Programmiervorkurs WS 2014/15 Schleifen
Programmiervorkurs WS 2014 Referenzdatentypen
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Übersicht Nachtrag zu Ausdrücken
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Diskrete Mathematik I Vorlesung 2 Arrays.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 4. Vorlesung WS 2001/2002.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 8. Vorlesung WS 2002/2003.
Einführung in die Programmierung mit Java
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.
Einführung in die Programmierung mit Java
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003.
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/ Übungsaufgabe vom Logische Ausdrücke 1.true & false | true 2.(10>2)
Institut für Kartographie und Geoinformation Prof. Dr. L. Plümer, Dipl.-Ing. D. Dörschlag, Dr. G. Gröger Einführung in die Programmierung mit Java 13.
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.
Einführung in die Programmierung mit Java 5. Vorlesung WS 2002/2003 Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger,
Java-Kurs - 3. Übung Boolesche Operatoren vom Problem zum Programm
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 7. Vorlesung WS 2002/2003.
Institut für Kartographie und Geoinformation Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit Java 3. Vorlesung WS 2004/2005.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Institut für Kartographie und Geoinformation Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit Java 3. Vorlesung WS 2003/2004.
Einführung in die Programmierung mit Java
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
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.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Variablen und Datentypen
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Java Programme nur ein bisschen objektorientiert.
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Java-Kurs - 2. Übung primitive Datentypen, Konstanten
Einführung in die Programmierung mit Java
Unterschiedliche Kontrollstrukturen
Schleifen Datenfelder (Arrays) Verzweigungen
 Präsentation transkript:

Einführung in die Programmierung mit Java 4. Vorlesung WS 2002/2003

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

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

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

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

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

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)=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

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

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: Wert1 & Wert2 false  true = false true  false = false true  true = true Oder-Verknüpfung: false  false = false in Java: Wert1 | Wert2 false  true = true true  false = true true  true = true Beispiel: ((x < 7) | (y == 6)) & !(z < 5) Wert bei x = 2 ; y = 6 ; z = 1? G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

Operatorenreihenfolge (Priorität) Assoziativität 1 + - Vorzeichen (unär) rechts ! logische Negation (Typ) Typkonversion 2 * / % Multiplikation, Division, Rest links 3 Addition, Subtraktion 4 < <= kleiner, kleiner gleich > >= größer, größer als 5 == Gleichheit != Ungleichheit 6 & logisches Und 7 | logisches Oder 8 = Wertzuweisung G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

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

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

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

Kontrollstrukturen: while- und do-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. G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

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

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 Werti muss eine Konstante vom gleichen Typ wie Ausdruck sein G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

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: eins zwei fünf 1 2 3 4 5 6 7 8 9 Problem: fehlerhafte Ausgabe, da jeweils nach der ersten passenden case-Bedingung alle anderen Anweisungen ohne weitere Überprüfung ausgeführt werden! G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

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

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: eins zwei 3 4 fünf 6 7 8 9 Die Ausgabe ist nun korrekt, da die switch-Anweisung jeweils nach der Ausführung der passenden case-Bedingung mittels break verlassen wird. G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

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

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

Arbeiten mit Array-Variablen (I) 3 Schritte: (nur Schritt 2 ist wirklich neu) Deklaration int[] my_array; // Array von Integerzahlen Instantiierung my_array = new int[3]; // Erschafft Array mit 3 Elem. 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

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

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

Beispiel zu Arrays Ausgabe: 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<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 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

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

Hinweise zu Arrays (I) Arrays sind keine primitiven Datentypen myArray 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 Wert1 Wert2 Wert3 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 G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

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 1 2 3 4 5 6 b vor Wertzuweisung a = b a 1 2 3 4 5 6 b nach Wertzuweisung a = b G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 02/03

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