Bergervei/Pascal-Cäsarverfahren

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Pascal</language>
== Der Cäsar-Algorithmus ==

# Teste das Programm mit verschiedenen Eingaben.
# Erkläre mit eigenen Worten, was das Programm macht.

<code hidden>
function caesar_test(klar: string; v: integer): string;
 var a, i, ascii: integer; 
     wort, gross: string;
 begin
  wort:=''; gross:='';
  a:=length(klar);
  for i:=1 to a do gross:=gross+uppercase(klar[i]);
  for i:=1 to a do
  begin
   ascii:=gross[i]; //ord noch nicht bekannt, einfach weglassen, dann wird automatisch umgewandelt
   if (ascii<91) and (ascii>64) then 
   begin 
    ascii:=ascii+v;
    while ascii>90 do ascii:=ascii-26;
    wort:=wort+chr(ascii);
   end
   else wort:=wort+'*';
  end;
  result:=wort;
 end;
</code>

<run id="4ea11d8166927">
writeln(caesar_test(inputDialog('Klartext:'), StrToInt(inputDialog('Verschiebezahl:'))));
</run>

== Implementation ==

# Implementiere den beschriebenen Algorithmus derart, dass die Funktion <tt>caesar</tt> sowohl zum Ver- als auch Entschlüsseln gentutzt werden.

<code>
function caesar(klar: string; v, richtung: integer): string;
 var a, i, ascii: integer;
     wort, gross: string;
 begin
  wort:=''; gross:='';
  a:=length(klar);
  for i:=1 to a do gross:=gross+uppercase(klar[i]);
  for i:=1 to a do
  begin
   ascii:=ord(gross[i])+richtung*v;
   while ascii>90 do ascii:=ascii-26;
   while ascii<65 do ascii:=ascii+26;
   wort:=wort+chr(ascii);
  end;
  result:=wort;
 end;
</code>

<check>result:=(caesar('HALLO',2,1)=Caesar_test('HALLO',2));</check>

<run id="4ea11d816698f">writeln(caesar('HALLO',2,1));</run>