Theoretische Informatik II. WS 2007/2008 Jun.-Prof. Dr. Bernhard Beckert Ulrich Koch. 1. Teilklausur Vorname:... Nachname:...

Ähnliche Dokumente
Mächtigkeit von WHILE-Programmen

Technische Informatik 1 Übung 2 Assembler (Rechenübung) Georgia Giannopoulou (ggeorgia@tik.ee.ethz.ch) 22./23. Oktober 2015

Vertraulich. Nachname: Vorname: Matrikel-Nummer: Studiengang: Datum: 30. Januar 2015

Einführung in die Programmierung, WS 14/15 Übungsleiter: Sebastian Ebers Aufgabenblatt 2

Fakultät Wirtschaftswissenschaft

Algorithmen und Programmierung

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

Theoretische Informatik 1

SOI Die Schweizer Informatikolympiade

Kontrollstrukturen, Pseudocode und Modulo-Rechnung

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

Information Security Management System. Klausur Wintersemester 2009/10 Hochschule Albstadt-Sigmaringen

Programmierkurs Java

Kurs 1575, Musterlösung zur Winter Klausur 2003/04

Methodische Grundlagen des Software Engineering - Übung 9

SWP Prüfungsvorbereitung

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Grundlagen der Informatik III Wintersemester 2010/2011

Dr. Monika Meiler. Inhalt

Klausur Grundlagen der Informatik

Abschnitt: Algorithmendesign und Laufzeitanalyse

1. Teilklausur. Modul "OOPM Vorlesung/Übung" Gruppe A

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

Erwin Grüner

Programmiertechnik II

I.1 Die Parrot Assemblersprache

Assembler-Programmierung

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Fallunterscheidung: if-statement

Kurzeinführung in C. Johannes J. Schneider

TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK

Algorithmen mit Python

Erster Kontakt mit Java und Pseudocode

5. Tutorium zu Programmieren

4. Übungsblatt zu Mathematik für Informatiker I, WS 2003/04

5. Varianten des Turingmaschinen-Konzeptes I: Varianten der Programmstruktur

Einführung in die Programmierung

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Übung zur Vorlesung Einführung in die Computerlinguistik und Sprachtechnologie

Visual Basic Basisbefehle Hinweis: Der Text in eckigen Klammern [ ] ist variabel, z.b. [var] => 5.3. Eckige Klammern sind stets wegzulassen!

Zusammenfassung Grundzüge der Informatik 4

Rekursive Auswertungsprozesse in Haskell

Geben Sie dazu jedes Mal, wenn sie die Zeile 15 passieren, die aktuelle Feldbelegung an. Der Anfang wurde bereits gemacht.

Theorie der Informatik (CS206) Fortsetzung LOOP-Programme, primitiv-rekursive Funktionen

Zur drittletzten Zeile scrollen

Semestralklausur zu Modellierung verteilter Systeme

Kode-Erzeugung, Abstrakte Maschinen, Rechnerarchitekturen

Technische Praxis der Computersysteme I 3. Vorlesung

Theoretische Grundlagen der Informatik

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Entwurf von Algorithmen - Kontrollstrukturen

Übungsblatt 2. Abgabe: Freitag, 7. November 2014, 18:00 Uhr

Wortproblem für kontextfreie Grammatiken

Kurzeinführung in C++

Wirtschaftsinformatik

Einführung in die Theoretische Informatik

Dr. Monika Meiler. Inhalt

Arbeitsbuch. Makroprogrammierung mit Excel

Programmierung in Python

Grundprinzipien der funktionalen Programmierung

Hardware/Software-Codesign

Programmieren in C. C Syntax Datentypen, Operatoren und Kontrollstrukturen. Prof. Dr. Nikolaus Wulff

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE:

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

Universität Paderborn Fakultät für Naturwissenschaften - Physikalisches Praktikum Versuche mit Microcontroller-System

Aufgabe 1 (Excel) Anwendungssoftware 1 / 11 Semesterschlussprüfung

Stephan Brumme, SST, 2.FS, Matrikelnr

SOMA Reverse Engineering

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Einführung in die Informatik I

4 Greedy-Algorithmen (gierige Algorithmen)

Sin-Funktion vgl. Cos-Funktion

Spezifikation der zulässigen Parameter. Bemerkungen: Bemerkungen: (2) Design by Contract:

DAP2-Klausur

Vorlesung Software-Reengineering

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Übersicht. Schleifen. Schleifeninvarianten. Referenztypen, Wrapperklassen und API. 9. November 2009 CoMa I WS 08/09 1/15

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Vorname: Nachname: Matrikelnummer: -Addresse: Studiengang (bitte genau einen ankreuzen): Master of SSE Erasmus Sonstige:

Klausur "Informationstechnische Grundlagen" WS 2012/2013

Klausur Formale Systeme Fakultät für Informatik WS 2009/2010

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester

