Resumo: Calouros nos cursos de graduao da rea da computao apresentam
dificuldades para compreender e aplicar os conceitos de algoritmos diante da sua iniciao a metodologias lgicas estruturadas como linha de raciocino no cotidiana, para chegar a solues de desafios. Mesmo alguns veteranos, em vista desse tipo de problema, precisam continuamente recorrer literatura bsica para recobrar os princpios desta forma de pensar para resolver problemas simples propostos pelas disciplinas de programao. Por tais razes, este estudo pretende instrumentalizar, minimamente, um leitor interessado rever as informaes e conceitos bsicos do algoritmo, mediante uma caracterizao simples e breve dos principais mtodos de se chegar a sua compreenso. Revisam-se os estudos j concretizados por Guimares-Lages (1994),Ziviani (2009) e Manzano (2012).As sees e os procedimentos bsicos do algoritmo so enumerados e caracterizados brevemente, para resultar num roteiro simples de auxlio a compreenso do que algoritmo.
Palavras-chave: Algoritmo. Exemplos de aplicao. Estruturas.
Abstract: Freshmen in undergraduate courses in the field of computing have difficulties to understand and apply the concepts of algorithms before their initiation into logical structured methodologies as not everyday I reason line to come up with solutions to challenges. Even some veterans in view of this problem, continually need to resort to basic literature to recover the principles of this way of thinking to solve simple problems posed by the programming disciplines. For these reasons, this study aims to equip minimally interested reader to review the information and basics of the algorithm through a simple and brief characterization of the main methods of reaching your understanding. We review the studies already pursued by Guimares - Lages (1994 ) , Ziviani (2009 ) and Manzano (2012 ) . Sections and the basic procedures of the algorithm are listed and briefly characterized to result in a simple script to aid understanding of what 's algorithm. Keywords: Algorithm. Application examples. Structures.
1 INTRODUO
Este artigo de reviso objetiva mostrar, de forma muito breve, os elementos que caracterizam a formao da ideia de algoritmo, de modo a constituir um roteiro simplificado para sua assimilao como mtodo e da sua construo. Segundo o dicionrio Aurlio, a palavra algoritmo se aplica a matemtica e computao, (Manzano Oliveira 2012, p. 27) 2 na matemtica, onde esta associada a um processo de calculo, ou resoluo de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restries, regras formais para a obteno do resultado, ou da soluo do problema. Na cincia da computao (informtica), est associado a um conjunto de regras e operaes bem definidas e ordenadas, destinadas soluo de um problema, ou de uma classe de problemas, em um numero finito de passos. Tambm disse, Manzano-Oliveira (2012, p. 27),O termo algoritmo causa certa estranheza a algumas pessoas, pois muitas acreditam que est escrito ou pronunciado de forma incorreta, fato este que no de se estranhar, pois fora do meio computacional e matemtico no se ouve a palavra usualmente. Apesar de como expe Ziviani (2009 p.1 ) 3 , os algoritmos fazem parte do cotidiano das pessoas, estando presentes nas instrues para uso de medicamentos, indicaes de como montar aparelhos, ou o exemplo clssico da receita de bolo. Talvez a definio mais concisa de algoritmo seja [...] algoritmo poder ser visto como uma sequncia de aes executveis para a obteno de uma soluo para determinado problema. O algoritmo esta presente nas aes sequenciais, das mais simples as mais complexas executadas diariamente por todos. Basicamente os padres do comportamento humano, assim como as leis da natureza como a gravidade e eletromagnetismo, em conflito as necessidades de responder a problemas cotidianos, nos leva a formular mtodos, formas, frmulas, de usar a logica e raciocnio para produzir o caminho para obter essas respostas, contudo podemos dizer que o algoritmo no cotidiano da computao o via principal de se chegar s respostas. Este trabalho, dadas essas pressuposies tericas iniciais, objetiva esclarecer alguns detalhes sobre o uso do algoritmo, sua importncia e principais mtodos.
2 POR QUE O ALGORITMO?
Existe uma longa historia sobre o algoritmo, e a utilizao da palavra que pode ser notada j em meados do sculo IX. Foi Abdullah Muhammad Bin Musa al-Khwarizmi que usou o termo pela primeira vez, que alem desta criao considerado por muitos o pai da lgebra. Basicamente ela toma a forma mais prxima de como nos conhecemos surgiu quando as obras de al-Khwarizmi forma traduzidas no sculo XII por Adelardo de Bath, que por sua vez a transcreveu para o latim, como Algothmi. Nesta poca a palavra servia para expressar apenas s regras da realizao aritmtica utilizando algarismos indo- arbicos. O uso da palavra ao longo dos sculos foi englobando todos os procedimentos definidos para resolver problemas ou realizar tarefas e em uma traduo do latim ao portugus, algothmi torna-se ento algoritmo. De forma muito simplificada algoritmo pode ser compreendido como um conjunto de instrues para resolver um problema, mas o que deve ser levado em conta que o algoritmo por si s no a resposta ao problema, mas sim os passos ou caminhos a serem seguidos que levam a soluo, pois no h s uma resposta ao um problema, assim como no h somente um cominho ou algoritmo para ela. Quando se fala de matemtica, programao, ou outras tantas cincias lgicas, que por natureza nos trazem inmeras informaes e a necessidade de organizar, assimilar, processar e produzir novas informaes, alm claro da necessidade de transmitir a outras pessoas o produto destas etapas de forma compreensvel e objetiva, aes estas que enfrentam naturalmente a dificuldade de serem organizadas de maneira lgica nas inmeras fases desses processos. neste momento que surge a aplicao pratica do algoritmo. Pode-se ter em mos todos os ingredientes necessrios para produzir um bolo de morangos confeitados por glac, mas se no houver instrues, como esse bolo ser feito por algum diferente do criador do confeitado em especial? Os passos, as etapas as aes que devem ser realizadas ou executadas, devem seguir uma sequencia, como bater as claras em neve, misturar farinha com leite, por exemplo. Isso a famosa receita. Na computao a receita toma caractersticas formais e lgicas, ou seja, as etapas e aes devem seguir uma sequencia lgica. Mas afinal o que lgica? Segundo Aristteles (sc. IV a.c), considerado o pai da lgica, lgica uma parte da filosofia que estuda os fundamentos, as estruturas e as expresses humanos do conhecimento. Aristteles focava estudar o pensamento humano, distinguir interferncias e argumentos certos e errados. Algumas definies muito importantes podem ser trazidas do dicionrio Houaiss a cerca da lgica: coerncia, fundamento; em informtica organizao e planejamento das instrues, assertivas etc. em um algoritmo, afim de viabilizar a implantao de um programa. Por ltimos vemos a relao de lgica com o meio computacional, onde as instrues seguem assim uma sequencia que obedecem regras, tais como: ordem, um estado inicial e so realizadas em um perodo de tempo finito, que culmina em resultados esperados e bem definidos. Segundo os autores do livro Algoritmos e Programao de Computadores (2012, Ed. Cmpus, pg. 8), as instrues neste sentido so escritos na forma de um Algoritmo que utiliza o conceito da lgica formal para fazer com que o computador produza uma srie sequencial de entrada, processamento e sada. A lgica formal ou tambm lgica simblica, foca a estrutura do raciocnio, trabalhando assim com a relao entre conceitos, fornece um meio de propor provas de declaraes, conceitos esses rigorosamente definidos quando oraes tornam-se notaes simblicas precisas, sucintas e no ambguas.
3 ESTRUTURA DO ALGORTMO
Estrutura certamente a palavra chave para entender como se expressa um algoritmo, ou seja, como j dito a srie de aes que basicamente compe a ideia de algoritmo, o ciclo entrada > processamento > sada, segue uma sequncia que permite implementar mecanismos que possibilitam fazer interaes entre situaes do problema, eliminar possibilidades por meio de decises (tais como comparaes ou lgica), at que a tarefa inicialmente proposta seja cumprida. Essa estrutura pode ser escrita de maneiras diferentes, as mais comuns so o algoritmo computacional, e o fluxograma. Para entender o que um algoritmo computacional, deve-se primeiro entender que a ideia se refere ao fato deste algoritmo ser passvel de implementao em um computador, graas ao uso da pseudolinguagem, que por sua vez uma linguagem genrica e rica em detalhes que se assemelha bastante a forma que os programas so escritos, proximidade esta que estabelece uma forte ligao entre o pseudocdigo do algoritmo, que a forma organizada de expressar as aes deste com palavras de vocabulrio finito e as diferentes formas de programar em uma maquina. J o fluxograma um tipo de diagrama, e pode ser entendido como uma representao esquemtica de um processo, ou seja, o algoritmo escrito com representaes geomtricas que se conectam por um fluxo determinado por tomadas de decises lgicas baseadas em comparao, por exemplo. Abaixo a esquerda temos a representao de um algoritmo em fluxograma, a direita um algoritmo expressado em pseudocdigo: Figura 1 Algoritmo em pseudocdigo Fonte: Salvetti, Dirceu Douglas (1998, pg. 23)
4 ARVORE Arvore na computao refere-se estrutura de dados que assim como um algoritmo de fluxograma tem a caracterstica de trabalhar com topologia e tambm, como a lista encadeada organiza informaes, a diferena desta ultima que no lugar de dispor de maneira sequencial as informaes como a lista encadeada, a arvore distribui de forma hierrquica estas informaes, partindo da raiz que o elemento principal para os ramos ou filhos. Uma rvore binria (= binary tree) um conjunto de registros (estrutura de dados), que atende algumas condies. (As condies no sero dadas explicitamente, mas elas ficaro implicitamente claras no contexto.). Os registros sero chamados ns (poderiam tambm ser chamados clulas). Cada n tem um endereo possibilitando buscar informaes. O nmero mximo de ramos em um elemento chamado Ordem da rvore. Uma rvore binria aquela de ordem 2, i.e., em que cada elemento possui no mximo 2 ramos.
Algoritmo "SomaDeDoisValores"; varivel: SOMA,A,B: inteiro; inicio Escreva("Digite um numero: "); Leia(A); escreva("Digite outro numero: "); leia(B); SOMA A + B; escreva(SOMA); fim.
Figura 1 Algoritmo em pseudocdigo Fonte: Salvetti, Dirceu Douglas (1998, pg. 23)
Figura 3 Arvore binria \ Fonte: Google
Figura 4 Arvore binria AVL \ Fonte: Google imagens
Existem diferentes formas aplicadas desta estrutura na programao, como por exemplo: a Arvore AVL. Este nome vem dos seus criados Adelson V. e Landis. A primeira referencia a arvore AVL surgiu em 1962. Nesta estrutura em particular, as alturas das duas ramificaes principais, sub- rvores a partir de cada n diferem no mximo em uma unidade. As operaes de busca, insero e remoo de elementos possuem complexidade O( log 2 n ) (no qual o nmero de elementos da rvore). Inseres e remoes podem tambm requerer o re- balanceamento da rvore, exigindo uma ou mais rotaes.
A estrutura de dados arvore so usadas em aplicaes de busca em memria principal.
5 CONCLUSO OU CONSIDERAES FINAIS
Conforme (FEITOSA, 1991 abaixo), existe um papel de tamanha importncia tal qual a pesquisa e descoberta, descrever e transmitir o conhecimento, a ideia, elava um pensamento ao nvel do reconhecimento e da multiplicao do saber.
Escrever parte inerente ao ofcio do pesquisador (FEITOSA, 1991). O trabalho do cientista no se esgota nas descobertas que faz. de sua responsabilidade comunicar os seus resultados, suas descobertas, suas criaes. Sendo assim, a escrita cientfica caracteriza-se como um processo de comunicao muito importante, pois uma descoberta cientfica torna-se reconhecida atravs das publicaes de seus resultados. (FELTRIM et al., 2000, p. 1).
Algoritmo mais que uma forma de linguagem estruturada que facilita a organizao de ideias tambm uma forma de transmitir essas ideias e intenes sem que se perca a essncia do objetivo inicial graas construo de mtodos e formas, tais como as estruturas de Arvore binria, uso de fluxogramas, ou a linguagem objetiva no ambgua utilizada. Tais informaes ficam como sugesto para outros estudos sobre este gnero que acompanha o pesquisador que todos devem ser quando habitam o universo do saber.
REFERNCIAS
FEITOSA, Vera Cristina. Redao de textos cientficos. Campinas: Papirus, 1991. PIVA, Dilermando Jr.; NAKAMITI, Gilberto Shigueo; ENGELBRECHT, Angela de Mendona; BIANCHI, Francisco. Algoritmos e Programao de Computadores. Rio de Janeiro: Campus, 2012. ZIVIANI, Nivio. Projeto de Algoritmos. So Paulo: Cengage Learning, 2004. SALVETTI, Dirceu Douglas; BARBOSA, Lisbete Madsen. Algoritmos. So Paulo: Makron Books, 1998. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein. Introduction to Algorithms, Second Edition. MIT Press and McGraw-Hill, 2001. ISBN 0-262-03293-7. MANZANO, Jose Augusto N. G, OLIVEIRA, Jayr Figueiredo. Algoritmos - Lgica Para Desenvolvimento de Programao de Computadores. So Paulo: Erica, 2012.