Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Brunhild Recktenwald Geändert vor über 10 Jahren
1
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!
2
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!');
3
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!');
4
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!');
5
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!');
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.