Modula


55 kbyte
Diese Programmbeispiele entsprechen den Originalaufgaben des Praktikums im WS 99 an der Friedr.-Schiller Universität Jena.

Beschreibung

Modula - das ist diese absichtlich etwas unhandliche Programmiersprache, die an deutschen Universitäten gelehrt wird. Der Urvater dieses "Monsters" ist Pascal. Die heutige Version setzt als Präprozessor auf einer veralteten Unix-Version von C++ auf. Nichtsdestotrotz ist genau das der Standard an verschiedenen Hochschulen, wie zum Beispiel in Jena...

Aber hey! Es gibt schlimmeres. (Ada zum Beispiel!)

Quelltext

Dieser Codeauszug zeigt ihnen, wie sie eine Abfrage über ein Menü geschickt implementieren ...

VAR Wahl : CHAR;

Die WHILE Schleife gibt ihnen die Möglichkeit, das Menü zu übergehen, indem sie Wahl auf die Abbruchbedingung setzen - falls sie dies nicht wollen, ersetzen sie diese Anweisung durch DO-UNTIL

WHILE Wahl# 'q' DO

IO.Put("\n[1] Option 1\n");                    das Menü ...
IO.Put("[2] Option 2\n");
IO.Put("[3] Option 3\n");
IO.Put("[q] Beenden\n");

'Wahl' ist aus einem guten Grund vom Typ Char, wäre die Variable ein Integerwert, würden die Fälle, in denen der Nutzer fälschlicherweise keinen gültigen Integerwert eingegeben hätte eine Ausnahmesituation erzeugen, die abfangen müssen, ansonsten würde ihr Programm abstürzen. Dies bleibt ihnen hier erspart.
Wahl:= IO.GetChar();
EVAL IO.GetLine();       
mit dieser Anweisung löschen wir Zeichen, die unter Umständen im Tastaturpuffer verblieben sind

Dies ist sehr wichtig. Vergessen sie die Anweisung an dieser Stelle, kann das zur Laufzeit ernsthafte Fehler nach sich ziehen, vor denen sie nicht jeder Compiler warnen muss...

(**Ereignisbehandlung**)

CASE Wahl OF              
hier folgt nun die eigentliche Fallunterscheidung

| '1' =>                    die Anweisungen im Fall 1...

 

| '2' =>                    die Anweisungen im Fall 2...

 

| '3' =>                    und die Anweisungen im Fall 3

 

ELSE                    nicht vergessen!

Fehlt dieser Eintrag zeugt das (selbst wenn der ohnehin Zweig leer ist) nicht nur von schlechtem Stil, der Compiler belästigt sie auch mit einer entsprechenden Warnung.

END;

END;

(ac/tom) Diskussion