{$MODE Delphi} // fuer Free Pascal unit UCd;

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

Syntax der Sprache PASCAL

4.Grundsätzliche Programmentwicklungsmethoden

uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, mneueintrag, meintrag, morderedlist;

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

Buch-Add-Ons. Jürgen Bayer. Object Pascal-Tipps und Tricks. 1 Konvertieren und auf numerische Werte überprüfen 2

jetzt lerne ich Der einfache Einstieg in Object Pascal Für alle Versionen bis einschließlich Delphi 2006 THOMAS BINZINGER

Schriftliche Reifeprüfung aus INFORMATIK: Klasse 8D Haupttermin 2002/03

Kurs 1613 Einführung in die imperative Programmierung

Ursprünge. Die Syntax von Java. Das Wichtigste in Kürze. Konsequenzen. Weiteres Vorgehen. Rund um Java

Delphi Grundkurs Seite 31

Kurs 1575, Klausur vom , Musterlösung

Datentypen: integer, char, string, boolean

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

Teil X. Von Mini Pascal zu Pascal

Name. Aufgabe 1) Zur Erinnerung:

Programmierkurs: Delphi: Einstieg

6 Baumstrukturen. Formale Grundlagen der Informatik I Herbstsemester Robert Marti

Über Arrays und verkettete Listen Listen in Delphi

Institut für Informatik Christian-Albrechts-Universität zu Kiel. Borland Delphi. Einführung in die Programmiersprache

Informatik II, SS 2014

15 Der strukturierte Datentyp»set«(Mengen)

Um mit dem Computer über ein Programm in Kontakt treten zu können braucht man sogenannte Ein- und Ausgabebefehle.

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

Schleifenprogrammierung in C/C++, Fortran und Pascal

Informatik GK 12 Klassen Klassen programmieren in Delphi am Beispiel der konkreten Klasse Auto

Fachbericht DPR. Name: René Wagener. Klasse: CI3O1. Fachlehrer: Herr Balog

Typisierte Dateien von Martin Strohal. Einleitung. Der Record

Studienseminar Koblenz - Fachseminar Informatik Visualisierung von Sortieralgorithmen

Komponente NumEdit für Delphi 5.0

Informatik-Seminar Thema: Monaden (Kapitel 10)

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 Lösungen der Aufgaben zum Studientag

5 Semantische Analyse Symboltabelle

Delphi DLL Tutorial Wie exportiere ich Komponenten aus einer DLL?

Informatik I Übung, Woche 41

4.4.1 Implementierung vollständiger Bäume mit Feldern. Reguläre Struktur: Nachfolger des Knoten i sind die Knoten 2*i und 2*i+1.

Komponente PortIO für Delphi 5.0

13. Binäre Suchbäume

//Pipes erzeugen CreatePipe(PipeOutputRead, 0); CreatePipe(PipeErrorsRead, 0);

Übung 4: Die generische Klasse AvlBaum in Java 1

Computergrundkenntnisse und Programmieren, WS 07/08, Übung 11: Klassen der Standardbibliothek 2

1953/54 (USA) PS FORTRAN (FORmula TRANslating system) 1958/60 (Europa) ALGOL (ALGOrithmic Language)

Übungsblock 11. Lösungen Übungsblatt 10: Aufgabe 1:

Header einer IMG-Datei

Informatik I Übung, Woche 41

GridView Daten-Import aus einer csv-datei GridView Daten-Import aus einer csv-datei

Programmierung in Delphi

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

Komponente PortUSB für Delphi 5.0

11.1 Grundlagen - Denitionen

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

1.1 Was für Funktionen gibt es in der Unit Math?

Informatik I Übung, Woche 40

1 Das Decorator Pattern als Generator

Aufgabe Total Punkte

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 13 (Queues, Binary Search)

Prof. Dr. Uwe Schmidt. 30. Januar 2017

Übung Algorithmen und Datenstrukturen

1. Allgemeine Datei (Binärdatei mit formatierten Inhalt)

Übung Algorithmen und Datenstrukturen

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

1 Funktionale vs. Imperative Programmierung

Übung Informatik I - Programmierung - Blatt 8

