def - Proteus

Werbung
Programmieren lernen mit Groovy
Schleifen
Seite 1
Th Letschert
While-Schleife
Schleife, While-Schleife
Schleife: Eine Anweisung / Anweisungsfolge wiederholt
ausführen
While-Schleife
Zahl der Durchläufe wird vom Wert einer Bedingung gesteuert
Allgemeine Form
auch: „Schleifenkörper“
while ( Bedingung ) Anweisung(-sfolge)
Beispiel
def zaehler = 0
println "Die ersten 15 Quadradzahlen:"
while ( zaehler < 15 ) {
zaehler = zaehler+1
println zaehler + " -> " + zaehler*zaehler
}
Seite 2
Th Letschert
While-Schleife
Schleife, While-Schleife
Beispiel: Die Summe der ersten n natürlichen Zahlen
def n = Integer.parseInt(args[0])
Angenommen n=5: Welche
Variablen haben welche
Werte im Laufe einer
Berechnung?
def sum = 0
def i
= 0
while ( i < n ) {
i = i+1
sum = sum + i
}
println "Summe 1 ... " + n + " = " + sum
n
i
sum
5
5
5
0
1
2
···
0
1
3
Angenommen die Anweisungen in der Schleife
werden vertauscht. Was passiert? Ist Berechnung
noch korrekt ? Wenn nein: warum nicht ?
Seite 3
Th Letschert
Schleife
Schleife und Wertverlaufstabelle
Tabelle mit Variablen und ihren wechselnden Werten
n
i
sum
5
0
0
5
1
1
5
2
3
5
3
6
5
4
10
5
5
15
Schleifenende
Einstieg
erste Zeile
def n
= 5
def sum = 0
def i
= 0
Schleifenkörper
von Zeile
zu Zeile
while ( i < n ) {
i = i+1
sum = sum + i
}
Schleifenende
Bedingung nicht mehr
erfüllt, keine weitere Zeile
Seite 4
Th Letschert
While-Schleife
Übung
Die Summe der ersten n natürlichen Zahlen kann nach einer Formel
berechnet werden:
n
∑i
= ½ n * (n+1)
i=1
➢
➢
➢
Schreiben Sie eine Funktion, die sumF(x), die die Summe der ersten x
natürlichen Zahlen nach dieser Formel berechnet.
Schreiben Sie eine Funktion sumW(x), die die Summe der ersten x
natürlichen Zahlen durch Aufsummieren berechnet.
Schreiben Sie eine Schleife in der die Summe der der ersten n Zahlen für
n = 1 · · · 100
jeweils mit beiden Funktionen berechnet und ausgegeben wird.
Seite 5
Th Letschert
For-Schleife
For-Schleife / Basis-Form
Die Schleife durchläuft eine Folge von Werten
Allgemeine Form
for ( Start-Anw; Bedingung; Inkrement-Anw )
Anweisung(-sfolge)
Beispiel
for ( i = 0; i <= n; i=i+1 ) {
sum = sum + i
}
Seite 6
def i =
while (
sum
i =
}
0
i <= n ) {
= sum + i
i + 1
Th Letschert
For-Schleife
For-Schleife / Basis-Form
Ausführung
for ( Start-Anw; Bedingung; Inkrement-Anw )
Anweisung(-sfolge)
≈
Start-Anw
while ( Bedingung ) {
Anweisung(-sfolge)
Inkrement-Anw
}
Beispiel
for ( i = 0; i <= n; i=i+1 ) {
sum = sum + i
}
Seite 7
≈
def i =
while (
sum
i =
}
0
i <= n ) {
= sum + i
i + 1
Th Letschert
For-Schleife
Übung
Modifizieren Sie Ihr Programm zur Berechnung der Summe der ersten n
natürlichen Zahlen derart, dass nur For-Schleifen verwendet werden.
Seite 8
Th Letschert
For-Schleife
For-Schleife / „For-Each“-Form
Allgemeine Form
for ( Variable in Bereich )
Anweisung(-sfolge)
Beispiel
def n = Integer.parseInt(args[0])
def sum = 0
bevorzugte Standard-Form
for ( i in 1..n ) {
sum = sum + i
}
println sum
Seite 9
Th Letschert
For-Schleife
For-Schleife / „For-Each“-Form
For-Each- vs. Standard-Form
for ( i = 0; i < n; i = i+1 ) {
sum = sum + i
}
def sum = 0
for ( i in 1..n ) {
sum = sum + i
}
≈
?
≈
for ( i = 0; i <= n; i = i+1 ) {
sum = sum + i
}
Seite 10
Th Letschert
Times-Schleife
„Times“-Schleife
Eine besonders einfache Schleife: Zahl der Wiederholungen angeben
10.times{
println "Hallo"
}
def i = 10
def s = 0
5.times{
println it+" "+ s
s = s + it
}
println s
it innerhalb der Schleife durchläuft die
Werte 0 . . Anzahl der Wiederholungen - 1
0 0
1 0
2 1
3 3
4 6
10
Seite 11
Th Letschert
Schleife
Übung Schleifenkonstruktion
Berechne in einer Funktion den Wert
a = a0 + a1 + · · · an
mit
a0 = 0,
und
ai = ai-1 + c
für ein vorgegebenes n und c (Funktionsparameter).
Gehen Sie systematisch vor:
1. Berechnen Sie ein Beispiel „händisch“.
2. Welche Werte / Wertefolgen müssen berechnet werden?
3. In welchen Variablen werden diese abgespeichert?
4. Erstellen Sie eine Wertverlaufstabelle.
5. Konstruieren Sie die Schleife nach der Wertverlaufstabelle.
Seite 12
Th Letschert
Herunterladen