Programmiervorkurs WS 2014/15 Schleifen Termin 3
Teile des Programms mehrfach ausführen Ein Befehl soll mehrfach ausgeführt werden, z.B.: public class MyCounter { public static void main(String[] args) { System.out.println(1); }
Teile des Programms mehrfach ausführen Ein Befehl soll mehrfach ausgeführt werden, z.B.: public class MyCounter { public static void main(String[] args) { System.out.println(1); System.out.println(2); System.out.println(3); System.out.println(4); System.out.println(5); System.out.println(6); System.out.println(7); System.out.println(8); } Copy & Paste ist eine schlechte Idee! (Code wird lang und unübersichtlich.)
Teile des Programms mehrfach ausführen while-Schleife public class MyCounter { public static void main(String[] args) { int i = 0; while (i < 10) { // solange i < 10 ... System.out.println(i); // gib i aus i++; // und erhoehe i um 1 }
Teile des Programms mehrfach ausführen while-Schleife public class MyCounter { public static void main(String[] args) { int i = 0; while (i < 10) { // solange i < 10 ... System.out.println(i); // gib i aus i++; // und erhoehe i um 1 } Abbruch wenn false
Teile des Programms mehrfach ausführen while-Schleife public class MyCounter { public static void main(String[] args) { int i = 0; while (i < 10) { // solange i < 10 ... System.out.println(i); // gib i aus i++; // und erhoehe i um 1 } geschweifte Klammern begrenzen die Schleife
Teile des Programms mehrfach ausführen while-Schleife public class MyCounter { public static void main(String[] args) { int i = 0; while (i < 10) { // solange i < 10 ... System.out.println(i); // gib i aus }
Teile des Programms mehrfach ausführen while-Schleife public class MyCounter { public static void main(String[] args) { int i = 0; while (i < 10) { // solange i < 10 ... System.out.println(i); // gib i aus } Achtung vor Endlosschleife! Bist Du sicher, dass der Ausdruck in () irgendwann false wird?
Teile des Programms mehrfach ausführen for-Schleife (ermöglicht kompaktere Notation) public class MyCounter { public static void main(String[] args) { int i = 0; while (i < 10) { // solange i < 10 ... System.out.println(i); // gib i aus i++; // und erhoehe i um 1 }
Teile des Programms mehrfach ausführen for-Schleife public class MyCounter { public static void main(String[] args) { int i = 0; while (i < 10) { // solange i < 10 ... System.out.println(i); // gib i aus i++; // und erhoehe i um 1 }
Teile des Programms mehrfach ausführen for-Schleife public class MyCounter { public static void main(String[] args) { for (int i = 0; i < 10; i++) { // solange i < 10 System.out.println(i); // gib i aus // und erhoehe i um 1 }
Teile des Programms mehrfach ausführen for-Schleife public class MyCounter { public static void main(String[] args) { for (int i = 0; i < 10; i++) { // solange i < 10 System.out.println(i); // gib i aus // und erhoehe i um 1 } Initialisierung Ausdruck Update
Teile des Programms mehrfach ausführen for-Schleife public class MyCounter { public static void main(String[] args) { for (int i = 0; i < 10; i++) { // solange i < 10 System.out.println(i); // gib i aus // und erhoehe i um 1 } Initialisierung (wird vor dem ersten Schleifendurchlauf ausgeführt) Ausdruck Update
Teile des Programms mehrfach ausführen for-Schleife public class MyCounter { public static void main(String[] args) { for (int i = 0; i < 10; i++) { // solange i < 10 System.out.println(i); // gib i aus // und erhoehe i um 1 } Initialisierung Ausdruck (wird vor jedem Schleifendurchlauf ausgewertet) Update
Teile des Programms mehrfach ausführen for-Schleife public class MyCounter { public static void main(String[] args) { for (int i = 0; i < 10; i++) { // solange i < 10 System.out.println(i); // gib i aus // und erhoehe i um 1 } Initialisierung Ausdruck Update (wird nach jedem Schleifendurchlauf ausgeführt)
Teile des Programms mehrfach ausführen for-Schleife public class MyCounter { public static void main(String[] args) { for (int i = 0; i < 10; i++) { // solange i < 10 System.out.println(i); // gib i aus // und erhoehe i um 1 } Nur eine Anweisung in Schleifenblock? → Klammern können entfallen. (auch bei while-Schleife)
Teile des Programms mehrfach ausführen for-Schleife public class MyCounter { public static void main(String[] args) { for (int i = 0; i < 10; i++) System.out.println(i); }
Teile des Programms mehrfach ausführen Beispiel: Berechnung der Fakultät einer Zahl n n! = 1 · 2 · ... · n
Teile des Programms mehrfach ausführen public class Fakultaet { public static void main(String[] args) { //Berechne die Fakultaet f von n: int n = 5; int f = 1; for (int i = 1; i <= n; i++) { f *= i; } System.out.println( "Die Fakultaet von " + n + " ist " + f); Beispiel: Berechnung der Fakultät einer Zahl n
Teile des Programms mehrfach ausführen public class Fakultaet { public static void main(String[] args) { //Berechne die Fakultaet f von n: int n = 5; int f = 1; for (int i = 1; i <= n; i++) { f *= i; System.out.println(i + " " + f); //Test } System.out.println( "Die Fakultaet von " + n + " ist " + f); Beispiel: Berechnung der Fakultät einer Zahl n
Teile des Programms mehrfach ausführen public class Fakultaet { public static void main(String[] args) { //Berechne die Fakultaet f von n: int n = 5; int f = 1; for (int i = 1; i <= n; i++) { f *= i; System.out.println(i + " " + f); //Test } System.out.println( "Die Fakultaet von " + n + " ist " + f); Beispiel: Berechnung der Fakultät einer Zahl n Ausgabe: 1 1 2 2 3 6 4 24 5 120
Teile des Programms mehrfach ausführen Beispiel: Berechnung der Fakultät einer Zahl n import java.util.Scanner; public class Fakultaet { public static void main(String[] args) { //Eingabe einer Zahl n: Scanner sc = new Scanner(System.in); int n = sc.nextInt(); //Berechne die Fakultaet f von n: int f = 1; for (int i = 1; i <= n; i++) f *= i; System.out.println( "Die Fakultaet von " + n + " ist " + f); }
Teile des Programms mehrfach ausführen Beispiel: Berechnung der Fakultät einer Zahl n import java.util.Scanner; public class Fakultaet { public static void main(String[] args) { //Eingabe einer Zahl n: Scanner sc = new Scanner(System.in); int n = sc.nextInt(); //Berechne die Fakultaet f von n: int f = 1; for (int i = 1; i <= n; i++) f *= i; System.out.println( "Die Fakultaet von " + n + " ist " + f); }
Teile des Programms mehrfach ausführen Beispiel: Berechnung der Fakultät einer Zahl n import java.util.Scanner; public class Fakultaet { public static void main(String[] args) { //Eingabe einer Zahl n: Scanner sc = new Scanner(System.in); int n = sc.nextInt(); //Berechne die Fakultaet f von n: long f = 1; //die Fakultaet waechst schnell! for (int i = 1; i <= n; i++) f *= i; System.out.println( "Die Fakultaet von " + n + " ist " + f); }
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins Gesucht ist ein Programm, das folgende Tabelle ausgibt: 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins Gesucht ist ein Programm, das folgende Tabelle ausgibt: 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 7 · 8 = ?
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins Gesucht ist ein Programm, das folgende Tabelle ausgibt: 1 2 3 4 5 6 7 8 9 10 2 4 6 8 10 12 14 16 18 20 3 6 9 12 15 18 21 24 27 30 4 8 12 16 20 24 28 32 36 40 5 10 15 20 25 30 35 40 45 50 6 12 18 24 30 36 42 48 54 60 7 14 21 28 35 42 49 56 63 70 8 16 24 32 40 48 56 64 72 80 9 18 27 36 45 54 63 72 81 90 10 20 30 40 50 60 70 80 90 100 7 · 8 = 56
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins public class Einmaleins { public static void main(String[] args) { for (int zeile = 1; zeile <= 10; zeile++) { for (int spalte = 1; spalte <= 10; spalte++) { int produkt = zeile * spalte; System.out.print(produkt + "\t"); } System.out.print("\n");
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins public class Einmaleins { public static void main(String[] args) { //Aeussere Schleife: Iteriere ueber Zeilen for (int zeile = 1; zeile <= 10; zeile++) { for (int spalte = 1; spalte <= 10; spalte++) { int produkt = zeile * spalte; System.out.print(produkt + "\t"); } System.out.print("\n");
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins public class Einmaleins { public static void main(String[] args) { for (int zeile = 1; zeile <= 10; zeile++) { //Innere Schleife: Iteriere ueber Spalten for (int spalte = 1; spalte <= 10; spalte++) { int produkt = zeile * spalte; System.out.print(produkt + "\t"); } System.out.print("\n");
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins public class Einmaleins { public static void main(String[] args) { //Aeussere Schleife: Iteriere ueber Zeilen for (int zeile = 1; zeile <= 10; zeile++) { //Innere Schleife: Iteriere ueber Spalten for (int spalte = 1; spalte <= 10; spalte++) { int produkt = zeile * spalte; System.out.print(produkt + "\t"); //Tabulator } System.out.print("\n"); //Zeilenumbruch
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins Gesucht ist ein Programm, das folgende Tabelle ausgibt: 1 for (int zeile = 1; zeile <= 10; zeile++) { for (int spalte = 1; spalte <= 10; spalte++) { int produkt = zeile * spalte; System.out.print(produkt + "\t"); } System.out.print("\n");
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins Gesucht ist ein Programm, das folgende Tabelle ausgibt: 1 2 for (int zeile = 1; zeile <= 10; zeile++) { for (int spalte = 1; spalte <= 10; spalte++) { int produkt = zeile * spalte; System.out.print(produkt + "\t"); } System.out.print("\n");
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins Gesucht ist ein Programm, das folgende Tabelle ausgibt: 1 2 3 for (int zeile = 1; zeile <= 10; zeile++) { for (int spalte = 1; spalte <= 10; spalte++) { int produkt = zeile * spalte; System.out.print(produkt + "\t"); } System.out.print("\n");
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins Gesucht ist ein Programm, das folgende Tabelle ausgibt: 1 2 3 4 5 6 7 8 9 for (int zeile = 1; zeile <= 10; zeile++) { for (int spalte = 1; spalte <= 10; spalte++) { int produkt = zeile * spalte; System.out.print(produkt + "\t"); } System.out.print("\n");
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins Gesucht ist ein Programm, das folgende Tabelle ausgibt: 1 2 3 4 5 6 7 8 9 10 for (int zeile = 1; zeile <= 10; zeile++) { for (int spalte = 1; spalte <= 10; spalte++) { int produkt = zeile * spalte; System.out.print(produkt + "\t"); } System.out.print("\n");
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins Gesucht ist ein Programm, das folgende Tabelle ausgibt: 1 2 3 4 5 6 7 8 9 10 2 for (int zeile = 1; zeile <= 10; zeile++) { for (int spalte = 1; spalte <= 10; spalte++) { int produkt = zeile * spalte; System.out.print(produkt + "\t"); } System.out.print("\n");
Teile des Programms mehrfach ausführen Mehrfachschleifen: Das kleine Einmaleins Gesucht ist ein Programm, das folgende Tabelle ausgibt: 1 2 3 4 5 6 7 8 9 10 2 4 for (int zeile = 1; zeile <= 10; zeile++) { for (int spalte = 1; spalte <= 10; spalte++) { int produkt = zeile * spalte; System.out.print(produkt + "\t"); } System.out.print("\n");
Aufgabe Erstellt ein Programm, das die Kreiszahl p nach der Reihenentwicklung von Leibniz berechnet: Erstellt ein Programm, das die Kreiszahl p durch das zufällige Streuen von Punkten in ein Quadrat ermittelt. Verwendet als Zufallsgenerator die Methode Math.random(). Hinweise zu dieser Variante findet Ihr im Internet unter dem Schlagwort „Monte-Carlo-Methode“.
Aufgabe Erstellt ein Programm, dass vom Nutzer ein beliebiges Zeichen einliest sowie eine Ganzzahl n. Das Zeichen soll n Zeilen oft n-mal ausgegeben werden. Erstellt ein Programm, das (mit Hilfe von for-Schleifen) symmetrische Tannenbäume (variabler Höhe) generiert. Der Stamm hat immer eine Höhe von zwei Zeilen und die Krone mindes- tens drei. * *** * ***** *** ******* ***** ********* * * Höhe 3 Höhe 5
Aufgabe ZUSATZ: Ändert Euer Programm so, dass es auch Wälder mit konstanter Baumhöhe generieren kann. * * * * * *** *** *** *** *** ***** ***** ***** ***** ***** Wald mit Bäumen der Höhe 3.