Сектор истори ЭВМ

By admin, 19 июня, 2022
     Исправлена ошибка допущенная НАМИ при модификации программы калькулятор

 в процедуре считывания с терминала PASBIND. У Пирина, оказывается, все работает.

Обратим внимание на то, что она работает только при создании буферного массива,

задаваемого с помощью текстовой переменной, которую необходимо объявить в явном

виде.

     Ниже приведем ранее процитированную ПАСКАЛЬ-программу калькулятора с соответствующими

изменениями:

ШИФР 419999 ЗС5^

ТЕЛЕ^  ----- Не забывать эту опцию в паспорте для диалоговых программ.

EEВ1А3
*NAME PASCAL
*CALL FICMEMORY
*NO LIST
*LIBRARY:13
*PASCAL
PROGRAM САLСULАТОR(INРUТ,ОUТРUТ);
VАR Х, У, Z: RЕАL;
SIGN: СНАR;

F: TEXT;----- Объявление текстовой переменной

РRОСЕDURЕ РАSВIND(VАR Х:ТЕХТ); ЕХТЕRNАL;
ВЕGIN
 (LООР)WНILЕ ТRUЕ DО ВЕGIN

         WRIТЕLN(’ ЗНАК: ’);
--------------------------
РАSВIND(F);
         READ(F,SIGN);     ------ Процедура ввода данных с терминала.
--------------------------

 IF SIGN = ’0’ ТНЕN
ЕХIТ LООР;
         IF SIGN IN [’+’,’-’,’*’,’/’] ТНЕN ВЕGIN

             WRIТЕLN(’Х = ’);
РАSВIND(F);
             RЕАD(F,X);
             WRIТЕLN(’У = ’);
РАSВIND(F);
             RЕАD(F,Y);
             САSЕ SIGN ОF

                 ’+’: ВЕGIN
                     Z := Х + У;
                     WRIТЕLN(Z:5:5)
                 ЕND;

                 ’-’: ВЕGIN
                     Z := Х - У;
                     WRIТЕLN(Z:5:5);
                 ЕND;

                 ’*’: ВЕGIN
                     Z := Х * У;
                     WRIТЕLN(Z:5:5);
                 ЕND;

                 ’/’:
                     IF У <> 0 ТНЕN ВЕGIN
                         Z := Х / У;
                         WRIТЕLN(Z:5:5)
                     ЕND
                     ЕLSЕ
                         WRIТЕLN(’DIVISIОN ВУ ZЕRО!’);
             ЕND;
         ЕND
         ЕLSЕ
             WRIТЕLN(’ВАD SIGN!’, ORD(SIGN) OCT);

%WRIТЕLN;
ЕND;
ЕND.
*ЕХЕСUТЕ
*ЕND FILЕ

        ----- Две последние строки используются только при вводе с виртуальных перфокарт или перфоленты. 

              В диалоговом режиме из КРАБа они не требуются.
`````` 
ЕКОНЕЦ

Результат работы программы :

NАМЕ РАSСАL
*САLL FIСМЕМОRУ
*NО LISТ
*LIВRАRУ:13
*РАSСАL
*ЕХЕСUТЕ
WНАТ=
3HAK:
;


HEBEPHЫЙ CИMBOЛ! 6400000000000073


3HAK:
+
X =
2
Y =
3


5.00000E+00  ----- верный результат в экспоненциальном представлении.