




                                APNDICE E      
            
                            DEPURANDO PROGRAMAS
            
            
            
                 O ambiente  do Pascal permite ser executado um programa
            ao mesmo  tempo em  que so  mostrados valores de variveis.
            Isto    muito  til  para  se  encontrar  erros  durante  a
            elaborao de  um programa. Descreveremos a seguir como isso
            pode ser feito.
            
            Exemplo: Carregue no ambiente do Pascal o seguinte programa,
            que    calcula    o    produto    interno    entre    v    =
            (1,2,1,2,1,2,1,2,1,2) e w = (1,4,9,16,25,0,0,0,0,0).
            
            
                      PROGRAM Testando_a_depuracao_do_Pascal;
            
                      VAR
                        v: array[1..10] of integer;
                        w: array[1..10] of integer;
                        i: byte;
                        prod: integer;
            
                      BEGIN
                        for i := 1 to 10 do
                        begin
                          if Odd(i) then
                            v[i] := 1
                          else
                            v[i] := 2;
                          if (i > 5) then
                            w[i] := 0
                          else
                            w[i] := Sqr(i);
                          prod := prod + v[i]*w[i];
                        end;
                        Writeln('Produto interno = ', prod)
                      END.
            
            
                 (1) Verifique  se a  janela de  "watch" ( = observao,
            vigia) aparece  na tela;  se no aparecer, pressione a tecla
            F5 ou a seqncia de teclas F6, Alt-F6, F6.
                 (2) Selecione  algumas variveis  cujos valores vo ser
            acompanhados durante  a execuo  do programa. No caso desse
            programa-exemplo, vamos  acompanhar os  valores de  todas as
            variveis (v,  w, i, prod). Pressione CTRL-F7, digite o nome
            da varivel  e pressione ENTER. A cada operao dessa o nome
            da varivel   includo na janela de "watch". (OBS.: CTRL-F7
             o mesmo que ALT-B seguido de um "A").
                 (3) Pressione  F8 sucessivas  vezes. Cada  vez que F8 
            pressionada,   executada uma  linha do programa. Observe os

                                       - 222 -





            valores  das   variveis  mudando   cada  vez   que  F8  for
            pressionada.
            
                 O resultado do produto anterior deve ser 75. Certamente
            no foi  essa a  resposta encontrada  no final  da  execuo
            porque  o   programa  tem   um   erro.   Execute   novamente
            pressionando F8 sucessivas vezes e observando os valores das
            variveis, tente descobrir o que est errado.
            
                 Para continuar  a execuo  a partir  da posio atual,
            pressione CTRL-F9.  Para interromper uma sesso de depurao
            e encerrar a execuo do programa, pressione CTRL-F2.
            
                 Toda a "movimentao" de variveis na janela de "watch"
            pode  ser  feita  atravs  do  tem  "Break/watch"  do  menu
            principal. Por  exemplo, para  limpar todas  as variveis da
            janela de  "watch" pressione  ALT-B e um "R" (de "Remove all
            watches").
            
            Exemplo: Observe o comportamento das variaveis do programa a
            seguir durante  a sua execuo. Pressione CTRL-F7, M, ENTER,
            CTRL-F7, FIM, ENTER, etc. e F8 vrias vezes.
            
            
            VAR
              m: array[1..3, 1..3] of integer;
              i, j: byte;
              fim: boolean;
            
            BEGIN
              fim := false;
              for i := 1 to 3 do
                for j := 1 to 3 do
                  m[i, j] := i + j;
              fim := true
            END.
            
            
            Exemplo:  Para  executar  um programa passo a passo, podemos
            usar F8  ou F7.  A diferena  entre elas   que F8 ignora as
            chamadas  a   funes  ou  procedimentos,  enquanto  que  F7
            percorre todas  as linhas, "entrando" em todas as funes ou
            procedimentos. Execute  o programa  a seguir com F8 e depois
            com F7.  Voc certamente  vai preferir  executar com  F8, ao
            invs de  F7.   bom ficar  atento quanto ao uso indevido do
            F7, pois ele pode levar a trechos extremamente demorados.
            
            
            FUNCTION S(n: word): longint;
            
            (*
               S calcula o valor de um somatorio recursivamente
             *)
            

                                       - 223 -





            begin
              if n = 0 then
                S := 0
              else
                S := S(n - 1) + n
            end;
            
            
            VAR
              n: word;
            
            BEGIN
              n := 100;
              Writeln(' Soma dos ', n, ' primeiros inteiros  = ', S(n));
              Readln;
            END.
            
            
                 Para sair  de um trecho demorado de um programa, como a
            funo S do programa anterior, faa o seguinte:
                 (1) Posicione  o cursor  em uma posio do programa que
            corresponda a um comando posterior  execuo do trecho;
                 (2) Pressione  a tecla F4 (que equivale a ALT-R seguido
            de um  "G"). A  tecla F4  faz o programa ser executado at a
            posio atual do cursor no programa fonte.
            
                 Em programas  em  que  so  feitas  muitas  chamadas  a
            funes ou  procedimentos ou em que  usado recursividade, 
            interessante pressionar Ctrl-F3 (ou Alt-D C) para ver a cada
            momento os  nomes das  funes ou  procedimentos  que  esto
            sendo executados.
            
                 Em programas grandes, voc pode sinalizar uma ou vrias
            linhas  do   programa  como   sendo  um  "ponto  de  parada"
            (breakpoint). Assim,  toda vez  que a  execuo do  programa
            chegar nessa linha, haver uma pausa, ser destacada a linha
            na tela, e a execuo s poder ser continuada pressionando-
            se  CTRL-F9,   F7,  F8  ou  F4.  Os  pontos  de  parada  so
            acrescentados ao  programa posicionando-se o cursor na linha
            que se quer transformar em ponto de parada e pressionando-se
            CTRL-F8. Para retirar o ponto de parada repete-se essa mesma
            operao.
            
            
            
            
            
            
            
            
            
            
            
            

                                       - 224 -
