Agenda für heute, 13. April, 2006 Der Datentyp integer Vergleichsoperatoren, Wahrheitswerte und boolesche Variablen Zusammengesetzte if-then-else-anweisungen Var i: integer; Teilbereich der ganzen Zahlen, mit Wertebereich 2 N-1... 2 N-1 1 z.b.: -2'147'483'648.. 2'147'483'647 (N = 32 Bit, mit Vorzeichen) Operationen: +,, *, DIV, MOD 1/15 Weitere Integertypen (Delphi) Der Datentyp char (Abk. für character) Typ Wertebereich Format Shortint -128.. 127 8 Bit, mit Vorzeichen Smallint -32'768.. 32'767 16 Bit, mit Vorzeichen Longint -2'147'483'648.. 2'147'483'647 32 Bit, mit Vorzeichen Int64-2 63.. 2 63-1 64 Bit, mit Vorzeichen Byte 0.. 255 8 Bit, ohne Vorzeichen Word 0.. 65'535 16 Bit, ohne Vorzeichen Longword 0.. 4'294'967'295 32 Bit, ohne Vorzeichen Var ch:char; Für die Speicherung und Verarbeitung von Textzeichen. Wertebereich: definiert durch ANSI-Standard Operationen: ORD, CHR, Vergleichsoperationen 2/15 3/15
Der Datentyp char, Beispiele Ord('k') = 107 Chr(107) = 'k' ch: char; ch:= '='; Ord(ch) = 61 'B' < 'C' < 'c' Chr(Ord('C') + 34) = 'c' ANSI-Zeichensatz (American National Standards Institute) Der ANSI-Zeichensatz enthält 256 (2 8 ) Zeichen. Beispiele Ordinalzahl Zeichen 13 <CR> 36 $ 56 8 107 k 137 174 223 ß 252 ü Die Zeichen 0 bis 127 entsprechen dem ASCII-Zeichensatz (American Standard Code for Information Interchange). 4/15 5/15 Textverarbeitung Textverarbeitung 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: S1: string[10]; S2: string[135]; Einer String-Variablen kann man ganze Zeichenketten zuweisen: S:= 'Geben Sie ein Datum ein: '; write(s) Eine String-Variable kann aber auch indiziert werden: 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. 6/15 7/15
Operationen mit Strings const ort = 'Zuerich'; S1, S2: string; Operationen mit Strings S: string[15]; S:= 'ETH Zuerich'; Zuweisungsanweisungen: S1:= 'ETH '; S2:= ort; Verketten von String-Operanden mit + : S1:= S1 + S2; S1 enthält jetzt den Text: ETH Zuerich S 11 E T H Z u e r i c h 0 15 length(s) high(s) S[13] = undefinierter Wert S[16] = Kompilations- oder Laufzeitfehler 8/15 9/15 Der Datentyp boolean Wahrheitswerte, mit Wertebereich { TRUE (1), FALSE (0) } Operationen: NOT, AND, OR, XOR Vergleichsoperatoren, Wahrheitswerte und boolesche Variablen Zusammengesetzte if-then-else-anweisungen 10/15
Fallunterscheidung Boolesche Ausdrücke Grundlage für eine Verzweigung ist ein Wahrheitswert (wahr, falsch). Das kann sein a) der Wahrheitswert selbst true, false b) der Wert einer booleschen Variable b: boolean; c) der Wert eines booleschen Ausdrucks x >= 0 Boolesche Konstanten true, false Ausdrücke mit Vergleichsoperatoren x >= 0 x <> y Ausdrücke mit booleschen Operanden und logischen Operatoren a, b: boolean; a and (true or b) (x >= 0) and (a or b) 11/15 12/15 Boolesche Variablen brauchen nicht ausgewertet zu werden Zusammengesetzte Bedingungen 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" Mit booleschen Operatoren können mehrere Bedingungen für die Fallunterscheidung berücksichtigt werden: if Bedingung1 and Bedingung2 or Bedingung3 then Anweisungsfolge1 else Anweisungsfolge2 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 13/15 14/15
Zusammengesetzte if-then-else-anweisungen Vergleichsoperatoren, Wahrheitswerte und boolesche Variablen Zusammengesetzte if-then 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. 15/15