13. Bäume: effektives Suchen und Sortieren

Musterlösungen zu den RSA-Arbeitsblättern

Wintersemester 2010/2011 Hinweise zur Bearbeitung der Klausur zum Kurs 1613 Einführung in die imperative Programmierung

Praktikum Informatik II Prof. Dr. Martin Trauth, Dr. Michael Männel

ÜBUNGEN ZUR REKURSION

6. Verkettete Strukturen: Listen

Variablen eines einfachen Typs können jeweils nur einen Wert annehmen. Turbo-Pascal stellt 6 einfache Datentypen zur Verfügung.

KV Software Engineering Übungsaufgaben SS 2005

Methodische Grundlagen des Software Engineering - Übung 9

Kurs 1613 Einführung in die imperative Programmierung

TAFS_SEPA = class(tcomponent)

LWB VIII. Programmieren mit Delphi Zur Laufzeit verwaltete Objekte. Zur Laufzeit verwaltete Objekte. Am Beispiel des bekannten Memory-Spieles

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

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

Konzepte von Programmiersprachen

FernUniversität -Gesamthochschule- in Hagen

Taschenrechner Version 6.1

EXCEL VBA Cheat Sheet

Beispiel: Temperaturumwandlung. Imperative Programmierung. Schwerpunkte. 3. Grundlegende Sprachkonstruktionen imperativer Programme

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

Datenstrukturen Teil 2. Bäume. Definition. Definition. Definition. Bäume sind verallgemeinerte Listen. Sie sind weiter spezielle Graphen

Transkript:

CD -Name -Identifikationsnummer -Beschaffungsdatum -Status +getname() +setname(in Name) +getid() +setid(in ID) +getbeschaffungsdatum() +setbeschaffungsdatum(in Datum) +getstatus() +setstatus(in Status) +Input() +Output() -Inhaltsverzeichnis Audio-CD +getinhaltsverzeichnis() +setinhaltsverzeichnis(in Verzeichnis) +Input() +Output() -Abspielformat Video-CD +getabspielformat() +setabspielformat(in Format) +Input() +Output() {$MODE Delphi} // fuer Free Pascal unit UCd; interface type stringarray = array of string; type TCd = class private Name : string; IdNr : longint; BDate : string; Status : String; public function getname():string; procedure setname(name:string); function getidnr():longint; procedure setidnr(idnr:longint); function getbdate():string; procedure setbdate(bdate:string); function getstatus():string; procedure setstatus(status:string); procedure Input(); virtual; procedure Output(); virtual; TAudioCd = class(tcd) private Toc : stringarray; public function gettoc() : stringarray; procedure settoc(toc:stringarray); procedure Input(); override; procedure Output(); override; TVideoCd = class(tcd) private Format : string; public function getformat() : string; procedure setformat(format:string); procedure Input(); override;

procedure Output(); override; implementation function TCd.getName():string; getname := self.name; procedure TCd.setName(Name:string); self.name := Name; function TCd.getIdNr():longint; getidnr := self.idnr; procedure TCd.setIdNr(IdNr:longint); self.idnr := IdNr; function TCd.getBDate():string; getbdate := self.bdate; procedure TCd.setBDate(BDate:string); self.bdate := BDate; function TCd.getStatus():String; getstatus := self.status; procedure TCd.setStatus(Status:String); self.status := Status; function TAudioCd.getToc() : stringarray; gettoc := self.toc; procedure TAudioCd.setToc(Toc:stringarray); self.toc := Toc; function TVideoCd.getFormat() : string; getformat := self.format; procedure TVideoCd.setFormat(Format:string); self.format := Format; procedure TCd.Input(); write('name: '); readln(self.name); write('idnr: ');

