Instalação e utilização do IPcute

Fevereiro 2017


IPcute é uma ferramenta de aprendizagem de algoritmo. Ele está destinado aos debutantes da linguagem Pascal para lhes permiti visualizar passo a passo as modificações das variáveis, da pilha de execução e do tas.
Ele é baseado sobre uma máquina virtual que interpreta o código na pouco a pouco para representar graficamente o estado da memória no andamento da execução.

Baixar IPcute

top
Visualização, no tas, dos ponteiros constituintes : uma lista dupla cadeia, e uma árvore binária.


1) Visualização das variáveis globais

Eis um código de permutação de duas variáveis graças ç uma terceira variável auxiliar:

program prgm1;  

var a,b,c:integer;  
begin  
     a:=1;  
     b:=2;  
       
     c:=a;  
     a:=b;    
     b:=c;  
end.

depois de ter verificado a sintaxe [Maj+F7], lance a execução passo a passo [Maj+F8].
Uma janela « Variáveis globais « Variável globais » aparece, afixando um quadro com o nome das variáveis e seus valores atuais (inicialmente vazias). Utilize o passo aprofundado [F7] para executar o código linha por linha e detecte as modificações de valores das variáveis (o último valor modificado é marcado com amarelo).
top
Estado das variáveis globais depois da c:=a;


2) Visualização da pilha de execução

Quando uma função ou um procedimento é chamado, a janela « Pilha de execução » afixa com o nome dos parâmetros e das variáveis locais (em notação apontada NomFonction.NomParametre) bem como seus valores.

Eis um código de permutação de duas variáveis graças à um procedimento auxiliar :
program prgm2;  

Procedimento permutar (var x,y:integer);  
var z:integer;  
begin  
     z:=x;  
     x:=y;  
     y:=z;  
end;  

var a,b:integer;  
begin  
     a:=1;  
     b:=2;  
       
     permuter(a,b);  
end.

top
Estado da pilha de execução depois da instrução z:=x;

Observação : se uma função é chamada diversas vezes, um índice de chamada é intercalado na notação apontada.
top
Chamadas recursivas de uma função fatorial (n) com n=5.


3) Visualização do tas

A visualização entre apontadores no tas é certamente a maior vantagem de IPcute. Ele é ideal para aprender a conceber algoritmos das estruturas de dados dinâmicos (lista, árvores, grafos...)

Eis um código de permutação de dois graças à um procedimento auxiliar :

program prgm3;  

type pint = ^integer;  

procedure permuter(var x,y:pint);  
var z:pint;  
begin  
     z:=x;  
     x:=y;  
     y:=z;  
end;  

var pa,pb:pint;  
begin  
     new(pa);  
     pa^ := 1;  
       
     new(pb);  
     pb^ := 2;  
       
     permuter(pa,pb);  
       
     dispose(pa);  
     dispose(pb);  
end.

É importante observar que as casas azuis corresponde ao espaço memória, e os quadrados verdes aos apontadores declarados na lista das variáveis globais ou na pilha de execução. A lista dos apontadores ligados a um endereço de memória aparecem sobrevoando o quadrado verde com o mouse.
top
Dois espaços memória alocados no tas, este do alto (sobrevoando pelo mouse) está apontado para PA.

Atenção : se um espaço de memória não estiver apontado (e então inacessível) ele desaparece do tas, mas isto não significa que ele foi propriamente desalocado da memória (com dispose).

4) Estruturas de dados no tas

Quando se utiliza tipos record para manipular dados múltiplos, toda sa informações não são afixadas. A etiqueta da visualização é então descrita pelo campo declarado sobre a primeira linha (o último da linha se tem diversas declarações sobre ela). Outros dados, somente os apontadores são representados, por casas ao lado da etiqueta (de esquerda para a direita na ordem de declaração) de onde saem uma flecha para atingir o espaço apontado.

Eis um código que representa a árvore genealógica de Martin Dupond :

program prgm4;  

type ppersonne = ^personne;  

type personne = record  
                nom,prenom:string;  
                pere,mere:ppersonne;  
                end;  

var p:ppersonne;  
begin  
     new(p);  
     p^.nom:='DUPOND';  
     p^.prenom:='Martin';  

     new(p^.pere);  
     p^.pere^.nom:='DUPOND';  
     p^.pere^.prenom:='Pierre';  

     new(p^.mere);  
     p^.mere^.nom:='MOREAU';  
     p^.mere^.prenom:='Nathalie';  

     dispose(p^.pere);  
     dispose(p^.mere);  
     dispose(p);  
end.
top


Tradução feita por Ana Spadari

Veja também

Artigo original publicado por . Tradução feita por ninha25. Última modificação: 17 de setembro de 2011 às 05:31 por ninha25.
Este documento, intitulado 'Instalação e utilização do IPcute', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.