Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Codebaumanalyse Was geschieht in der Methode Codebaum.decodiere, wenn als Parameter der Code 001 übergeben wird? Gib die Zeilennummern der durchlaufenen."—  Präsentation transkript:

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 else begin showmessage('Fehler!'); break; end; end else begin showmessage('Fehler! Zeichen nicht erlaubt!'); lBaum := hatBaum; break; end; if (self.istBlatt(lBaum)) then begin lText := lText + TString(lBaum.getRootItem).liesString + ' '; lBaum := hatBaum; end; zKlartext := lText; if (lBaum <> hatBaum) then showmessage('Fehler! Letztes Zeichen nicht erkannt!'); end;

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 showmessage('Fehler!'); break; end; end else begin //Wird nicht gelesen, da die erste Bedingung zutraf showmessage('Fehler! Zeichen nicht erlaubt!'); lBaum := hatBaum; break; end; if (self.istBlatt(lBaum)) then begin //Trifft nicht zu, da der aktuelle Baum kein Blatt ist lText := lText + TString(lBaum.getRootItem).liesString + ' '; lBaum := hatBaum; end; 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!'); end;

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 showmessage('Fehler!'); break; end; end else begin //Wird nicht gelesen, da die erste Bedingung zutraf showmessage('Fehler! Zeichen nicht erlaubt!'); lBaum := hatBaum; break; end; if (self.istBlatt(lBaum)) then begin //Trifft nicht zu, da der aktuelle Baum kein Blatt ist lText := lText + TString(lBaum.getRootItem).liesString + ' '; lBaum := hatBaum; end; 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!'); end;

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 showmessage('Fehler!'); break; end; end else begin //Wird nicht gelesen, da die zweite Bedingung zutraf showmessage('Fehler! Zeichen nicht erlaubt!'); lBaum := hatBaum; break; end; 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; 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!'); end;

6


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

Ähnliche Präsentationen


Google-Anzeigen