Pseudolinguagem para caracterizar funções recursivas

Pedro Henrique Paiola, Hércules de Araujo Feitosa
2019 CQD Revista Eletrônica Paulista de Matemática  
Pseudolinguagem para caracterizar funções recursivas Pseudo-language to characterize recursive functions Resumo Iniciamos esse artigo com uma visão geral sobre a Teoria da Computabilidade e o conceito de algoritmo. Em seguida, definimos a classe de funções recursivas, uma tentativa de formalização da classe de funções algorítmicas, e mostramos como muitas funções usualmente disponíveis nas linguagens de programação são casos de funções recursivas. A partir daí, caminhamos para a construção de
more » ... a pseudolinguagem de programação que dê conta exatamente das funções recursivas, buscando criar uma ponte entre os conceitos da Teoria da Computabilidade e a programação prática. Desenvolvemos duas versões para essa pseudolinguagem, a REC, com um escopo menor de operações, e a REC++, que oferece alguns recursos que facilitam a codificação. Durante a apresentação dessas linguagens, procuramos demonstrar a equivalência entre a classe das funções REC e REC++ calculáveis com a classe das funções recursivas. Palavras-chave: Matemática Discreta. Computabilidade. Funções recursivas. Pseudolinguagem. Abstract We begin this article with an overview on Computability Theory and the concept of algorithm. Then, we define the class of recursive functions, an attempt to formalize the class of algorithmic functions, and show how many functions usually available in programming languages are cases of recursive functions. From there, we move towards the construction of a programming pseudolanguage that accurately accounts for the recursive functions, seeking to create a bridge between the concepts of Computability Theory and the practical programming. We have developed two versions for this pseudo-language, the REC, with a minor scope of operations, and REC++, which offers some features that facilitate the coding. During the presentation of these languages, we demonstrate the equivalence between the class of functions REC and REC++ calculable with the class of recursive functions. De acordo com Dias e Weber (2010), o ponto de partida da Computabilidade, ou ainda da Teoria da Recursão,é a análise conceitual, em termos matematicamente precisos, das noções intuitivas de algoritmo e função algorítmica. Essas são duas noções fundamentais, mas que não admitem uma definição cabal. Ainda segundo Dias e Weber (2010) , um algoritmoé, de forma breve, um conjunto finito de regras ou instruções, concebidas para serem aplicadas mecanicamente, ou seja, sem uso da criatividade. Assim, dada uma partida ou uma instrução inicial, após a execução de um número finito de operações elementares, programadas sobre os dados iniciais, o procedimento deve gerar uma saída ou resultado. Devemos conceber o procedimento algorítmico como uma função algorítmica, em que o argumento da função são os dados de entrada, as instruções permitem efetivamente a determinação ou computação do valor da função, queé o valor de saída. Segundo Cutland (1980) , podemos dizer que a Teoria da Computabilidade, do ponto de vista da Ciência da Computação, parte da indagação sobre o que os computadores (sem considerar restrições de espaço, tempo ou dinheiro) podem fazer e, como consequência, quais as limitações inerentes. Assim, fica claro que a Computabilidade se preocupa não apenas com o que um computador pode fazer, ou seja, o que pode ser computável, mas também sobre os limites da computação, com aquilo que não pode ser computável. As noções apresentadas de algoritmos e funções algorítmicas são puramente intuitivas. Há uma série de versões formais para essas duas ideias. Nestas notas, teremos como base as funções recursivas, sistematizadas por Kleene a partir das ideias de Herbrand e Gödel (MENDELSON, 1964) . Inseridos nesse contexto, nos atuais cursos de Bacharelado em Ciência da Computação, temos disciplinas como Algoritmos e Modelos de Computação ou Teoria da Computação, que permitem não apenas o desenvolvimento lógico do aluno na resolução de problemas, através da construção de programas de computador, como também a abordagem sobre os limites teóricos da computação, anteriormente citados. Porém, observa-se um altoíndice de reprovação nas duas disciplinas (FORTE; GUZDIAL, 2005; GUZDIAL, 2003; LIMA JUNIOR; VIEIRA, C.; VIEIRA, P., 2015) . Dessa forma, nosso objetivo com esse trabalhoé a construção de uma pseudolinguagem de programação a partir da definição de funções recursivas, que possibilite estabelecer uma ponte entre os algoritmos e alguns conceitos matemáticos relativamente simples, com vistas a incentivar o aluno a criar a capacidade de traduzir processos matemáticos em procedimentos computacionais, ao mesmo tempo em que isso se associa ao estudo da Computabilidade. Neste trabalho, iniciamos com uma visão bastante geral do conceito de algoritmo, comênfase nos pseudocódigos. A seguir, apresentamos a definição e desenvolvimento teórico inicial sobre as funções recursivas. Existem definições distintas para este conceito, embora a classe de funções recursivas e recursivas parciais sejam unas. Por fim, introduzimos o desenvolvimento da pseudolinguagem proposta, caminhando para demonstrar as equivalências entre o sistema formal por nós introduzido e as funções recursivas. Este artigoé derivado do trabalho (PAIOLA; FEITOSA, 2018). PAIOLA, P. H.; FEITOSA, H. de A. Pseudolinguagem para caracterizar funções recursivas.
doi:10.21167/cqdvol14ermacic201923169664phphaf0129 fatcat:isz4cgc2bbcarmtecffttutjx4