Você está na página 1de 31

Programao

5374 : Engenharia Informtica


6638 : Tecnologias e Sistemas de Informao
9099 : Bioengenharia
10135 : Cincias Biomdicas

Cap. 4 Algoritmos e Programao Estruturada


Module Introduction

5375, 6619, 9099, 10135



Programao

Objectivos:

Algoritmos e Programao Estruturada


5375, 6619, 9099, 10135



Programao

Problemas e Algoritmos

Algoritmos e Programao Estruturada


5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Noo de Problema
Exemplo: como fazer um bolo?

Farinha de Trigo

Acar

Ovos

Fermento

Leite

Manteiga

receita

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Noo de Algoritmo

Farinha de Trigo

Acar

Ovos

Fermento

Leite

Manteiga

algoritmo

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Desenho ou Concepo de Algoritmos


para a Resoluo de Problemas

PROBLEMA

ALGORITMO

PROGRAMA

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Passos na Concepo e Construo de Algoritmos


5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Mtodo Cartesiano de Dividir-para-Conquistar


5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Caractersticas Fundamentais dum Algoritmo


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



Por exemplo, para ir de casa at o trabalho, podemos escolher diversos

meios de transportes em funo do preo, conforto, rapidez, etc..

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Representaes de 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.

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Codificao em Linguagem Natural (1)


1.
2.
3.
4.
5.

Incio

Ler X,Y

Calcular a mdia M de X e Y

Escrever M

Fim

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Codificao em Fluxograma (2)


Incio

Ler X

Ler Y

M=(X+Y)/2

Escreve M

Fim

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Codificao em Pseudo-cdigo (3)


1.
2.
3.
4.
5.

Incio

Ler X,Y

Calcular a mdia M=(X+Y)/2

Escrever M

Fim

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Codificao em C (4)

#include <stdio.h>
main(){
float X, Y, M;
printf(Introduza o valor de X:\n);
scanf("%f", &X);
printf(Introduza o valor de Y:\n);
scanf("%f", &Y);
M=(X+Y)/2;
printf(A media M = %f\n,M);
}

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Programao Visual com Fluxogramas


incio e fim de fluxograma


entrada e sada de dados


teste e deciso

outras aces/instrues

conector na mesma pgina



inicializao

teste e actualizao

conector para outra pgina

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


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.

entrance

entrance

entrance

exit

exit

SEQUNCIA

exit

SELECO

REPETIO

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada



{}

Sequncia

entrance

exit

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada



if-else

Seleco de 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.

Em C, uma estrutura de seleco com 2


vias a instruo if-else.

false

true

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Exemplo em C: if-else

#include <stdio.h>
int main()
{
int x, y, M;
printf(Introduza x e y: \n);
scanf("%d%d", &x, &y);
if (x > y)
M = x;
else
M = y;
printf("O valor maior = %d\n", M);
return 0;
}

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada



if

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

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Exemplo em C: if

#include <stdio.h>
int main()
{
int x, y, M;
printf(Introduza x e y: \n);
scanf("%d%d", &x, &y);
M = x;
if (y > M)
M = y;
printf("O valor maior = %d\n", M);
return 0;
}

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada



switch

Seleco de 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.

...

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Exemplo em C: switch

#include <stdio.h>
int main()
{
int x, y, resultado;
char operacao;
printf(Introduza x operador y: \n);
scanf("%d %c %d", &x, &operacao, &y);
switch (operacao) {
case + :
resultado
break;
case - :
resultado
break;
case * :
resultado
break;
case / :
resultado
}

= x + y;
= x - y;
= x * y;
= x / y;

printf("O resultado = %d\n", resultado);


return 0;
}

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Repetio com 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.

?
false

true

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Exemplo em C: while

#include <stdio.h>
int main()
{
int soma, n=1;
soma = 0;
while (n <= 100)
{
soma = soma + n;
n = n + 1;
}

// inicializao da varivel soma


// teste de paragem
// actualizao da varivel soma

// actualizao da varivel de controlo

printf("O valor da soma = %d\n", soma);


return 0;
}

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Repetio com 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.

?
false

true

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Exemplo em C: do-while

#include <stdio.h>
int main()
{
int soma, n=1;
soma = 0;
do
{
soma = soma + n;
n = n + 1;
}
while (n <= 100);

// inicializao da varivel soma


// actualizao da varivel soma

// actualizao da varivel de controlo
// teste de paragem

printf("O valor da soma = %d\n", soma);


return 0;
}

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Repetio com N Pr-definido de Ciclos

Esta estrutura de repetio em tudo


idntica s anteriores.

O teste feito cabea.


A diferena que partida se especifica 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.

?
false

true

5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Exemplo em C: for

inicializao

teste de paragem

#include <stdio.h>
int main()
{
int soma, n=1;
soma = 0;
for (n=1; n<=100; n++)
soma = soma + n;

// inicializao da varivel soma


// actualizao da varivel soma

printf("O valor da soma = %d\n", soma);


return 0;
}

actualizao

5375, 6619, 9099, 10135



Programao

Programao Estruturada

Algoritmos e Programao Estruturada


5375, 6619, 9099, 10135



Programao

Algoritmos e Programao Estruturada


Sumrio:

FIM

Você também pode gostar