KLAUSUR ZUM BACHELORMODUL EINFÜHRUNG IN DIE PROGRAMMIERUNG WS 2016/17, DR. MAXIMILIAN HADERSBECK KLAUSUR AM 6.2.2017 VOR NACH MATRIKELNUMMER: STUDIENGANG: B.Sc. Computerlinguistik, B.Sc. Informatik, Magister Bitte unterstreichen Sie den für Sie zutreffenden Studiengang! Die Klausur besteht aus 11 Aufgaben. Die Punktzahl ist bei jeder Aufgabe angegeben. Die Bearbeitungsdauer beträgt 90 Minuten. Bitte überprüfen Sie, ob Sie ein vollständiges Exemplar erhalten haben. Tragen Sie die Lösungen in den dafür vorgesehenen Raum im Anschluss an jede Aufgabe ein. Falls der Platz für Ihre Lösung nicht ausreicht, benutzen Sie bitte nur die ausgeteilten Zusatzblätter! Aufgabe mögliche Punkte erreichte Punkte 1. Zahlenkonvertierung 2 2. Kleines Programm mit Schleife 6 3. Kleines Programm mit Sortieren 6 4. Reguläre Ausdrücke 10 5. Kleines Programm mit Funktion 6 6. Programm mit Rekursion 5 7. Frequenzliste 20 8. Secure Copy 4 9. Dateiverwaltung 5 10. Zeichensätze 2 11. Frequenzliste 4 Summe 70 Note Einwilligungserklärung Hiermit stimme ich einer Veröffentlichung meines Klausurergebnisses in der Vorlesung vom 6.2.2017 unter Verwendung meiner Matrikelnummer im Internet zu. Datum: Unterschrift:
1 Zahlenkonvertierung Aufgabe 1 Zahlenkonvertierung Geben Sie die fehlenden Zahlendarstellungen in den entsprechenden Codierung an. 1. Dezimalzahl: 13 Binär: Oktal: Hexadezimal 2. Hexadezimal: EE Binär: Oktal: Dezimalzahl 2 PUNKTE 2 Kleines Programm mit Schleife Aufgabe 2 Kleines Programm mit Schleife Schreiben Sie ein Programm, das von 20 bis 0 rückwärts jede zweite Zahl auf der Konsole ausgibt. Wenn die Zahl kleiner gleich 10 und größer gleich 5 dann soll auch noch auf der Konsole der Text ausgeben werden: Achtung ich bin zwischen 10 und 5 6 PUNKTE Seite 2 von 12
3 Kleines Programm mit Sortieren Aufgabe 3 Kleines Programm mit Sortieren Gegeben ist eine Wortliste mit Umlauten: wortliste = ["Am","Abend","schmecken","die","Äpfel","am","Besten"]!/usr/bin/python3 wortliste = ["Am","Abend","schmecken","die","Äpfel","am","Besten"] print("sorted=",sorted(wortliste)) 1. was gibt vorherige Programm aus: Ändern Sie das Programm, dass 2. die Sortierung die Wörter vor dem Sortieren in Kleinbuchstaben konvertiert werden. Wie lautet der Programmcode und wie lautet das Ergebnis der Sortierung? Ändern Sie das Programm, dass 3. die Umlaute, sprich die Internationalisierung (deutscher Text in UTF-8) berücksichtigt wird. Wie lautet der Programmcode und wie das Ergebnis der Sortierung? 6 PUNKTE Seite 3 von 12
4 Reguläre Ausdrücke in einem Text Aufgabe 4 Reguläre Ausdrücke in einem Text Sie arbeiten mit einem deutschen Text. Der gesamte Text ist einer Stringvariable inhalt gespeichert. Geben Sie die regulären Ausdrücke an die folgende Muster im Text finden! 1. Wie lautet die Kontrollanweisung, die alle Wörter, die maximal 5 Buchstaben umfassen findet und ausgibt? (3 Punkte) import re re1=re.compile( ) 2. Nun geben Sie nur den regulären Ausdruck an: (a) Findet alle Handynummern nach folgendem Muster: +49 160/12345678 (Handynummer, 3 Stellen Ländercode, 3 Stellen Vorwahl, 8 Stellen Teilnehmer) (b) findet alle mehrstelligen Zahlen (auch reelle Zahlen sind zugelassen) (z.b. 123 oder 1.23 oder 1,23 ). (c) findet alle Links in folgendem Format: (<a href=... </a>). (d) findet alle Wörter, die nur aus Großbuchstaben bestehen (z.b. USA) (e) findet alle Datumsangaben: z.b. 31.12.2016 oder 1.1.16 (f) findet alle Wörter, hinter denen ein Punkt, ein Ausrufezeichen oder ein Fragezeichen steht z.b. geht. oder geh! oder lachen? (g) findet alle Wörter, die einen Umlaut enthalten ä ü ö ß Ä Ü Ö 10 PUNKTE Seite 4 von 12
5 Kleines Programm mit Funktion Aufgabe 5 Kleines Programm mit Funktion Gegeben ist eine Liste mit ganzen Zahlen Wie lautet in Python eine Funktion, bigger_than(list,x), die die Liste durchläuft und alle Werte der Liste auf der Konsole ausgibt, die größer sind als der Wert des zweiten Arguments. Ein Beispiel: liste=[2,4,6,8] bigger_than(liste,5) ergibt die Ausgabe: 6 ist größer als 5 8 ist größer als 5 6 PUNKTE Seite 5 von 12
6 Programm mit Rekursion Aufgabe 6 Programm mit Rekursion Gegeben ist folgendes Programm: def rechne (elem): if (elem >= 0 and elem <= 5): return 0 else: elem = elem - 1 ; print(elem," ",end="") return elem+rechne(elem); wert=10 result=rechne(wert) print("\nresult=",result) 1. Was gibt das Programm aus? (2 Punkte) 2. Was ist das Ergebnis, wenn die Funktion mit dem Wert -2 aufgerufen wird? 3. Was ist das Ergebnis, bzw. was passiert, wenn in der Funktion anstatt elem = elem - 1 folgendes steht: elem = elem + 1 und positive bzw. negative Zahlen eingegeben werden? (2 Punkte) 5 PUNKTE Seite 6 von 12
7 Python-Programm: Erstellen einer Frequenzliste Aufgabe 7 Sie haben die komplette Ausgabe einer Süddeutschen Zeitung in der Datei sz.txt gespeichert. Achten Sie bei den folgenden Aufgaben darauf, dass Sie einen deutschen Text eingelesen haben: a) Lesen Sie die Datei zeilenweise ein und spalten Sie jede Zeile in Wörter auf! b) Erzeugen Sie damit eine Frequenzliste aller Wörter c) Geben Sie die Wörter der Frequenzliste zusammen mit deren Häufigkeit auf der Konsole aus, für die eine der drei Bedingungen Bed1,...Bed3 gilt: Bed. 1:... Die Wörter sollen nur 3 bis maximal 5 Buchstaben enthalten. Bed. 2:... In den Wörter sollen nur die Buchstaben. (a, e, i, o, u, r, b, ü, ö) vorkommen (Groß/Kleinschreibung ist gleichgültig) Bed. 3:... die Wörter sollen auf nen. enden. d) Sortieren Sie jetzt die Frequenzliste nach Häufigkeit (häufigstes Wort zuerst) und... e)... speichern Sie die sortierte Liste in der Datei freq.txt im Format "Das Wort wort kommt anzahl mal vor" Tragen Sie in den freigelassenen Raum auf der linken Seite, die den Anweisungen auf der rechten Seite entsprechenden Python-Programmzeilen ein. Startzeile eines Python-Programms Regular Expression Modul Regular Expr. für Teilaufgabe a) bis c) Öffnen utf8 Datei sz.txt, Lesen Öffnen utf8 Datei freq.txt, Schreiben Zeilenweise einlesen nach line speichern Sie die alle Wörter im Dictionary freq Seite 7 von 12
Durchlaufen Sie die Frequenzliste freq und geben sie die Wörter und deren Häufigkeit aus 20 PUNKTE falls die Bedingungen Bed. 1 gilt falls die Bedingungen Bed. 2 gilt falls die Bedingungen Bed. 3 gilt nun sortieren Sie die Frequenzliste und schreiben Sie die sortierte Liste in die Ausgabedatei Schliessen Sie geöffnete Dateihandles Seite 8 von 12
8 Secure Copy Aufgabe 8 Secure Copy Sie bekommen von einer Partneruniversität folgende Accountdaten: Rechnername: projekt.an.partner-uni.de Verzeichnis: /projekte/klausur/ Username: lmugast (Passwort: z7g8ttz wird für die Lösung der Aufgabe nicht gebraucht, in der Praxis natürlich schon(interaktive Abfrage)) 1. Schreiben Sie auf, wie der Befehl lautet um die Datei corpus.tgz aus ihrem aktuellen Verzeichnis (Arbeitsverzeichnis) zur Partneruniversität zu kopieren! 2. Schreiben Sie auf, wie der Befehl lautet um die Datei rohdaten.zip von der Partneruniversität zu Ihrem Rechner zu kopieren! Ziel soll das aktuelle Verzeichnis (Arbeitsverzeichnis) sein. (2 Punkte) 9 Dateiverwaltung Aufgabe 9 Dateisystem /Dateieigenschaften/Pfade (2 Punkte) 4 PUNKTE 1. Machen Sie die Datei aufgabe1.txt für alle lesbar! 2. Erläutern Sie kurz den Unterschied folgender zwei Befehle! a) cp /tmp/text.txt /home/benutzer/ b) cp./tmp/text.txt /home/benutzer/ 3. Unter welcher Bedingung ist die Wirkung der cp Befehle aus der vorherigen Aufgabe identisch? (2 Punkte) 4. Ermitteln Sie wieviel Speicherplatz Sie in Ihrem Homeverzeichnis belegt haben! 5 PUNKTE Seite 9 von 12
10 Zeichensätze Aufgabe 10 Zeichensätze Das Wort München ist in vier verschiedenen Textkodierungen als oktaler byteweiser Dump dargestellt. Ordnen Sie die Kodierungen latin1, UTF-8, UTF-16 und UCS-4 (=UTF-32) richtig zu! 0000000 376 377 000 115 000 374 000 156 000 143 000 150 000 145 000 156 0000020 000 012 0000022 Kodierung des obigem Dumps: 0000000 115 303 274 156 143 150 145 156 012 0000011 Kodierung des obigem Dumps: 0000000 000 000 000 115 000 000 000 374 000 000 000 156 000 000 000 143 0000020 000 000 000 150 000 000 000 145 000 000 000 156 000 000 000 012 0000040 Kodierung des obigem Dumps: 0000000 115 374 156 143 150 145 156 012 0000010 Kodierung des obigem Dumps: (2 Punkte) 2 PUNKTE Seite 10 von 12
11 Frequenzliste Aufgabe 11 Frequenzliste Gegeben ist eine Datei text.txt. Erstellen Sie daraus eine Datei frequenzliste.txt. (Eine Liste mit zwei Spalten, Anzahl und Wort, nach Anzahl sortiert) mit Hilfe der GNU Core Utilities sort, tr, uniq unter Anwendung von Pipes in einer Befehlszeile. Erläutern Sie die einzelnen Schritte kurz! 4 PUNKTE Seite 11 von 12
es folgt ein Schmierblatt... Seite 12 von 12