Vous êtes sur la page 1sur 11

Algoritmos

Vamos aprender neste curso o que so algoritmos e para que servem. Veremos atravs de exemplos como so de fcil construo para que o aluno tenha uma base para comear a desenvolver seus prprios algoritmos e no futuro seus programas.

Sumrio
Algoritmos............................................................................................................................................1 Lio 1 - Introduo.........................................................................................................................2 Lio 2 - Conceitos..........................................................................................................................5 Algumas definies..........................................................................................................................5 Lio 3 - Classificao de Algoritmos.............................................................................................7

Lio 1 - Introduo Origem


Nos dias atuais e com a evoluo galopante da tecnologia, dificilmente encontramos pessoas que nunca tenham utilizado um computador. Os propsitos podem variar bastante, seja para edio de textos, jogos ou atividades mais complexas. J difcil de imaginar nossas vidas sem o uso desta ferramenta. Nesta atividade to comum ao nosso cotidiano, voc algum dia deve ter parado para pensar como os programas funcionam. Como que o computador faz todas as tarefas exatamente da forma com a qual voc pede? A resposta para esta pergunta mais simples do que parece: ele segue as instrues que voc passa. Mas para que ele consiga entender o que voc fala, ele precisa de uma linguagem mais especfica. Para fazer esta interpretao entre homem e mquina, foram desenvolvidas as linguagens de programao. Mas mesmo estas linguagens utilizam uma lgica para serem escritas e a que entram os algoritmos. Para que um computador faa qualquer coisa, voc precisa de um programa de computador. Para criar um programa de computador, voc tem de informar ao computador, passo a passo, exatamente o que voc espera que ele faa. O computador ento "executa" o programa, seguindo cada passo mecanicamente para atingir o objetivo final.

O que um algoritmo?
Um algoritmo uma sequncia finita de instrues bem definidas e no ambguas, cada uma das quais pode ser executada mecanicamente num perodo de tempo finito e com uma quantidade de esforo finita. O conceito de algoritmo frequentemente ilustrado pelo exemplo de uma receita, embora muitos algoritmos sejam mais complexos. Eles podem repetir passos (fazer iteraes) ou necessitar de decises (tais como comparaes ou lgica) at que a tarefa seja completada. Um algoritmo corretamente executado no ir resolver um problema se estiver implementado incorretamente ou se no for apropriado ao problema. Um algoritmo no representa, necessariamente, um programa de computador, e sim os passos necessrios para realizar uma tarefa. Sua implementao pode ser feita por um computador, por outro tipo de autmato ou mesmo por um ser humano. Diferentes algoritmos podem realizar a mesma tarefa usando um conjunto diferenciado de instrues em mais ou menos tempo, espao ou esforo do que outros. Tal diferena pode ser reflexo da complexidade computacional aplicada, que depende de estruturas de dados adequadas ao algoritmo. Por exemplo, um algoritmo para se vestir pode especificar que voc vista primeiro as meias e os sapatos antes de vestir a cala enquanto outro algoritmo especifica que voc deve primeiro vestir a cala e depois as meias e os sapatos. Fica claro que o primeiro algoritmo mais difcil de executar que o segundo apesar de ambos levarem ao mesmo resultado. O conceito de um algoritmo foi formalizado em 1936 pela Mquina de Turing de Alan Turing e pelo clculo lambda de Alonzo Church, que formaram as primeiras fundaes da Cincia da

computao.

Formalismo
Um programa de computador essencialmente um algoritmo que diz ao computador os passos especficos e em que ordem eles devem ser executados, como por exemplo, os passos a serem tomados para calcular as notas que sero impressas nos boletins dos alunos de uma escola. Logo, o algoritmo pode ser considerado uma sequncia de operaes que podem ser simuladas por uma mquina de Turing completa. Quando os procedimentos de um algoritmo envolvem o processamento de dados, a informao lida de uma fonte de entrada, processada e retornada sob novo valor aps processamento, o que geralmente realizado com o auxlio de uma ou mais estrutura de dados. Para qualquer processo computacional, o algoritmo precisa estar rigorosamente definido, especificando a maneira que ele se comportar em todas as circunstncias. A corretude do algoritmo pode ser provada matematicamente, bem como a quantidade assinttica de tempo e espao (complexidade) necessrios para a sua execuo. Estes aspectos dos algoritmos so alvo da anlise de algoritmos. A maneira mais simples de se pensar um algoritmo por uma lista de procedimentos bem definida, na qual as instrues so executadas passo a passo a partir do comeo da lista, uma idia que pode ser facilmente visualizada atravs de um fluxograma. Tal formalizao adota as premissas da programao imperativa, que uma forma mecnica para visualizar e desenvolver um algoritmo. Concepes alternativas para algoritmos variam em programao funcional e programao lgica.

