PMG/Kurs 11/klassische Verfahren I

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.

<popup label="Quelltext">
<code id="4f0f4c30aaeaf">
var k:String; v:Integer;

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 wandelt er automatisch um
       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>
</popup>

<run id="4f0f4c30ab0cb">
k:= inputDialog('Klartext (in Großbuchstaben)');
v:= StrToInt(inputDialog('Verschiebezahl'));
writeln (caesar_test(k,v));
</run>

== Rückwärtsschrift ==

Gegeben ist eine Funktion, die einen eingegebenen Text rückwärts ausgibt.

<popup label="Quelltext">
<code id="4f0f4b55f29fd">
function rueck(klar:string):string;
var wort:string; 
    i:integer;
begin
  wort:='';
  for i:=length(klar) downto 1 do
   wort:=wort+klar[i]; 
  result:=wort;
end;
</code>
</popup>

<br> Teste den Quelltext für ein paar Beispiele. <br>
<run id="4f0f4c30aaf4e">writeln(rueck('testen'));</run>

== Vokale ersetzen ==

Analog zu "Drei Chinesen mit dem Kontrabass" werden ''die Vokale'' eines Textes durch den eingegebenen Buchstaben ersetzt. <br>

<popup label="Quelltext">
<code id="4f0f4b55f2a66">
function vokale(klar,v:string):string;
var wort:string;
    i:integer;
begin
  wort:='';
  for i:=1 to length(klar) do
   case klar[i] of
    'a','A','e','E','i','I','o','O','u','U': wort:=wort+v;
   else
    wort:=wort+klar[i];
   end;
  result:=wort;
end;      
</code>
</popup>

<run id="4f0f4c30aafd8">writeln(vokale('Probiertext eingeben','o'));</run>

== Zickzackschrift ==

Eine etwas kompliziertere Variante der Verschlüsselung ist die Zickzackschrift. <br>
Die Buchstaben werden nicht durch andere Zeichen oder Symbole ersetzt, sondern einfach neu gemischt. Dieses Prinzip nennt man auch "Anagramm". 
Zerlege den Text in zwei gleich lange Zeilen und lies dann im Zickzack: <br>
''Beispiel:''<br>
 n t e i t n i b i e w r e s c t a w r e u z t n e d e e m r ä m n i h b r e d n
wird zu <br>
 n t e i t n i b i e w r e s c t a w r e
 u z t n e d e e m r ä m n i h b r e d n

im Zickzack gelesen: nutzetintendiebeimerwärmensichtbarwerden <br>

<popup label="Quelltext">
<code id="4f0f4c30aae2c"">

function zickzack(klar:string;):string;
var l,i,n:integer; wort:string;
begin
  wort:='';
  l:=length(klar);
  if l mod 2 = 0 then n:=l div 2
                 else n:=l div 2 +1;
  for i:=1 to n do wort:=wort+klar[i]+klar[n+i];
  result:=wort;
end;
</code>
</popup>


<run id="4f0f4c30ab04a">writeln(zickzack('Testergebnis'));</run>

 '''Aufgabe 1:''' Entscheide für jedes der unten aufgeführten Beispiele, ob es sich um ein Substitutions-
 oder Transpositionsverfahren handelt. 
 Beim Substitutionsverfahren wird jedes Zeichen des Klartextes durch ein anderes ersetzt. 
 Beim Transpositionsverfahren bleiben die Zeichen gleich, ändern aber durch Tauschen ihre Position.
 
 '''Aufgabe 2:''' Prüfe durch einige Testbeispiele und Betätigung des Ausführen-Buttons, 
 welche Verfahren umkehrbar sind.