Codebaumanalyse Was geschieht in der Methode Codebaum.decodiere, wenn als Parameter der Code 001 übergeben wird? Gib die Zeilennummern der durchlaufenen.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Sortieren I - Bubblesort -
Rekursion vs. Iteration
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten KMP, BM.
Rekursionen Erstellt von J. Rudolf im November 2001 /
10. Grundlagen imperativer Programmiersprachen
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
DINAMISCHE STRUKTUREN FACHBEGRIFFE 1. DER POINTERDER POINTER 2. DER BUFFERDER BUFFER 3. DER KNOTENDER KNOTEN DIE EINFACHVERKETTETE LISTE DEFINITION DEFINITION.
Objektorientierung mit VBA
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
REKURSION + ITERATION. Bemerkung: Die in den folgenden Folien angegebenen "Herleitungen" sind keine exakten Beweise, sondern Plausibilitätsbetrachtungen.
Konstruktion von Suffix Bäumen
Konstruktion von Suffix Bäumen
WS Prof. Dr. Th. Ottmann Algorithmentheorie 09 - Suche in Texten Suffix –Tree –Konstruktion Ukkonen Algorithmus.
Huffmans Kompressionsverfahren
Zusammenfassung Vorwoche
Katja Losemann Chris Schwiegelshohn
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Programmierung Datensammlung
Algorithmus zur Zerlegung in 3NF (1)
Java programmieren mit JavaKara
Einführung in das Programmieren mit JavaScript Mag. Andreas Starzer weloveIT – EDV Dienstleistungen.
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Binärbäume Klaus Becker 2003.
FORTRAN 77.
Wiederholte Programmausführung
Informatik 1 Übung 4.
Arduino Kurs Abend 2.
Purga - Scriptengine Ein Einblick.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 2 Dr. W. Narzt u. Dr. A. Stritzinger.
Algorithmen und Datenstrukturen Übungsmodul 3
Einführung in PHP.
Einführung in PHP 5.
MODULA-2.
Agenda für heute, 22. Juni, 2006 Direkte FilezugriffeDirekte Filezugriffe Datentypen: Mengen Individualisierbare Datentypen.
Datentypen: integer, char, string, boolean
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
1 Tagesüberblick 3 Lösung Hausaufgabe/Fragen Zeilenweises Lesen von Dateien Schleifenausbrüche Die Variable $_ Textfunktionen.
Kurzreferat über Funktionen und Prozeduren Von Alexander RothHomepage:
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Der Datentyp Verbund (record)
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Delphi Chars und Strings
The Programming Language Pascal
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
Fallunterscheidung und Iteration Programmierung I Prof. Dr. Michael Löwe.
Datentypen: integer, char, string, boolean
Prüfungsbesprechung Barbara Scheuner
Datentypen: integer, char, string, boolean
Parametrisierte Prozeduren und Funktionen
Unterschiedliche Kontrollstrukturen
Gib die Zahl 4 ein!.
Cäsar-Verschlüsselung
Die programmierte Lösung
Cäsar-Verschlüsselung
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
Schleifen Datenfelder (Arrays) Verzweigungen
The Programming Language Pascal
 Präsentation transkript:

Codebaumanalyse Was geschieht in der Methode Codebaum.decodiere, wenn als Parameter der Code 001 übergeben wird? Gib die Zeilennummern der durchlaufenen Zeilen an und kommentiere den Quelltext!

procedure Codebaum.decodiere (pCode: String); var lBaum: TBinTree; i: integer; lCode, lText: String; begin if (not hatBaum.isEmpty) then begin lText := ''; lBaum := hatBaum; lCode := pCode; for i:= 1 to length(lCode) do begin if lCode[i] = '0' then begin if (not lBaum.getLeftTree.isEmpty) then lBaum := lBaum.getLeftTree else begin showmessage('Fehler!'); break; end; end else if lCode[i] = '1' then begin if (not lBaum.getRightTree.isEmpty) then lBaum := lBaum.getRightTree showmessage('Fehler! Zeichen nicht erlaubt!'); if (self.istBlatt(lBaum)) then begin lText := lText + TString(lBaum.getRootItem).liesString + ' '; zKlartext := lText; if (lBaum <> hatBaum) then showmessage('Fehler! Letztes Zeichen nicht erkannt!');

