Kurs 1613 Einführung in die imperative Programmierung Lösungen der Aufgaben zum Studientag

Ähnliche Dokumente
Kurs 1613 Einführung in die imperative Programmierung

Kurs 1612 Konzepte imperativer Programmierung Kurs 1613 Einführung in die imperative Programmierung

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Klausur am

Kurs 1613 Einführung in die imperative Programmierung Musterlösung zur Klausur am

Kurs 1612 Konzepte imperativer Programmierung Musterlösung zur Nachklausur am

FernUniversität -Gesamthochschule- in Hagen

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

13. Binäre Suchbäume

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Datenstrukturen und Algorithmen

11.1 Grundlagen - Denitionen

Universität Duisburg - Essen

Wintersemester 98/99 Hinweise zur Bearbeitung der Klausur zum Kurs 1612 Konzepte imperativer Programmierung

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

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Binäre Suchbäume. Mengen, Funktionalität, Binäre Suchbäume, Heaps, Treaps

Vorlesung Datenstrukturen

An die Teilnehmerinnen und Teilnehmer des Kurses 1613 Einführung in die imperative Programmierung im WS 05/06

Bäume. Text. Prof. Dr. Margarita Esponda SS 2012 O4 O5 O6 O ALP2-Vorlesung, M. Esponda

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

BUBBLE SORT. Können wir die gefundenen Algorithmen auch auf Listen mit mehr als drei Elementen ausdehnen?

Informatik II, SS 2014

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

Sortieren. Eine Testmenge erstellen

Datenstrukturen & Algorithmen

Advanced Programming in C

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Programmierung und Modellierung

Hinweise zur Bearbeitung der Klausur zum Kurs Einführung in die imperative Programmierung

Teil X. Von Mini Pascal zu Pascal

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

9. Übung Algorithmen I

Informatik II. PVK Part1 Severin Wischmann n.ethz.ch/~wiseveri

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Beispiellösungen zu den Übungen Datenstrukturen und Algorithmen SS 2008 Blatt 6

Suchen und Sortieren Sortieren. Heaps

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Tutorium Algorithmen & Datenstrukturen

Programmiertechnik II

4.Grundsätzliche Programmentwicklungsmethoden

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Allgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift

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

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Algorithmen und Datenstrukturen Suchbaum

Methodische Grundlagen des Software Engineering - Übung 9

Suchbäume mit inneren Knoten verschiedener Knotengrade.

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

Über Arrays und verkettete Listen Listen in Delphi

368 4 Algorithmen und Datenstrukturen

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

In diesem Kapitel behandeln wir erste Algorithmen mit dynamischen Strukturen, wie Bäume und Graphen. 1. Bäume Grundlagen...

Übungen zu Programmierung I - Blatt 8

Objektorientierte Programmierung OOP Programmieren mit Java

ABITURPRÜFUNG 2009 LEISTUNGSFACH INFORMATIK

Kombinatorische Optimierung

Kapiteltests zum Leitprogramm Binäre Suchbäume

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Kapitel 9 Suchalgorithmen

Excel VBA. Teil Zusammenfassung! Was wir können sollten! V

Algorithmen und Datenstrukturen SS09

Sortierte Folgen 250

Informatik I Übung, Woche 40

Geordnete Binärbäume

Kostenmaße. F3 03/04 p.188/395

Was bisher geschah. deklarative Programmierung. funktionale Programmierung (Haskell):

JAVA - Suchen - Sortieren

Uberblick 1. Kurzeste Wege 2. Sichtbarkeitsgraphen 3. Berechnung des Sichtbarkeitsgraphen 4. Kurzeste Wege fur polygonale Roboter 1

BAUINFORMATIK. SS 2013 Vorlesung 1 Johannes Lange

14. Rot-Schwarz-Bäume

Informatik II, SS 2014

Wie funktioniert das Sortieren einer Reihe von Zufallszahlen mit Quicksort?

Lua Grundlagen Einführung in die Lua Programmiersprache

Einführung in VisualBasic for Applications. Stefan Mahlitz

Informatik II Musterlösung

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Fakultät Wirtschaftswissenschaft

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

2.3.1 Einleitung Einfache Sortierverfahren Höhere Sortierverfahren Komplexität von Sortierverfahren Spezielle Sortierverfahren

Primitive Datentypen

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Vorlesung Programmieren

Customization (Zuschneiden)

Binäre Bäume Darstellung und Traversierung

Erwin Grüner

VBA-Programmierung: Zusammenfassung

Agenda. 1 Einleitung. 2 Binäre Bäume. 3 Binäre Suchbäume. 4 Rose Trees. 5 Zusammenfassung & Ausblick. Haskell Bäume. Einleitung.

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

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

5 Semantische Analyse Symboltabelle

Programmierkurs Java

MB2-ALG, SS15 Seite 1 Hauptklausur, geschrieben am

BTree.dll - Balancierte und verkettete Bäume. Ecofor. BTree.dll. Realisiert mit Microsoft Visual Studio /9

Nachtrag zu binären Suchbäumen

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

EXCEL VBA Cheat Sheet

Rekurrenzen T(n) = T(n 1) + N beschreibt Laufzeitverhalten eines rekursiven Algorithmus

Delphi-Grundlagen Hn

Transkript:

