Algoritmos, fluxogramas e pseudocódigos

36,303 views

Published on

Algoritmos, fluxogramas e pseudocódigos

Published in: Education
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
36,303
On SlideShare
0
From Embeds
0
Number of Embeds
398
Actions
Shares
0
Downloads
640
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

Algoritmos, fluxogramas e pseudocódigos

  1. 1. C1105 - Introdução à Programação em C 1º Trabalho de LaboratórioAlgoritmos, Fluxogramas e Pseudo-CódigoObjectivoO objectivo deste trabalho é introduzir a noção de algoritmo, bem como duas formas alternativasque podem ser utilizadas para a sua representação.O que é um Algoritmo?Um algoritmo é uma sequência bem definida de passos (ou acções) que devem ser levados a cabo(executados) para resolver um determinado problema.Um algoritmo: 1. Possui um ponto de entrada (passo inicial) e um ponto de saída (passo final) bem definidos. 2. É composto de passos individuais. 3. Cada passo está bem definido, pode ser executado, e o seu resultado é previsível. Isto é, repetidas execuções de um determinado passo produzirão sempre o mesmo resultado. 4. Existe uma ordem (sequência) adequada para a execução dos passos. Essa sequência é fundamental para a obtenção de um resultado final correcto. Em geral, depois de executado um determinado passo, a execução prossegue no passo seguinte. 5. O número de passos a executar é finito. 6. Quando executado com um conjunto de dados válido um algoritmo termina garantidamente, produzindo o resultado esperado.Do ponto de vista da forma como decorre o fluxo de execução num algoritmo (qual asequência de execução dos passos), pode ser demonstrado que qualquer algoritmo de computadorpode ser construído com recurso a apenas três tipos de construções: 1. Sequência - Salvo outra indicação, os passos são executados um a seguir ao outro, de cima para baixo. 2. Decisão - Uma forma de decidir entre a execução de duas instruções ou dois conjuntos de instruções. 3. Repetição - Uma forma de repetir, várias vezes, a execução de uma dada instrução ou conjunto de instruções.Isto é, qualquer método de representação que permita representar as três noções acima descritasé suficiente para representar qualquer tipo de algoritmo.Para além das construções acima referidas, relacionadas com o controlo da execução, paraque seja possível representar qualquer algoritmo num computador, o método de representaçãotem ainda de permitir: 1. Ler e escrever valores (fornecer dados e receber resultados do algoritmo); 2. Realizar as 4 operações aritméticas básicas; 3. Fornecer uma forma de armazenar quantidades (também designadas por variáveis). 4. Permitir a atribuição de valores a variáveis.Como é evidente existem inúmeras maneiras de expressar estes conceitos numa quantidade delinguagens de programação diferentes. Por outro lado, existem também muitas outrascaracterísticas que são incluídas nas linguagens como forma de tornar mais simples a expressão dedeterminados conceitos.No entanto, em termos de conceitos básicos, os acima indicados são tudo o que precisa saber!Qualquer que seja o método de representação que utilizemos para descrever um algoritmo, casoeste se destine a ser implementado com um computador, temos de ter em atenção que o conjuntode operações elementares que este é capaz de realizar é bastante restrito e composto por poucomais do que as operações acima descritas.1º Semestre 2011/2012 Carlos Limão 1/5
  2. 2. C1105 - Introdução à Programação em C 1º Trabalho de LaboratórioO que é um Fluxograma?Um fluxograma não é mais do que uma representação gráfica de um algoritmo.A figura seguinte ilustra um fluxograma que representa um algoritmo hipotético composto por trêspassos. Início Passo 1 Passo 2 Passo 3 FimO início e o fim do algoritmo são representados por rectângulos com os cantos arredondados. Estesnão representam acções mas funcionam antes como delimitadores da sequência de acções quecompõem o algoritmo.Cada passo da sequência que constitui o algoritmo é representado por um rectângulo. A sequênciapela qual os passos são executados é explicitamente indicada por linhas e setas.No âmbito desta disciplina todos os fluxogramas que nos iremos confrontar utilizarão apenas osseguintes símbolos, que possuem o significado indicado: Terminador Acção Interacção DecisãoO que é o Pseudocódigo?Enquanto as linguagens de programação permitem expressar um algoritmo de um modo formal, opseudocódigo permite fazê-lo de um modo mais informal, sem a preocupação de obedecer a umléxico e a uma gramática rígida. No entanto, apesar desta liberdade, dois programadores distintosdevem ser capazes de estar de acordo quanto a um dado algoritmo escrito em pseudocódigo e sercapazes de escrever dois programas funcionalmente equivalentes.O pseudocódigo pode ser escrito em qualquer linguagem natural (humana) na forma de uma listaordenada (ou numerada) de passos.O algoritmo acima descrito na forma de um fluxograma pode ser escrito em pseudocódigo como: 1. Início 2. Passo 1 3. Passo 2 4. Passo 3 5. FimOnde se admite a convenção habitual nas linguagens naturais de ler de cima para baixo.Como é evidente esta forma informal de expressão dos algoritmos oferece uma grandeflexibilidade do ponto de vista da sua utilização. No entanto, nas secções que se seguem serãoapontados exemplos de pseudocódigo para as situações mais comuns que iremos encontrar, demodo a facilitar a leitura dos algoritmos descritos em pseudocódigo no âmbito desta disciplina.Controlo da Sequência de Execução - DecisõesUma instrução de decisão, também designada por instrução condicional ou instrução de selecção,permite seleccionar, de entre várias acções possíveis, a acção seguinte a executar dependendo daavaliação de uma determinada condição.1º Semestre 2011/2012 Carlos Limão 2/5
  3. 3. C1105 - Introdução à Programação em C 1º Trabalho de LaboratórioNa sua forma mais simples, este tipo de instruções permite escolher uma de entre duas acçõespossíveis a executar seguidamente, isto é, entre dois caminhos de execução distintos, dependendode uma condição (a resposta a uma pergunta) que é avaliada.Em pseudocódigo, uma instrução de decisão pode ser representada da seguinte forma: Se (condição) <acção a executar se condição é verdadeira> Caso Contrário < acção a executar se condição é falsa> Fim SePodemos, evidentemente, representar a mesma instrução com recurso a um fluxograma: S Condição N ? Acção a executar se a Acção a executar se a condição for verdadeira condição for falsaNote que introduzimos uma nova forma, um losango, para representar o local onde se decide entredois caminhos de execução possíveis. Note que uma instrução de decisão caracteriza-se por possuirapenas um caminho de entrada e dois de saída.Note quer no pseudocódigo, quer no fluxograma, que apenas uma das acções pode ser executada.Controlo da Sequência de Execução - RepetiçõesO ingrediente final necessário é a capacidade para realizar a repetição de uma ou váriasinstruções. A repetição pode ser por um determinado número de vezes (bater 20 vezes com asmãos) ou enquanto uma determinada condição for verdadeira (p.e.: Enquanto houver degraus,subir.). Por uma questão de generalidade vamos considerar esta última.Em pseudocódigo pode ser representada da seguinte forma: Enquanto (condição for verdadeira) <acção a executar se condição é verdadeira> Fim EnquantoCom recurso a um fluxograma teremos: Condição N ? S Acção a executar enquanto a condição for verdadeira1º Semestre 2011/2012 Carlos Limão 3/5
  4. 4. C1105 - Introdução à Programação em C 1º Trabalho de LaboratórioExercíciosNos exercícios que se seguem, é proposto o desenvolvimento de um determinado algoritmo e,seguidamente, sugerida uma forma de abordar a resolução desse problema.O objectivo é ilustrar o modo como deve abordar a resolução deste tipo de problemas.De forma a que comece a familiarizar-se com as duas formas de representações de algoritmos queabordámos é-lhe pedido, em cada um dos exercícios, que utilize uma das formas de representaçãopara descrever o algoritmo desenvolvido.Exercício 1 – SequênciaEscreva o pseudocódigo de um algoritmo para calcular a área de um círculo. Deve incluir todos ospassos necessários para obter os dados e fornecer os resultados ao utilizador.Nota: Recorde que a área de um círculo vale π x r2Vejamos uma possível forma de abordar o problema:Dados Iniciais:É necessário pedir ao utilizador um valor para a medida do raio, ou do diâmetro, da circunferência.Primeira Abordagem – Descrição em Linguagem NaturalAntes de mais necessitamos de pedir ao utilizador o valor do raio (ou do diâmetro) dacircunferência. Em seguida temos de ler o valor fornecido. Depois podemos calcular o valor da áreacomo sendo 3,14159 x Valor do Raio x Valor do Raio. Por fim temos de mostrar o valor calculadoao utilizadorSegunda Abordagem – Aproveitar apenas o essencial da descrição1. Pedir ao utilizador o valor do raio do círculo2. Ler o valor fornecido pelo utilizador para uma variável raio3. Fazer uma variável área = 3,14159 x raio x raio4. Mostrar o valor da área ao utilizadorTerceira Abordagem – Pseudocódigo1. INÍCIO Cálculo da área de um Círculo2. ESCREVER “Introduza o raio do círculo: ”3. LER Raio4. FAZER Área = 3,14159 x Raio x Raio5. ESCREVER “A área do seu círculo é ”, seguido do valor de Área6. FIM DO ALGORITMO Desenhe um fluxograma do algoritmo acima descrito.Exercício 2 – DecisãoEscreva o pseudocódigo de um algoritmo que indique ao utilizador se um determinado númerointeiro não nulo é positivo ou negativo.Dados Iniciais:É necessário pedir ao utilizador um valor inteiro para o podermos avaliar.Primeira Abordagem – Descrição em Linguagem NaturalAntes de mais necessitamos pedir ao utilizador um inteiro. Em seguida temos de ler o inteirofornecido. Se o inteiro for maior do que zero, dizemos ao utilizador que o número é positivo, casocontrário dizemos ao utilizador que o número é negativo.Segunda Abordagem – Aproveitar apenas o essencial da descrição1. Pedir ao utilizador um inteiro2. Ler o valor fornecido pelo utilizador para uma variável chamada número3. Se o valor de número for maior que zero dizer ao utilizador que é positivo4. Se o valor de número for menor que zero dizer ao utilizador que é negativo1º Semestre 2011/2012 Carlos Limão 4/5
  5. 5. C1105 - Introdução à Programação em C 1º Trabalho de LaboratórioTerceira Abordagem – Pseudocódigo1. INÍCIO Número positivo ou negativo2. ESCREVER “Introduza um inteiro não nulo: ”3. LER Número4. SE (Número > 0)5. ESCREVER “O número é positivo”6. CASO CONTRÁRIO7. ESCREVER “O número é negativo”8. FIM DO SE13. FIM DO ALGORITMO Desenhe um fluxograma do algoritmo acima descrito. O que teria de fazer para detectar também as situações em que o valor fornecido é nulo?Exercício 3 - RepetiçãoO pseudocódigo seguinte permite calcular P = K n e descreve um algoritmo devido ao matemáticoárabe Al-Kashi que o descobriu em 1414.1. INÍCIO Cálculo de P = Kn2. P = 13. ENQUANTO (N ≥ 1 )4. SE (N é PAR)5. N = N/26. k = k × k7. CASO CONTRÁRIO8. N = N - 19. P = P × k10. FIM DO SE11. FIM ENQUANTO12. ESCREVER (P)13. FIM DO ALGORITMODesenhe um fluxograma deste algoritmo.Construa uma tabela que mostre em cada linha os valores de P, K e N. Na primeira linha osvalores iniciais, e na última os valores finais.Entrega do trabalhoA entrega do trabalho deve ser feita até às 24:00 da véspera do dia da 1ª aula prática da semanaseguinte aquela em que o trabalho é realizado.Os três exercícios deverão ser entregues num documento PDF, chamado IPLAB1.PDF. Note quepode fazer os fluxogramas com o programa Word (existe uma página no site da cadeira que explicacomo pode fazê-lo), ou qualquer outro com que esteja familiarizado, desde que converta oresultado final para PDF.O documento deve ser depois anexado a uma mensagem cujo ASSUNTO deve ser IPLAB1 e enviadapara o endereço que lhe foi fornecido no início do semestre.O corpo da mensagem deve incluir os nomes, os números, a turma e o curso dos elementos dogrupo.Exemplo: Para: xyz@mail.pt Assunto: IPLAB1 João Manuel Silva, nº123456 - 1T1 Eng. Electrotécnica Francisco Costa Lino, nº 454332 - 1P1 Eng. Industrial Turma EED teste.cpp1º Semestre 2011/2012 Carlos Limão 5/5

×