Exemplo
Embora voc no perceba, utiliza algoritmos de forma intuitiva e automtica diariamente quando executa tarefas comuns. Como estas atividades so simples e dispensam ficar pensando nas instrues necessrias para faz-las, o algoritmo presente nelas acaba passando despercebido. Por exemplo, quando precisa trocar uma lmpada, voc: Incio Verifica se o interruptor est desligado; Procura uma lmpada nova; Pega uma escada; Leva a escada at o local; Posiciona a escada; Sobe os degraus; Para na altura apropriada;

Retira a lmpada queimada; Coloca a lmpada nova; Desce da escada; Aciona o interruptor; Se a lmpada no acender, ento: Retira a lmpada queimada; Coloca outra lmpada nova Seno Tarefa terminada; Joga a lmpada queimada no lixo; Guarda a escada; Fim

Lio 2 - Conceitos Algumas definies Formas de escrever um algoritmo


Os algoritmos so muito utilizados na rea de programao, descrevendo as etapas que precisam ser efetuadas para que um programa execute as tarefas que lhe so designadas. Existem diversas formas de escrever um algoritmo, podendo ser citadas o pseudocdigo (ou portugus estruturado), fluxograma, diagrama de Chapin e descrio narrativa. A sequncia escrita no exemplo da troca da lmpada estava em descrio narrativa, por exemplo. Esta forma no muito utilizada em informtica porque pode ser ambgua e dar margem a interpretaes erradas. Os dois tipos mais comuns so o pseudocdigo que utiliza uma forma mais estruturada, assemelhando-se quelas utilizadas pelas linguagens de programao e o fluxograma que emprega figuras geomtricas para ilustrar os passos a serem seguidos. O Diagrama de Chapin, Diagrama Nassi-Shneiderman ou Diagrama N-S mostra a soluo por meio de quadros organizados hierrquica e estruturadamente. Este tipo no muito utilizado, pois vrios procedimentos tornam-se difceis de serem mostrados por meio deste diagrama. Um algoritmo algo que voc j utilizava o tempo todo e nem percebia. Uma forma bem interessante de exercitar a lgica seria algum dia parar para pensar em sua rotina ao acordar, por exemplo. Voc perceberia o quanto ela mais complexa do que parece, se fosse para colocar no papel e como a execuo disto automtica.

Implementao
A maioria dos algoritmos desenvolvida para ser implementada em um programa de computador. Apesar disso eles tambm podem ser implementados por outros modos tais como uma rede neural biolgica (tal como no crebro quando efetuamos operaes aritmticas) em circuitos eltricos ou at mesmo em dispositivos mecnicos. Para programas de computador existe uma grande variedade de linguagens de programao, cada uma com caractersticas especficas que podem facilitar a implementao de determinados algoritmos ou atender a propsitos mais gerais.

Pseudocdigo
Pseudocdigo uma forma genrica de escrever um algoritmo, utilizando uma linguagem simples (nativa a quem o escreve, de forma a ser entendida por qualquer pessoa) sem necessidade de conhecer a sintaxe de nenhuma linguagem de programao. , como o nome indica, um pseudo-cdigo e, portanto, no pode ser executado num sistema real (computador) de outra forma deixaria de ser pseudo.

Os livros sobre a cincia de computao utilizam freqentemente o pseudocdigo para ilustrar os seus exemplos, de forma que todos os programadores possam entend-los (independentemente da linguagem que utilizem). Embora no caso da lngua portuguesa existam alguns interpretadores de pseudocdigo, nenhum tem a projeo das linguagens Pascal ou BASIC, que no caso da lngua inglesa se assemelham bastante a um pseudo-cdigo.

