Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Einführung in die Programmierung mit Java

Ähnliche Präsentationen


Präsentation zum Thema: "Einführung in die Programmierung mit Java"—  Präsentation transkript:

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

2 Ü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 Semester - WS 02/03

3 1. Hausaufgabe vom 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 Semester - WS 02/03

4 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 Semester - WS 02/03

5 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 Semester - WS 02/03

6 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 Semester - WS 02/03

7 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 Semester - WS 02/03

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

9 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 Semester - WS 02/03

10 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 Semester - WS 02/03

11 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 Semester - WS 02/03

12 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 Semester - WS 02/03

13 Ü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 Semester - WS 02/03

14 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 Semester - WS 02/03

15 Ü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 Semester - WS 02/03

16 Kontrollstrukturen: switch-Anweisung
dient zur Realisierung von Fallunterscheidungen Syntax: switch (Ausdruck ) { case Wert1 : Anweisung1; // 1. Fall Ausdruck=Wert1 case Wert2 : Anweisung2; // 2. Fall Ausdruck=Wert 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 Semester - WS 02/03

17 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 Semester - WS 02/03

18 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 Semester - WS 02/03

19 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 Semester - WS 02/03

20 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 Semester - WS 02/03

21 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 Semester - WS 02/03

22 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 Semester - WS 02/03

23 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 Semester - WS 02/03

24 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 Semester - WS 02/03

25 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 Semester - WS 02/03

26 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 Semester - WS 02/03

27 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 Semester - WS 02/03

28 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 Semester - WS 02/03

29 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 = Ausgabe: "zwanzig" w = Ausgabe: „achtundneunzig" w = Ausgabe: "neunundneunzig" G. Gröger - Einführung in die Programmierung mit Java Semester - WS 02/03


Herunterladen ppt "Einführung in die Programmierung mit Java"

Ähnliche Präsentationen


Google-Anzeigen