Bedingte Programmausführung

Werbung
Agenda für heute, 7. April, 2005
• Bedingte Programmausführung
• Algorithmische Grundlagen
• Vergleichsoperatoren, Wahrheitswerte und boolesche Variablen
• if-then-else-Anweisung
• Geschachtelte if-then-else-Anweisungen
• Datentypen: string
Steuerung des Programmablaufs: Verzweigung
• Ein Programm ist eine Folge von Instruktionen, die alle
möglichen Aktionen, notwendig für die Lösung eines
Problems, ermöglichen.
• Oft müssen jedoch, abhängig von den Daten, nicht alle
Instruktionen ausgeführt werden.
• Die meisten Programme müssen deshalb auf verschiedene
"Pfade" von Instruktionsfolgen verzweigen können.
• Ein Programm muss also
a) entscheiden können ob verzweigt werden soll und
b) wenn ja, wohin
Programmieren und Problemlösen
2/14
© Institut für Computational Science, ETH Zürich
• Bedingte Programmausführung
• Algorithmische Grundlagen
• Vergleichsoperatoren, Wahrheitswerte und boolesche Variablen
• if-then-else-Anweisung
• Geschachtelte if-then-else-Anweisungen
• Datentypen: string
Algorithmische Grundlagen
read(x)
wahr
Operation b
x≥0
write(sqrt(x))
Programmieren und Problemlösen
Operation a
falsch
Fallunterscheidung
Fehlermeldung
3/14
Operation c
© Institut für Computational Science, ETH Zürich
• Bedingte Programmausführung
• Algorithmische Grundlagen
• Vergleichsoperatoren, Wahrheitswerte und
boolesche Variablen
• if-then-else-Anweisung
• Geschachtelte if-then-else-Anweisungen
• Datentypen: string
Programmieren und Problemlösen
© Institut für Computational Science, ETH Zürich
Fallunterscheidung
Grundlage für eine Verzweigung ist ein Wahrheitswert (wahr, falsch).
Das kann sein
a) der Wahrheitswert selbst
b) der Wert einer booleschen Variable
c) der Wert eines booleschen Ausdrucks
Programmieren und Problemlösen
4/14
true, false
var b: boolean;
x >= 0
© Institut für Computational Science, ETH Zürich
Boolesche Ausdrücke
Boolesche Konstanten
true, false
Ausdrücke mit Vergleichsoperatoren
x >= 0
x <> y
Ausdrücke mit booleschen Operanden und logischen Operatoren
var
a, b: boolean;
a and (true or b)
(x >= 0) and (a or b)
Programmieren und Problemlösen
5/14
© Institut für Computational Science, ETH Zürich
Boolesche Variablen brauchen nicht ausgewertet zu werden
var
b: boolean;
Gegeben:
b:= true
Der Ausdruck (b = true) hat den Wahrheitswert "true"
Der Ausdruck (b = false) hat den Wahrheitswert "false"
Gegeben: b:= false
Der Ausdruck (b = true) hat den Wahrheitswert "false"
Der Ausdruck (b = false) hat den Wahrheitswert "true"
Also können wir
statt if b = true then
einfach if b then schreiben
und
statt if b = false then einfach if not b then schreiben
Programmieren und Problemlösen
6/14
© Institut für Computational Science, ETH Zürich
• Bedingte Programmausführung
• Algorithmische Grundlagen
• Vergleichsoperatoren, Wahrheitswerte und boolesche Variablen
• if-then-else-Anweisung
• Geschachtelte if-then-else-Anweisungen
• Datentypen: string
Programmieren und Problemlösen
© Institut für Computational Science, ETH Zürich
Fallunterscheidung in Pascal
if Bedingung
then Anweisungsfolge
if Bedingung
then Anweisungsfolge1
else Anweisungsfolge2
Bedingung = boolescher Ausdruck
Programmieren und Problemlösen
7/14
© Institut für Computational Science, ETH Zürich
Beispiel
program quadratwurzel (input, output);
var
x: real;
begin
read (x);
if x >= 0
then write (sqrt (2))
else write (x,'hat keine Quadratwurzel');
end.
Programmieren und Problemlösen
8/14
© Institut für Computational Science, ETH Zürich
Zusammengesetzte Bedingungen
Mit booleschen Operatoren können mehrere Bedingungen für die
Fallunterscheidung berücksichtigt werden:
if Bedingung1 and Bedingung2 or Bedingung3
then Anweisungsfolge1
else Anweisungsfolge2
Programmieren und Problemlösen
9/14
© Institut für Computational Science, ETH Zürich
• Bedingte Programmausführung
• Algorithmische Grundlagen
• Vergleichsoperatoren, Wahrheitswerte und boolesche Variablen
• if-then-else-Anweisung
• Geschachtelte if-then-else-Anweisungen
• Datentypen: string
Programmieren und Problemlösen
© Institut für Computational Science, ETH Zürich
Zusammengesetzte if-then-else-Anweisungen
Die then- und die else-Klausel einer if-Anweisung können beliebige
Anweisungen enthalten, insbesondere auch if-Anweisungen:
if Bedingung1
then if Bedingung2
then Anweisungsfolge1
else Anweisungsfolge2
else Anweisungsfolge3
Mit "geschachtelten" if-Anweisungen
Können mehr als zwei Verzweigungen
programmiert werden.
Programmieren und Problemlösen
10/14
© Institut für Computational Science, ETH Zürich
• Bedingte Programmausführung
• Algorithmische Grundlagen
• Vergleichsoperatoren, Wahrheitswerte und boolesche Variablen
• if-then-else-Anweisung
• Geschachtelte if-then-else-Anweisungen
• Datentypen: string
Programmieren und Problemlösen
© Institut für Computational Science, ETH Zürich
Textverarbeitung
var
S: string;
Um die Programmierung von Zeichenfolgen zu vereinfachen, stellt
Pascal den Datentyp string zur Verfügung, mit speziellen, auf die
Verarbeitung von Text zugeschnittenen Operationen.
Variablen vom Typ string können bis zu 255 Zeichen enthalten.
Es können aber kürzere Strings deklariert werden:
var
S1: string[10];
S2: string[135];
Programmieren und Problemlösen
11/14
© Institut für Computational Science, ETH Zürich
Textverarbeitung
Einer String-Variablen kann man ganze Zeichenketten zuweisen:
S:= 'Geben Sie ein Datum ein: ';
write(S)
Eine String-Variable kann aber auch indiziert werden:
var
S: string;
i: integer;
Die Variable S[i] stellt das i-te Zeichen von S dar.
Die Anweisung S[3]:= 'C' weist dem dritten Zeichen von S den
Wert C zu.
Programmieren und Problemlösen
12/14
© Institut für Computational Science, ETH Zürich
Operationen mit Strings
const ort = 'Zuerich';
var S1, S2: string;
Zuweisungsanweisungen:
S1:= 'ETH ';
S2:= ort;
Verketten von String-Operanden mit + :
S1:= S1 + S2;
S1 enthält jetzt den Text: ETH Zuerich
Programmieren und Problemlösen
13/14
© Institut für Computational Science, ETH Zürich
Operationen mit Strings
var S: string[15];
S:= 'ETH Zuerich';
S
11 E T H
Z
u
e
r
i
c
h
15
0
high(S)
length(S)
S[13] = undefinierter Wert
S[16] = Kompilations- oder Laufzeitfehler
Programmieren und Problemlösen
14/14
© Institut für Computational Science, ETH Zürich
Herunterladen