home *** CD-ROM | disk | FTP | other *** search
Modula Implementation | 1993-11-04 | 4.2 KB | 138 lines |
- (******************************
- * Programm von Dieter Seidel *
- * Eingegeben am 26.11.1991 *
- * Ergaenzt am 27.11.1991 *
- ******************************)
-
- (* Dieses Modul laedt ein paar while-Programme in den String 'BefehlsListe' *
- * und laesst daraus dann die Quadrupel-Form bestimmen. *
- * Die letzten beiden Programme sind sogar sinnvoll, weshalb bei diesen *
- * dann auch noch der Interpreter getestet wird. *)
-
-
- IMPLEMENTATION MODULE QuadTester;
-
- FROM InOut IMPORT WriteCard, WriteLn, WriteString;
- FROM QuadLese IMPORT MaxBefehle, arrList, arrQuad;
- FROM QuadBerechneQuad IMPORT BerechneQuad;
- FROM QuadDrucke IMPORT Drucke;
- FROM QuadInterpreter IMPORT Interpreter;
-
-
- VAR Feld : ARRAY [1..30] OF CHAR;
-
-
- PROCEDURE VereinigeStrings(VAR BefehlsListe : arrList; Position : CARDINAL);
- VAR i : CARDINAL;
- BEGIN
- FOR i:=Position TO Position + 30 DO
- IF i > MaxBefehle THEN
- WriteLn;
- WriteString("Fehler in QuadTester!!! Erhoehe MaxBefehle.");
- WriteLn;
- HALT;
- END;
- BefehlsListe[i]:=Feld[i-Position+1];
- END;
- END VereinigeStrings;
-
-
- PROCEDURE ZeigeTest(Counter : CARDINAL; BefehlsListe : arrList);
- VAR QuadListe : arrQuad;
- BEGIN
- WriteString("Testeingabe Nr.: ");
- WriteCard(Counter,1);WriteLn;
- WriteString(BefehlsListe);WriteLn;
- BerechneQuad(BefehlsListe,QuadListe);
- Drucke(BefehlsListe,QuadListe);
- WriteLn;
- END ZeigeTest;
-
-
- PROCEDURE ZeigeTestInter(Counter : CARDINAL; BefehlsListe : arrList);
- VAR QuadListe : arrQuad;
- BEGIN
- WriteString("Testeingabe Nr.: ");
- WriteCard(Counter,1);WriteLn;
- WriteString(BefehlsListe);WriteLn;
- BerechneQuad(BefehlsListe,QuadListe);
- Drucke(BefehlsListe,QuadListe);
- Interpreter(QuadListe);
- WriteLn;
- END ZeigeTestInter;
-
-
- PROCEDURE Tester() : BOOLEAN;
- VAR Counter : CARDINAL;
- BefehlsListe : arrList;
- BEGIN
- Counter:=1;
- BefehlsListe:="bX1:X2;X2:2;X3:0;X4:s(X4);X5:p(X2)e";
- ZeigeTest(Counter,BefehlsListe);INC(Counter);
-
- BefehlsListe:="bwX1#X2dbX1:X2;X2:s(X2);X1:s(X1)ee";
- ZeigeTest(Counter,BefehlsListe);INC(Counter);
-
- Feld:="bwX1#X2dbwX2#X3dbX1:X2;wX3#X4d";
- VereinigeStrings(BefehlsListe,1);
- Feld:="wX4#X5dX1:p(X1);eX1:X2;wX1#X2d";
- VereinigeStrings(BefehlsListe,31);
- Feld:="X1:X8;X1:123ee";
- VereinigeStrings(BefehlsListe,61);
- ZeigeTest(Counter,BefehlsListe);INC(Counter);
-
- Feld:="bwX1#X2dbwX2#X3dbX1:X2wX3#X4dw";
- VereinigeStrings(BefehlsListe,1);
- Feld:="X4#X5dX1:p(X1);X88:X99eX1:X2wX";
- VereinigeStrings(BefehlsListe,31);
- Feld:="1#X2dX1:X8X1:123ee";
- VereinigeStrings(BefehlsListe,61);
- ZeigeTest(Counter,BefehlsListe);INC(Counter);
-
- Feld:="bwX1#X2dwX3#X4dbwX5#X7dX1:X2;e";
- VereinigeStrings(BefehlsListe,1);
- Feld:="X1:99wX1#X2dwX1#X3dwX2#X3dbX1:";
- VereinigeStrings(BefehlsListe,31);
- Feld:="2;wX3#X4dX1:X2;X2:1wX1#X2dbwX2";
- VereinigeStrings(BefehlsListe,61);
- Feld:="#X3dbwX3#X4dbX1:3;X2:7eeeX1:X7";
- VereinigeStrings(BefehlsListe,91);
- Feld:="ee";
- VereinigeStrings(BefehlsListe,121);
- ZeigeTest(Counter,BefehlsListe);INC(Counter);
-
- WriteString("Das folgende Programm berechnet das Produkt X1:=X1*X2.");
- WriteLn;
- Feld:="bX1:5;X2:7;X3:0;X4:X1;X5:X2;wX";
- VereinigeStrings(BefehlsListe,1);
- Feld:="5#0dbX5:p(X5);X3:s(X3)eX4:p(X4";
- VereinigeStrings(BefehlsListe,31);
- Feld:=");wX4#0dbX5:X2;wX5#0dbX5:p(X5)";
- VereinigeStrings(BefehlsListe,61);
- Feld:=";X3:s(X3)eX4:p(X4)eX1:X3e";
- VereinigeStrings(BefehlsListe,91);
- ZeigeTestInter(Counter,BefehlsListe);INC(Counter);
-
- WriteString("Das folgende Programm berechnet die Division mit Rest.");
- WriteString(" Also 47 = X3 * 7 + X1.");
- WriteLn;
- Feld:="bX1:47;X2:7;X3:0;X4:X1;X4:s(X4";
- VereinigeStrings(BefehlsListe,1);
- Feld:=");X6:X2;wX6#0dbX4:p(X4);X6:p(X";
- VereinigeStrings(BefehlsListe,31);
- Feld:="6)e;wX4#0dbX6:X2;wX6#0dbX1:p(X";
- VereinigeStrings(BefehlsListe,61);
- Feld:="1);X6:p(X6)e;X3:s(X3);X4:X1;X4";
- VereinigeStrings(BefehlsListe,91);
- Feld:=":s(X4);X6:X2;wX6#0dbX4:p(X4);X";
- VereinigeStrings(BefehlsListe,121);
- Feld:="6:p(X6)eee";
- VereinigeStrings(BefehlsListe,151);
- ZeigeTestInter(Counter,BefehlsListe);INC(Counter);
-
- RETURN TRUE; (* Es sind keine Fehler aufgetreten. *)
- END Tester;
-
-
- END QuadTester.
-