Vorlesung PRG-1, WS05/06

Werbung
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
Herunterladen