Anlise de algoritmos
A anlise de algoritmos um ramo da cincia da computao que estuda as tcnicas de projeto de algoritmos e os algoritmos de forma abstrata, sem estarem implementados em uma linguagem de programao em particular ou implementadas de algum outro modo. Ela preocupa-se com os recursos necessrios para a execuo do algoritmo tais como o tempo de execuo e o espao de armazenamento de dados. Deve-se perceber que para um dado algoritmo pode-se ter diferentes quantidades de recursos alocados de acordo com os parmetros passados na entrada. Por exemplo, se definirmos que o fatorial de um nmero natural igual ao fatorial de seu antecessor multiplicado pelo prprio nmero, fica claro que a execuo de fatorial(10) consome mais tempo que a execuo de fatorial(5). Um meio de exibir um algoritmo a fim de analis-lo atravs da implementao por pseudocdigo em portugus estruturado. O exemplo a seguir um algoritmo em portugus estruturado que retorna (valor de sada) a soma de dois valores (tambm conhecidos como parmetros ou argumentos, valores de entrada) que so introduzidos na chamada da funo: 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.

Lio 3 - Classificao de Algoritmos

Classificao por implementao


Pode-se classificar algoritmos pela maneira pelo qual foram implementados. Recursivo ou iterativo - um algoritmo recursivo possui a caracterstica de invocar a si mesmo repetidamente at que certa condio seja satisfeita e ele terminado, que um mtodo comum em programao funcional. Algoritmos iterativos usam estruturas de repetio tais como laos, ou ainda estruturas de dados adicionais tais como pilhas, para resolver problemas. Cada algoritmo recursivo possui um algoritmo iterativo equivalente e vice-versa, mas que pode ter mais ou menos complexidade em sua construo. Lgico - um algoritmo pode ser visto como uma deduo lgica controlada. O componente lgico expressa os axiomas usados na computao e o componente de controle determina a maneira como a deduo aplicada aos axiomas. Tal conceito base para a programao lgica. Serial ou paralelo - algoritmos so geralmente assumidos por serem executados instruo a instruo individualmente, como uma lista de execuo, o que constitui um algoritmo serial. Tal conceito base para a programao imperativa. Por outro lado existem algoritmos executados paralelamente, que levam em conta as arquiteturas de computadores com mais de um processador para executar mais de uma instruo ao mesmo tempo. Tais algoritmos dividem os problemas em subproblemas e o delegam a quantos processadores estiverem disponveis, agrupando no final o resultado dos subproblemas em um resultado final ao algoritmo. Tal conceito base para a programao paralela. De forma geral, algoritmos iterativos so paralelizveis; por outro lado existem algoritmos que no so paralelizveis, chamados ento problemas inerentemente seriais. Determinstico ou no-determinstico - algoritmos determinsticos resolvem o problema com uma deciso exata a cada passo enquanto algoritmos no-determinsticos resolvem o problema ao deduzir os melhores passos atravs de estimativas sob forma de heursticas. Exato ou aproximado - enquanto alguns algoritmos encontram uma resposta exata, algoritmos de aproximao procuram uma resposta prxima a verdadeira soluo, seja atravs de estratgia determinstica ou aleatria. Possuem aplicaes prticas sobretudo para problemas muito complexos, do qual uma resposta correta invivel devido sua complexidade computacional.

Classificao

por

paradigma

Pode-se classificar algoritmos pela metodologia ou paradigma de seu desenvolvimento, tais como: Diviso e conquista - algoritmos de diviso e conquista reduzem repetidamente o problema em sub-problemas, geralmente de forma recursiva, at que o sub-problema pequeno o suficiente para ser resolvido. Um exemplo prtico o algoritmo de ordenao merge sort. Uma variante dessa metodologia o decremento e conquista, que resolve um sub-problema e utiliza a soluo para resolver um problema maior. Um exemplo prtico o algoritmo para pesquisa binria.

Programao dinmica - pode-se utilizar a programao dinmica para evitar o re-clculo de soluo j resolvidas anteriormente. Algoritmo ganancioso - um algoritmo ganancioso similar programao dinmica, mas difere na medida em que as solues dos sub-problemas no precisam ser conhecidas a cada passo, uma escolha gananciosa pode ser feita a cada momento com o que at ento parece ser mais adequado. Programao linear. Reduo - a reduo resolve o problema ao transform-lo em outro problema. chamado tambm transformao e conquista. Busca e enumerao - vrios problemas podem ser modelados atravs de grafos. Um algoritmo de explorao de grafo pode ser usado para caminhar pela estrutura e retornam informaes teis para a resoluo do problema. Esta categoria inclui algoritmos de busca e backtracking. Paradigma heurstico e probabilstico - algoritmos probabilsticos realizam escolhas aleatoriamente. Algoritmos genticos tentam encontrar a soluo atravs de ciclos de mutaes evolucionrias entre geraes de passos, tendendo para a soluo exata do problema. Algoritmos heursticos encontram uma soluo aproximada para o problema.

