Prof. Dr. Detlef Krömker Ashraf Abu Baker Varrentrappstr. 40-42 60486 Frankfurt am Main Tel.: +49 (0)69798-24600 Fax: +49 (0)69798-24603 EMail: [email protected] Aufgabe 2. 1: (Codieren/Decodieren) a) (1 Punkt) ASCII-Code Decodieren Sie die folgende im ASCII-Code codierte Nachricht: [Anfang der Nachricht] 01001001 00100000 01100101 00100000 01101001 00101110 01101110 01000111 00100000 01100101 01100011 00100000 01110010 01100111 01110011 01101000 01100100 01110101 01100101 00100000 01110100 01100101 01110000 01101000 01101100 01100101 01110010 01110000 01110100 01100101 01110010 [Ende der Nachricht] b) (2,5 Punkte) Huffman-Code Bei der Huffman-Codierung ordnet man alle zu kodierenden Zeichen nach Ihren Auftrittswahrscheinlichkeiten und fasst die beiden Zeichen mit den geringsten Wahrscheinlichkeiten w1 und w2 zu einem Knoten zusammen, dem die Wahrscheinlichkeit w1+ w2 zugeordnet wird. Damit erhält man eine neue Folge von Wahrscheinlichkeiten, die auch den neu gebildeten Knoten mit einschließt. Im nächsten Schritt fasst man wiederum die zu den beiden kleinsten Wahrscheinlichkeiten gehörenden Elemente (das können nun Zeichen oder Knoten sein) zu einem neuen Knoten zusammen. Man erfährt weiter auf diese Weise, bis alle Zeichen einen Platz im so entstandenen Huffman-Baum gefunden haben. Man kann zeigen, dass es durch Codierung von Einzelnzeichen nicht möglich ist, einen Code zu finden, der eine geringere Redundanz aufweist als der nach dem Huffman-Verfahren erzeugt. Beispiel zur Huffman-Codierung einer Nachricht, in der die Buchstaben c,v,w,u,r,z mit den Wahrscheinlichkeiten w(c)=0,1643, w(v)=0,0455, w(w)=0,0874, w(u)=0,1963, w(r)=0,4191 und w(z)=0,0874 auftreten. Erstellen Sie zur Nachricht aus Teil a einen Huffman-Code. c) (1,5 Punkte) Berechnen Sie den Informationsgehalt und die Entropie der beiden Codes sowie die mittlere Wortlänge des Huffman-Codes. Welche Codierung ist effizienter und warum? Was ist der Zusammenhang zwischen der mittleren Wortlänge und der Entropie? Aufgabe 2.2: (Programm, Compiler, Interpreter) a) (2 Punkte) Definieren Sie die folgenden Begriffe: Compiler, Interpreter, Assembler, ByteCode, Maschinencode. b) (2 Punkte) Nennen Sie die Vor- und Nachteile von Interpretern und Compilern. c) (1 Punkte) Geben Sie einige Beispiele für Compiler- und Interpreter-Programmiersprachen und erläutern Sie die Aussage: „Java ist eine Compiler-Interpretersprache“ Aufgabe 2.3: (Zahlendarstellung) a) (1,5 Punkte) Konvertierung aus dem Dezimalsystem Erläutern Sie die Vorgehensweise zur Konvertierung einer Dezimalzahl (Zahl zur Basis 10) in eine andere Zahl, dargestellt in einem Zahlensystem zur Basis b. Konvertieren Sie die folgenden Dezimalzahlen in Zahlen zu der jeweils angegebenen Basis: Zahl 7119(10) 137(10) 101(10) Basis 16 2 2 b) (1 Punkt) Konvertierung ins Dezimalsystem Geben Sie die allgemeine Formel zur Konvertierung einer Zahl dargestellt in einem Zahlensystem zur Basis b in eine Dezimalzahl. Wandeln Sie die folgenden Zahlen in Dezimalzahlen um: 1010(2), 146(7), 10ABC(16) c) (1,5 Punkte) Konvertierung vom Dualsystem in Systeme zur Basis b=2i und umgekehrt Erläutern Sie die Vorgehensweise zur Umwandlung einer Zahl im Dualsystem in ein Zahlensystem zur Basis b=2i, i>1 (b ist eine Zweierpotenz) und umgekehrt. Wandeln Sie die folgenden Zahlen in Zahlen zur jeweils angegebenen Basis um, ohne sie zunächst in Dezimalzahlen umzuwandeln: Zahl Basis 1011011(2) 8 1001(2) 16 1F(16) 2 70(8) 2 d) (1 Punkt) Der allgemeine Fall: Konvertierung von Zahlen zu beliebigen Basen Konvertieren Sie die folgenden Zahlen in Zahlen zu der jeweils angegebenen Basis: Zahl 418(9) 213(5) Basis 13 7 Aufgabe 2.4: Lerngruppenaufgabe (Syntaxdarstellung) a) (1 Punkt) Nennen Sie 3 Möglichkeiten zur Syntaxbeschreibung einer Programmiersprache. b) (2 Punkte) Wandeln Sie das folgende Syntaxdiagramm in eine äquivalente EBNF um. Sind die folgenden Ausdrücke korrekt? 1) -10001+010101001+-10011001+1 2) 00101+10010100-+1000101+101001 3) 1111+-1111+1111 Wie muss das Syntaxdiagramm erweitert werden, damit keine Zahlen mit führender 0 vorkommen (also 110+0010 soll verboten, aber 110+10 erlaubt sein)? c) (2 Punkte) Gegeben sei folgende EBNF: <Start>::= <Digits> „.“ [<sVocal>] <bVocal> | „.“ <Digits> {<bVocal>} | <sVocal> {<bVocal>} <Digit> <Digits> ::= <Digit> {Digits} <Digit> ::= „0“ | „1“ | „2“ | „3“ | „4“ | „5“ | „6“ | „7“ | „8“ | „9“ <sVocal> ::= „a“ | „e“ | „i“ | „o“ | „u“ <bVocal> ::= „A“ | „E“ | „I“ | „O“ | „U“ [...] bedeutet: Symbole oder Symbolfolgen innerhalb der Klammern können auch weggelassen werden {...} bedeutet: Symbole oder Symbolfolgen innerhalb der Klammern können beliebig oft wiederholt oder auch ganz weggelassen werden ...|... bedeutet: genau ein alternatives Symbol oder eine alternative Symbolfolge innerhalb der Klammern muss auftreten <Zeichenfolge>: Nichtterminal „Zeichenfolge“: Terminal Formen Sie die obige EBNF in ein äquivalentes Syntaxdiagramm um! Welche der folgenden Zeichenketten sind bezüglich der obigen EBNF syntaktisch korrekt, welche nicht (Begründen Sie Ihre Entscheidung!): 1) 4711.E 2).AE 3) i56 4) 88.eeAA 5) eAEE7 6) 815+aA