110 likes | 203 Views
10. Grundlagen imperativer Programmiersprachen. Ein Turbo-Pascal-Beispielprogramm:. PROGRAM Differenz; USES WinCRT; VAR x, y: Integer; BEGIN Write('Bitte geben Sie zwei Zahlen ein'); Readln(x,y); Write('Die Differenz von ', x, ' und', y, 'ist '); WHILE x <> y DO
E N D
10. Grundlagen imperativer Programmiersprachen Ein Turbo-Pascal-Beispielprogramm: PROGRAM Differenz; USES WinCRT; VAR x, y: Integer; BEGIN Write('Bitte geben Sie zwei Zahlen ein'); Readln(x,y); Write('Die Differenz von ', x, ' und', y, 'ist '); WHILE x <> y DO IF x > y THEN x := x - y ELSE y := y - x; Writeln(x) END. Programmkopf Uses-Anweisung Programmblock . Bezeichner ; Programmkopf: PROGRAM
Aufbau von Pascal-Programmen Programmblock: Deklarationsteil Anweisungsteil Anweisung Anweisungsteil: BEGIN END ; Deklarationsteil (vorläufig): Bezeichner CONST : Datentyp Ausdruck mit konst. Ergebnis ; = VAR : Datentyp Bezeichnerliste ;
Bezeichner: Folge von Buchstaben und Ziffern, erstes Zeichen Buchstabe, Groß-/Kleinschreibung irrelevant Schlüsselwörter: festgelegte Bedeutung in Programmen, dürfen nicht als Bezeichner verwendet werden Konstanten: • Zahlkonstanten (17, -22, +0.12, -12.345E-6), • Zeichenketten ('Leipzig kommt', 'wUrx23', ’Die Sonne scheint') •logische Konstanten (true, false) • Mengenkonstanten •Zeigerkonstante nil (später) Kommentare: beliebiger Text in geschweiften Klammern {...} oder(*...*) Operatoren: Zuweisungsoperator := weitere Operatoren not, *, /, div, mod, and, +, -, <, <=, =, <>, >=, >, in Trennzeichen: ( ) [ ] . .. , ; : = Lexikalische Einheiten
Schlüsselwörter begin destructor else function in label object procedure set then until with and case div end goto inherited mod of program shl to uses array const do file if inline nil or record shr type var asm constructor downto for implementation interface not packed repeat string unit while
Pascal-Datentypen Skalare Typen Zeiger- Typen Strukturierte Typen Inhomogene Typen Homogene Typen Aufzählungs- typen REAL Verbunde Unterbereichs- typen BOOLEAN Dateien Felder Selbstvereinbarte Typen INTEGER Mengen CHAR
Konstante: Bezeichnung + Wert Konstanten und Variablen Bezeichnung „10“ Wert 000 .....I0I0 Variable: Ort + Wert Symbolischer Bezeichner „Pegel“ Ort Adresse 4711 Wert 000 .....I0I0
BOOLEAN: Wertebereich: TRUE, FALSE Erlaubte Operationen: not, and, or und Vergleichsoperationen es ist festgelegt: FALSE < TRUE, damit lassen sich weitere logische Verknüpfungen modellieren: Grundlegende Datentypen Implikation: Äquivalenz: exklusives Oder: A -> B A <-> B A <= B A = B A <> B A B CHAR: Wertebereich: Buchstaben, Ziffern, Leerzeichen, Sonderzeichen Symbole werden durch Apostrophe eingegrenzt es gilt 'A' < 'B' < ... <'Z', '0' < '1' < ... < '9' erlaubte Operationen: Vergleichsoperationen sowie chr, ord, pred, succ chr(n):n-ter Character, ord(x): n, so daß x n-ter Character pred(x), succ(x): Vorgänger, Nachfolger von x
INTEGER Wertebereich: alle im Rechner darstellbaren ganzen Zahlen (-MAXINT bis MAXINT) Operationen: einstellige Operationen: +,- (Vorzeichen) arithmetische Operationen: +, -, *, div, mod Vergleichsoperationen Standardfunktionen (nächste Folie) zu beachten: div ganzzahlige Division: Rundung auf nächstkleinere ganze Zahl Sei B > 0 und REST = A - (A div B) * B Dann gilt: Grundlegende Datentypen, ctd. { REST, falls REST >≥ 0 REST + B, falls REST < 0 A mod B = REAL Wertebereich: darstellbare reelle Zahlen Operationen: +, -, *, /, Vegleichsoperationen, Standardfunktionen
Pascal erlaubt zu elementaren vordefinierten Typen weitere einzuführen. Aufzählungstypen (enumeration types): rot, FR sind Konstanten ihres jeweiligen Typs. Typdefinition Atommacht = (USA, RU, FR, GB, CHINA); syntaktisch korrekt, aber mit obengenannten nicht konsistent: Typ von FR wäre nicht eindeutig. Alle Vergleichsoperationen für Aufzählungstypen definiert (<, >, ≤ ≥ =, <>). Seien a und b Konstanten eines skalaren Typs S mit a <> b (z.B. INTEGER, CHAR, ..., aber nicht REAL); T = [a..b] heißt Bereichstyp über dem Grundtyp S Aufzählungs- und Bereichstypen TYPE Ampelfarbe = (rot, gelb, gruen); Tag = (MO, TU, WE, TH, FR, SA, SU); Wochenende = [SA..SU]; StopFarben = [rot..gelb]; NatZahl = INTEGER[0..MAXIMUM DIV 3];
Pascal-Standardfunktionen Ergebnis- Typen wie Parameter REAL CHAR REAL BOOLEAN BOOLEAN REAL REAL BOOLEAN INT wie Parameter INT REAL wie Parameter REAL wie Parameter INT Beschreibung Betrag von X Arcustang. von X X-tes Zeichen (ASCII) Cosinus von X TRUE gdw. end of file TRUE gdw. end of line e Logarithmus von X TRUE gdw. X ungerade Position von X Vorgänger von X X gerundet Sinus von X Quadrat von X Wurzel aus X Nachfolger von X Teil von X vor Komma Funktions- name ABS(X) ARCTAN(X) CHR(X) COS(X) EOF(F) EOLN(F) EXP(X) LN(X) ODD(X) ORD(X) PRED(X) ROUND(X) SIN(X) SQR(X) SQRT(X) SUCC(X) TRUNC(X) Parameter-Typen INT, REAL INT, REAL INT INT, REAL FILE FILE INT, REAL INT, REAL INT BOOLEAN, CHAR benutzerdef. Aufz.. ohne REAL REAL INT, REAL INT, REAL INT, REAL Aufz. ohne REAL REAL X
bezeichnen Elemente eines Datentyps induktive Definition: 1. eine Konstante k vom Typ D ist ein Ausdruck vom Typ D 2. eine Variable v vom Typ D ist ist ein Ausdruck vom Typ D 3. sind t1, ..., tn Ausdrücke der Typen D1, ..., Dn und ist f:D1 x ... x Dn -> D eine Nicht-Infix-Operation, so ist f(t1,...,tn) ein Ausdruck vom Typ D 4. sind t1, t2 Ausdrücke der Typen D1, D2 und ist o:D1 x D2 -> D eine Infix-Operation, so ist (t1) o (t2) ein Ausdruck vom Typ D Wert eines Ausdrucks: 1. für eine Konstante k ist Wert(k) das durch k bezeichnete Element von D 2. für eine Variable v ist Wert(v) der in der Variablen gespeicherte Wert 3. Wert(f(t1,...,tn)) = f(Wert(t1), ..., Wert(tn)) 4. Wert((t1) o (t2)) = Wert(t1) o Wert(t2) Ausdrücke