Nachklausur LÖSUNG. Bitte in Druckschrift leserlich ausfüllen!

Ähnliche Dokumente
1. Teilklausur Gruppe A. Bitte in Druckschrift leserlich ausfüllen!

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

Abschlussklausur. Lösung

Aufgabe 1 (12 Punkte)

Abschlussklausur Lösung. Bitte in Druckschrift leserlich ausfüllen!

Nachklausur Lösung. Bitte in Druckschrift leserlich ausfüllen!

Nachklausur Bitte in Druckschrift leserlich ausfüllen!

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

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Probeklausur: Programmierung WS04/05

Abschlussklausur Bitte in Druckschrift leserlich ausfüllen!

Institut für Programmierung und Reaktive Systeme 2. Februar Programmieren I. Übungsklausur

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Institut für Programmierung und Reaktive Systeme 25. Januar Programmieren I. Übungsklausur

Matrikelnummer:

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Programmiertechnik Übungen zu Klassen & -methoden

Welche Informatik-Kenntnisse bringen Sie mit?

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

2 Eine einfache Programmiersprache

2 Eine einfache Programmiersprache. Variablen. Operationen Zuweisung. Variablen

Einführung in die Informatik 1

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Einführung in die Programmierung Vorlesungsprüfung

Test-Klausuraufgaben Softwaretechnik Fachbereich BW, für WINFO

Einführung in die Informatik 1

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Logik für Informatiker

Einführung in die Programmierung

Abschnitt 11: Korrektheit von imperativen Programmen

Stack. Seniorenseminar Michael Pohlig

2 Eine einfache Programmiersprache

Schnittstellen, Stack und Queue

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2009/10

Klausur zur Lehrveranstaltung. Technische Informatik für Ingenieure WS 2008/09

Klausur Formale Systeme Fakultät für Informatik SS 2018

Allgemeine Hinweise:

2 Eine einfache Programmiersprache

Allgemeine Informatik II SS :30-13:30 Uhr

Klausur Formale Systeme Fakultät für Informatik SS 2017

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

2 Eine einfache Programmiersprache

Informatik 1 für Nebenfachstudierende Beispiele für Klausuraufgaben

Diskrete Modellierung (SS 08) Klausur (Modulabschlussprüfung)

Übung Algorithmen und Datenstrukturen

Technische Universität Braunschweig

Beispielprüfung CuP WS 2015/2016

Basispruefung Herbst 2016/ Einführung in die Programmierung

Institut fu r Informatik

Programmierung für Mathematik HS11

Algorithmen und Datenstrukturen (für ET/IT)

Speicher und Adressraum

Klausur zu Grundlagen der Programmierung in C

Klausur Algorithmen und Datenstrukturen I SS 03

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

Klausur zur Vorlesung Logik für Informatiker Sommersemester 2017

Technische Universität München WiSe 2018/19 Fakultät für Informatik Übungsblatt 6 Dr. Ch. Herzog 26. November 2018

Universität zu Lübeck Institut für Telematik. Prof. Dr. Stefan Fischer

Technische Universität Braunschweig Institut für Programmierung und Reaktive Systeme

Implementieren von Klassen

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

12 Abstrakte Klassen, finale Klassen und Interfaces

Einfache Arrays. Dr. Philipp Wendler. Zentralübung zur Vorlesung Einführung in die Informatik: Programmierung und Softwareentwicklung

Klausur "ADP" SS 2015

Nachholklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Definition Algorithmus. Wie beschreibt man Algorithmen?

Klausur Fachprüfung Wirtschaftsinformatik. Name:

Grundzüge der Wirtschaftsinformatik WS 2002/03. Wiederholung Java. Programmierzyklus. Heiko Rossnagel Problem

PK-Einstufungstest. 1. Allgemeine Multiple-Choice-Aufgaben. Aufgabe 1.1. Alle Aufgaben beziehen sich auf Java.

Algorithmen und Datenstrukturen SS Übungsblatt 1: Grundlagen

Abschlussklausur. Lösung

Vorsemesterkurs Informatik

4.2 Daten und Datenstrukturen

Übung Informatik I - Programmierung - Blatt 2

OOP Aufgabenblatt 7 6. Dezember 2013

II.3.1 Rekursive Algorithmen - 1 -

Allgemeingültige Aussagen

public class Test extends MiniJava { public static void main (String [] args) { write(args[0]+args[1]); } } // end of class Test

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

How To Prove A Propositional Logic

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015

Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 23. Januar 2017

Programmierung für Mathematik (HS13)