Einführung in die Informationstechnik. Eingabe - Verarbeitung - Ausgabe CIUS - KREISLICHT. Realschule Tamm Technik Axel Steinbach

FB Informatik. Fehler. Testplan

Tutoraufgabe 1 (Datenstrukturen in Haskell):

Graphic Coding. Klausur. 9. Februar Kurs A

Übersetzung von Struktogrammen nach VBA

SPS. Nockenschaltwerk- Software

C/C++ Programmierung

Klausur zur Vorlesung Grundlagen der Betriebssysteme WS 2011 / 2012

Übersicht Programmablaufsteuerung

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

Informatik Repetitorium SS Volker Jaedicke

Einführung in die Programmierung

Lehrstuhl Informatik VI Grundzüge der Informatik * WS 2008/2009 Prof. Dr. Joachim Biskup

EndTermTest PROGALGO WS1516 A

Informatik Grundlagen, WS04, Seminar 13

Einführung in die Programmierung WS 2014/ Algorithmus, Berechenbarkeit und Programmiersprachen 2-1

Kaufmännische Berufsmatura 2010 Kanton Zürich Serie 1

Transkript:

Theoretische Informatik II WS 2007/2008 Jun.-Prof. Dr. Bernhard Beckert Ulrich Koch 1. Teilklausur 11. 12. 2007 Persönliche Daten bitte gut leserlich ausfüllen! Vorname:... Nachname:... Matrikelnummer:... Klausurergebnis bitte nicht ausfüllen! Aufgabe 1:... Aufgabe 2:... Aufgabe 3:... Aufgabe 4:... Aufgabe 5:... (18 Punkte) (8 Punkte) (6 Punkte) (6 Punkte) (7 Punkte) Gesamtergebnis:... Note:...

Theoretische Informatik II, 11. 12. 2007 2 1 Multiple Choice (7+6+5 = 18 Punkte) Hinweis: Bei den folgenden Ankreuzaufgaben führen e Kreuze zu Punktabzug! Dabei werden insgesamt jedoch keinesfalls weniger als 0 Punkte für die jeweilige Teilaufgabe vergeben. (a) Registermaschinen (7 Punkte) Entscheiden Sie durch Ankreuzen, ob die folgenden Aussagen oder sind. Im LOOP-Programm loop x 1 do S end kann die Anzahl der Ausführungen von S dadurch beeinflusst werden, dass x1 in S geändert wird. Die if-then-else-anweisung lässt sich mit der while-anweisung simulieren. Jedes WHILE-Programm terminiert. Es gibt zu jedem GOTO-Programm ein äquivalentes GOTO- Programm, das nur einen Rücksprung enthält. (Dabei ist goto j ein Rücksprung, wenn das Sprungziel j :... syntaktisch vor goto j im Programm steht.) Es gibt zu jedem WHILE-Programm ein äquivalentes LOOP- Programm. Es gibt zu jedem GOTO-Programm ein äquivalentes WHILE- Programm. Es gibt zu jedem WHILE-Programm eine äquivalente Turing- Maschine.

Theoretische Informatik II, 11. 12. 2007 3 (b) Primitiv rekursive Funktionen (6 Punkte) Entscheiden Sie durch Ankreuzen, ob die folgenden Aussagen oder sind. Für jede natürliche Zahl k ist die Funktion f mit primitiv rekursiv. f(n 1,..., n k ) = k i=1 Jede primitiv-rekursive Funktion ist auch total. Jede totale Funktion ist primitiv-rekursiv. Die Ackermann-Funktion ist primitiv rekursiv. Es gibt zu jeder primitiv rekursiven Funktion ein äquivalentes LOOP-Programm. Es gibt zu jeder primitiv rekursiven Funktion eine äquivalente Turing-Maschine. (c) µ-rekursive Funktionen (5 Punkte) n i Entscheiden Sie durch Ankreuzen, ob die folgenden Aussagen oder sind. Alle µ-rekursiven Funktionen lassen sich mit nur einer Anwendungen des µ-operators definieren. Jede primitiv rekursive Funktion ist µ-rekursiv. Jede totale µ-rekursive Funktion ist primitiv-rekursiv. Jede µ-rekursive Funktion ist total. Es gibt zu jedem WHILE-Programm eine äquivalente µ-rekursive Funktion.

