Programmiervorkurs WS 2014/15 Schleifen Termin 3.
-
Upload
gerlinde-zaring -
Category
Documents
-
view
112 -
download
0
Transcript of Programmiervorkurs WS 2014/15 Schleifen Termin 3.
Programmiervorkurs WS 2014/15
SchleifenTermin 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-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
}
}
}
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
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
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
}
}
}
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?
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)
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
}
}
}
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
}
}
}
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
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
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)
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
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)
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);
}
}
Teile des Programms mehrfach ausführen
• Beispiel: Berechnung der Fakultät einer Zahl nn! = 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 nAusgabe:1 12 23 64 245 120
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);
}
}
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);
}
}
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);
}
}
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“.
91
71
51
31
11
4
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.