Classificao por campo de estudo


Cada campo da cincia possui seus prprios problemas e respectivos algoritmos adequados para resolv-los. Exemplos clssicos so algoritmos de busca, de ordenao, de anlise numrica, de teoria de grafos, de manipulao de cadeias de texto, de geometria computacional, de anlise combinatria, de aprendizagem de mquina, de criptografia, de compresso de dados e de interpretao de texto.

Classificao por complexidade


Alguns algoritmos so executados em tempo linear, de acordo com a entrada, enquanto outros so executados em tempo exponencial ou at mesmo nunca terminam de serem executados. Alguns problemas possuem mltiplos algoritmos enquanto outros no possuem algoritmos para resoluo.

Concluso
Como foi dito no incio, este curso serve apenas como uma base para o aluno desenvolver nesse campo da programao. No iremos aprofundar mais no contedo pois teria de ser escolhida uma linguagem para se trabalhar, o que no o objetivo do curso. Com os exemplos dados acredito que vocs possam comear a criar seus prprios algoritmos e no futuro desenvolver programas em uma linguagem de programao especfica.

Consideraes Finais
Vocs sempre podem encontrar mais informaes a respeito em vrios sites da internet. preciso realmente fuar, mexer, interagir. Para tanto, recomendo uma pesquisa mais aprofundada, em livros etc. Comece por estes sites: http://pt.wikipedia.org/ http://www.google.com.br/ http://www.howstuffworks.com/ (ingls)

Iniciado em Completado em Tempo empregado Nota

domingo, 30 junho 2013, 22:33 domingo, 30 junho 2013, 22:35 1 minuto 26 segundos 7 de um mximo de 10(70%)

Pseudocdigo Question uma 1 forma genrica de escrever um algoritmo, utilizando uma linguagem simples, nativa a quem o escreve. Notas: 1 Resposta: Correto Notas relativas a este envio: 1/1. Existem diversas Question2 formas de escrever um algoritmo, podendo ser citadas o pseudocdigo (ou portugus estruturado), Notas: fluxograma, 1 diagrama de Chapin e descrio narrativa. Resposta: Correto Notas relativas a este envio: 1/1. A anlise de Question algoritmos 3 um ramo da cincia da computao que estuda as tcnicas de projeto de algoritmos e os algoritmos Notas: de 1 forma concreta, estando implementados em uma linguagem de programao em particular. Resposta: Errado Notas relativas a este envio: 0/1. AlgoritmosQuestion seriais 4 dividem os problemas em subproblemas e o delegam a quantos processadores estiverem disponveis, Notas: agrupando 1 no final o resultado dos subproblemas em um resultado final. Resposta: Errado Notas relativas a este envio: 0/1. Alguns algoritmos Questionpodem 5 nunca terminar de serem executados. Resposta: Notas: 1 Correto Notas relativas a este envio: 1/1. Um algoritmo Question apesar 6 de simples, no pode ser simulado por uma mquina de Turing completa. Resposta: Notas: 1 Correto Notas relativas a este envio: 1/1.

7 AlgoritmosQuestion probabilsticos realizam escolhas de uma forma ordenada. Resposta: Notas: 1 Errado Notas relativas a este envio: 0/1. AlgoritmosQuestion podem 8ser implementados por outros modos tais como uma rede neural biolgica (tal como no Notas:efetuamos 1 crebro quando operaes aritmticas). Resposta: Correto Notas relativas a este envio: 1/1. Question 9 Um algoritmo corretamente executado no ir resolver um problema se estiver implementado incorretamente Notas: 1 ou se no for apropriado ao problema. Resposta: Correto Notas relativas a este envio: 1/1. 10 AlgoritmosQuestion de aproximao procuram uma resposta prxima a verdadeira soluo, seja atravs de estratgia Notas: determinstica ou1 aleatria. Resposta: Correto Notas relativas a este envio: 1/1.

Vous aimerez peut-être aussi