Übungsstunde 2 Einführung in die Programmierung I Probleme bei Übung 1 Lösung Übung 1, Aufgabe 5 Interpretation: …X…YY… …YY…X… g <= [ g X g YY g | g YY g X g ] x2ygemischt <= g n×X und n×YY (auch n=0) Nachbesprechung Übung 2 printLine() printEmptyPart() printNarrowPart() printWidePart() printNarrowPart() printEmptyPart() printLine() Aufgabe 3: Fehlerbehebung auch java.util.* Kommentare nicht vergessen! Variablen werden oft alle am Anfang deklariert Erstellt den Scanner print vs. println Leerzeichen um Operatoren erhöht Leserlichkeit Vorbesprechung Übung 3 Aufgabe 1: Folgen und Reihen Potenzieren Schreiben Sie ein Programm, das zwei ganze Zahlen n, k > 0 einliest und n^k berechnet und ausgibt. public static void main(String[] args) { int n, k; Scanner console = new Scanner(System.in); System.out.print("Geben Sie Zahl 1 und 2 ein: "); n = console.nextInt(); k = console.nextInt(); int pot = 1; for (int i = 1; i <= k; i++) { pot = pot * n; } System.out.println(n + " hoch " + k + " = " + pot); } Aufgabe 2: Binärdarstellung While-Schleife Welche Werte haben m und n nach Ausführung des folgenden Codes? int m = 0; int n = 123456789; while (n != 0) { m = (10 * m) + (n % 10); n = n / 10; } m n 0 123456789 9 12345678 98 1234567 987 123456 … … 987654321 0 Aufgabe 3: Sieb des Eratosthenes Sieb des Eratosthenes 1. 2. 3. Erstelle array sieb von boolean, Länge limit+1 Setze alle Elemente auf true Für i > 2, setze sieb[i] auf false wenn i ein ganzzahliges Vielfaches einer Zahl z >= 2 ist index i sieb[i] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 t t t t t t t t t t t t t t t t f t f t f f f t f t f f Aufgabe 4: Grösster gemeinsamer Teiler Zusatzübungen Arithmetische Ausdrücke Was wird berechnet? ● ● 4 / 3 + 16 % 8 + 20 / 6 + 3.0 / 2 * 5 / 2 19 % 16 * 9 / 5 * 2.0 Arrays und Schleifen Welche Werte hat vector am Ende dieser Anweisungen? int limit = 10; int [] vector = new int[limit]; vector[0] = 1; vector[1] = 1; for (int i = 2; i < limit; i++) { vector[i] = vector[i-1] + vector[i-2]; } 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 i-2 i-1 i 1 1 0 0 0 0 0 0 0 0 1 1 2 0 0 0 0 0 0 0 1 1 2 3 0 0 0 0 0 0 8 13 21 34 55 … 1 1 2 3 5 Schleifen Was gibt diese Methode aus? public static void main (String[] args) { int f = 0; int g = 1; for (int i = 0; i < 15; i++ ) { System.out.print(" " + f); f = f + g; g = f - g; } System.out.println(); } i f g 0 1 0 0 1 0 0 1 0 1 1 0 1 0 1 1 0 … … … Binäre Darstellung Gegeben sei ein int array ‘bits’ der Länge 8 (int [] bits = new int[8]). Jedes Element von bits ist entweder 0 oder 1. bits ist die Binärdarstellung einer Zahl z, die wie folgt definiert ist: for (int j = 0; j <= 7; j++) { … } Schreiben Sie ein Programm, das 8 Ziffern (0 oder 1) von der Input Console liest und die entsprechende Zahl z ausgibt. (Achtung: Sie müssen die 8 Binärziffern einzeln eingeben, also z.B. 0 0 0 1 0 0 0 1 (17) und nicht 00010001 Sortieren Schreiben Sie ein Programm, das drei int Zahlen a, b, c von der Konsole liest und der Grösse nach druckt, angefangen mit der kleinsten Zahl. a) b) Mithilfe verschiedener Entscheidungsbäume Unterteilung in Teilprobleme Fragen?