Турбо отладчик (Turbo Debugger) 3.0

Паскаль позволяет  вам  использовать большой


            Паскаль позволяет  вам  использовать большой уровень вложен-
       ности процедур и функций,  и в каждой их этих процедур и  функций
       могут  содержаться ее собственные описания.  Рассмотрим следующую
       программу:
                program Confused;
                var
                        A,B :integer;
                procedure Swap(var A,B : integer);
                var
                        T : integer;
                begin
                        Writeln('2: A,B,T = ',A:3,B:3,' ',T);
                        T := A;


                        A := B;

       TDeb 3.0 #2-3               = 134 =
                        B := T;
                        Writeln('3: A,B,T =',A:3,B:3,' ',T);
                end { Swap }
                begin { тело основной программы Confused }
                        A:= 10; B := 20; T := 3-;
                        Writeln('1: A,B,T = ',A:3,B:3,' ',T);
                        Swap(B,A);
                        Writeln('4: A,B,T = ',A:3,B:3,' ',T);
                end. { Confused }
            Выводимая программой  информация  будет  выглядеть  примерно
       следующим образом:
               1: A,B,T = 10 20 30
               2: A,B,T = 20 10 22161
               3: A,B,T = 10 20 20
               4: A,B,T = 20 10 30
            Все это вызвано тем, что у вас имеется две версии переменных
       A,  B и T. В теле основной программы используются глобальные вер-
       сии, в процедуре Swap - локальные версии (ее формальные параметры
       A и B и локальная переменная T).  И что еще более запутало ситуа-
       цию,  мы обратились с вызовом Swap(B,A),  что означает,  что фор-
       мальный параметр A является на самом деле глобальной переменной B
       и наоборот.  И, конечно, нет никакой связи между локальной и гло-
       бальной версией переменной T.
            Настоящей ошибки  здесь  нет,  но проблемы могут возникнуть,
       когда вы будете считать, что модифицируете что-то, а на самом де-

Содержание раздела