ein Kapitel zurück                                           ein Kapitel weiter

Im Kapitel zuvor haben sie eine Möglichkeit kennen gelernt wie sie mit if, elsif und else Ihr Programm zu Steuern bzw. zu Verzweigen. Aber was machen sie jetzt wenn unser Programm auf mehrere Werte oder Zeichenketten überprüft werden soll? Beispielsweise..........


#!/usr/bin/perl -w

$zahl1=0;

print "Bitte geben sie eine Zahl zwischen 1-5 ein : ";
chomp($zahl1=<STDIN>);


if($zahl1==1)
 {
   print "Toll sie haben ", $zahl1, " eingegeben" ,"\n";
 }
elsif($zahl1==2)
 {
   print "Wow das war die ", $zahl1, "\n";
 }
elsif($zahl1==3)
 {
   print "Jessas die ", $zahl1, "\n";
 }
elsif($zahl1==4)
 {
   print "Endlich die ", $zahl1, "\n";
 }
elsif($zahl1==5)
 {
   print "Das war die ", $zahl1, "\n";
 }
else
 {
   print "Ich sagt doch geben sie ein Zahl zwischen 1-5 ein\n";
 }


Dies sieht nicht besonders komfortabel aus. In Perl gibt es da eine Konstruktion die den switch...case Verzweigungen von C sehr ähnlich sind............


#!/usr/bin/perl -w

$zahl1=0;

print "Bitte geben sie eine Zahl zwischen 1-5 ein : ";
chomp($zahl1=<STDIN

SCHALTER: {
            $zahl1==1 && do { print "Toll sie haben ". $zahl1. " eingegeben" ."\n";
                              last SCHALTER; } ;
            $zahl1==2 && do { print "Wow das war die ". $zahl1. "\n";
                              last SCHALTER; } ;
            $zahl1==3 && do { print "Jessas die ", $zahl1, "\n";
                              last SCHALTER; };
            $zahl1==4 && do { print "Endlich die ", $zahl1, "\n";
                              last SCHALTER; };
            $zahl1==5 && do { print "Das war die ", $zahl1, "\n";
                              last SCHALTER; } ;
                         do { print "Ich sagt doch geben sie ein Zahl zwischen 1-5 ein\n";
                              last SCHALTER; } ;
                      }


Dieser Code erfüllt den selben Zweck wie unser Konstrukt mit den  if-elsif-else-Verzweigungen. Hierzu nun die Erklärung. Zuerst wird die Bedienung  überprüft...........


$zahl1==1


...diese Bedienung wird automatisch mit dem UND-Operator (&&) und do Verknüpft. Wäre zum Beispiel die Bedienung war wird die do-Anweisung in den geschweiften Klammern ausgeführt. In unserem Fall wird ausgegeben welche Zahl sie eingegeben haben. Um zu vermeiden das in ersten Fall die Eingegebene Zahl 1 ist, nicht die nächste Bedienung überprüft wird beenden wir unseren Anweisungsblock mit....


last SCHALTER;


Was in C soviel bedeutet wie break. Die letzte Anweisung in der wir keine Bedienung überprüfen bedeutet soviel wie else (sonst). Oder im Beispiel der C-Programmierung switch-case ist diese gleichbedeutend zu default.

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf