Algoritmos, fluxogramas e pseudocódigos

5
C1105 - Introdução à Programação em C 1º Trabalho de Laboratório Algoritmos, Fluxogramas e Pseudo-Código Objectivo O objectivo deste trabalho é introduzir a noção de algoritmo, bem como duas formas alternativas que 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 a sequência de execução dos passos), pode ser demonstrado que qualquer algoritmo de computador pode 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, para que seja possível representar qualquer algoritmo num computador, o método de representação tem 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 de linguagens de programação diferentes. Por outro lado, existem também muitas outras características que são incluídas nas linguagens como forma de tornar mais simples a expressão de determinados 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, caso este se destine a ser implementado com um computador, temos de ter em atenção que o conjunto de operações elementares que este é capaz de realizar é bastante restrito e composto por pouco mais do que as operações acima descritas. 1º Semestre 2011/2012 Carlos Limão 1/5

description

Algoritmos, fluxogramas e pseudocódigos

Transcript of Algoritmos, fluxogramas e pseudocódigos

Page 1: Algoritmos, fluxogramas e pseudocódigos

C1105 - Introdução à Programação em C 1º Trabalho de Laboratório

Algoritmos, Fluxogramas e Pseudo-CódigoObjectivoO objectivo deste trabalho é introduzir a noção de algoritmo, bem como duas formas alternativas que 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 a sequência de execução dos passos), pode ser demonstrado que qualquer algoritmo de computador pode 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, para que seja possível representar qualquer algoritmo num computador, o método de representação tem 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 de linguagens de programação diferentes. Por outro lado, existem também muitas outras características que são incluídas nas linguagens como forma de tornar mais simples a expressão de determinados 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, caso este se destine a ser implementado com um computador, temos de ter em atenção que o conjunto de operações elementares que este é capaz de realizar é bastante restrito e composto por pouco mais do que as operações acima descritas.

1º Semestre 2011/2012 Carlos Limão 1/5

Page 2: Algoritmos, fluxogramas e pseudocódigos

C1105 - Introdução à Programação em C 1º Trabalho de Laboratório

O 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ês passos.

O início e o fim do algoritmo são representados por rectângulos com os cantos arredondados. Estes não representam acções mas funcionam antes como delimitadores da sequência de acções que compõem o algoritmo.

Cada passo da sequência que constitui o algoritmo é representado por um rectângulo. A sequência pela 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 os seguintes símbolos, que possuem o significado indicado:

O que é o Pseudocódigo?Enquanto as linguagens de programação permitem expressar um algoritmo de um modo formal, o pseudocódigo permite fazê-lo de um modo mais informal, sem a preocupação de obedecer a um léxico e a uma gramática rígida. No entanto, apesar desta liberdade, dois programadores distintos devem ser capazes de estar de acordo quanto a um dado algoritmo escrito em pseudocódigo e ser capazes de escrever dois programas funcionalmente equivalentes.

O pseudocódigo pode ser escrito em qualquer linguagem natural (humana) na forma de uma lista ordenada (ou numerada) de passos.O algoritmo acima descrito na forma de um fluxograma pode ser escrito em pseudocódigo como:

1. Início2. Passo 13. Passo 24. Passo 35. Fim

Onde 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 grande flexibilidade do ponto de vista da sua utilização. No entanto, nas secções que se seguem serão apontados exemplos de pseudocódigo para as situações mais comuns que iremos encontrar, de modo 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 da avaliação de uma determinada condição.

1º Semestre 2011/2012 Carlos Limão 2/5

Terminador Acção Interacção Decisão

Início

Fim

Passo 1

Passo 2

Passo 3

Page 3: Algoritmos, fluxogramas e pseudocódigos

C1105 - Introdução à Programação em C 1º Trabalho de Laboratório

Na sua forma mais simples, este tipo de instruções permite escolher uma de entre duas acções possíveis a executar seguidamente, isto é, entre dois caminhos de execução distintos, dependendo de 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:

Note que introduzimos uma nova forma, um losango, para representar o local onde se decide entre dois caminhos de execução possíveis. Note que uma instrução de decisão caracteriza-se por possuir apenas 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árias instruções. A repetição pode ser por um determinado número de vezes (bater 20 vezes com as mã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:

1º Semestre 2011/2012 Carlos Limão 3/5

Acção a executar se a condição for verdadeira

Acção a executar se a condição for falsa

Condição?

NS

Condição?

Acção a executar enquanto a condição for verdadeira

N

S

Page 4: Algoritmos, fluxogramas e pseudocódigos

C1105 - Introdução à Programação em C 1º Trabalho de Laboratório

Exercí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 que abordámos é-lhe pedido, em cada um dos exercícios, que utilize uma das formas de representação para 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 os passos necessários para obter os dados e fornecer os resultados ao utilizador.

Nota: Recorde que a área de um círculo vale π x r2

Vejamos 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 Natural

Antes de mais necessitamos de pedir ao utilizador o valor do raio (ou do diâmetro) da circunferência. Em seguida temos de ler o valor fornecido. Depois podemos calcular o valor da área como sendo 3,14159 x Valor do Raio x Valor do Raio. Por fim temos de mostrar o valor calculado ao utilizador

Segunda Abordagem – Aproveitar apenas o essencial da descrição

1. 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 utilizador

Terceira 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úmero inteiro 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 Natural

Antes de mais necessitamos pedir ao utilizador um inteiro. Em seguida temos de ler o inteiro fornecido. Se o inteiro for maior do que zero, dizemos ao utilizador que o número é positivo, caso contrário dizemos ao utilizador que o número é negativo.

Segunda Abordagem – Aproveitar apenas o essencial da descrição

1. 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 é negativo

1º Semestre 2011/2012 Carlos Limão 4/5

Page 5: Algoritmos, fluxogramas e pseudocódigos

C1105 - Introdução à Programação em C 1º Trabalho de Laboratório

Terceira 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 = Kn e descreve um algoritmo devido ao matemático árabe Al-Kashi que o descobriu em 1414.

1. INÍCIO Cálculo de P = Kn

2. P = 1 3. 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 os

valores 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 semana seguinte aquela em que o trabalho é realizado.

Os três exercícios deverão ser entregues num documento PDF, chamado IPLAB1.PDF. Note que pode fazer os fluxogramas com o programa Word (existe uma página no site da cadeira que explica como pode fazê-lo), ou qualquer outro com que esteja familiarizado, desde que converta o resultado final para PDF.

O documento deve ser depois anexado a uma mensagem cujo ASSUNTO deve ser IPLAB1 e enviada para 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 do grupo.

Exemplo:

1º Semestre 2011/2012 Carlos Limão 5/5

Para: [email protected]: IPLAB1

João Manuel Silva, nº123456 - 1T1 Eng. ElectrotécnicaFrancisco Costa Lino, nº 454332 - 1P1 Eng. Industrial

Turma EEDteste.cpp