Aufgabe 1 Gegeben sei die Prozedur BubbleSort: procedure BubbleSort(var iofeld:tfeld); { Programm sortiert das Eingabefeld iofeld aufsteigend var hilf:integer; i:tindex; j:tindex; vertauscht:boolean; i:=1; repeat vertauscht := false; for j := 1 to N - i do if (iofeld[j]>iofeld[j+1]) then hilf:=iofeld[j]; iofeld[j]:=iofeld[j+1]; iofeld[j+1]:=hilf; vertauscht := true i := i + 1 until ((i=n) or (not vertauscht)) } a) Überlegen Sie sich was das Programm leistet und wie es dabei vorgeht. Ergänzen Sie in der Prozedur einen erklärenden Kommentar an der grau eingefärbten Stelle. b) Was ist die Zeitkomplexität des BubbleSort? [Diese Frage ist nicht klausurrelevant] Bester Fall Komplexität: O(n) Durchschnittlicher Fall Komplexität: O(n 2 ) Schlechtester Fall Komplexität: O(n 2 ) 1

Aufgabe 2 procedure transponierematrix (var iomat : tmatrix); {transponiert die quadratische Matrix iomat} var i, j:tzeilespalte; {Zeilen- und Spaltenindex} hilf:integer; for i := 1 to ZEILENSPALTENMAX-1 do for j:= i+1 to ZEILENSPALTENMAX do hilf := iomat [i, j]; iomat [i, j] := iomat [j, i]; iomat [j, i] := hilf end {transponierematrix} 2

Aufgabe 3 function Baumpfad(inWurzel : trefbbknoten; insuchwert : integer):trefelement; {sucht einen Wert im Baum und gibt eine Liste aller Werte auf dem Pfad zum gesuchten Wert zurueck } var BBKnoten : trefbbknoten; LoeschElement, ListenAnfang, ListenEnde: trefelement; gefunden : boolean; BBKnoten := inwurzel; gefunden := false; ListenAnfang := nil; while (BBKnoten <> nil) and (not gefunden) do { 1.) ** Wert von BBKnoten in Liste einfügen ** } if ListenAnfang = nil then { erstes Listenelement erzeugen } new (ListenAnfang); ListenEnde := ListenAnfang end else {neues Listenelement anhaengen} new (ListenEnde^.next); ListenEnde := ListenEnde^.next ListenEnde^.info := BBKnoten^.info; ListenEnde^.next := nil; {2.) ** Suchwert gefunden? Falls nein, Suchbaum weiter durchlaufen ** } if insuchwert = BBKnoten^.info then gefunden := true else if insuchwert < BBKnoten^.info then BBKnoten := BBKnoten^.links else BBKnoten := BBKnoten^.rechts {while} {3.) ** Falls nicht gefunden, aufgebaute Liste loeschen **} if not gefunden then while ListenAnfang <> nil do LoeschElement := ListenAnfang; ListenAnfang := ListenAnfang^.next; dispose(loeschelement) {4.) ** Ergebnisrückgabe **} Baumpfad := ListenAnfang { Baumpfad } 3

Aufgabe 4 procedure BinBaumInorderMax(inWurzel: trefbbknoten; var iomax: integer); {durchlaeuft rekursiv die Knoten eines Binaerbaums in inorder- Reihenfolge und gibt das Maximum der bisher betrachteten info- Werte an jeder Stelle aus} if inwurzel <> nil then BinBaumInorderMax (inwurzel^.links, iomax); {Ist inwurzel das neue Maximum? iomax ggf aktualisieren und dann aktuelles Maximum ausgeben } if inwurzel^.info > iomax then iomax := inwurzel^.info; write(iomax, ' '); BinBaumInorderMax (inwurzel^.rechts, iomax) end {if} {BinBaumInorderMax} 4

Aufgabe 5 T 1.1 = {x N mit x<4 und (3 x) } T 1.2 = {x N mit x>3 und (3 x) } Testdatum (2, false, false) Testdatum (14, false, false) T 2.1 = {x N mit x<4, (3 x) und (9 x) } T 2.2 = {x N mit 3<x<10, (3 x) und (9 x) } T 2.3 = {x N mit x>9, (3 x) und (9 x) } Testdatum (3, true, false) Testdatum (6, true, false) Testdatum (12, true, false) T 3.1 = {x N mit x<10 und (9 x) } T 3.2 = {x N mit x>9 und (9 x) } Testdatum (9, true, true) Testdatum (18, true, true) 5

Lösungenn der Aufgaben zum Studientag 08.01.2012 Aufgabe 6 b) Für einen Zweigüberdeckungstest muss lediglich ein einziger Pfad P durchlaufen werden, nämlich (n start, n init, n while, n do, n while, n tail, n final ). Ein Testdatumm für diesen Pfad ist (1, 1). c) Für einen boundary interior-pfadtest müssen zusätzlich zwei weitere w Pfade durchlaufen werden, nämlich: keinmaliger Schleifendurchlauf: (n start, n init, n while, n tail, n final ), Testdatum T (0,0) und zweimaliger Schleifendurchlauf: (n start, n init, n while, n do, n while, n do, n while, n tail, n final ), Testdatum (11,2). Bei nullmaligemm und einmaligem Schleifendurchlauf kann der Fehler nicht aufgedeckt werden. Beim interior-test wird der Fehler z.b. für die Testdaten (10,1) oder (20,2) nicht aufgedeckt. 6