procedure Codebaum.decodiere (pCode: String); var lBaum: TBinTree; i: integer; lCode, lText: String; begin if (not hatBaum.isEmpty) then begin //Abfrage, ob der Baum leer ist, um einem Zugriffsfehler vorzubeugen lText := ''; lBaum := hatBaum; lCode := pCode; for i:= 1 to length(lCode) do begin //Die Schleife wird so oft durchgeführt, wie Zeichen im Code sind, Index = 1 if lCode[i] = '0' then begin //Das erste Zeichen im Code ist 0, also wird dieser Programmcode gelesen if (not lBaum.getLeftTree.isEmpty) then //Abfrage, ob der linke Teilbaum leer ist lBaum := lBaum.getLeftTree //Der linke Teilbaum wird zum aktuellen Baum else begin showmessage('Fehler!'); break; end; end else if lCode[i] = '1' then begin //Wird nicht gelesen, da die erste Bedingung zutraf if (not lBaum.getRightTree.isEmpty) then lBaum := lBaum.getRightTree else begin //Wird nicht gelesen, da die erste Bedingung zutraf showmessage('Fehler! Zeichen nicht erlaubt!'); if (self.istBlatt(lBaum)) then begin //Trifft nicht zu, da der aktuelle Baum kein Blatt ist lText := lText + TString(lBaum.getRootItem).liesString + ' '; end; //Ende der for-to-do Schleife, nochmaliger Durchlauf für den Index 2 zKlartext := lText; if (lBaum <> hatBaum) then showmessage('Fehler! Letztes Zeichen nicht erkannt!');

procedure Codebaum.decodiere (pCode: String); var lBaum: TBinTree; i: integer; lCode, lText: String; begin if (not hatBaum.isEmpty) then begin lText := ''; lBaum := hatBaum; lCode := pCode; for i:= 1 to length(lCode) do begin //Die Schleife wird für den Index 2 durchgeführt if lCode[i] = '0' then begin //Das zweite Zeichen im Code ist 0, also wird dieser Programmcode gelesen if (not lBaum.getLeftTree.isEmpty) then //Abfrage, ob der linke Teilbaum leer ist lBaum := lBaum.getLeftTree //Der linke Teilbaum wird zum aktuellen Baum else begin showmessage('Fehler!'); break; end; end else if lCode[i] = '1' then begin //Wird nicht gelesen, da die erste Bedingung zutraf if (not lBaum.getRightTree.isEmpty) then lBaum := lBaum.getRightTree else begin //Wird nicht gelesen, da die erste Bedingung zutraf showmessage('Fehler! Zeichen nicht erlaubt!'); if (self.istBlatt(lBaum)) then begin //Trifft nicht zu, da der aktuelle Baum kein Blatt ist lText := lText + TString(lBaum.getRootItem).liesString + ' '; end; //Ende der for-to-do Schleife, nochmaliger Durchlauf für den Index 3 zKlartext := lText; if (lBaum <> hatBaum) then showmessage('Fehler! Letztes Zeichen nicht erkannt!');

procedure Codebaum.decodiere (pCode: String); var lBaum: TBinTree; i: integer; lCode, lText: String; begin if (not hatBaum.isEmpty) then begin lText := ''; lBaum := hatBaum; lCode := pCode; for i:= 1 to length(lCode) do begin //Die Schleife wird für den Index 3 durchgeführt if lCode[i] = '0' then begin //Trifft nicht zu, da das dritte Zeichen keine 0 ist if (not lBaum.getLeftTree.isEmpty) then lBaum := lBaum.getLeftTree else begin showmessage('Fehler!'); break; end; end else if lCode[i] = '1' then begin //Das dritte Zeichen ist 1 if (not lBaum.getRightTree.isEmpty) then //Abfrage, ob der rechte Teilbaum leer ist lBaum := lBaum.getRightTree //Der rechte Teilbaum wird zum aktuellen Baum else begin //Wird nicht gelesen, da die zweite Bedingung zutraf showmessage('Fehler! Zeichen nicht erlaubt!'); if (self.istBlatt(lBaum)) then begin //Der aktuelle Teilbaum ist ein Blatt lText := lText + TString(lBaum.getRootItem).liesString + ' '; //Dem Ausgabetext wird das Zeichen des aktuellen Baumes hinzugefügt lBaum := hatBaum; //Der Teilbaum wird durch den gesamten Baum überschrieben end; //Ende der for-to-do Schleife zKlartext := lText; //Der Ausgabetext wird bergeben if (lBaum <> hatBaum) then //Trifft nicht zu showmessage('Fehler! Letztes Zeichen nicht erkannt!');