Escolar Documentos
Profissional Documentos
Cultura Documentos
Fluxog. e Pseucódigo PDF
Fluxog. e Pseucódigo PDF
5:
Design de Algoritmos e
Programao Estruturada
Algoritmos, fluxogramas e
pseudo-cdigo
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
1
Problemas & Algoritmos
Para resolver um problema atravs dum computador necessrio
encontrar em primeiro lugar uma maneira de descrev-lo de uma
forma clara e precisa.
tambm preciso que encontremos uma sequncia de passos que
conduzam sua resoluo. Esta sequncia de passos designada
por algoritmo.
A noo de algoritmo central para toda a informtica.
A criao de algoritmos para resolver os problemas uma das
maiores dificuldades, mas tambm um dos desafios mais atractivos,
dos iniciados em programao em computadores.
Problema:
Fazer um bolo?
Farinha de Trigo
Ovos Acar
Fermento Leite receita
Manteiga
2
Um algoritmo opera sobre um conjunto de
entradas (farinha ovos, fermento, etc. no caso do
Desenho de
algoritmos/programas
De um modo geral, considera-se que um algoritmo uma descrio, passo-a-
passo, de uma metodologia que conduz resoluo de um problema ou
execuo de uma tarefa.
A programao consiste na codificao precisa desse algoritmo, segundo uma
linguagem de programao especfica.
H, pois, que ter em considerao que existem trs fases distintas na
elaborao de programas:
a anlise do problema (especificao do problema, anlise de requisitos,
pressupostos, etc.)
a concepo do algoritmo
a traduo desse algoritmo na linguagem de programao
3
Passos na construo de
algoritmos
Compreender o problema
Identificar os dados de entrada
Identificar os dados de sada
Determinar o que preciso para transformar dados de entrada em dados de
sada:
usar a estratgia do dividir-para-conquistar
observar regras e limitaes
identificar todas as aces a realizar
eliminar ambiguidades
Construir o algoritmo
Testar o algoritmo
Executar o algoritmo
Mtodo Cartesiano
de Dividir-Para-Conquistar
Tambm o conhecido por mtodo descendente (top-down method) ou
mtodo de refinamento passo-a-passo
Este mtodo consiste em dividir um problema em partes menores (ou sub-
problemas) de modo a que seja mais fcil a sua resoluo.
Exemplo: Fazer sumo de laranja?
Lavar laranja;
Partir laranja ao meio;
Espremer laranja;
Filtrar o sumo;
Servir o sumo.
4
Caractersticas fundamentais
dum algoritmo
Um algoritmo deve ter 5 caractersticas fundamentais:
Finitude:um algoritmo deve sempre terminar aps um nmero finito de passos.
Definio: cada passo de um algoritmo deve ser precisamente definido. As aces
devem ser definidas rigorosamente e sem ambiguidades.
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
5
Cdigo natural:
clculo do zero da equao ax+b=0
1. Incio de programa
2. ler a, b
3. se a diferente de 0 ento
calcula o valor de x (ax+b=0)
imprimir valor de x
seno
imprimir No h zero
4. Fim de programa
11
Fluxograma:
clculo do zero da equao ax+b=0
Incio
Ler a
Ler b
No
a0
Sim
x=-b/a
Imprime Imprime No
valor de x existe zero
Fim 12
6
Pseudo-cdigo:
clculo do zero da equao ax+b=0
1. Incio de programa
2. ler a, b
3. se a0 ento
x=-b/a
imprimir valor do zero x
seno
imprimir No h zero
fim de se
4. Fim de programa
13
Cdigo C:
clculo do zero da equao ax+b=0
#include <stdio.h>
main()
{
float a, b;
printf("Entre com os coeficientes da equacao.\n");
if (a != 0)
{
x = -b/a;
printf(O valor de x = %f\n,x);
}
else
printf(No existe zero);
} 14
7
Fluxogramas & programao
visual
Representao grfica de um algoritmo.
Programao visual: a utilizao de diagramas na programao.
Descrevem o fluxo dum algoritmo atravs de um conjunto de figuras
geomtricas padronizadas ligadas por setas de fluxo.
15
Estruturas lgicas de
programao:
estruturas de controlo
Uma estrutura (de controlo) a unidade bsica da lgica de
programao.
Em meados da dcada de 60, alguns matemticos provaram que
qualquer programa podia ser construdo atravs da combinao de 3
estruturas bsicas: sequncia, seleco e repetio.
entrada entrada
entrada
exit
exit
exit
8
{}
Sequncia
Numa sequncia processado um conjunto de
aces (ou instrues) em srie.
entrada
17
if-else
18
9
Problema: Calcular o maior de
dois nmeros inteiros x e y.
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
20
10
Problema: Ler e escrever uma
nota entre 0 e 20.0 valores.
Caso a nota esteja no intervalo
[9.0,9.5[, ela deve ser
#include<stdio.h>
void main()
{
int nota;
printf(Introduza o valor da nota: );
scanf(%f,¬a);
if ( (nota >= 9.0) && (nota < 9.5) )
nota = 9.5;
printf(A nota = %f\n, nota);
}
21
switch
Seleco c/ n-vias
Neste caso, a deciso no feita com base numa
expresso lgica porque h mais do que 2 resultados fluxograma
duma seleco de n vias
possveis.
Tambm s so processadas a aco ou as aces
encontradas numa via.
Em C, uma estrutura de seleco com n vias a
instruo switch com break. No entanto, se no ?
...
22
11
Exemplo em C: switch
#include <stdio.h>
void main()
{
int count;
scanf(%d,&count);
switch count
{
case 5: printf(5\n); break;
case 4: printf(4\n); break;
case 3: printf(3\n); break;
case 2: printf(2\n); break;
case 1: printf(1\n);
}
}
23
while
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
a instruo do-while.
false
fluxograma
duma repetio c/ teste cauda
26
13
Exemplo: do - while
#include <stdio.h>
main()
{
int sum, k=1;
27
Repetio for
true
A diferena que logo partida especificado ?
o nmero de ciclos (ou iteraes) que sero
efectuados, i.e. o nmero de vezes que a false
28
14
Exemplo em C: for
#include <stdio.h>
void main()
{
int i; // variavel do ciclo
int sum;
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. Correspondncia entre fluxograma e programa;
2. Uso das 3 estruturas fundamentais de controlo:
Sequncia-Seleco-Repetio;
3. As estruturas usadas devem ter um incio e um final;
4. Programa escrito com identao (realce), espaos em branco e
comentrios para facilitar a leitura do mesmo;
5. Eliminao das transferncias incondicionais (os gotos do Fortran);
6. Desenho descendente e segmentao em mdulos (ou funes);
7. Construo de mdulos (ou funes) de tamanho adequado;
8. Declarao do domnio (scope) de aco das variveis locais (dentro das
funes) e globais (o programa inteiro);
9. Documentao do programa.
30 FIM
15