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 id="4ea11d81667da" hidden>
function caesar_test(klar: string; v: integer): string;
 var a,i,ascii: integer; 
     wort     : String;
 begin
  a:=length(klar);
  wort:='';
  for i:=1 to a do
  begin
   ascii:=klar[i]; //ord noch nicht bekannt, einfach weglassen, dann wird automatisch umgewandelt
   if (ascii<91) and (ascii>64) then 
   begin 
    ascii:=ascii+v;
    if ascii>90 then 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 id="4ea11d8166865">
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;
   if ascii>90 then ascii:=ascii-26;
   if ascii<65 then 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>