Introdução a Algoritmos Computação I Profa. Ms. Viviane Guimarães Ribeiro Prof. Rodrigo de Maio Almeida
Conceito de Algoritmo Á especificação de seqüência ordenada de passos que deve ser seguida para a realização de um tarefa, garantindo a sua repetibilidade, dá-se o nome de algoritmo. Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalha passo a passo, numa forma compreensível pela máquina, utilizando aquilo que se chama de programa. Neste sentido, um programa nada mais é que um algoritmo escrito numa forma compreensível pelo computador.
Formas de representação Dentre as formas de representação de algoritmos mais conhecidas sobressaltam: Descrição Narrativa; Fluxograma Convencional; Pseudocódigo (Portugol).
Descrição Narrativa Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural. Exemplos: Receita de bolo; Troca de um pneu furado; Cálculo da média de um aluno....
Descrição Narrativa Afrouxar ligeiramente as porcas; Suspender o carro; Retirar as porcas e o pneu; Colocar o pneu reserva; Apertar as porcas; Abaixar o carro; Dar o aperto final nas porcas. OBS: instruções sujeitas a diferentes interpretações.
Descrição Narrativa Escreva a Descrição Narrativa para cada situação abaixo: 1-José acorda atrasado; ao sair apressado com seu carro provoca um acidente, chocando-se com um ônibus. Há um problema importante para ser tratado em sua seção, naquela manhã. José precisa avisar seu chefe sobre o acontecido. 2- Maria precisa ensinar sua filhinha a tomar banho sozinha.
Descrição Narrativa 3- O professor de matemática precisa calcular a média de um aluno. Para tanto ele precisa levar em consideração 4 notas do aluno. 4- Carlos precisa calcular a área de uma sala. Sabe-se que a sala é retangular.
Fluxograma Convencional É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintas. Tal propriedade facilita o entendimento das idéias contidas nos algoritmos e justifica sua popularidade.
Fluxograma Convencional Esta forma é menos imprecisa que a Descrição Narrativa e, no entanto, não se preocupa com detalhes de implementação do programa, como o tipo de variáveis usadas.
Fluxograma Convencional Principais formas geométricas usadas em fluxogramas: Início e fim do fluxograma Operação de entrada de dados
Fluxograma Convencional Operação de saída de dados Operação de atribuição Operação de decisão
Fluxograma Convencional
Pseudocódigo Esta forma de representação de algoritmos é mais rica em detalhes, como a definição dos tipos das variáveis usadas. Na verdade, esta representação é suficiente para permitir que a tradução de um algoritmo nela representado para uma linguagem de programação específica seja praticamente direta.
Pseudocódigo Forma geral: Algoritmo <nome do algoritmo> <declaração de variáveis> <subalgoritmos> Início <corpo do algoritmo> Fim.
Pseudocódigo Algoritmo Media; Var N1, N2, M : real; Início Escreva (“Entre com 2 númros: ”); Leia (N1, N2); M (N1+N2)/2; Se (M >= 7) Então Escreva (“Aprovado”); Senão Escreva (“Reprovado”); Fim_se Fim
Estrutura Seqüencial Na estrutura seqüencial os comandos de um algoritmo são executados numa seqüência pré-estabelecida. Cada comando é executado somente após o término do comando anterior. Em termos de fluxograma, a estrutura seqüencial é caracterizada por um único fluxo de execução no diagrama. Ex:
Estrutura Seqüencial <Comando 1> <Comando 2>
Estrutura Seqüencial Em pseudocódigos, a estrutura seqüencial caracteriza-se por um conjunto de comandos dispostos ordenadamente. ... <Comando 1> <Comando 2> <Comando 3>
Estrutura de Decisão Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições. Uma condição é uma expressão lógica. A classificação das estruturas de decisão é feita de acordo com o número de condições que devem ser testadas para que se decida qual o caminho a ser seguido. Têm-se 2 tipos de estrutura de decisão: Se; Escolha.
Estrutura de Decisão - Se Nesta estrutura uma única condição (expressão lógica) é avaliada. Se o resultado desta avaliação for verdadeiro (.V.), então um determinado conjunto de instruções (comandos compostos) é executado. Caso contrário, ou seja, quando o resultado da avaliação for falso (.F.), um comando diferente é executado.
Estrutura de Decisão - Se
Estrutura de Decisão - Se Se <condição> Então <Comando 1> Senão <Comando 2> Fim_se
Estrutura de Decisão - Escolha Este tipo de estrutura é uma generalização da estrutura Se, onde somente uma condição era avaliada e dois caminhos podiam ser seguidos. Na estrutura de decisão do tipo Escolha pode haver uma ou mais condições a serem testadas e um comando composto diferente associado a cada uma destas.
Estrutura de Decisão - Escolha
Estrutura de Decisão - Escolha Escolha (variável) Caso <valor_1> <Comando 1> Caso <valor_2> <Comando 2> ..... Caso <valor_n> <Comando n> Senão <Comando n + 1> Fim_escolha
Estrutura de Repetição São muito comuns as situações em que se deseja repetir um determinado trecho de um programa um certo número de vezes. Por exemplo, pode-se citar o caso em que se deseja realizar um mesmo processamento para conjuntos de dados diferentes. A classificação das estruturas de repetição é feita de acordo com o conhecimento prévio do número de vezes que o conjunto de comandos será executado.
Estrutura de Repetição A estrutura de repetição divide-se em: Laços contados: quando se conhece previamente quantas vezes o comando no interior da construção será executado; Laços condicionais: quando não se conhece de antemão o número de vezes que o conjunto de comandos no interior do laço será repetido, pelo fato de o mesmo estar amarrado a uma condição sujeita a modificações pelas instruções do interior do laço.
Estrutura de Repetição Laços Contados Este tipo de laço nada mais é que uma estrutura dotada de mecanismos para contar o número de vezes que o corpo do laço é executado. Para <var> de <início> até <fim> incr de <inc> faça <comando> Fim_para
Estrutura de Repetição <Var> = <inicio>, <fim>, <inc> Comando
Estrutura de Repetição Laços Condicionais São aqueles cujo conjunto de comandos em seu interior é executado até que uma determinada condição seja satisfeita. Divide-se em: Enquanto; Repita.
Estrutura de Repetição Laços Condicionais - Enquanto Ao início da construção Enquanto a condição é testada. Se seu resultado for falso, então o comando composto no seu interior não é executado e a execução prossegue normalmente pela instrução seguinte ao Fim_enquanto. Se a condição for verdadeira o comando no interior da estrutura é executado e ao seu termino retorna-se ao teste da condição. Assim, o processo acima será repetido enquanto a condição testada for verdadeira.
Estrutura de Repetição <Condição> .V. Comando .F.
Estrutura de Repetição Enquanto <condição> faça <comando> Fim_enquanto Uma vez dentro do corpo do laço, a execução somente abandonará o mesmo quando a condição for falsa.
Estrutura de Repetição Laços Condicionais - Repita O comando é executado uma vez. A seguir, a condição é testada: se ela for falsa, o comando composto é executado novamente e este processo é repetido até que a condição seja verdadeira, quando então a execução prossegue pelo comando imediatamente seguinte ao final da construção.
Estrutura de Repetição Comando <Condição> .F. .V.
Estrutura de Repetição Repita <comando> até que <condição> Esta construção difere da construção Enquanto pelo fato de o comando composto ser executado uma ou mais vezes (pelo menos uma vez), ao passo que na construção Enquanto o comando é executado zero ou mais vezes (possivelmente nenhuma).