You are on page 1of 7

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/266867405

Transformando Funções Recursivas em
Programas através de uma ferramenta gráfica
de simulação
Article

READS

45

1 author:
Alexandre Paes
Universidade Federal de Alagoas
1 PUBLICATION 0 CITATIONS
SEE PROFILE

Available from: Alexandre Paes
Retrieved on: 25 April 2016

Natal/RN Transformando Fun¸co ˜es Recursivas em Programas atrav´ es de uma ferramenta gr´ afica de simula¸ c˜ ao Alexandre Paes. Resumo O objetivo deste artigo ´e apresentar uma ferramenta de simula¸c˜ao que transforme fun¸c˜oes recursivas em Programas numa linguagem de programa¸c˜ao minimal.VIII ERMAC-R3 5o Encontro Regional de Matem´ atica Aplicada e Computacional 20 a 22-Novembro-2008 Universidade Federal do Rio Grande do Norte . por ser exigido um alto grau de abstra¸c˜ao.570.almeida@gmail. por exemplo) com formalismos distintos. Em [4] ´e chamada a aten¸c˜ao para o fato de que qualquer procedimento computacional para qualquer tentativa de formalizar a no¸c˜ao intuitiva de fun¸c˜ao comput´avel pode ser traduzido em outra formaliza¸c˜ao.570. C. Sim˜ oes BR 104 Norte Km 14 . por´em com um s´o objetivo. . C. E-mail: eliana. com determinados argumentos. a concep¸c˜ao de um procedimento efetivo de c´alculo.com. Hilbert(1926). conforme [2]. As fun¸c˜oes recursivas primitivas s˜ao uma classe especial de fun¸c˜oes em geral e s˜ao muito importantes em Computabilidade na medida em que s˜ao mecˆanicas no sentido de mecˆanico que G¨odel pela primeira vez tornou preciso. no entanto hoje essas mesmas fun¸c˜oes s˜ao conhecidas como recursivas primitivas. Kleene utilizou a numera¸c˜ao de G¨odel para provar que n˜ao existe procedimento efetivo para decidir se tal artif´ıcio define um sistema de equa¸c˜oes gerais como fun¸c˜oes recursivas. uma vez que s˜ao modelos fundamentados na Matem´atica. A teoria das fun¸c˜oes recursivas ´e um tema central da Ciˆencia da Computa¸c˜ao. que provˆe um conjunto integrado de ferramentas gr´aficas que simulam alguns dos modelos abstratos que constituem evidˆencias para a Tese de Church-Turing. Efetivamente. G¨odel introduziu uma nova classe de fun¸c˜oes que originalmente foram chamadas de fun¸c˜oes recursivas. com o menor n´ umero de comandos Fun¸ co ˜es Recursivas Ao elaborar sua prova. Eliana Almeida Centro de Pesquisa em Matem´ atica Computacional (CPMAT) Instituto de Computa¸c˜ ao . Outros matem´aticos e l´ogicos j´a haviam percebido a existˆencia dessas fun¸c˜oes como Dedekind(1888). Mestrado em Modelagem Computacional do Conhecimento(MMCC) Instituto de Computa¸c˜ ao .paes. Entender a rela¸c˜ao desses modelos computacionais ´e uma tarefa ´ardua para o aluno ne´ofito. Palavras-chave necess´arios para escrever todos os Programas ditos comput´aveis. de tal forma que as duas formaliza¸c˜oes tˆem as mesmas sa´ıdas para as mesmas entradas. por meio do seu mapeamento em um programa escrito numa Linguagem Algor´ıtmica Minimal (LAM). o matem´atico pode criar uma regra finita de constru¸c˜oes. construindo assim um formula¸c˜ao de uma teoria das fun¸c˜oes recursivas. E-mail: alexandre. Com isso tenta-se prover um mecanismo de aux´ılio ao ensino de Computabilidade em Teoria da Computa¸c˜ao. Sim˜ oes BR 104 Norte Km 14 .santos@gmail. Essa classe de fun¸c˜oes ´e constru´ıda a partir de outras fun¸c˜oes elementares de uma forma composicional. A ferramenta aqui apresentada foi desenvolvida ´ em JAVA e ´e parte integrante do projeto ACARAJE [11]. Fun¸c˜oes Recursivas. Ser˜ao aqui tratados os conceitos associados `a classe das fun¸c˜oes recursivas e `a linguagem algor´ıtmica.com. o Algoritmo. λ-C´alculo e M´aquinas de Turing. pertencente `a classe de fun¸c˜oes recursivas. Introdu¸c˜ ao A tese de Church-Turing permite alinhar modelos de computa¸c˜ao (Fun¸c˜oes Recursivas. A recursividade permite que ao inv´es de se tratar de objetos infinitamente grandes. Ackermann(1928) dentre [2]. Acredita-se que tais dificuldades poderiam ser atenuadas com a constru¸c˜ao de ferramentas que auxiliassem o discente no processo de aprendizagem. Teoria da Computa¸c˜ao.Universidade Federal de Alagoas (UFAL) Campus A.Universidade Federal de Alagoas (UFAL) Campus A. Fundamenta¸c˜ ao Te´ orica Computabilidade. Este artigo apresenta uma ferramenta de f´acil utiliza¸c˜ao que permite entender o conceito de fun¸c˜oes comput´ aveis. toda a¸c˜ao de um computador representada por um algoritmo se resume a calcular o valor de uma fun¸c˜ao. nomenclatura dada pela primeira vez por Stephen Cole Kleene anos depois. em 1936. a saber.

A Linguagem Algor´ıtmica Minimal As fun¸c˜oes podem ser combinadas em v´arios as. e as opera¸c˜oes de composi¸c˜ao. as Fun¸c˜oes Recursivas Primitivas s˜ao geradas a partir da aplica¸c˜ao de um n´ umero finito de opera¸c˜oes sobre as fun¸c˜oes iniciais. A expoentiza¸c˜ao de f ´e uma fun¸c˜ao f # : Wr+1 → Wr definida por: f# (x. A combina¸c˜ao de f e g ´e a fun¸ca˜o g x f : Wr+t → Ws+u definida por: f x g(xr . – Zero z : W0 → W1 . sss para algum k ≥ 0   #    f (xr .| <rotulo>LOOP<nome>. Ou seja. Iniciando sempre com uma declara¸c˜ao das vai´aveis de entrada e sa´ıda. x W.<lista de nomes> <programa>::=<comando rotulado>|<loop>| <programa><end> | <programa><programa> <comando rotulado>::=<comando>. π(x)= <>. definida por s(x)= x + 1. definida por i(x) tiza¸c˜ao e repeti¸c˜ao.of (x) As fun¸c˜oes recursivas parciais contˆem a classe de Fun¸c˜oes Recursivas Primitivas acrescidas da opera¸ca˜o de repeti¸c˜ao.k) = < xr ’. A seguir ser˜ao mostradas as opera¸c˜oes de Composi¸c˜ao..y)= z Y vezes }| { f o. y) =  f # (x . Um <programa io> ´e o que informalmente chamamos de uma programa LAM. . <comando>::=<atribui¸c˜ao>|GOTO<rotulo> <loop>::=LOOP<nome>. X←Y e X←X +1. y. que est´a restrita `as fun¸c˜oes primitivas recursivas. definida por z( )=0.|9 <programa io>::=<io><programa> <entrada>::=ENTRADA|ENTRADA<lista de nomes> <saida>::=SAIDA|SAIDA<lista de nomes> <lista de nomes>::=<nome>|<nome>. No contexto deste trabalho. n˜ao ser´a abordada a repeti¸c˜ao.  r  r   indefinido se n˜ao existe tal k≥0 • Fun¸ c˜ oes Iniciais: Uma fun¸c˜ao f: Wn → Wm A classe de Fun¸c˜oes Recursivas Parciais ´e a menor ´e inicial se e somente se f for uma das fun¸c˜oes classe contendo as fun¸c˜oes iniciais e fechada sobre a seguir: as opera¸c˜oes de composi¸c˜ao. seguida por um corpo do programa. que ser˜ao definidas a seguir. Expoentiza¸c˜ao e Repeti¸c˜ao extra´ıdas de[2][4]: • Composi¸ c˜ ao: Sejam as fun¸c˜oes f: Wr → Ws e g: Ws → Wt . f ∇ : Wr+1 → Wr . k) 6=< x0 . fun¸c˜oes n˜ao ser˜ao tratadas na sua implementa¸c˜ao.VIII ERMAC-R3 5o Encontro Regional de Matem´ atica Aplicada e Computacional 20 a 22-Novembro-2008 Universidade Federal do Rio Grande do Norte . por se tratar de um ambiente de aprendizado. a qual ´e definida da seguinte forma: A Linguagem Algor´ıtmica Minimal (LAM) ´e baseada em [4] e disp˜oe de trˆes tipos de comando de atribui¸c˜ao X←0. A seguir ser´a apresentado a forma Backus-Naur (BNF) desta linguagem. Wn corresponde a W x W x . entidades matem´aticas caracterizadas pelos postulados de Giuseppe Peano. W. definida por isto ´e. ´e uma fun¸c˜ao definida por:  0 xr . <atribui¸c˜ao>::= <nome>←0|<nome>←<nome>| <nome>←<nome> + 1 <nome>::=<literal>|<literal><numeral> <literal>::=<letra>|<letra><literal> <numeral>::=<algarismo>|<algarismo><numeral> <algarismo>::=0|1|.Natal/RN As Fun¸c˜oes Recursivas Primitivas s˜ao constru´ıdas a partir das fun¸c˜oes ditas iniciais ou b´asicas. incontestavelmente comput´aveis. combina¸c˜ao e expoentiza¸c˜ao.. para todo n ≥ 0. g(xt ) > c˜ ao: Sejam as fun¸c˜oes f: Wr → • Expoentiza¸ r W . onde seu efeito ´e conhecido. 1 >. – Sucessor s: W1 → W1 . A seguir. onde. f ∇(xr ..(LAM) pectos diferentes. Todas estas fun¸c˜oes tratadas ser˜ao sempre entre n´ umeros naturais. estas = x. Combina¸c˜ao. n vezes.y. xt )= < f(xr ) .. um conjunto de fun¸c˜oes ´e fechado sob algumas opera¸c˜oes se a opera¸c˜ao aplicada aos membros do conjunto sempre produzirem outros membros desse conjunto. c˜ ao: Seja a fun¸c˜ao f: Wr+1 → Wr+1 • Repeti¸ a repeti¸c˜ao de f (tamb´em chamada de minimiza¸c˜ao) .1 > e para todo l < k .. ser˜ao listadas as fun¸c˜oes elementares.. expoen1 1 – Identidade i: W → W .| <rotulo>END. combina¸c˜ao.|<comando> <rotulo>. <end>::=END. – Proje¸c˜ao π: W1 → W0 . j´a abordado nesse trabalho. A composi¸c˜ao de f e g ´e a fun¸ca˜o g o f : Wr `a Wt definida por: g o f(xr ) = g(f(x)) • Combina¸ c˜ ao: Sejam as fun¸c˜oes f: Wr → Ws e g: Wt → Wu . Tais fun¸c˜oes ser˜ao definidas sob o dom´ınio dos n´ umeros naturais.

A utivari´aveis dependem de outras ao serem inicializadas. END Grafo de Dependˆ encias Um grafo de dependˆencias [7] pode ser definido como um conjunto G = ( V .VIII ERMAC-R3 5o Encontro Regional de Matem´ atica Aplicada e Computacional 20 a 22-Novembro-2008 Universidade Federal do Rio Grande do Norte .y) = ( sos) x ( ios ). Tabela 1: Mapeamento de fun¸c˜oes iniciais ˜ FUNC ¸ OES PROGRAMAS EM LAM ENTRADA X1 . SAIDA Y1. E SAIDA . (b) e (c) acima. Composi¸ c˜ ao SAIDA Y1. atuando auxiliar o mapeamento e no entendimento de tais fortemente na motiva¸c˜ao do aluno [10]. neste artigo ser´a abordada apenas a rela¸c˜ao entre Fun¸c˜oes Primitivas Recursivas e um subconjunto de LAM. Exponentiza¸ c˜ ao f# (x. suponha que Pf seja o programa em LAM que compute uma fun¸c˜ao f: W→W e Pg o programa em LAM que compute uma fun¸c˜ao g: W→W. g(x2 ) = y2 Pg . onde f(x) = z ENTRADA X. Nas instru¸c˜oes marcadas por (a). SAIDA Y1 .x2 )= Pg (f(x1 ). onde f(x1 ) = y1 e SAIDA Y1 .X2 . f◦g(x1 ). e A. bilidade de visualiza¸c˜ao no ambiente `a rela¸c˜ao entre ENTRADA A1. e f(xf ) = y1 Pf ENTRADA X1 . temos uma dependˆencia de fluxo de modo ENTRADA X1 . Outra raz˜ao para se utilizar tal mecanismo foi o fato de este propiciar uma estrutura de dados compat´ıvel com as necessidades de implementa¸c˜ao e Seja o programa em LAM que executa a fun¸c˜ao ainda potencializar para trabalhos futuros a possin m f: W → W tal que f(x. O Grafo de dependˆencias deste proY1 ←X1 . favorecendo o entendimento das dependˆencias de fluxo de dados e de controle. Um ambidependˆencias. Desta forma.Y2 . v´ertices. liza¸c˜ao desse tipo de recurso de visualiza¸c˜ao permite Utilizou-se o conceito de grafo de dependˆencias para a disposi¸c˜ao de problemas mais complexos.Y2 .Y. ritmo). que n˜ao contempla o comando GOTO. de modo a poder se representarem todas as dependˆencias dentre as ENTRADA. Pg onde g(x1 ) = yg Xf ←Yg . SAIDA Y1 . Tabela 2: Mapeamento dos Operadores Funcionais OPERADORES PROG. grama ´e representado na figura a seguir. i Y1←X1 . SA´IDA C1. Pf . de fluxo de dados e / ou controle. onde V representa o conjunto de v´ertices. A ) direcionado. π execu¸c˜ao de um programa. unidas por dependˆencias Y11 ←0. ente nesses moldes deve ter um analisador sint´atico . percebe-se que algumas das Algoritmo e Linguagem de Programa¸c˜ao. finito e n˜ao vazio. depois de ser definida. O grafo de dependˆencia [7] ´e utilizado como uma linguagem intermedi´aria. Dentre elas encontramos inF2 ← E2 terpretadores que s˜ao utilizados nas disciplinas de F2 ← F2 + 1 (c) Neste exemplo. 1 s posteriormente.y). fxg(x1 . A estrat´egia ´e exibir programas nessa linguagem Minimal que computem as fun¸c˜ oes primitivas recursivas definidas pelo aprendiz. Para mapear os operadores funcionais em programas em LAM. Combina¸ c˜ ao Pf . o aprendiz n˜ao ter´a dificuldades em entender estes dois modelos na sua vers˜ao mais simples e se prender´a a entender a rela¸c˜ao entre os dois com a ajuda da ferramenta aqui proposta. z estruturas de processamento do programa (algoY1 ←0. D2 os modelos por um grafo. tem seu valor utilizado SAIDA Y . Y1 ←Y1 +1.Natal/RN Mapeando as Fun¸ c˜ oes Recursivas Primitivas e Programas na Linguagem Algor´ıtmica Minimal (LAM) Para fins de simula¸c˜ao. g(x2 )) ou ENTRADA X1 . v´arias iniciativas na constru¸c˜ao C1 ← C1 +1 (b) de ferramentas para auxiliar o ensino de disciplinas E2 ← D2 tˆem sido apresentadas. Este mapeamento ´e definido recursivamente e ilustrado na tabela a seguir. EM LAM ENTRADA X1. E2 B1 ← A1 Trabalhos Correlatos B1 ← B1 + 1 (a) C1 ← B1 Na Computa¸c˜ao. SAIDA Y1 . o conjunto de arestas que interligam estes ´ representado por unidades atˆomicas de ENTRADA X1 .X2 . LOOP X Pf X←Z. que.

A diferen¸ca enQuando o usu´ario entra com a express˜ao. s´ımbolos. a quantidade de varia¸c˜oes de solu¸c˜oes em formatos diferentes seria muito grande. que ´e um interpreta. E eventuais erros sint´aticos sejam identificados no processo de tradu¸c˜ao. dentre as quais est˜ao a identidade.Ainda express˜oes. Arquitetura do Sistema A figura 2 apresenta a tela inicial da ferramenta aqui proposta onde o usu´ario pode digitar a express˜ao ou escolher compor a express˜ao. tem-se o gera¸c˜ao de c´odigo. [8] traz um compilador e simulador de fun¸c˜oes recursivas parciais utilizando redes neurais. esta ser´a tre uma linguagem formal de programa¸c˜ao e uma convertida para a nota¸c˜ao posfixa por se tratar de PDL ´e o fato de a u ´ltima n˜ao ser normalmente ex. tˆem-se despendido esfor¸cos na constru¸c˜ao de ferramentas que auxiliam os alunos em sua caminhada. enquanto que as corre¸c˜oes dos erros semˆanticos fiquem a encargo do aprendiz. . “A utiliza¸c˜ao de um instrumento computacional para a pr´atica do mesmo. que ´e a que os usu´arios est˜ao ecutada. enquanto que a deste artigo assim o faz. tornase um referencial importante para o processo de ensino aprendizagem” [Nobre and Menezes 2002]. especificamente redes neurais para a sua implementa¸c˜ao. Nesses bot˜oes est˜ao as op¸c˜oes das fun¸c˜oes recursivas primitivas. al´em dos operadores de comassociado ao exemplo 1. Todo este processo est´a descrito no fluxograma da figura 3. temos o AMBAP [1]. Uma vez que a execu¸c˜ao for solicitada. fun¸c˜oes mais usuais.uma nota¸c˜ao com maior poder computacional em ´ o caso do ILA [6]. que se assemelha muito ao Pascal. a possibilidade de visual.VIII ERMAC-R3 5o Encontro Regional de Matem´ atica Aplicada e Computacional 20 a 22-Novembro-2008 Universidade Federal do Rio Grande do Norte . a multiplica¸c˜ao. uma t´ecnica de algoritmiza¸c˜ao baseada no conceito de PDL(Program Design Language) e chamada de PorFigura 2: tela principal da ferramenta. que est˜ao armazenadas numa tabela de e o Portugol IDE. o Figura 1: Fun¸c˜ao Ilustra¸ca˜o do Grafo de Dependˆencia sucessor e o zero. a diagoniza¸c˜ao encontexto. ao inv´es do desenvolvimento de algoritmos no papel. N˜ao de agora. ´ desej´avel que integrado com um editor de texto. o algoritmo em LAM ´e exibido dentro dessa ferramenta. de combina¸c˜ao e de expoentiza¸c˜ao. dentre outras ferramentas que se enquadram nesse como a soma. s´o que em forma de pseudo-c´odigo. Outra diferen¸ca deve-se `a n˜ao gera¸c˜ao de um c´odigo em linguagem algor´ıtmica por parte da ferramenta citada. no Brasil. Por fim. ou portuguˆes estruturado. Assim os padr˜oes s˜ao comparaVisualG . pois. Agregando-se ao ILA mais habituados a trabalhar.na tela principal. E dor de linguagem algor´ıtmica. [9] relata sobre a importˆancia de visualiza¸c˜ao dos resultados na execu¸c˜ao do algoritmo.Natal/RN N˜ao obstante a essa diversidade. iza¸c˜ao em um fluxograma. o UAL tre outras. posi¸c˜ao. a proje¸c˜ ao.O Portugol ´e muito semelhante `a Linguagem Pascal. tugol. sendo dos com express˜oes regulares para se encontrarem que sua sintaxe est´a em PORTUGOL. podem-se citar o Portugol plus . A diferen¸ca dessa ferramenta para a proposta neste artigo se d´a pelo fato de que a do artigo citado lan¸ca m˜ao de recursos de inteligˆencia artificial.detrimento `a infixa. por´em este u ´ltimo ainda agrega. Em [3] relata que. n˜ao se encontram com tanta facilidade simuladores ou interpretadores para a computabilidade das fun¸c˜oes recursivas. utilizando os bot˜oes que est˜ao explicitados na ferramenta. as quais foram pr´e-definidas. E ´ feita uma varredura uma interface amig´avel com recursos gr´aficos e um na express˜ao para reconhecimento de padr˜oes de simulador de mem´oria. se tal opera¸c˜ao fosse realizada em linguagem natural. tentando assim atenuar o trabalho de no contexto de Algoritmo e Programa¸c˜ao. o sistema gerar´a o pseudo-c´odigo. Al´em dela. ´e mais utilizada.

B. seria incorporada a implementa¸c˜ao da fun¸c˜ao repeti¸c˜ao dentre as parciais e. A lista ´e constru´ıda aos moldes do grafo de dependˆencia. pois a mesma se assemelha muito a uma ´arvore. para a gera¸c˜ao do c´odigo. por conseguinte. M. ser´a gerada uma lista com o padr˜ao correspondente. [6] J. Outra etapa considerada entre os trabalhos futuros seria a agrega¸c˜ao junto `a tela principal do sistema. L. Ao passo em que a estrutura ´e atravessada. H. “Ambiente para Teste de Mesa utilizando Fluxograma”. Considera¸ c˜ oes Finais Figura 3: Fluxograma da ferramenta. G. ´e utilizado um algoritmo de Busca em profundidade na lista de incidˆencia. que se baseia na simula¸c˜ao entre os modelos das fun¸c˜oes recursivas e uma linguagem de programa¸c˜ao. “Modelos de Computa¸c˜ao e Sistemas Formais ”. o comando GOTO. Costa and and Klebson S. Como sugere a figura 4. D. Tal escolha foi feita para melhor facilitar a integra¸c˜ao e o acoplamento com o Ambiente ACARAjE citado anteriormente. Almeida and J.em (Semin´ario de Computa¸c˜ao e Feira de Inform´atica SENAC ). H. [3] P. Imprinta Gr´afica e Editora Ltda. 1974. New York. Por fim. Dazzi. Silva and R. Carnieli and R. Paes and A. Oliveira. B. O c´odigo intermedi´ario ´e ent˜ao gerado. A. 2006. L´ogica e os Fundamenteos da Matem´atica ”. o grafo e a linguagem algor´ıtmica. Assim. S. Book Express. Este artigo descreveu uma ferramenta para aux´ılio ao ensino de computabilidade. [2] W.Natal/RN tabela de s´ımbolos. John Wiley & Sons. Landweber. Almeida and E. Epstein. Cares and R. tendo em vista que os outros m´odulos est˜ao sendo desenvolvidos na mesma linguagem. o algoritmo se vale de listas de incidˆencia dinˆamicas para simular a constru¸c˜ao de um grafo. por´em a consolida¸c˜ao da ferramenta s´o se dar´a depois de um feedback mais efetivo por parte dos usu´arios. “Theory of Computation ”. Carvalho and C. Se for encontrado algum padr˜ao na express˜ao. Florian´ opolis SC.VIII ERMAC-R3 5o Encontro Regional de Matem´ atica Aplicada e Computacional 20 a 22-Novembro-2008 Universidade Federal do Rio Grande do Norte . A pr´oxima etapa ser´a de integra¸c˜ao desta ferramenta com o Ambiente. XXII Congresso da Sociedade Brasileira de Computa¸c˜ ao X WEI. M. Referˆ encias [1] E. M. .programando numa linguagem algor´ıtma execut´avel ILA ”. 2000. L. S. [4] R. L. (2002). e logo em seguida tal lista ser´a agregada `a lista de incidˆencia. o c´odigo ´e gerado em um arquivo que posteriormente ser´a exibido. Evaristo and S. Brainerd and L. com consultas a [5] W.2002. este processo se assemelha muito ao processo de compila¸c˜ao. 1998. de modo a facilitar a percep¸c˜ao da rela¸c˜ao existente entre a fun¸c˜ao. Fun¸c˜oes comput´aveis . L. A ferramenta foi concebida utilizando a linguagem JAVA. Ainda durante a varredura. permitiria uma visualiza¸c˜ao do grafo de dependˆencia. L. AMBAP: Um Ambiente de Apoio ao Aprendizado de Programa¸c˜ao . Crespo. Al´em disso. “Aprendendo a programar . “Computabilidade. S. onde ´e realizada inicialmente uma an´alise lexical. Braga. o que neste artigo ´e representado pelo grafo de dependˆencia e logo depois e gerado o c´odigo alvo. Com o sistema proposto esperase que os alunos de Teoria da Computa¸c˜ao possam usufruir de um recurso computacional de f´acil utiliza¸c˜ao que os auxilie na aprendizagem da disciplina. Figura 4: Arquitetura da ferramenta. Editora Unesp.

L. Ferrante and K. [11] B. “AVEP . em (59a Reuni˜ao da Sociedade Brasileira para o Progresso da Ciˆencia). 2006. Universidade Estadual Do Norte Fluminense .VIII ERMAC-R3 5o Encontro Regional de Matem´ atica Aplicada e Computacional 20 a 22-Novembro-2008 Universidade Federal do Rio Grande do Norte . S. “Um simulador para ilustrar graficamente a execu¸c˜ ao de programas e as no¸c˜oes de computabilidade”. .34th Technical Symposium on Computer Science Education). Correia and M. R. ACM Transactions on Programming Languages and Systems. D.2007.Um Ambiente Virtual para apoio ao Ensino de Algoritmos e Programa¸c˜ao Algoritmos e Programa¸c˜ao ”. [8] J. “UHands-on labs without computers”. (1987) 319-349. F. Warren. C. Ahmad Lotfi and Jonathan M. Costa and P. (2004) 39-46.Natal/RN [7] J. A compiler and simulator for partial recursive functions over neural networks .2003. Pereira. Vieira and E. J. Garibaldi (eds). Springer-Verlag. Neto and J. Rosa . Forbes.em (SIGCSE . Ottensteinand and J. [9] J. [10] S. The Program Dependence Graph and Its use in Optimization . Pollard and J. Almeida. Applications and Science in Soft Computing.