Wiederholte Programmausführung - Webarchiv ETHZ / Webarchive

Werbung
Die Notwendigkeit für wiederholte Programmausführungen
Agenda für heute, 5. März, 2009
• Aufgabe: Die Quadratwurzel einer positiven Zahl berechnen
• Wiederholte Programmausführung
• Einschränkung:
g Es stehen nur arithmetische Operationen
p
zur Verfügung: *, /, +, -
• Die Wiederholungsanweisungen von Pascal
• Geschachtelte Programmschleifen
g
• Syntaxdiagramme
Lesen Sie den Begleittext Kapitel 4
Programmieren und Problemlösen
2/16
Beispiel: c = 2
Variablen, Anweisungen, Schleifen
x0 = 1
Die mathematischen Variablen xn
x1 = 1/2 + 2/2 = 1.5
stellen wir durch die Variable
x2 = 1.5/2 + 2/3 = 1.4166
var
x3 = 1.4166/2
1 4166/2 + 2/2.8333
2/2 8333 = 1
1.4141
4141
© Departement Informatik, ETH Zürich
x: real;
d und
dar
d realisieren
li i
di
die Bild
Bildungsvorschrift
h if fü
für xn+1 mit
i
und so weiter . . .
x:= x/2.0+c/(2.0*x);
Aufgaben für die Implementierung dieses Verfahrens:
Diese Anweisung muss für n = 1, 2, 3, . . . ausgeführt werden.
1. Darstellung der xn
Wir müssen sie also für jedes n wiederholen.
2. Wiederholung der Bildungsvorschrift
Pascal bietet verschiedene Möglichkeiten dies zu tun:
3. Abbrechen der Wiederholung
Programmieren und Problemlösen
3/16
for-Anweisung, while-Anweisung, repeat-Anweisung
© Departement Informatik, ETH Zürich
Programmieren und Problemlösen
4/16
© Departement Informatik, ETH Zürich
Die verschiedenen Wiederholungsanweisungen von Pascal
•
Wiederholte Programmausführung
for Anfangswert to Endwert do Anweisungsfolge
• Die
Di Wiederholungsanweisungen
Wi d h l
i
von Pascal
P
l
f
for
A f
Anfangswert
t downto
d
t Endwert
E d
t do
d Anweisungsfolge
A
i
f l
•
Bedingungen zum Abbruch von Programmschleifen
while Bedingung do Anweisungsfolge
•
Geschachtelte Programmschleifen
repeat Anweisungsfolge until Bedingung
•
Syntaxdiagramme
Die for-Schleife führt eine vorgegebene Anzahl Wiederholungen
aus.
aus
Die Anzahl Wiederholungen der while- und repeat-Schleife wird
durch Aktionen innerhalb der Schleife gesteuert.
5/16
Programmieren und Problemlösen
Struktur der for-Anweisung
© Departement Informatik, ETH Zürich
Struktur der while-Anweisung
Kontrollvariable (muss deklariert sein)
while boolescher Ausdruck do Anweisung
for Variable:
Variable:= Ausdruck1 to Ausdruck2 do Anweisung
Die Anweisung wird wiederholt solange ausgeführt wie der Wert der
Kontrollvariablen kleiner als oder gleich dem Wert von Ausdruck2 ist.
Beispiel:
Die Anweisung wird wiederholt solange ausgeführt wie eine
Auswertung des booleschen Ausdrucks den Wahrheitswert "true"
ergibt.
ergibt
Beispiel:
x:= 5;
for i:= 0 to x do write(i*2)
i:= 0;
while i < 10 do
begin
Output: 0 2 4 6 8 10
write(i);
i:= i + 1
end;
O t t 0 1 2 3 4 5 6 7 8 9
Output:
Programmieren und Problemlösen
6/16
© Departement Informatik, ETH Zürich
Programmieren und Problemlösen
7/16
© Departement Informatik, ETH Zürich
Struktur der repeat-Anweisung
Newton-Verfahren mit einer while-Schleife
repeat Anweisung until boolescher Ausdruck
Führe Anweisung einmal aus und wiederhole solange bis eine
Auswertung des booleschen Ausdrucks den Wahrheitswert "true"
ergibt.
ib
Beispiel:
i
i:=
0
0;
repeat write(i); i:= i + 1
until
til i = 10
Output: 0 1 2 3 4 5 6 7 8 9
Programmieren und Problemlösen
8/16
program qwurzel;
var c, x: real;
Wiederholung der Bildungsvorschrift
begin
x:= 1.0;
write('Wurzel aus: ');
readln(c);
while
hile abs(x*x
abs( * - c) > 1.0E-6
1 0E 6 do
x:= x/2.0 + c/(2.0*x);
writeln('Ergebnis
writeln(
Ergebnis = ',x:8:6);
,x:8:6);
readln
end.
Die Schleife wird abgebrochen, wenn
© Departement Informatik, ETH Zürich
Programmieren und Problemlösen
xn2 − c ≤
1
1000000
9/16
© Departement Informatik, ETH Zürich
10/16
© Departement Informatik, ETH Zürich
Mehrere Abbruchbedingungen
•
Wiederholte Programmausführung
•
Die Wiederholungsanweisungen von Pascal
• Geschachtelte Programmschleifen
•
Syntaxdiagramme
Anweisungsfolge
wahr
Abbruch?
Programmieren und Problemlösen
falsch
Schachtelung am Beispiel der for-Anweisung
Schachtelung am Beispiel der while-Anweisung
Quersumme solange berechnen bis ein "q" eingegeben wird
for i:= 1 to 3 do
for j:= 1 to 10 do write(i*j)
read(zahl);
while zahl <> 'q' do
begin
summe:= 0;
i
i:=
l
length(zahl);
th( hl)
for j:= 1 to i do
summe:= summe + ord(zahl[j]) - 48;
writeln('Quersumme von ',zahl,': ',summe)
end;
for i:= 1 to 3 do
begin
for j:= 1 to 10 do write(i*j);
writeln;
end;
Programmieren und Problemlösen
11/16
© Departement Informatik, ETH Zürich
Programmieren und Problemlösen
12/16
© Departement Informatik, ETH Zürich
Grundlagen der Syntaxdiagramme
•
Wiederholte Programmausführung
•
Die Wiederholungsanweisungen von Pascal
•
Geschachtelte Programmschleifen
Elemente der Syntaxdiagramme
Nicht-Terminalsymbole:
Bezeichner
• Syntaxdiagramme
Terminalsymbole:
;
Nicht-Terminalsymbole können durch andere Nicht-Terminalsymbole
oder durch Terminalsymbole nach vorgegebenen Syntaxregeln
ersetzt werden.
Programmieren und Problemlösen
13/16
© Departement Informatik, ETH Zürich
Grundlagen der Syntaxdiagramme
Syntaxregeln am Beispiel "Programm"
Produktionsregeln (gelten für Terminal- und Nicht-Terminalsymbole)
Auswahl:
Folge:
Wiederholung:
a
b
...
Buchstabe
Y
Z
Buchstabe
Bezeichner
,
Option:
Bezeichner
Programmieren und Problemlösen
14/16
© Departement Informatik, ETH Zürich
Syntaxregeln am Beispiel "Bezeichner"
Programmieren und Problemlösen
16/16
© Departement Informatik, ETH Zürich
Programmieren und Problemlösen
15/16
© Departement Informatik, ETH Zürich
Herunterladen