Escolar Documentos
Profissional Documentos
Cultura Documentos
Fluxo Grama
Fluxo Grama
Fluxo Grama
5:
Design de Algoritmos e
Programao Estruturada
Algoritmos, fluxogramas e
pseudo-cdigo
1
Sumrio
Problemas e algoritmos
Desenho de algoritmos/programas
Passos na construo de algoritmos
Mtodo Cartesiano de Dividir-Para-Conquistar
Caractersticas fundamentais dum algoritmo
Representao de algoritmos
Fluxogramas e programao visual
Estruturas de controlo de fluxo: sequncia, seleco e repetio
Programao estruturada
Problema:
Fazer um bolo?
Farinha de Trigo
Acar
Ovos
Fermento
Leite
receita
Manteiga
Algoritmo:
Como fazer um bolo?
Farinha de Trigo
Acar
Ovos
Fermento
Leite
Instrues
Manteiga
Algoritmo (receita de bolo):
1) Bater duas claras em castelo;
2) Adicionar duas gemas;
3) Adicionar um xcara de acar;
4) Adicionar duas colheres de manteiga;
5) Adicionar uma xcara de leite de coco;
6) Adicionar farinha e fermento;
7) Colocar numa forma e levar ao forno em lume brando.
5
Desenho de
algoritmos/programas
De um modo geral, considera-se que um algoritmo uma descrio, passo-apasso, de uma metodologia que conduz resoluo de um problema ou
execuo de uma tarefa.
a concepo do algoritmo
PROBLEMA
ALGORITMO
PROGRAMA
6
Passos na construo de
algoritmos
Compreender o problema
eliminar ambiguidades
Construir o algoritmo
Testar o algoritmo
Executar o algoritmo
7
Mtodo Cartesiano
de Dividir-Para-Conquistar
Este mtodo consiste em dividir um problema em partes menores (ou subproblemas) de modo a que seja mais fcil a sua resoluo.
Caractersticas fundamentais
dum algoritmo
Um algoritmo deve ter 5 caractersticas fundamentais:
Entradas: um algoritmo deve ter zero ou mais entradas, isto quantidades que lhe
so fornecidas antes do algoritmo iniciar.
Sadas: um algoritmo deve ter uma ou mais sadas, isto quantidades que tem uma
relao especfica com as entradas.
Eficincia:Um algoritmo deve ser eficiente. Isto significa que todas as operaes
devem ser suficientemente bsicas de modo que possam ser em princpio
executadas com preciso em um tempo finito por um ser humano usando papel e
lpis.
Representaes de algoritmos
Linguagem Natural
Os algoritmos so expressos directamente em linguagem natural (e.g. o
portugus como no exemplo do bolo).
Pseudo-linguagem
Emprega uma linguagem intermediria entre a linguagem natural e uma
linguagem de programao para descrever os algoritmos.
No existe consenso entre os especialistas sobre qual a melhor maneira de representar um algoritmo.
Actualmente a maneira mais comum de representar algoritmos atravs de uma pseudo-linguagem ou
pseudo-cdigo. Esta forma de representao tem a vantagem de o algoritmo seja escrito de
uma forma que est prxima de uma linguagem de programao de computadores.
10
Cdigo natural:
11
Fluxograma:
Ler a
Ler b
a0
No
Sim
x=-b/a
Imprime
valor de x
Fim
Imprime No
existe zero
12
Pseudo-cdigo:
13
Cdigo C:
14
outras aces/sinstrues
Estruturas lgicas de
programao:
estruturas de controlo
entrada
entrada
exit
exit
exit
SEQUNCIA
SELECO
REPETIO
16
{}
Sequncia
entrada
exit
17
if-else
false
true
fluxograma
duma seleco de 2 vias
18
Exemplo em C: if-else
#include <stdio.h>
void main()
{
int x, y,maior;
scanf(%d%d\n,&x,&y);
if (x > y)
maior = x;
else
maior = y;
printf(O maior dos dois inteiros = %d\n,maior);
19
if
false
true
fluxograma
duma seleco de 1 via
20
10
Exemplo em C: if
#include<stdio.h>
void main()
{
int nota;
printf(Introduza o valor da nota: );
scanf(%f,¬a);
if
}
21
switch
Seleco c/ n-vias
fluxograma
duma seleco de n vias
...
22
11
Exemplo em C: switch
#include <stdio.h>
void main()
{
int count;
scanf(%d,&count);
switch
{
case
case
case
case
case
}
count
5:
4:
3:
2:
1:
printf(5\n);
printf(4\n);
printf(3\n);
printf(2\n);
printf(1\n);
break;
break;
break;
break;
23
while
true
false
fluxograma
duma repetio c/ teste cabea
24
12
Exemplo em C: while
#include <stdio.h>
void main()
{
int sum, k=1;
sum = 0;
// inicializacao da soma
while (k <=100)
{
sum = sum + k;
k = k + 1;
//actualiza a variavel do ciclo
};
printf(A soma =%i\n,sum);
25
do-while
true
false
fluxograma
duma repetio c/ teste cauda
26
13
Exemplo: do - while
#include <stdio.h>
main()
{
int sum, k=1;
sum = 0;
// inicializacao da variavel do ciclo
do
{
sum = sum + k;
k = k + 1;
//actualiza a variavel do ciclo
}
while (k<=100);
printf(A soma =%i\n,sum);
27
Repetio
c/ nmero pr-definido de ciclos
for
true
false
fluxograma
duma repetio c/ pr-definido de ciclos
28
14
Exemplo em C: for
#include <stdio.h>
void main()
{
int
int
i;
sum;
// variavel do ciclo
sum = 0;
// inicializacao da soma
for (i=1; i <=100; i++)
sum = sum + i;
printf(A soma = %i\n,sum);
actualizao
teste de paragem
inicializao
29
Programao estruturada
1.
2.
3.
4.
5.
6.
7.
8.
9.
Documentao do programa.
30 FIM
15