HSG

Aktuelle Seite: HSG/Fächer/Informatik/Material

Datenübertragung Teil 3

Gruppe: mk, 14.6.03

Aufgabenstellung

Da nicht nur einzelne Nullen und Einsen übertragen werden sollen, müssen alle anderen Zahlen, Zeichen, ... in eine Folge von Nullen und Einsen codiert werden. In diesem Teil soll die Klasse TBitFolge um die Fähigkeit erweitert werden,
  • Zahlen aus dem Bereich 0..255 in eine Bitfolge,
  • Buchstaben in eine Bitfolge,
  • Bitfolgen in Zahlen und
  • Bitfolgen in Buchstaben
umzuwandeln.
Dazu soll ein Test- und Veranschaulichungs-Programm geschrieben werden.

Ressourcen

Erweitertes Klassendiagramm:

Wir interpretieren die Bitfolgen dazu als Zahlen in binärer Darstellung (mit der höchstwertigen Stelle links und der niedrigstwertigen Stelle rechts).

Systemanalyse

Es wird davon ausgegangen, dass eine genügende Vertrautheit mit dem Binärsystem vorhanden ist.

Pflichtenheft zur 3. Teilaufgabe

/1/ Der Benutzer soll eine Folge von 8 Bits, eine Zahl zwischen 0 und 255 oder einen einzelnen Buchstaben in separate Eingabefelder eingeben können.
/2/ Die Ansicht wird aktualisiert, d.h. bei Verlassen eines Eingabebereiches wird die Eingabe in die anderen Formate gewandelt und angezeigt.
/3/ Die Methoden sollen folgende Bezeichner tragen:
  • procedure fromByte( b : byte )
  • procedure fromChar( c : char )
  • function toByte : byte
  • function toChar : char

"interne Pflichten":

/4/ Die Dokumentation ist konsequent weiterzuführen.

Prototyp

Objektorientierte Analyse

Objektorientiertes Design


Implementierung

Die Umsetzung obiger Struktogramme zeigt folgender Auszug aus dem Quelltext.
Man sieht ebenso, dass fromChar und toChar durch Rückgriff auf ord und chr programmiert wurde.
procedure TBitFolge.fromByte(b : byte);
var
  i : byte;
begin
  for i := 8 downto 1 do
  begin
    if b mod 2 = 1 then Bits[i] := Eins else Bits[i] := Null;
    b := b div 2;
  end;
end;

function TBitFolge.toByte : byte;
var
  wert,stellenwert,i : byte;
begin
  wert := 0; stellenwert := 1;
  for i := 8 downto 1 do
  begin
    if Bits[i] = Eins then wert := wert + stellenwert;
    stellenwert := 2*stellenwert;
  end;
  result := wert;
end;

procedure TBitFolge.fromChar(ch : char);
begin
  fromByte(ord(ch));
end;

function TBitFolge.toChar : char;
begin
  result := chr(toByte);
end;
Download des Delphi-Projekts:Kodierung.zip

Test

Es wurden umfangreiche Tests durchgeführt:
Aus BitFolge: 10101010, 00000000,01000000,00100000 führten zu korrekten Ergebnissen.
Aus Zahl : 32, 65, 48, 0, 126, 100, 42, 255 führten jeweils zu korrektem Zeichen und zu korrekter BitFolge
Aus Zeichen: A, B, d, Leerzeichen, 0,1,5, Ä,ß führten zu korrekten Ergebnissen.