Reta Final - CNU - Gestão Governamental - Prof. Stefan Fantini.pdf
Algoritmos, fluxogramas e pseudocódigos
1. 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
2. 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.
Início
Passo 1
Passo 2
Passo 3
Fim
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:
Terminador Acção Interacção Decisão
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ício
2. Passo 1
3. Passo 2
4. Passo 3
5. 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ões
Uma 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
3. 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:
S Condição N
?
Acção a executar se a Acção a executar se a
condição for verdadeira condição for falsa
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ções
O 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:
Condição N
?
S
Acção a executar enquanto
a condição for verdadeira
1º Semestre 2011/2012 Carlos Limão 3/5
4. C1105 - Introdução à Programação em C 1º Trabalho de Laboratório
Exercícios
Nos 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ência
Escreva 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írculo
2. Ler o valor fornecido pelo utilizador para uma variável raio
3. Fazer uma variável área = 3,14159 x raio x raio
4. Mostrar o valor da área ao utilizador
Terceira Abordagem – Pseudocódigo
1. INÍCIO Cálculo da área de um Círculo
2. ESCREVER “Introduza o raio do círculo: ”
3. LER Raio
4. FAZER Área = 3,14159 x Raio x Raio
5. ESCREVER “A área do seu círculo é ”, seguido do valor de Área
6. FIM DO ALGORITMO
Desenhe um fluxograma do algoritmo acima descrito.
Exercício 2 – Decisão
Escreva 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 inteiro
2. Ler o valor fornecido pelo utilizador para uma variável chamada número
3. Se o valor de número for maior que zero dizer ao utilizador que é positivo
4. Se o valor de número for menor que zero dizer ao utilizador que é negativo
1º Semestre 2011/2012 Carlos Limão 4/5
5. C1105 - Introdução à Programação em C 1º Trabalho de Laboratório
Terceira Abordagem – Pseudocódigo
1. INÍCIO Número positivo ou negativo
2. ESCREVER “Introduza um inteiro não nulo: ”
3. LER Número
4. SE (Número > 0)
5. ESCREVER “O número é positivo”
6. CASO CONTRÁRIO
7. ESCREVER “O número é negativo”
8. FIM DO SE
13. 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ção
O 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 = Kn
2. P = 1
3. ENQUANTO (N ≥ 1 )
4. SE (N é PAR)
5. N = N/2
6. k = k × k
7. CASO CONTRÁRIO
8. N = N - 1
9. P = P × k
10. FIM DO SE
11. FIM ENQUANTO
12. 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 trabalho
A 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: 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.cpp
1º Semestre 2011/2012 Carlos Limão 5/5