41
Programmiervorkurs WS 2014/15 Schleifen Termin 3

Programmiervorkurs WS 2014/15 Schleifen Termin 3

Embed Size (px)

Citation preview

Page 1: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Programmiervorkurs WS 2014/15

SchleifenTermin 3

Page 2: 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);

}

}

Page 3: 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);

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.)

Page 4: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• while-Schleifepublic 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

}

}

}

Page 5: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• while-Schleifepublic 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

Page 6: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• while-Schleifepublic 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

Page 7: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• while-Schleifepublic class MyCounter {

public static void main(String[] args) {

int i = 0;

while (i < 10) { // solange i < 10 ...

System.out.println(i); // gib i aus

}

}

}

Page 8: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• while-Schleifepublic 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?

Page 9: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• for-Schleifepublic 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

}

}

}

(ermöglicht kompaktere Notation)

Page 10: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• for-Schleifepublic 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

}

}

}

Page 11: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• for-Schleifepublic 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

}

}

}

Page 12: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• for-Schleifepublic 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 Update Ausdruck

Page 13: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• for-Schleifepublic 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)

Update Ausdruck

Page 14: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• for-Schleifepublic 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 Update Ausdruck(wird vor jedem Schleifendurchlauf ausgewertet)

Page 15: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• for-Schleifepublic 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

}

}

} Update (wird nach jedem Schleifendurchlauf ausgeführt)

Initialisierung Ausdruck

Page 16: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• for-Schleifepublic 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)

Page 17: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• for-Schleifepublic class MyCounter {

public static void main(String[] args) {

for (int i = 0; i < 10; i++) System.out.println(i);

}

}

Page 18: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• Beispiel: Berechnung der Fakultät einer Zahl nn! = 1 · 2 · ... · n

Page 19: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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

Page 20: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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

Page 21: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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 nAusgabe:1 12 23 64 245 120

Page 22: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• Beispiel: Berechnung der Fakultät einer Zahl nimport 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);

}

}

Page 23: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• Beispiel: Berechnung der Fakultät einer Zahl nimport 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);

}

}

Page 24: Programmiervorkurs WS 2014/15 Schleifen Termin 3

Teile des Programms mehrfach ausführen

• Beispiel: Berechnung der Fakultät einer Zahl nimport 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);

}

}

Page 25: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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

Page 26: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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 = ?

Page 27: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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

Page 28: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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");

}

}

}

Page 29: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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");

}

}

}

Page 30: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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");

}

}

}

Page 31: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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

}

}

}

Page 32: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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");

}

Page 33: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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");

}

Page 34: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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");

}

Page 35: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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");

}

Page 36: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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");

}

Page 37: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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");

}

Page 38: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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");

}

Page 39: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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“.

91

71

51

31

11

4

Page 40: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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

Page 41: Programmiervorkurs WS 2014/15 Schleifen Termin 3

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.