Javakurs2006/Uebungsaufgaben: Unterschied zwischen den Versionen
PaulG (Diskussion | Beiträge) |
|||
(73 dazwischenliegende Versionen von 10 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | + | Weitere Wiederholungsaufgaben gibt es [http://www.javaranch.com/cattledrive.jsp|bei der Java Ranch] | |
− | === 1. === | + | == Variablen == |
+ | * Das gleiche Thema im Buch [http://www.galileocomputing.de/openbook/javainsel5/javainsel02_002.htm#Rxx747java02002040000A91F032100 Java ist auch eine Insel] | ||
+ | === Variablendeklaration und Initialisierung === | ||
+ | <nowiki> | ||
+ | class Beispiel { | ||
+ | public static void main(String [] ignored) { | ||
+ | int aWholeNumber; | ||
+ | double notAWholeNumber; | ||
+ | String aString; | ||
+ | |||
+ | aWholeNumber = 0; | ||
+ | notAWholeNumber = 0.0; | ||
+ | aString = ""; | ||
+ | System.out.println(aWholeNumber); | ||
+ | System.out.println(notAWholeNumber); | ||
+ | System.out.println(aString); | ||
+ | |||
+ | int anotherWholeNumber = 0; | ||
+ | double anotherNotSoWholeNumber = 0; | ||
+ | String anotherString = ""; | ||
+ | System.out.println(anotherWholeNumber); | ||
+ | System.out.println(anotherNotSoWholeNumber); | ||
+ | System.out.println(anotherString); | ||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | * An welcher Stelle im Programm wird die Variable ''aWholeNumber'' definiert? | ||
+ | * An welcher Stelle im Programm wird die Variable ''aWholeNumber'' initialisiert? | ||
+ | Beantworte diese Fragen auch für die Variablen: ''notAWholeNumber'', ''aString'', ''anotherWholeNumber'', ''anotherNotSoWholeNumber'', ''anotherString'' | ||
+ | |||
+ | Erkläre deine Meinung einem Tutor. | ||
+ | |||
+ | === Selber Deklarationen und Definitionen durchführen === | ||
+ | <nowiki> | ||
+ | class Beispiel { | ||
+ | public static void main(String [] ignored) { | ||
+ | // deklariere eine Variable "birnen" vom Typ int | ||
+ | |||
+ | // weise ihr den Wert drei zu | ||
+ | |||
+ | // System.out.println("3 erwartet: " + birnen); | ||
+ | // addiere fünf zu dem Wert | ||
+ | |||
+ | // System.out.println("8 erwartet: " + birnen); | ||
+ | // deklariere eine Variable "aepfel" und weise ihr den Wert fünf zu | ||
+ | |||
+ | // System.out.println("5 erwartet: " + aepfel); | ||
+ | // subtrahiere zwei von dem Wert | ||
+ | |||
+ | // System.out.println("3 erwartet: " + aepfel); | ||
+ | |||
+ | |||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | === Zuweisung an Variablen === | ||
+ | <nowiki> | ||
+ | class Beispiel { | ||
+ | public static void main(String [] ignored) { | ||
+ | System.out.println(0); | ||
+ | int zero = 0; | ||
+ | System.out.println(zero); | ||
+ | int one = 1; | ||
+ | int whatsThis = zero; | ||
+ | System.out.println(whatsThis); | ||
+ | whatsThis = one; | ||
+ | System.out.println(whatsThis); | ||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | Überlege dir, was dieses Code-Fragment ausgeben würde. | ||
+ | Führe es aus und vergleiche die Resultate: Kopiere hierfür den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus. | ||
+ | * Was sind die Unterschiede? | ||
+ | * Warum? | ||
+ | Erkläre einem Tutor, zu welchem Schluss du gekommen bist und frage ihn, ob du Recht hast. | ||
+ | |||
+ | === Variablen ändern ihre Werte === | ||
+ | <nowiki> | ||
+ | class Test { | ||
+ | public static void main(String [] ignored) { | ||
+ | int number = 1; | ||
+ | System.out.println(number); | ||
+ | number = 1; | ||
+ | System.out.println(number); | ||
+ | number = 2; | ||
+ | System.out.println(number); | ||
+ | number = 3; | ||
+ | System.out.println(number); | ||
+ | number = 1; | ||
+ | System.out.println(number); | ||
+ | number = 17; | ||
+ | System.out.println(number); | ||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | Überlege dir, was dieser Code ausgeben würde. | ||
+ | Schreibe ihn in eine Datei, kompiliere ihn und führe ihn aus. | ||
+ | * Was gibt er tatsächlich aus? | ||
+ | * Gibt es Unterschiede? | ||
+ | |||
+ | === Formatierung und Namen === | ||
+ | Wieso haben wir die Code-Beispiele nach den geschweiften Klammern eingerückt und die Variablen so benannt, wie wir es taten und nicht so: | ||
+ | <nowiki> | ||
+ | class _{static long _ | ||
+ | (long __,long ___) { | ||
+ | return __==0 ?___+ 1: | ||
+ | ___==0?_(__-1,1):_(__ | ||
+ | -1,_(__, ___-1)) ; } | ||
+ | static {int _=2 ,___ | ||
+ | == 2;System.out.print( | ||
+ | "a("+_+’,’+___+ ")="+ | ||
+ | _ (_, ___) ) ;System | ||
+ | .exit(1);}}//(C) Ulli | ||
+ | </nowiki> | ||
+ | Nenne mindestens einen Grund und erkläre ihn deinem Tutor. | ||
+ | |||
+ | Etwas weniger Extrem, wieso haben wir unser zweites Beispiel nicht so gestellt? | ||
+ | <nowiki> | ||
+ | class Beispiel {public static void main | ||
+ | (String [] ignored) { | ||
+ | System.out.println(0); int zero = 0; | ||
+ | System.out.println(zero); | ||
+ | int one = 1; | ||
+ | int whatsThis = zero; | ||
+ | System.out. | ||
+ | println(whatsThis); | ||
+ | whatsThis = one; System.out.println(whatsThis) | ||
+ | ;}} | ||
+ | </nowiki> | ||
+ | Nenne mindestens einen Grund und erkläre ihn deinem Tutor. | ||
+ | |||
+ | Wieso haben wir unser zweites Beispiel nicht so gestellt? | ||
+ | <nowiki> | ||
+ | class b { | ||
+ | public static void main(String [] i) { | ||
+ | System.out.println(0); | ||
+ | int a = 0; | ||
+ | System.out.println(a); | ||
+ | int b = 1; | ||
+ | int c = a; | ||
+ | System.out.println(c); | ||
+ | c = b; | ||
+ | System.out.println(c); | ||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | Nenne mindestens einen Grund und erkläre ihn deinem Tutor. | ||
+ | |||
+ | === Variablen mit verschiedenen Typen zuweisen === | ||
+ | <nowiki> | ||
+ | class Test { | ||
+ | public static void main(String [] ignored) { | ||
+ | |||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | == if == | ||
+ | === Einfache if-Bedingung === | ||
+ | Überlege dir, was das folgende Code-Fragment macht. | ||
+ | Führe es aus und vergleiche mit deinen Erwartungen. | ||
+ | |||
+ | (Kopiere den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus) | ||
+ | * Was sind die Unterschiede? | ||
+ | * Warum? | ||
+ | Erkläre einem Tutor, zu welchem Schluss du gekommen bist und frage ihn, ob du Recht hast. | ||
<nowiki> | <nowiki> | ||
public class If_Uebung1 { | public class If_Uebung1 { | ||
Zeile 12: | Zeile 180: | ||
/* | /* | ||
− | * | + | * Wir erzeugen uns hier eine Zufallszahl im |
* Bereich 1-6. Warum funktioniert das so? | * Bereich 1-6. Warum funktioniert das so? | ||
* Math.random ist eine statische Funktion im | * Math.random ist eine statische Funktion im | ||
− | * Math-Paket, | + | * Math-Paket, die uns eine double-Zahl kleiner |
− | * als 1.0 aber groesser oder gleich 0 | + | * als 1.0, aber groesser oder gleich 0 liefert. |
− | * Mit 6 multipliziert und um | + | * Mit 6 multipliziert und um Eins erhöht erhalten wir |
* Zahlen von 1.0 bis 6.99999... | * Zahlen von 1.0 bis 6.99999... | ||
* Durch das Umwandeln in int werden die Nachkommastellen abgeschnitten | * Durch das Umwandeln in int werden die Nachkommastellen abgeschnitten | ||
Zeile 42: | Zeile 210: | ||
</nowiki> | </nowiki> | ||
− | === | + | === if-else-Konstrukt === |
+ | Überlege dir, was das folgende Code-Fragment macht. | ||
+ | Führe es aus und vergleiche mit deinen Erwartungen. | ||
+ | |||
+ | (Kopiere den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus) | ||
+ | * Was sind die Unterschiede? | ||
+ | * Warum? | ||
+ | Erkläre einem Tutor, zu welchem Schluss du gekommen bist und frage ihn, ob du Recht hast. | ||
<nowiki> | <nowiki> | ||
public class If_Uebung2 { | public class If_Uebung2 { | ||
− | / | + | public static void main (String[] args){ |
− | + | ||
− | + | int x=10; | |
− | + | if (x>5) { | |
− | + | System.out.println("x ist groesser als 5"); | |
− | + | } else { | |
− | + | System.out.println("x ist kleiner/gleich 5"); | |
− | + | } | |
+ | |||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | === Mehrere if-Bedingungen === | ||
+ | Überlege dir, was das folgende Code-Fragment macht. | ||
+ | Führe es aus und vergleiche mit deinen Erwartungen. | ||
+ | |||
+ | (Kopiere den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus) | ||
+ | |||
+ | Was macht das Programm für verschiedene Werte von ''wert''?. | ||
+ | |||
+ | Welche If-Abfragen sind unnötig, weil man die Ausgaben in else-Zweige von bereits vorhandenen schreiben könnte? | ||
+ | <nowiki> | ||
+ | public class If_Uebung3 { | ||
public static void main(String[] args) { | public static void main(String[] args) { | ||
Zeile 86: | Zeile 277: | ||
</nowiki> | </nowiki> | ||
+ | == while == | ||
+ | === Einfache Schleife === | ||
+ | Schreibe eine Schleife die unendlich oft "Hallo Welt!" ausgibt. | ||
+ | |||
+ | === Begrenzte Schleifen === | ||
+ | * Schreibe eine for-Schleife, die 10 mal "Hallo Welt!!" ausgibt. | ||
+ | * Verändere diese Schleife, so dass sie abwechselnd "Hallo Welt!" und "Ich bin im Javakurs!" ausgibt | ||
+ | ** Es gibt zwei Möglichkeiten das zu realisieren - finde die andere. | ||
+ | |||
+ | === einfache while-Schleife === | ||
+ | Überlege dir, was das folgende Code-Fragment macht. Welche Zahlen werden ausgegeben? | ||
+ | Führe es aus und vergleiche mit deinen Erwartungen. | ||
+ | |||
+ | (Kopiere den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus) | ||
+ | |||
+ | <nowiki> | ||
+ | public class While_Uebung1 { | ||
+ | |||
+ | public static void main(String[] args) { | ||
+ | |||
+ | int x=10; | ||
+ | while (x>0){ | ||
+ | System.out.println(" x=" + x); // Anhaengen von x an den String | ||
+ | x=x-1; | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | == for == | ||
+ | === for-Schleifen zum Zählen === | ||
+ | Überlege dir, was das folgende Code-Fragment macht. Welche Zahlen werden ausgegeben? | ||
+ | Führe es aus und vergleiche mit deinen Erwartungen. | ||
+ | |||
+ | (Kopiere den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus) | ||
− | |||
− | |||
<nowiki> | <nowiki> | ||
public class For_Uebung1 { | public class For_Uebung1 { | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
public static void main(String[] args) { | public static void main(String[] args) { | ||
Zeile 110: | Zeile 325: | ||
System.out.println("zweite for Schleife:"); | System.out.println("zweite for Schleife:"); | ||
− | for (int i = 1; i <= 10; i = i + 2) { | + | for (int i = 1; i <== 10; i = i + 2) { |
System.out.print(" " + i); | System.out.print(" " + i); | ||
} | } | ||
Zeile 116: | Zeile 331: | ||
System.out.println("dritte for Schleife:"); | System.out.println("dritte for Schleife:"); | ||
− | for (int i = 1; i <= 10; i = i * 2) { | + | for (int i = 1; i <== 10; i = i * 2) { |
System.out.print(" " + i); | System.out.print(" " + i); | ||
} | } | ||
Zeile 126: | Zeile 341: | ||
</nowiki> | </nowiki> | ||
− | === | + | === for-Schleife und if-Bedingung === |
− | |||
− | |||
<nowiki> | <nowiki> | ||
public class ForIf_Uebung { | public class ForIf_Uebung { | ||
Zeile 143: | Zeile 356: | ||
} | } | ||
</nowiki> | </nowiki> | ||
+ | |||
+ | == Methoden == | ||
+ | === Argumente === | ||
+ | <nowiki> | ||
+ | class Beispiel { | ||
+ | public static void main(String [] ignored) { | ||
+ | ausgabe(1, "Martin"); | ||
+ | ausgabe("Arthur", 2); | ||
+ | ausgabe(3, "Florian"); | ||
+ | ausgabe("Robert", 4); | ||
+ | } | ||
+ | |||
+ | static void ausgabe(int i, String string) { | ||
+ | System.out.println(i + ": " + string); | ||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | * Überlege was dieses Beispiel ausgibt. | ||
+ | * Probiere es aus und erkläre den Unterschied. (Wenn Fehler auftreten, erkläre wieso) | ||
+ | * Erkläre das einem Tutor | ||
+ | |||
+ | === Was tut das? === | ||
+ | Überlege dir, was das folgenden Code-Fragmente machen. Welche Zahlen werden ausgegeben? | ||
+ | Führe sie aus und vergleiche mit deinen Erwartungen. | ||
+ | |||
+ | (Kopiere den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus) | ||
+ | |||
+ | <nowiki> | ||
+ | //file: Methoden1.java | ||
+ | class Methoden1 { | ||
+ | public static void main (String[] arguments) { | ||
+ | System.out.println( gibMirNeZahl() ); | ||
+ | } | ||
+ | |||
+ | public static double gibMirNeZahl() { | ||
+ | return 15.3; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | //file: Methoden2.java | ||
+ | class Methoden3 { | ||
+ | public static void main (String[] arguments) { | ||
+ | System.out.println( mathematik(1, 2) ); | ||
+ | } | ||
+ | |||
+ | public static boolean mathematik(int argument1, int argument2) { | ||
+ | return (argument1 + 5) < (argument2 * 2); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | //file: Methoden3.java | ||
+ | class Methoden3 { | ||
+ | public static void main (String[] arguments) { | ||
+ | System.out.println( mathematik(1, 2) ); | ||
+ | System.out.println( mathematik(1, 5) ); | ||
+ | System.out.println( mathematik(3, 4) ); | ||
+ | } | ||
+ | |||
+ | public static boolean mathematik(int argument1, int argument2) { | ||
+ | return (argument1 + 5) < (argument2 * 2); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | //file: Methoden4.java | ||
+ | class Methoden4 { | ||
+ | public static void main (String[] arguments) { | ||
+ | int eineZahl = 2; | ||
+ | System.out.println( mathematik(4, eineZahl) ); | ||
+ | eineZahl = 5; | ||
+ | System.out.println( mathematik(2, eineZahl) ); | ||
+ | System.out.println( mathematik(eineZahl, 4) ); | ||
+ | } | ||
+ | |||
+ | public static boolean mathematik(int argument1, int argument2) { | ||
+ | return (argument1 + 5) < (argument2 * 2); | ||
+ | } | ||
+ | } | ||
+ | </nowiki> | ||
+ | |||
+ | === Selbst einige Methoden schreiben! === | ||
+ | Im Folgenden wollen wir einige (mathematische)-Methoden programmieren. | ||
+ | |||
+ | * Lege eine neue Klasse "MatheAufgabe" an. | ||
+ | * Füge eine <code>public static void main(String[] arguments)</code> Methode hinzu. | ||
+ | * Deklariere innerhalb der <code>main</code>-Methode eine <code>double</code>-Variable. | ||
+ | * Belege diese Variable dem Wert <code>5/3</code> und gib den Inhalt der Variable auf dem Bildschirm aus. | ||
+ | * Schreibe nun eine Methode <code>public static double add(double x, double y)</code>, die die Summe der beiden übergebenen Zahlen <code>x</code> und <code>y</code> zurückgibt. | ||
+ | ** Teste deine Methode mit verschiedenen Eingaben wie z.B. | ||
+ | <nowiki> | ||
+ | System.out.println(" 1.0 + 2.0 = " + add ( 1.0 , 2.0 ) ); | ||
+ | double x = 5.0; | ||
+ | System.out.println( " " + x + " + 2.0 = " + add ( x , 2.0) ); | ||
+ | System.out.println( " 2.0 + " + x + " = " + add ( 2.0 , x) ); | ||
+ | x = add ( x , 2.0); | ||
+ | System.out.println( x); | ||
+ | </nowiki> | ||
+ | * Schreibe nun eine Methode <code>sub</code>, welche die Differenz zweier übergebener Werte zurückgibt. | ||
+ | ** Teste deine Methode wie eben! | ||
+ | ** Überprüfe, ob x == (x - y ) + y gilt! (natürlich mit deinen <code>sub</code> und <code>add</code>-Modthoden) | ||
+ | * Schreibe nun eine <code>mul</code>-Methode. | ||
+ | ** Benutze dazu nicht den operator *. Rufe statt dessen deine add-Methode auf. | ||
+ | ** Teste deine Methode wie eben! | ||
+ | * Schreibe nun eine <code>public static double pow ( double basis, int exponent)</code>, die <code>basis</code> hoch <code>exponent</code> zurückgibt. <code>pow(2,3)</code> wurde z.B. 2^3=8 zurückgeben. | ||
+ | ** Benutze auch hier weder *, noch Math.pow(). Nutze statt dessen deine gerade geschriebene mul-Methode. | ||
+ | ** Teste deine Methode wie gehabt! | ||
+ | **: Was liefert deine Methode wenn der Exponent 0 ist? | ||
+ | **: Was liefert deine Methode wenn der Exponent negativ ist? | ||
+ | |||
+ | == Arrays (eindimensional und n-dimensional) == | ||
+ | === Eindimensionale Arrays === | ||
+ | Folgendes Array-Konstrukt wird initialisiert | ||
+ | <nowiki> | ||
+ | int[] meinArray1 = new int[5]; | ||
+ | meinArray1[0] = 0; | ||
+ | meinArray1[1] = 1; | ||
+ | meinArray1[2] = 2; | ||
+ | meinArray1[3] = 3; | ||
+ | meinArray1[4] = 4; | ||
+ | |||
+ | int[] meinArray2 = new int[3]; | ||
+ | meinArray2[0] = 0; | ||
+ | meinArray2[1] = 1; | ||
+ | meinArray2[2] = 2; | ||
+ | </nowiki> | ||
+ | |||
+ | |||
+ | Was geben die folgenden "system.out.println" jeweils aus? | ||
+ | Vergleiche die Ausgabe mit Deinem Ergebnis. | ||
+ | |||
+ | 1.1. | ||
+ | System.out.println(meinArray1.length); | ||
+ | |||
+ | 1.2. | ||
+ | System.out.println(meinArray2.length); | ||
+ | |||
+ | 1.3. | ||
+ | System.out.println("Ergebnis:"+meinArray1[1]); | ||
+ | |||
+ | 1.4. | ||
+ | System.out.println("Ergebnis:"+meinArray2[1]); | ||
+ | |||
+ | 1.5. | ||
+ | System.out.println("Ergebnis:"+meinArray1[4]); | ||
+ | |||
+ | 1.6. | ||
+ | System.out.println("Ergebnis:"+meinArray2[4]); | ||
+ | |||
+ | 1.7. | ||
+ | System.out.println(meinArray1.length-1); | ||
+ | |||
+ | 1.8. | ||
+ | System.out.println(meinArray2.length-1); | ||
+ | |||
+ | 1.9. | ||
+ | System.out.println("Ergebnis:"+meinArray1[0]); | ||
+ | |||
+ | 1.10. | ||
+ | System.out.println("Ergebnis:"+meinArray2[0]); | ||
+ | |||
+ | |||
+ | === Zweidimensionale Arrays === | ||
+ | Folgendes Array-Konstrukt wird initialisiert | ||
+ | <nowiki> | ||
+ | int[][] meinArray3 = new int[2][3]; | ||
+ | meinArray3[0][0] = 1; | ||
+ | meinArray3[1][1] = 2; | ||
+ | meinArray3[0][2] = 1; | ||
+ | meinArray3[1][0] = 2; | ||
+ | meinArray3[0][1] = 1; | ||
+ | meinArray3[1][2] = 2; | ||
+ | </nowiki> | ||
+ | |||
+ | Was geben die folgenden "system.out.println" jeweils aus? | ||
+ | Vergleiche die Ausgabe mit Deinem Ergebnis. | ||
+ | |||
+ | Tipp: Aus der Mathematik kennst Du Matrizen. Ihre Größe wird mit (n x m) angegeben. | ||
+ | |||
+ | System.out.println(meinArray3[0][0]+meinArray3[0][1]+meinArray3[0][2]); | ||
+ | System.out.println(meinArray3[1][0]+meinArray3[1][1]+meinArray3[1][2]); | ||
+ | |||
+ | |||
+ | === Dreidimensionale Arrays === | ||
+ | Folgendes Array-Konstrukt wird initialisiert | ||
+ | <nowiki> | ||
+ | int[][][] meinArray3D = new int[2][2][2]; | ||
+ | meinArray3D[0][0][0] = 1; | ||
+ | meinArray3D[0][1][1] = 2; | ||
+ | meinArray3D[0][1][0] = 2; | ||
+ | meinArray3D[0][0][1] = 1; | ||
+ | |||
+ | meinArray3D[1][0][0] = 3; | ||
+ | meinArray3D[1][1][1] = 4; | ||
+ | meinArray3D[1][1][0] = 4; | ||
+ | meinArray3D[1][0][1] = 3; | ||
+ | </nowiki> | ||
+ | |||
+ | Was geben die folgenden "system.out.println" jeweils aus? | ||
+ | Vergleiche die Ausgabe mit Deinem Ergebnis. | ||
+ | |||
+ | Tipp: Aus der Mathematik kennst Du mehrdimensionale Obejekte. | ||
+ | <nowiki> | ||
+ | System.out.println(meinArray3D[0][0][0]+meinArray3D[0][0][1]); | ||
+ | System.out.println(meinArray3D[0][1][0]+meinArray3D[0][1][1]); | ||
+ | System.out.println(meinArray3D[1][0][0]+meinArray3D[1][0][1]); | ||
+ | System.out.println(meinArray3D[1][1][0]+meinArray3D[1][1][1]); | ||
+ | </nowiki> | ||
+ | |||
+ | |||
+ | [[Kategorie:Java]] | ||
+ | [[Kategorie:Java_Aufgaben]] |
Aktuelle Version vom 26. Oktober 2012, 15:15 Uhr
Weitere Wiederholungsaufgaben gibt es der Java Ranch
Inhaltsverzeichnis
Variablen
- Das gleiche Thema im Buch Java ist auch eine Insel
Variablendeklaration und Initialisierung
class Beispiel { public static void main(String [] ignored) { int aWholeNumber; double notAWholeNumber; String aString; aWholeNumber = 0; notAWholeNumber = 0.0; aString = ""; System.out.println(aWholeNumber); System.out.println(notAWholeNumber); System.out.println(aString); int anotherWholeNumber = 0; double anotherNotSoWholeNumber = 0; String anotherString = ""; System.out.println(anotherWholeNumber); System.out.println(anotherNotSoWholeNumber); System.out.println(anotherString); } }
- An welcher Stelle im Programm wird die Variable aWholeNumber definiert?
- An welcher Stelle im Programm wird die Variable aWholeNumber initialisiert?
Beantworte diese Fragen auch für die Variablen: notAWholeNumber, aString, anotherWholeNumber, anotherNotSoWholeNumber, anotherString
Erkläre deine Meinung einem Tutor.
Selber Deklarationen und Definitionen durchführen
class Beispiel { public static void main(String [] ignored) { // deklariere eine Variable "birnen" vom Typ int // weise ihr den Wert drei zu // System.out.println("3 erwartet: " + birnen); // addiere fünf zu dem Wert // System.out.println("8 erwartet: " + birnen); // deklariere eine Variable "aepfel" und weise ihr den Wert fünf zu // System.out.println("5 erwartet: " + aepfel); // subtrahiere zwei von dem Wert // System.out.println("3 erwartet: " + aepfel); } }
Zuweisung an Variablen
class Beispiel { public static void main(String [] ignored) { System.out.println(0); int zero = 0; System.out.println(zero); int one = 1; int whatsThis = zero; System.out.println(whatsThis); whatsThis = one; System.out.println(whatsThis); } }
Überlege dir, was dieses Code-Fragment ausgeben würde. Führe es aus und vergleiche die Resultate: Kopiere hierfür den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus.
- Was sind die Unterschiede?
- Warum?
Erkläre einem Tutor, zu welchem Schluss du gekommen bist und frage ihn, ob du Recht hast.
Variablen ändern ihre Werte
class Test { public static void main(String [] ignored) { int number = 1; System.out.println(number); number = 1; System.out.println(number); number = 2; System.out.println(number); number = 3; System.out.println(number); number = 1; System.out.println(number); number = 17; System.out.println(number); } }
Überlege dir, was dieser Code ausgeben würde. Schreibe ihn in eine Datei, kompiliere ihn und führe ihn aus.
- Was gibt er tatsächlich aus?
- Gibt es Unterschiede?
Formatierung und Namen
Wieso haben wir die Code-Beispiele nach den geschweiften Klammern eingerückt und die Variablen so benannt, wie wir es taten und nicht so:
class _{static long _ (long __,long ___) { return __==0 ?___+ 1: ___==0?_(__-1,1):_(__ -1,_(__, ___-1)) ; } static {int _=2 ,___ == 2;System.out.print( "a("+_+’,’+___+ ")="+ _ (_, ___) ) ;System .exit(1);}}//(C) Ulli
Nenne mindestens einen Grund und erkläre ihn deinem Tutor.
Etwas weniger Extrem, wieso haben wir unser zweites Beispiel nicht so gestellt?
class Beispiel {public static void main (String [] ignored) { System.out.println(0); int zero = 0; System.out.println(zero); int one = 1; int whatsThis = zero; System.out. println(whatsThis); whatsThis = one; System.out.println(whatsThis) ;}}
Nenne mindestens einen Grund und erkläre ihn deinem Tutor.
Wieso haben wir unser zweites Beispiel nicht so gestellt?
class b { public static void main(String [] i) { System.out.println(0); int a = 0; System.out.println(a); int b = 1; int c = a; System.out.println(c); c = b; System.out.println(c); } }
Nenne mindestens einen Grund und erkläre ihn deinem Tutor.
Variablen mit verschiedenen Typen zuweisen
class Test { public static void main(String [] ignored) { } }
if
Einfache if-Bedingung
Überlege dir, was das folgende Code-Fragment macht. Führe es aus und vergleiche mit deinen Erwartungen.
(Kopiere den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus)
- Was sind die Unterschiede?
- Warum?
Erkläre einem Tutor, zu welchem Schluss du gekommen bist und frage ihn, ob du Recht hast.
public class If_Uebung1 { /* Eure Aufgabe: * Versucht nachzuvollziehen, was dieses Programm macht * und schaut Euch den Code an. */ public static void main(String[] args) { /* * Wir erzeugen uns hier eine Zufallszahl im * Bereich 1-6. Warum funktioniert das so? * Math.random ist eine statische Funktion im * Math-Paket, die uns eine double-Zahl kleiner * als 1.0, aber groesser oder gleich 0 liefert. * Mit 6 multipliziert und um Eins erhöht erhalten wir * Zahlen von 1.0 bis 6.99999... * Durch das Umwandeln in int werden die Nachkommastellen abgeschnitten * und wir erhalten ein int von 1 bis 6. */ int wuerfelzahl = (int) (1 + (6 * Math.random())); /* * Zur Kontrolle geben wir das Ergebnis aus */ System.out.println("Der Würfel hat " + wuerfelzahl + " ergeben."); /* * Ist das Ergebnis groesser als 3 ? */ if (wuerfelzahl > 3) { // Wenn ja gib diesen Text aus: System.out.println("mehr als 3!"); } } }
if-else-Konstrukt
Überlege dir, was das folgende Code-Fragment macht. Führe es aus und vergleiche mit deinen Erwartungen.
(Kopiere den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus)
- Was sind die Unterschiede?
- Warum?
Erkläre einem Tutor, zu welchem Schluss du gekommen bist und frage ihn, ob du Recht hast.
public class If_Uebung2 { public static void main (String[] args){ int x=10; if (x>5) { System.out.println("x ist groesser als 5"); } else { System.out.println("x ist kleiner/gleich 5"); } } }
Mehrere if-Bedingungen
Überlege dir, was das folgende Code-Fragment macht. Führe es aus und vergleiche mit deinen Erwartungen.
(Kopiere den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus)
Was macht das Programm für verschiedene Werte von wert?.
Welche If-Abfragen sind unnötig, weil man die Ausgaben in else-Zweige von bereits vorhandenen schreiben könnte?
public class If_Uebung3 { public static void main(String[] args) { int wert; wert = 5; if (wert<5){ System.out.println("Der Wert ist echt kleiner 5."); } if (wert>5){ System.out.println("Der Wert ist echt groesser 5."); } if (wert==5){ System.out.println("Der Wert ist gleich 5"); } if (wert>=5){ System.out.println("Der Wert ist groesser oder gleich 5"); } if (wert<=5){ System.out.println("Der Wert ist kleiner oder gleich 5"); } } }
while
Einfache Schleife
Schreibe eine Schleife die unendlich oft "Hallo Welt!" ausgibt.
Begrenzte Schleifen
- Schreibe eine for-Schleife, die 10 mal "Hallo Welt!!" ausgibt.
- Verändere diese Schleife, so dass sie abwechselnd "Hallo Welt!" und "Ich bin im Javakurs!" ausgibt
- Es gibt zwei Möglichkeiten das zu realisieren - finde die andere.
einfache while-Schleife
Überlege dir, was das folgende Code-Fragment macht. Welche Zahlen werden ausgegeben? Führe es aus und vergleiche mit deinen Erwartungen.
(Kopiere den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus)
public class While_Uebung1 { public static void main(String[] args) { int x=10; while (x>0){ System.out.println(" x=" + x); // Anhaengen von x an den String x=x-1; } } }
for
for-Schleifen zum Zählen
Überlege dir, was das folgende Code-Fragment macht. Welche Zahlen werden ausgegeben? Führe es aus und vergleiche mit deinen Erwartungen.
(Kopiere den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus)
public class For_Uebung1 { public static void main(String[] args) { System.out.println("erste for Schleife:"); for (int i = 1; i <= 10; i = i + 1) { System.out.print(" " + i); } System.out.println(); // Zeilenumbruch System.out.println("zweite for Schleife:"); for (int i = 1; i <== 10; i = i + 2) { System.out.print(" " + i); } System.out.println(); // Zeilenumbruch System.out.println("dritte for Schleife:"); for (int i = 1; i <== 10; i = i * 2) { System.out.print(" " + i); } System.out.println(); // Zeilenumbruch } }
for-Schleife und if-Bedingung
public class ForIf_Uebung { // Welche Zahlen gibt dieses Programm aus ? public static void main(String[] args) { for (int i=1;i<10;i++){ if ((i % 2)==0){ // % ist der Modulo-Operator System.out.println("Die Zahl "+i+" ist gerade."); } } } }
Methoden
Argumente
class Beispiel { public static void main(String [] ignored) { ausgabe(1, "Martin"); ausgabe("Arthur", 2); ausgabe(3, "Florian"); ausgabe("Robert", 4); } static void ausgabe(int i, String string) { System.out.println(i + ": " + string); } }
- Überlege was dieses Beispiel ausgibt.
- Probiere es aus und erkläre den Unterschied. (Wenn Fehler auftreten, erkläre wieso)
- Erkläre das einem Tutor
Was tut das?
Überlege dir, was das folgenden Code-Fragmente machen. Welche Zahlen werden ausgegeben? Führe sie aus und vergleiche mit deinen Erwartungen.
(Kopiere den Beispiel-Code in eine Datei, kompiliere sie und führe sie aus)
//file: Methoden1.java class Methoden1 { public static void main (String[] arguments) { System.out.println( gibMirNeZahl() ); } public static double gibMirNeZahl() { return 15.3; } } //file: Methoden2.java class Methoden3 { public static void main (String[] arguments) { System.out.println( mathematik(1, 2) ); } public static boolean mathematik(int argument1, int argument2) { return (argument1 + 5) < (argument2 * 2); } } //file: Methoden3.java class Methoden3 { public static void main (String[] arguments) { System.out.println( mathematik(1, 2) ); System.out.println( mathematik(1, 5) ); System.out.println( mathematik(3, 4) ); } public static boolean mathematik(int argument1, int argument2) { return (argument1 + 5) < (argument2 * 2); } } //file: Methoden4.java class Methoden4 { public static void main (String[] arguments) { int eineZahl = 2; System.out.println( mathematik(4, eineZahl) ); eineZahl = 5; System.out.println( mathematik(2, eineZahl) ); System.out.println( mathematik(eineZahl, 4) ); } public static boolean mathematik(int argument1, int argument2) { return (argument1 + 5) < (argument2 * 2); } }
Selbst einige Methoden schreiben!
Im Folgenden wollen wir einige (mathematische)-Methoden programmieren.
- Lege eine neue Klasse "MatheAufgabe" an.
- Füge eine
public static void main(String[] arguments)
Methode hinzu. - Deklariere innerhalb der
main
-Methode einedouble
-Variable. - Belege diese Variable dem Wert
5/3
und gib den Inhalt der Variable auf dem Bildschirm aus. - Schreibe nun eine Methode
public static double add(double x, double y)
, die die Summe der beiden übergebenen Zahlenx
undy
zurückgibt.- Teste deine Methode mit verschiedenen Eingaben wie z.B.
System.out.println(" 1.0 + 2.0 = " + add ( 1.0 , 2.0 ) ); double x = 5.0; System.out.println( " " + x + " + 2.0 = " + add ( x , 2.0) ); System.out.println( " 2.0 + " + x + " = " + add ( 2.0 , x) ); x = add ( x , 2.0); System.out.println( x);
- Schreibe nun eine Methode
sub
, welche die Differenz zweier übergebener Werte zurückgibt.- Teste deine Methode wie eben!
- Überprüfe, ob x == (x - y ) + y gilt! (natürlich mit deinen
sub
undadd
-Modthoden)
- Schreibe nun eine
mul
-Methode.- Benutze dazu nicht den operator *. Rufe statt dessen deine add-Methode auf.
- Teste deine Methode wie eben!
- Schreibe nun eine
public static double pow ( double basis, int exponent)
, diebasis
hochexponent
zurückgibt.pow(2,3)
wurde z.B. 2^3=8 zurückgeben.- Benutze auch hier weder *, noch Math.pow(). Nutze statt dessen deine gerade geschriebene mul-Methode.
- Teste deine Methode wie gehabt!
- Was liefert deine Methode wenn der Exponent 0 ist?
- Was liefert deine Methode wenn der Exponent negativ ist?
Arrays (eindimensional und n-dimensional)
Eindimensionale Arrays
Folgendes Array-Konstrukt wird initialisiert
int[] meinArray1 = new int[5]; meinArray1[0] = 0; meinArray1[1] = 1; meinArray1[2] = 2; meinArray1[3] = 3; meinArray1[4] = 4; int[] meinArray2 = new int[3]; meinArray2[0] = 0; meinArray2[1] = 1; meinArray2[2] = 2;
Was geben die folgenden "system.out.println" jeweils aus?
Vergleiche die Ausgabe mit Deinem Ergebnis.
1.1.
System.out.println(meinArray1.length);
1.2.
System.out.println(meinArray2.length);
1.3.
System.out.println("Ergebnis:"+meinArray1[1]);
1.4.
System.out.println("Ergebnis:"+meinArray2[1]);
1.5.
System.out.println("Ergebnis:"+meinArray1[4]);
1.6.
System.out.println("Ergebnis:"+meinArray2[4]);
1.7.
System.out.println(meinArray1.length-1);
1.8.
System.out.println(meinArray2.length-1);
1.9.
System.out.println("Ergebnis:"+meinArray1[0]);
1.10.
System.out.println("Ergebnis:"+meinArray2[0]);
Zweidimensionale Arrays
Folgendes Array-Konstrukt wird initialisiert
int[][] meinArray3 = new int[2][3]; meinArray3[0][0] = 1; meinArray3[1][1] = 2; meinArray3[0][2] = 1; meinArray3[1][0] = 2; meinArray3[0][1] = 1; meinArray3[1][2] = 2;
Was geben die folgenden "system.out.println" jeweils aus? Vergleiche die Ausgabe mit Deinem Ergebnis.
Tipp: Aus der Mathematik kennst Du Matrizen. Ihre Größe wird mit (n x m) angegeben.
System.out.println(meinArray3[0][0]+meinArray3[0][1]+meinArray3[0][2]); System.out.println(meinArray3[1][0]+meinArray3[1][1]+meinArray3[1][2]);
Dreidimensionale Arrays
Folgendes Array-Konstrukt wird initialisiert
int[][][] meinArray3D = new int[2][2][2]; meinArray3D[0][0][0] = 1; meinArray3D[0][1][1] = 2; meinArray3D[0][1][0] = 2; meinArray3D[0][0][1] = 1; meinArray3D[1][0][0] = 3; meinArray3D[1][1][1] = 4; meinArray3D[1][1][0] = 4; meinArray3D[1][0][1] = 3;
Was geben die folgenden "system.out.println" jeweils aus? Vergleiche die Ausgabe mit Deinem Ergebnis.
Tipp: Aus der Mathematik kennst Du mehrdimensionale Obejekte.
System.out.println(meinArray3D[0][0][0]+meinArray3D[0][0][1]); System.out.println(meinArray3D[0][1][0]+meinArray3D[0][1][1]); System.out.println(meinArray3D[1][0][0]+meinArray3D[1][0][1]); System.out.println(meinArray3D[1][1][0]+meinArray3D[1][1][1]);