Einführung in die Informatik Technische und sprachliche Grundlagen Rekapitulation Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik © Timm Grams, Fulda, 07.09.02
Übersicht Zahlendarstellungen im Stellenwertsystem Basiswechsel Der ASCII-Code Künstliche Sprachen Programmiersprachen Arithmetische Ausdrücke
Ganzzahlige Division mit Rest 202 = 5 ·40 + 2 x0 = b ·x1 + r0 Rest Divisionsergebnis (ganzzahliger Quotient) Divisor Dividend
Darstellung der Zahl 202 im Stellenwertsystem zur Basis 5 = 5 ·40 + 2 = 5 ·(5 ·8 + 0) + 2 = 5 ·(5 ·(5 ·1 + 3) + 0) + 2 = 53 ·1 + 52 ·3 + 51 ·0 + 50 ·2 = (1302)5
Allgemein: Zahl z, Basis b z = x0 = b x1 + r0 = b (b x2 + r1) + r0 = b 2 x2 + b r1 + r0 = b 2 (b x3 + r2) + b r1 + r0 = b 3 x3 + b 2 r2 + b r1 + r0 ... = b n-1 rn-1 + ... + b 2 r2 + b r1 + r0 = b n-1 rn-1 + ... + b 2 r2 + b 1 r1 + b 0 r0 = (rn-1...r2r1r0)b
Basiswechsel dual, oktal, dezimal und hexadezimal 2 8 10 16 0 0 0 0 1 1 1 1 10 2 2 2 11 3 3 3 100 4 4 4 101 5 5 5 110 6 6 6 111 7 7 7 1000 10 8 8 1001 11 9 9 1010 12 10 A 1011 13 11 B 1100 14 12 C 1101 15 13 D 1110 16 14 E 1111 17 15 F 10000 20 16 10 10001 21 17 11 10010 22 18 12 10011 23 19 13 10100 24 20 14 Basiswechsel dual, oktal, dezimal und hexadezimal
Basiswechsel dual, oktal, dezimal und hexadezimal 2 8 10 16 00000 00 00 00 00001 01 01 01 00010 02 02 02 00011 03 03 03 00100 04 04 04 00101 05 05 05 00110 06 06 06 00111 07 07 07 01000 10 08 08 01001 11 09 09 01010 12 10 0A 01011 13 11 0B 01100 14 12 0C 01101 15 13 0D 01110 16 14 0E 01111 17 15 0F 10000 20 16 10 10001 21 17 11 10010 22 18 12 10011 23 19 13 10100 24 20 14 Basiswechsel dual, oktal, dezimal und hexadezimal
Dezi- Dezi- Dezi- Dezi- mal- Zei- mal- Zei- mal- Zei- mal- Zei- zahl chen zahl chen zahl chen zahl chen 000 NUL 032 SP 064 @, § 096 ` 001 SOH 033 ! 065 A 097 a 002 STX 034 " 066 B 098 b 003 ETX 035 # 067 C 099 c 004 EOT 036 $ 068 D 100 d 005 ENQ 037 % 069 E 101 e 006 ACK 038 & 070 F 102 f 007 BEL 039 ' 071 G 103 g 008 BS 040 ( 072 H 104 h 009 HT 041 ) 073 I 105 i 010 LF 042 * 074 J 106 j 011 VT 043 + 075 K 107 k 012 FF 044 , 076 L 108 l 013 CR 045 - 077 M 109 m 014 SO 046 . 078 N 110 n 015 SI 047 / 079 O 111 o 016 DLE 048 0 080 P 112 p 017 DC1 049 1 081 Q 113 q 018 DC2 050 2 082 R 114 r 019 DC3 051 3 083 S 115 s 020 DC4 052 4 084 T 116 t 021 NAK 053 5 085 U 117 u 022 SYN 054 6 086 V 118 v 023 ETB 055 7 087 W 119 w 024 CAN 056 8 088 X 120 x 025 EM 057 9 089 Y 121 y 026 SUB 058 : 090 Z 122 z 027 ESC 059 ; 091 [, Ä 123 {. ä 028 FS 060 < 092 \, Ö 124 |, ö 029 GS 061 = 093 ], Ü 125 }, ü 030 RS 062 > 094 ^ 126 ~, ß 031 US 063 ? 095 _ 127 DEL ASCII- Code- tabelle 7-Bit-Code 32 Steuerzeichen Space, Delete 94 darstellbare Zeichen
Wichtige nicht darstellbare Zeichen Formatsteuerzeichen BS Backspace, Rückwärtsschritt HT Horizontal Tabulation, Horizontal-Tabulator LF Line Feed, Zeilenvorschub CR Carriage Return, Wagenrücklauf Codeerweiterungszeichen ESC Escape, Code-Umschaltung Weitere Zeichen NUL Null, Nil, Nichts BEL Bell, Klingel SP Space, Zwischenraum DEL Delete, Löschen
Künstliche Sprachen Programmiersprachen sind künstliche Sprachen Beispiel einer einfachen künstlichen Sprache sind die arithmetischen Ausdrücke, z. B.: (a+b)*c/2 Die Syntax oder Grammatik bestimmt, was ein wohlgeformter sprachlicher Ausdruck ist. Die Semantik oder Bedeutung wird durch die Auswertung sprachlicher Ausdrücken definiert.
Syntax der Arithmetik-Ausdrücke Nicht wohlgeformt a-/c 1.1.0-5+ Wohlgeformt a/b/2 (a+b)*2-c
Metasprache zur Definition der Syntax Erweiterte Backus-Naur-Form (EBNF)
Begriffe der Metasprache Nichtterminale Symbole Schreibweise: kursiv Terminale Symbole Schreibweise: fett, in Anführungszeichen oder farbig Produktionsregel Nichtterminales Symbol = Rechte Seite der Produktionsregel Startsymbol (z. B. Ausdruck) Wohlgeformter Ausdruck (Formel)
Syntax einfacher Arithmetik-Ausdrücke Ausdruck = [ - ] Term { AddOp Term } AddOp = + | - Term = Faktor { MultOp Faktor } MultOp = * | / Faktor = Element | ( Ausdruck ) Element = Konstante | Variable Konstante = Zahl [ . Zahl ] Zahl = Ziffer { Ziffer } Ziffer = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Variable = a | b | c | d | e | f | g | h | i | j | k | l | m | n |o | p | q | r | s | t | u | v | w | x | y | z
Konstruktion eines Ausdrucks mittels Syntaxbaum Term Faktor MultOp * ( Ausdruck ) ( Ausdruck ) Term AddOp Term Term AddOp Term Faktor Element Variable a - b Faktor + Faktor Element Variable b Element Variable a
Postorderdurchlauf Die richtige Reihenfolge der Terminalsymbole erhält man aus dem Postorder-Durchlauf des Syntaxbaums. Jeder Knoten wird besucht, wenn alle seine abgehenden Zweige (Knoten) besucht worden sind, und zwar in der Reihenfolge von links nach rechts. Ziel ist, die Baumwurzel - also Ausdruck - zu besuchen. Im Beispiel liefert der Postorder-Durchlauf den Ausdruck (a+b)*(a-b).
Bedeutung (Semantik) Ausdruck: (a+b)*(a-b) Variablenfolge: (a, b) Zustand, Wertebelegung: =(-2, 3) Wert des Ausdrucks (a+b)*(a-b) im Zustand : -5 „(a+b)*(a-b)“() = „(a+b)*(a-b)“(-2, 3) = (-2+3)*(-2-3) =-5 Auswertungsvorschrift legt Bedeutung fest!
Auswertung mittels Syntax-baum Ausdruck Term Faktor MultOp * ( Ausdruck ) Term AddOp Term Element Variable a b + - -5 -5 (a+b)*(a-b) 1 -5 -5 1 -2 -2 3 3 -2 -2 3 3 -2 3 -2 3 -2 3 -2 3 -2 3
Semantik als partielle Funktion e Ausdruck e = „(a+b)*(a-b)“ D Wertebereich der Variablen Konstante ohne und mit negativem Vorzeichen Zustand, Wertebelegung der Variablen Variable in lexikografischer Ordnung, hier (a, b) = (-2, 3) steht für die Wertebelegung a=-2, b=3 Menge aller Zustände = D D e () Wert des Ausdrucks im Zustand z.B. „(a+b)*(a-b)“(-2, 3) mit dem Resultat -5 e : D Semantik des Ausdrucks als partielle Funktion
Zusammenfassung Programmiersprachen sind künstliche Sprachen Ihre Syntax wird mittels EBNF beschrieben Der Syntaxbaum bestimmt die Auswertungsstruktur eines wohlgeformten Textes (z.B. eines Programms) Die Auswertungsvorschrift definiert die Semantik Die Semantik ist eine partielle Funktion