Fluxo Grama

Você também pode gostar

Você está na página 1de 15

Cap.2.

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

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
Acar
Ovos
Fermento
Leite

receita

Manteiga

Uma receita uma descrio dum conjunto de passos ou


aces que fazem a combinao dum conjunto de ingredientes
com vista a obter um produto gastronmico particular.

Um algoritmo opera sobre um conjunto de


entradas (farinha ovos, fermento, etc. no caso do
bolo) de modo a gerar uma sada que seja til
(ou agradvel) para o utilizador (o bolo pronto).

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

PROBLEMA

ALGORITMO

PROGRAMA
6

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
7

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 subproblemas) 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.

Passo-a-passo, significa que cada passo completado antes que o prximo


comece.

Exemplo: impossvel ver telejornal antes de executar por inteiro o


passo anterior de ligar a TV

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.

NOTA: Pode haver mais do que um algoritmo para resolver um problema.


Por exemplo, para ir de casa at o trabalho, posso escolher diversos
meios de transportes em funo do preo, conforto, rapidez, etc..

Representaes de algoritmos

Linguagem Natural
Os algoritmos so expressos directamente em linguagem natural (e.g. o
portugus como no exemplo do bolo).

Fluxograma (ou Diagrama de Fluxo)


Esta um representao grfica que emprega formas geomtricas
padronizadas para indicar as diversas aces e decises que devem ser
executadas para resolver o problema.

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:

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

a0

No

Sim
x=-b/a

Imprime
valor de x
Fim

Imprime No
existe zero
12

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");
scanf("%f %f", &a, &b);
if (a != 0)
{
x = -b/a;
printf(O valor de x = %f\n,x);
}
else
printf(No existe zero);
}

14

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.
teste e deciso

incio e fim de fluxograma

entrada e sada de dados

outras aces/sinstrues

conector na mesma pgina


inicializao
teste e actualizao
conector para outra pgina
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

SEQUNCIA

SELECO

REPETIO

16

{}

Sequncia

Numa sequncia processado um conjunto de


aces (ou instrues) em srie.

No h qualquer possibilidade de alterar a


ordem de processamento das aces, i.e. aps
processar a 1 aco processa-se a 2, depois
da 2 processa-se a 3, e assim por diante at
processar a ltima aco.

Em C, uma sequncia um bloco de instrues


que comea com { e termina com }

entrada

exit

fluxograma duma sequncia

17

if-else

Seleco com 2 vias

Uma estrutura de seleco tambm


designada por estrutura de deciso.

Neste caso, o fluxo de processamento segue


por 1 das 2 vias, dependendo do valor lgico
(verdadeiro ou falso) da expresso avaliada no
incio da estrutura.

Se o fluxo de processamento s passa por 1


via, ento s uma das aces realizada ou
processada.

false

true

fluxograma
duma seleco de 2 vias

Em C, uma estrutura de seleco com 2 vias


a instruo if-else.

18

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

Seleco com 1 via

Neste caso, se a expresso lgica tiver


resultado false, nenhuma aco processada
dentro da estrutura de seleco.

S processada uma aco dentro da


estrutura de seleco se a expresso lgica for
true; da, o nome de seleco com 1 via.

Em C, uma estrutura de seleco com 1 via a


instruo if.

false

true

fluxograma
duma seleco de 1 via

20

10

Exemplo em C: if

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
rectificada para 9.5.

#include<stdio.h>
void main()
{
int nota;
printf(Introduza o valor da nota: );
scanf(%f,&nota);
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
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
usarmos o break, h a possibilidade de executar as
aces de vrias 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

Repetio c/ teste cabea

Neste caso, tambm h a necessidade de


tomar uma deciso com base no valor lgico
duma expresso.

No entanto, a mesma aco ser executada


repetidamente enquanto o resultado da
expresso lgica se mantiver verdadeiro (true).
?

O teste (da expresso lgica) precede a aco.


Diz-se, por isso, que o teste cabea.

O teste importante porque funciona como


uma condio de paragem (a false) dos ciclos
or repeties.

Em C, uma estrutura de repetio deste tipo


a instruo 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

Repetio c/ teste cauda

Esta estrutura de repetio em tudo idntica


anterior. A diferena que o teste feito
aps o processamento da aco

O teste (da expresso lgica) sucede a aco.


Diz-se, por isso, que o teste cauda.

Em C, uma estrutura de repetio deste tipo


a instruo 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

Esta estrutura de repetio em tudo idntica


s anteriores.

O teste feito cabea.

A diferena que logo partida especificado


o nmero de ciclos (ou iteraes) que sero
efectuados, i.e. o nmero de vezes que a
aco ser processada.

Em C, uma estrutura de repetio deste tipo


a instruo 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.

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

Você também pode gostar