Probeklausur Java Einführung in die Informatik. Wintersemester 2014/2015. Musterlösung

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Übungen zu Klassen und -methoden

CS1005 Objektorientierte Programmierung

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Transkript:

Informatik für Informationsmanger I WS 2005/6 Universität Koblenz-Landau Institut für Informatik Jun.Prof. Dr. Bernhard Beckert Dr. Manfred Jackel Nachklausur 28.02.2007 LÖSUNG Bitte in Druckschrift leserlich ausfüllen! Name Vorname E-Mail-Adresse @uni-koblenz.de Matrikelnummer Studiengang: Computervisualistik (Diplom) Informatik (Diplom) Computervisualistik (BSc) Informatik (BSc) Anglistik & Medienmanagement (BSc) Informationsmanagement (BSc) Diese Prüfungsleistung melde ich verbindlich als Freiversuch im Sinne der Prüfungsordnung an. Diese Prüfungsleistung ist mein 2. Versuch (Nachklausur). Erstversuch im (Semester). Auswertung: Punkte 1 2 3 4 5 6 GESAMT

Aufgabe 1 (12 Punkte) Programmieren Sie die Methode public static void printminmax aus. Die Methode soll den Wert des kleinsten und des größten Elementes im Array a mit Hilfe von System.out.print ausgeben. Denken Sie auch an den Fall eines leeren Feldes. public class Aufgabe1 { public static void printminmax(int[] a) { // jetzt sind Sie dran! if (a.length==0) System.out.println( Array ist leer ); else { int max=a[0]; min=a[0]; for (int i=1;i<a.length;i++) { if (a[i]<min) min := a[i]; if (a[i]>max) max := a[i]; System.out.println( Min = +min+, Max = +max);

Aufgabe 2 (8 Punkte) Gegeben sei folgende rekursive Java-Funktion f für positive Argumentwerte a,b: public static int f(int a, int b) { if (a>b) return f(a-b,b); else if (a<b) return f(a,b-a); else return a; a) Welcher Wert wird k durch den Aufruf int k=f(4,6); zugewiesen? Begründen Sie Ihre Antwort, indem Sie das Ergebnis jedes Aufrufs der Funktion f in Reihenfolge protokollieren. Geben Sie die Argumente des jeweiligen Aufrufs an. Aufruf mit Ergebnis des Aufrufes Parameter f(4,6) 2 f(4,2) 2 f(2,2) 2 b) Was berechnet f? Geben Sie eine mathematische Formel oder eine verbale Beschreibung der Funktion an. f berechnet den ggt von a und b. Bew.: Wenn a=b ist, ist a=b=ggt(a,b), das liefert der 2. else-teil. Sei nun a>b. Wir zeigen, dass ggt(a,b)=ggt(a-b,b). Aus der Def. des ggt folgt: a=x*ggt(a,b).und b=y*ggt(a,b) mit teilerfremden x und y. Wir berechnen daraus a-b=(x-y)*ggt(a,b), also ist ggt(a,b) auch Teiler von a-b. Da y und x-y ebenfalls teilerfremd sind, ist ggt(a,b)=ggt(a-b,b). Der Fall b>a geht analog.

Aufgabe 3 (12 Punkte) Wir verwenden im Folgenden die Binärdarstellung ganzer Zahlen im Zweierkomplement mit 16 Bit. a) Geben Sie die Binärdarstellung von 127 10 an! b) Geben Sie die Binärdarstellung von -128 10 an! c) Welche Dezimalzahl hat die Binärdarstellung 1111111111100010? a) 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 = 127 10 b) 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 = -128 10 c) 1 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 = -30

