Guten Tag,
ich komme gerade aus der Schule und hatte in den letzten beiden Stunden Informatikunterricht. Wir haben uns in diesen beiden Stunden noch einmal mit dem Dezimalsystem und dem Binärsystem auseinandergesetzt, jedoch haben wir dieses Mal eine Dezimalzahl in eine Binärzahl umgewandelt und als Programm umgesetzt.
Delphi-Quellcode:
function Reverse(eingabe: String): String;
var
i: Integer;
begin
for i := length(eingabe) downto 0 do
result := result + eingabe[i];
end;
function DecToBin(eingabe: Integer): String;
var
i: integer;
ergebnis: String;
begin
ergebnis := '';
repeat
begin
ergebnis := ergebnis + IntToStr(eingabe mod 2);
eingabe := eingabe div 2;
end;
until (eingabe = 0);
result := Reverse(ergebnis); // <-- Den String mit einer Zählschleife umzudrehen ist laut unserem Lehrer unkomplizierter und einfacher zu verstehen.
Delphi-Quellcode:
function DecToBin(eingabe: Integer): String;
var
ergebnis: String;
begin
ergebnis := '';
repeat
begin
ergebnis := IntToStr(eingabe mod 2) + ergebnis; // <-- Instruktion laut unserem Lehrer schwerer zu verstehen.
eingabe := eingabe div 2;
end;
until (eingabe = 0);
result := ergebnis;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := DecToBin(StrToInt(Edit1.Text));
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
end.
Nun frage ich mich, warum unser Lehrer meinte, dass er die Anweisung
ergebnis := IntToStr(eingabe mod 2) + ergebnis;
, um einen String gleich richtig anzuordnen
nicht kannte und gleichzeitig meinte, dass dieses keine vernünftige Lösung wäre und zugleich auch noch zu komplizierter zu verstehen. Ist da wirklich etwas dran ? Kann man den String besser mit einer Zählschleife umdrehen als in der Repeat-Until-Schleife den Rest gleich vor das Ergebnis zu setzen. Was ist effizienter und eleganter ? Trotzdem bevorzuge ich immer noch diese Anweisung
ergebnis := IntToStr(eingabe mod 2) + ergebnis;
MfG
Hauke