Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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.
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
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
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
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
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:
11
Fluxograma:
Incio
a0
Sim x=-b/a
No
Pseudo-cdigo:
13
Cdigo C:
#include <stdio.h> #include <math.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 exite zero); }
14
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
outras instrues
conector na mesma pgina inicializao teste e atualizao conector para outra pgina 15
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
? FALSE
TRUE
instruo
instruo
FALSE
TRUE
instruo
19
if-if-else
instruo
FALSE
TRUE
instruo
20
if-if-else-else
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
? FALSE
TRUE
instruo
24
do-while
instruo
? FALSE
TRUE
25
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