1 / 27

Einführung in die Programmierung mit Java

Einführung in die Programmierung mit Java. 4. Vorlesung WS 2004/2005. 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. Hausaufgabe: Lösung.

jaguar
Download Presentation

Einführung in die Programmierung mit Java

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Einführung in die Programmierung mit Java 4. Vorlesung WS 2004/2005

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

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

  4. Übersicht • 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 04/05

  5. 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 04/05

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

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

  8. Komplexe Boolesche Ausdrücke • Bildung komplexer Boolescher Ausdrücke mit aussagenlogischen Operatoren (nicht, und, oder): • Nicht / Negation:¬ true = falsein Java: !Wert¬ false = true • Und-Verknüpfung: false  false = falsein 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 04/05

  9. Operatorenreihenfolge (Priorität) G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/05

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

  11. Ü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 04/05

  12. while-Schleife: Syntax: while ( boolean-Ausdruck ) Anweisung; Schleife mit Eintrittsbedingung Anweisung wird 0 bis x-mal ausgeführt Kontrollstrukturen: while- und do-while-Schleife • 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 04/05

  13. Ü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 04/05

  14. Kontrollstrukturen: switch-Anweisung • dient zur Realisierung von Fallunterscheidungen • Syntax:switch (Ausdruck ) {case Wert1 : Anweisung1; // 1. Fall Ausdruck=Wert1case 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 04/05

  15. 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 2 3 4 fünf 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 04/05

  16. 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 04/05

  17. 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 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 04/05

  18. 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 04/05

  19. 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 04/05

  20. 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 04/05

  21. Arbeiten mit Array-Variablen (II) Alternative: • alle drei Schritte auf einmal • Deklaration mit impliziterErschaffung 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 04/05

  22. Hinweise zu Arrays (I) • Größe eines Arrays kann erst zur Laufzeit feststehen:int[] my_array;int i = ...; //zur Laufzeit berechnetmy_array = new int[i]; • Die Größe eines einmal instantiierten Arrays kann nicht verändert werden. • Größe eines Arrays kann mittelsarrayname.lengthabgefragt werden:int laenge = my_array.length; G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/05

  23. Beispiel zu Arrays Ausgabe: Die kleinste Zahl ist -23 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); } } G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/05

  24. 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 04/05

  25. Wert1 Wert2 Wert3 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 • 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 falseergibt die Ausgabe true G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 04/05

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

  27. 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 04/05

More Related