Javakurs2006/Uebungsaufgaben
Inhaltsverzeichnis
Variablen
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("7 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
- 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
Wieso haben wir das Beispiel nach den geschweiften Klammern eingerückt und die Variablen so gestellt wie wir es gestellt haben 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
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, dass und eine double-Zahl, die kleiner * als 1.0 aber groesser oder gleich 0 ist. * 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!"); } } }
Mehrere if-Bedingungen
public class If_Uebung2 { /* * Eure Aufgabe: * Schaut Euch das Programm an und überlegt, was fuer verschiedene * Werte passiert. * Welche If-Abfragen sind unnötig, weil man die Ausgaben in else-Zweige von * bereits vorhandenen schreiben könnte? */ 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"); } } }
For
for-Schleifen zum Zählen
public class For_Uebung1 { /* * Eure Aufgabe: * Schaut Euch dieses Programm an und überlegt, welche Zahlen * es ausgeben wird. * Anschliessend kompiliert das Programm, führt es aus und überprüft * Eure Vermutungen. * */ 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
Was tut das?
//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); }
}
Tue selbst etwas!
Die folgende Aufgabe ist eine Schritt-für-Schritt Anleitung. Sie soll euch die Möglickeit geben einmal genau angeleitet zu sehen, wie man an eine Aufgabe herangehen könnte.
Zuerst stellen wir einen denkbaren Aufgabentext vor, der später ausreichen müsste um selbst ein Programm zu schreiben.
Aufgabe: Erstelle ein Modul, das die mathematischen Operationen Addition, Subtraktion, und Potenzieren jeweils in einer Methode anbieten. Probiere deine Methoden in der main-Methode aus.
//TODO: Schritt für Schritt Anleitung, wie, in welcher Reihenfolge und wo genau welche Methode implementiert werden soll. Voraussetzung: Verständnis von Schleifen. Rudimentäres Verständnis von Methoden.
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]);