Aufgabe 4 (12 Punkte) a) Formalisieren Sie die Aussagen 1-6 über die Gesamtheit aller Häuser in Aussagenlogik, indem Sie entsprechende aussagenlogische Formeln angeben. Verwenden Sie die fett gedruckten Anfangsbuchstaben als Variablennamen (z.b. G für das Haus ist gelb). 1. Ein Haus ist gelb oder blau oder weiß. 2. Ein Haus hat ein Reetdac, ein Ziegeldach oder ein Schieferdach. 3. Wenn ein Haus ein Reetdach hat und nicht gelb ist, dann ist es weiß.. 4. Häuser,die weiß oder gelb sind, haben Ziegeldächer oder Schieferdächer. 5. Gelbe Häuser haben kein Schieferdach. 6. Häuser mit einem Schieferdach oder mit einen Reetdach sind nicht blau. Hinweis: Sie sollen nicht ausrechnen, ob es überhaupt Häuser gibt, die diesen Bedingungen genügen, Sie müssen nur die Aussagen formalisieren! 1. G B W 2. R Z S 3. R G W 4. W G Z S 5. G S 6. S R B b) Überprüfen Sie mit Hilfe einer Wahrheitstabelle, ob ( q p) alle Belegungen der Variablen wahr ist. peine Tautologie ist, d.h. für ( ) p q q p q p p false false true false false true false false true false true true true true true true ( p ist allgemeingültig q p) q p) ( p ist nicht allgemeingültig

Aufgabe 5 (12 Punkte) Implementieren Sie eine Klasse Zeitspanne, die eine Zeitspanne in Tagen, Stunden, Minuten und Sekunden festlegt. Die interne Speicherung sei normiert, d.h. die Werte von Sekunden und Minuten liegen zwischen 0 und 59, die Stunden zwischen 0 und 23. Tag kann beliebig groß (im Wertebereich von long) werden. Wir betrachten nur positive Zeitspannen. Wir machen folgende Vorgaben: public class Zeitspanne { protected int s; // Sekunden 0<=s<60 protected int m; // Minuten 0<=m<60 protected int h; // Stunden 0<=s<24 protected long d; // Tage d>=0 a) Implementieren Sie einen Konstruktor, der die Zeitspanne der Dauer d Tage, h Stunden, m Minuten und s Sekunden erzeugt: Denken Sie an den Aufruf der Methode normiere() (siehe b)), damit auch nicht normierte Übergabewerte verarbeitet werden können. public Zeitspanne (long d, int h, int m, int s) { // hier ergänzen this.s=s; this.m=m; this.h=h; this.d=d; normiere(); b) Vervollständigen Sie die Methode normiere, die die Zeitwerte wie anfangs beschreiben normiert. void normiere() { //normiere Sekunden while (s>=60) { s -=60; m++; // normiere Minuten while (m>=60) { m -=60; h++; // normiere Stunden while (h>=24) { h -=24; d++;

Aufgabe 5 Forts. c) Implementieren Sie eine Methode add, die eine Zeitspanne aufaddiert. Denken Sie an die notwendige Normierung! Beispiel Zeitspanne(0,0,0,20).add(0,0,0,100) liefert dieselbe Zeitspanne wie Zeitspanne(0,0,2,0). public void add(int d1, int h1, int m1, int s1) { s +=s1; m +=m1; h +=h1; d +=d1; normiere()

Aufgabe 6 (16 Punkte) Diese Aufgabe umfasst 4 Multiple-Choice Cluster mit je 4 Ankreuzfragen. Für jedes Cluster gilt: wenn alle 4 Kreuze an der richtigen Stelle stehen, gibt es 4 Punkte für das Cluster. Ein falsches Kreuz gibt einen Punkt Abzug. Wer 2 richtige und 2 falsche Kreuzchen in einem Cluster macht, erhält 1+1-1-1=0 Punkte. Zum Trost: es gibt keine negativen Gesamtpunktzahlen, jedes Cluster bringt 0 bis 4 Punkte. Ja Nein Frage a) Grundlagen 1. Unter Komplexität versteht man den Speicherbedarf eines Programmes. 2. Jede mathematische Funktion ist berechenbar. 3. {true ist eine zulässige Eingabespezifikation für einen Algorithmus. 4. Ausleeren eines Hallenbad-Beckens mit einem Teelöffel ist ein effektiver Algorithmus. b) Java 1. long int real; ist korrekter Java-Code. 2. Jede nicht abstrakte Java-Klasse muss eine main-methode besitzen. 3. Ein Java-Objekt kann aus dem Speicher entfernt werden, wenn keine Referenz mehr auf das Objekt zeigt, 4. Wenn eine Klasse keinen Konstruktor hat, meldet der Compiler einen Fehler. c) Programmieren 1. Java kennt keine Rekursion in mehreren Argumenten. 2. Ein Programm ist genau dann partiell korrekt, wenn es für mindestens eine Eingabe ein korrektes Ergebnis berechnet. 3. Die Datenstruktur Schlane (queue) verwendet das First-in-first-out-Prinzip 4. for (int i; i<10; i--) System.out.print(i); ist korrekter Java-Code. d) Logik 1. ( a b) ( c d) () ist in konjunktiver Normalform 2. A ist allgemeingültig, falls A unerfüllbar ist. 3. a a ist allgemeingültig 4. Für jede erfüllbare aussagenlogische Formel A gilt: A A A true