readln(self.idnr); write('bdate: '); readln(self.bdate); write('status: '); readln(self.status); procedure TCd.Output(); writeln('name: ', self.name); writeln('idnr: ', self.idnr); writeln('bdate: ', self.bdate); writeln('status: ', self.status); procedure TAudioCd.Input(); var n : integer; inherited Input(); write('toc: '); write('bitte die Anzahl der Titel angeben:'); readln(n); setlength(self.toc, n); for n := 0 to Length(self.Toc)-1 do writeln('bitte Titel Nr. ', n+1,' eingeben'); readln(self.toc[n]); procedure TAudioCd.Output(); var n:integer; inherited Output(); writeln('toc:'); for n:=0 to Length(self.Toc)-1 do writeln(n+1, '. ', self.toc[n]); procedure TVideoCd.Input(); inherited Input(); write('format: '); readln(self.format); procedure TVideoCd.Output(); inherited Output(); write('format: '); readln(self.format); end. { Diese Unit basiert auf den Bemuehungen von im Wesentlichen Uwe Grohnwaldt, Andreas Daehn und Johannes Roessel. Es ist daher nicht so verwunderlich, dass sie in mehreren Aufgabenloesungen vorkommt, in der Hoffnung, dass dies in Ordnung ist. Sie fundiert zum Groszteil auf den bei Prof. Kirste behandelten Grundlagen fuer Baeume. }

unit tree; interface // brauchen wir wegen unserer Elemente uses UCd; type Elem = TCd; PElem = ^Rec; Rec = record val : Elem; left, right : PElem; Baum = PElem; VProc = procedure(e : Elem); function cons(v : Elem; tl, tr : Baum):Baum; procedure Insert(var t: Baum; e: Elem); procedure Traverse(t: Baum; p : VProc); function lookup(t: Baum; name: String): Elem; implementation // erstellt einen neuen (Teil-)Baum aus Wert sowie linkem und rechtem Teilbaum function cons(v : Elem; tl, tr : Baum):Baum; var t : Baum; new(t); if t <> nil then t^.val := v; t^.left := tl; t^.right := tr; cons := t // Traversiert den Baum in-order mit der gegebenen Funktion, die fuer jedes // Element aufgerufen wird procedure Traverse(t: Baum; p: VProc); if t=nil then exit; //behandeln des linken teilbaums Traverse(t^.left, p); p(t^.val); Traverse(t^.right, p); // Einfuegen eines Elements procedure Insert(var t: Baum; e: Elem); if t = nil then t := cons(e, nil, nil) else if e.getname() < t^.val.getname() then insert(t^.left, e) else if e.getname() > t^.val.getname() then insert(t^.right, e) else writeln('element schon vorhanden'); // Suche nach einem Element function lookup(t: Baum; name: String): Elem; if t = nil then lookup := nil else if t^.val.getname() = name then lookup := t^.val else if name < t^.val.getname() then lookup := lookup(t^.left, name) else if name > t^.val.getname() then lookup := lookup(t^.right, name); end.!

{Aufgabenstellung: Programmieren Sie die Verwaltung der CDs in einem Hauptprogramm, in dem CDs in einer Baumstruktur abgelegt sind. Es sollen spezielle CDs gesucht werden koennen und das Gesamtverzeichnis nach Namen sortiert angezeigt werden koennen.} program A3; uses tree, UCd; var t: Baum; procedure Eintragen(); var cd: TCd; a: integer; writeln('moechten Sie eine'); writeln(' 1. Audio-CD'); writeln(' 2. Video-CD'); writeln('eintragen?'); write('-> '); readln(a); case a of 1: cd := TAudioCd.Create(); 2: cd := TVideoCd.Create(); cd.input(); Insert(t, cd); procedure suchen(); var s: String; c: TCd; write('bitte Namen der CD eingeben: '); readln(s); c := lookup(t, s); if c <> nil then writeln('hab hier was tolles gefunden:'); c.output(); end else writeln('nix vorhanden hier, was dem entspricht'); procedure Ausgabe(c: TCd); writeln(c.getname()); procedure table(); Traverse(t, @Ausgabe); function Menue():boolean; var x: integer; writeln('1. CD eintragen'); writeln('2. CD suchen'); writeln('3. Gesamtverzeichnis anzeigen'); "

writeln('4. Programm beenden'); write('-> '); readln(x); Menue := (x <> 4); case x of 1: Eintragen(); 2: suchen(); 3: table(); t := nil; while Menue do writeln('bye.'); end. #