Você está na página 1de 27

Cap.

2: Projeto de Algoritmos 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 de um algoritmo Representao de algoritmos Fluxogramas e programao visual Estruturas de controle de fluxo: sequncia, seleo e repetio Programao estruturada

Problemas & Algoritmos


n

n n

Para resolver um problema no computador necessrio que seja primeiramente encontrada uma maneira de descrever este problema de uma forma clara e precisa. preciso que encontremos uma sequncia de passos que permitam que o problema possa ser resolvido de maneira automtica e repetitiva. Esta sequncia de passos chamada de algoritmo. A noo de algoritmo central para toda a computao. A criao de algoritmos para resolver os problemas uma das maiores dificuldades dos iniciantes em programao em computadores.

Problema: Como fazer um bolo?


Farinha de Trigo Acar Ovos Fermento Leite Manteiga

receita

Uma receita uma descrio de um conjunto de passos ou aes que fazem a combinao de um conjunto de ingredientes com vista a obter um produto gastronmico particular.
4

Algoritmo: Como fazer um bolo?


Farinha de Trigo Acar Ovos Fermento Leite Manteiga

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

Instrues

Algoritmo (receita de bolo): 1) Bater duas claras em neve; 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 fogo brando.
5

Desenho de algoritmos/programas
n

De um modo geral, pode-se considerar que um algoritmo uma descrio, passo-a-passo, de uma metodologia que leva resoluo de um problema ou execuo de uma tarefa.

A programao consiste na descrio precisa desse algoritmo, segundo uma linguagem ou terminologia especfica. Deve-se ter em considerao que existem trs fases distintas na elaborao de programas:
n

a anlise do problema (especificao do problema, anlise de requisitos, pressupostos, etc.) a concepo do algoritmo a traduo desse algoritmo na linguagem de programao

n n

PROBLEMA

ALGORITMO

PROGRAMA
6

Passos na construo de algoritmos


n n n n

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

usar a estratgia do dividir-para-conquistar observar regras e limitaes identificar todas as aces a realizar eliminar ambiguidades

n n n

Construir o algoritmo Testar o algoritmo Executar o algoritmo


7

Mtodo Cartesiano de Dividir-Para-Conquistar


n

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 suco de laranja? Lavar laranja; Partir laranja ao meio; Espremer laranja; Filtrar o suco; Servir o suco.

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

Exemplo: impossvel ver novela antes de executar por inteiro o passo anterior de ligar a TV

Caractersticas fundamentais de um algoritmo


Um algoritmo deve ter 5 caractersticas fundamentais:
n n

Finitude:um algoritmo deve sempre terminar aps um nmero finito de passos. Definio: cada passo de um algoritmo deve ser precisamente definido. As aes 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
n

Linguagem Natural Os algoritmos so expressos diretamente 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 aes 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. Atualmente 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:
Incio

clculo do zero da equao ax+b=0


Ler a Ler b

a0
Sim x=-b/a

No

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 de x seno imprimir No h zero fim de se 4. Fim de programa

13

Cdigo C:
#include <stdio.h> #include <math.h> main() { float a, b;

clculo do zero da equao ax+b=0

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 exite zero); }
14

Fluxogramas & programao visual


n n n

Representao grfica de um algoritmo. Programao visual: a utilizao de diagramas na programao. Descrevem o fluxo de um algoritmo atravs de um conjunto de figuras geomtricas padronizadas ligadas por setas de fluxo.
incio e fim de fluxograma teste e deciso

entrada e sada de dados

outras instrues

conector na mesma pgina inicializao teste e atualizao conector para outra pgina 15

Possibilidades para o fluxo de informao:


estruturas de controle
Os dados podem ser processados:
n n

em sequncia (e.g. blocos) aps seleo de uma via num ponto de bifurcao, cada via conduzindo a um processamento distinto (e.g. if, if-else, switch) por repetio, o que faz com que os dados entrem em ciclos de processamento at atingirem uma condio de parada . Acaso, a condio de parada nunca seja atingida, o programa entra em ciclo infinito e nunca para.

16

{}

Sequncia

instruo instruo

17

{}

Sequncia c/ conexes
1 pgina 2 pgina 2 1

2 18

if if-else

Seleo parcial/total com 2-vias

? FALSE

TRUE

instruo

instruo

FALSE

TRUE

instruo

19

if-if-else

Seleo parcial c/ 3-vias


? FALSE TRUE

instruo

FALSE

TRUE

instruo

20

if-if-else-else

Seleo total c/ 3-vias


instruo
FALSE ? TRUE

instruo

FALSE

TRUE

instruo

21

if-else-if-else-if-else

Seleo c/ n-vias
? FALSE TRUE

? FALSE

TRUE

FALSE

TRUE

22

switch

Seleo c/ n-vias
?

instruo

instruo

instruo

instruo

23

while

Repetio c/ teste no incio

? FALSE

TRUE

instruo

24

do-while

Repetio c/ teste no fim

instruo

? FALSE

TRUE

25

Repetio c/ nmero fixo de ciclos

for

? FALSE

TRUE

instruo

26

Programao estruturada
1. 2. 3. 4. 5. 6. 7. 8. 9. Correspondncia entre fluxograma e programa; Uso das 3 estruturas fundamentais de controle: Sequncia-Seleo-Repetio; As estruturas usadas devem ter um incio e um fim; Programa escrito com identao (realce), espaos em branco e comentrios para facilitar a leitura do mesmo; Eliminao das transferncias incondicionais (os gotos do Fortran); Desenho descendente e segmentao em mdulos; Construo de mdulos de tamanho adequado; Declarao do domnio (escopo) de ao das variveis locais (dentro das funes) e globais (o programa inteiro); Documentao do programa.
27 FIM

Você também pode gostar