Theoretische Informatik II, 11. 12. 2007 4 2 Registermaschinen 1 (6+2 = 8 Punkte) (a) Ein WHILE-Programm (im Sinne dieser Aufgabe) hat eine der folgenden Formen: x i := c x i := x j x i := c op x j x i := x j op c x i := x j op x k P 1 ; P 2 if x i = 0 then P 1 end while x i 0 do P 1 end Dabei ist op {+,, }, x i, x j, x k sind Register, c ist eine Konstante aus IN 0, und P 1, P 2 sind WHILE-Programme. Die Funktion log : IN 2 0 IN 0 sei wie folgt definiert: { logx y falls x 2 und y 1 log(x, y) = undefiniert sonst i. Geben Sie ein Pseudocode-Programm für log an. Dieses darf nur die arithmetischen Operatoren +,, verwenden. Ansonsten muss es nicht den oben genannten Formvorgaben für WHILE-Programme genügen. Lösung: if x 1 then undef ; if y = 0 then undef ; z := 1; while z y do z := z x; r := r + 1 end; output r. 1 ii. Geben Sie nun ein WHILE-Programm für log an. Beachten Sie dabei auch, dass alle Register außer dem Ergebnis-Register am Ende der Programmausführung dieselben Werte wie am Anfang enthalten müssen. Lösung:. x 4 := x 1 1; if x 4 = 0 then x 1 := 1; while x 1 0 do x 1 := 1 end end; if x 2 = 0 then while x 1 0 do x 1 := 1 end end; x 4 := 1;. x 5 := x 4 x 2 ; x 5 := 1. x 5 ; while x 5 0 do x 4 := x 4 x 1 ; x 3 := x 3 + 1;. x 5 := x 4 x 2 ; x 5 := 1. x 5 end;. x 3 := x 3 1; x 4 := 0; x 5 := 0

Theoretische Informatik II, 11. 12. 2007 5 (b) Ein GOTO-Befehl (im Sinne dieser Aufgabe) hat eine der folgenden Formen: x i := c x i := x j x i := x i ± 1 if x i = 0 goto l Dabei sind x i, x j Register, c ist eine Konstante aus IN 0 und l ist ein Label. Ein GOTO-Programm (im Sinne dieser Aufgabe) hat die Form l 1 : B 1 ;...; l k : B k (k 1), dabei sind B 1,..., B k GOTO-Befehle und l 1,...,l k paarweise verschiedene Labels. Geben Sie ein GOTO-Programm an, das für keine Eingabe terminiert und aus höchstens drei Befehlen besteht. Lösung: 1 : x 1 := 0; 2 : if x 1 = 0 goto 1

Theoretische Informatik II, 11. 12. 2007 6 3 Registermaschinen 2 (3+1+2 = 6 Punkte) Gegeben sei das folgende LOOP-Programm P: loop x 1 do x 3 := x 3 + 1 end; // (1) loop x 3 do x 2 := x 2 + x 3 end; // (2) x 3 := 0 (a) Füllen Sie die folgende Tabelle mit den Werten der Register x 1, x 2, x 3 an den beiden Programmstellen (1) und (2), und zwar jeweils i. für die Eingabe 3 und ii. für die Eingabe 5. Eingabe 3 x 1 x 2 x 3 (1) 3 0 3 (2) 3 9 3 Eingabe 5 x 1 x 2 x 3 (1) 5 0 5 (2) 5 25 5 (b) Welche Werte berechnet P für folgende Eingaben? i. Eingabe: 3 Ausgabe:... ii. Eingabe: 5 Ausgabe:... 9 25 (c) Welche Funktion f : IN 0 IN 0 berechnet P? f(n) = n... 2

Theoretische Informatik II, 11. 12. 2007 7 4 µ-rekursive Funktionen (6 Punkte) Zeigen Sie, dass die Funktion µ-rekursiv ist. kgv : IN 2 0 IN 0 kgv(x, y) = das kleinste gemeinsame Vielfache von x und y Dabei dürfen Sie alle Funktionen als µ-rekursiv voraussetzen, für die dies in der Vorlesung oder auf einem Aufgabenblatt schon bewiesen wurde, und zudem die folgende Funktion: Lösung: teilt : IN 2 0 IN 0 { 1 falls n 0 und n m ( n teilt m ) teilt(n, m) = 0 sonst kgv(x, y) = µi((1. (teilt(x, i) teilt(y, i))) = 0)

Theoretische Informatik II, 11. 12. 2007 8 5 Primitiv rekursive Funktionen (1+3+3 = 7 Punkte) Gegeben seien die folgenden primitiv rekursiven Funktionen: f 1 = + (. (π 2 1, c 2 5), (π 2 2, π 2 2)) f 2 = PR[(+1) 0, ((+1) π 2 1, π2 2 )] Dabei sei für alle s, k IN 0 und n 1,...,n k IN k 0 definiert: c k s(n 1,...,n k ) = s (a) Welche Stelligkeiten haben f 1 bzw. f 2? 2 Stelligkeit von f 1 :... 1 Stelligkeit von f 2 :... (b) Welche Werte berechnen f 1 bzw. f 2, falls alle Argumente... i. gleich 2 sind? 4 f 1 (...) =... 2 f 2 (...) =... ii. gleich 3 sind? 9 f 1 (...) =... 6 f 2 (...) =... (c) Was berechnen f 1 und f 2 im allgemeinen? n, m ) = (n.... 5) + m 2 f 1 (... f 2 ( n... ) = n!...