You are on page 1of 57

Introduo Lgica de

Programao
Profa. Elaine Harada T. Oliveira
Introduo Cincia dos Computadores
DCC/UFAM

1o. semestre/2006
Tpicos
Introduo
Conceitos gerais
Raciocnio matemtico
Noes de Lgica
Algoritmos
Exerccios
Tpicos
Introduo
Conceitos gerais
Programao estruturada
Desenvolvimento top-down
Modularizao
Estruturas de controle
Confiabilidade
Manutenibilidade
Pseudolinguagem Portugol
Raciocnio matemtico
Noes de Lgica
Existe Lgica no dia-a-dia?
Algoritmizando a Lgica
Tpicos
Algoritmos
Por que precisamos de algoritmos?
Caractersticas
Algoritmo x Qualidade
Mtodo para construo de algoritmos
Mtodo Cartesiano
Planejamento Reverso
Tabelas de Deciso
Exerccios
Introduo
Muitos anos se passaram desde os primrdios da histria
da computao.
J vivemos vrios paradigmas de programao.
Uma base de conhecimento que no mudou e no
mudar nunca a Lgica de Programao .
Lgica de Programao e Raciocnio Matemtico -
interpretao de um problema e a utilizao correta de
uma frmula.
No existem frmulas em Informtica.
Aperfeioamento de nossa forma de pensar e raciocinar
sobre um problema.
Extrair do mesmo uma soluo eficiente e eficaz.
preciso aprender a pensar sobre os problemas,
extraindo deles o mximo de informaes
Introduo
A soluo que criamos para um determinado
problema necessita ser exteriorizada e expressa
numa linguagem publicamente conhecida.
Assim, utilizamos a lgica de programao para
desenvolver nossas solues e os algoritmos para
apresentar essas solues ao mundo.
A maioria do material se concentra em ensinar como
representamos estruturas de controle e atribuies,
ou como declaramos variveis
Poucos, orientam o aluno na forma de pensar.
Precisamos mais do que frmulas, precisamos
aprender a pensar.
Introduo
Inicialmente, veremos conceitos gerais sobre
Programao.
Posteriormente, vocs tero exerccios de
Raciocnio Matemtico que lhes exercitaro o
poder de PENSAR!
Em seguida, apresentaremos como
desenvolver algoritmos de solues para
Sistemas.
E por ltimo, vamos conhecer a Linguagem C,
a fim de vermos nossos algoritmos
funcionando ao vivo e cores !
Programao Estruturada
A Programao Estruturada pode ser entendida como
uma forma de programar que visa facilitar a escrita,
entendimento, validao e manuteno de programas.
Para Dijkstra, a arte de programar consiste na arte de
organizar e dominar a complexidade.
A Programao Estruturada procurar reduzir o nvel de
complexidade atravs de trs nveis:
a) desenvolvimento do programa em diferentes fases por
refinamento sucessivo (desenvolvimento top-down);
b) decomposio do programa total em mdulos funcionais,
organizados de preferncia num sistema hierrquico;
c) uso de um nmero limitado de estruturas bsicas de fluxo de
controle dentro de cada mdulo.
Desenvolvimento Top-down
Na Programao Estruturada, ao
desenvolvermos um algoritmo, temos como
objeto um produto final o programa.
Para termos esta transio, passamos por
vrias fases, no sentido cima para baixo.
Cada fase documentada e principalmente
obtida por refinamento da fase anterior
At chegarmos a um nvel de detalhamento
que permita implementar o algoritmo
diretamente na linguagem de programao.
Modularizao
A soluo final de um problema
obtida atravs de solues de
subproblemas
Permite dividir o programa em mdulos
com subfunes claramente delimitadas
Podem ser implementados
separadamente, por diversos
programadores de uma equipe.
Estruturas de controle
So representadas pela seqncia simples, o
comando condicional e o comando repetitivo
Fornecem ao programador um aumento da
legibilidade e compreenso de cada mdulo
de programa.
Assim, temos como uma das principais
normas da Programao Estruturada: no
usar comandos de desvio (GOTO).
Confiabilidade
Medimos a confiabilidade de um sistema atravs de
sua resposta ao uso constante, no tocante a:
no apresentar erros;
corresponder s especificaes.
Atualmente, a sociedade est totalmente dependente
dos sistemas de computao.
Nos fins dos anos 60, constatou-se que as
sistemticas usadas pelos programadores eram os
grandes responsveis pela baixa confiabilidade dos
programas.
Como soluo destes problemas, surgiu a
Programao Estruturada (PE).
Manutenibilidade
As revises sofridas por um programa
(releases) tanto para correo de erros
quanto para mudanas de especificao, so
consideradas como manuteno de software.
Os programas devem passar por testes
exaustivos de confiabilidade antes de serem
colocados em produo.
Falhas nesta fase levam a altos nveis de
manuteno, que conseqentemente, levam
a altos custos.
PseudoLinguagem - PORTUGOL
No podemos representar nossas solues em
algoritmos totalmente escritos em portugus.
fcil perceber que a linguagem natural, no
formalizada, geraria ambigidades.
Assim, temos o PORTUGOL, que uma
pseudolinguagem de programao (simbiose do
Portugus com o ALGOL e PASCAL)
Permite pensarmos no problema e no na mquina
que vai executar o algoritmo.
Alm disso, no perdemos a flexibilidade e
continuamos a ter a proximidade com a linguagem
humana, facilitando, portanto, a interpretao.
Raciocnio Matemtico
As crianas aprendem facilmente como adicionar e
subtrair valores.
Suas dificuldades comeam no momento em que elas
se deparam com problemas e necessitam identificar
quais operaes traro solues para os mesmos.
Podemos pensar tambm num algoritmo como um
mecanismo de transformao de entradas em
sadas.
Assim, um algoritmo ao ser executado, receber
algumas entradas, que sero processadas e nos
devolver algumas sadas.
Noes de Lgica
O que Lgica?
Lgica trata da correo do pensamento.
Como filosofia, ela procura saber por que pensamos assim e no
de outro jeito.
Com arte ou tcnica, ela nos ensina a usar corretamente as leis do
pensamento.
Poderamos dizer tambm que a Lgica a arte de pensar
corretamente e, visto que a forma mais complexa do pensamento
o raciocnio, a Lgica estuda ou tem em vista a correo do
raciocnio.
Podemos ainda dizer que a lgica tem em vista a ordem da
razo.
Isto d a entender que a nossa razo pode funcionar
desordenadamente, pode pr as coisas de pernas para o ar.
Por isso a Lgica ensina a colocar Ordem no Pensamento.
Noes de Lgica
Exemplos:
a) Todo o mamfero animal.
Todo cavalo mamfero.
Portanto, todo cavalo animal.

b) Todo mamfero bebe leite.
O homem bebe leite.
Portanto, todo homem mamfero e animal.
Existe Lgica no dia-a-dia?
Sempre que pensamos, o raciocnio e a lgica nos acompanham
necessariamente.
Tambm quando falamos, pois a palavra falada a representao
do pensamento; e, visto que a palavra escrita a representao
da palavra falada, tambm pensamos quando escrevemos,
utilizando a Lgica ou a Ilgica.
Da percebemos a importncia da Lgica na nossa vida no s na
teoria, como tambm na prtica, j que quando queremos pensar,
falar ou escrever corretamente precisamos colocar em Ordem o
Pensamento, isto , utilizar a Lgica.
Exemplos:
a) A gaveta est fechada.
A bala est na gaveta.
Preciso primeiro abrir a gaveta, para depois pegar a bala.
b) Joo mais velho que Jos.
Marcelo mais novo que Jos.
Portanto, Joo mais velho que Marcelo.
Algoritmizando a Lgica
Construir algoritmos o objetivo fundamental de toda a
programao, mas, afinal,
O que Algoritmo?
Algoritmo uma seqncia de passos que visam atingir um
objetivo bem definido.
Apesar de achar este nome estranho, algoritmos so comuns em
nosso cotidiano, como, por exemplo, uma receita de bolo.
Nela est descrita uma srie de ingredientes necessrios, uma
seqncia de diversos passos - aes - a serem cumpridos para
que se consiga fazer determinado tipo de bolo - objetivo bem
definido aguardado ansiosamente por todos.
Para aprimorar nosso conceito de algoritmo, vamos tornar mais
evidente alguns outros conceitos, como, por exemplo, o de ao:
Ao um acontecimento que a partir de um estado inicial,
aps um perodo de tempo finito, produz um estado final previsvel
e bem definido, em que:
Estado a situao atual de dado objeto.
Algoritmo
Outros algoritmos freqentemente encontrados so:
instrues para se utilizar um aparelho eletrodomstico;
uma receita para preparo de algum prato;
guia de preenchimento para declarao do imposto de renda;
a regra para determinao de mximos e mnimos de funes por
derivadas sucessivas;
a maneira como as contas de gua, luz e telefone so calculadas
mensalmente; etc.
So vrios os conceitos para algoritmo. Escolhemos alguns para
serem apresentados aqui:
Um conjunto finito de regras que prov uma seqncia de operaes
para resolver um tipo de problema especfico [KNUTH]
Seqncia ordenada, e no ambgua, de passos que levam soluo
de um dado problema [TREMBLAY]
Processo de clculo, ou de resoluo de um grupo de problemas
semelhantes, em que se estipulam, com generalidade e sem
restries, as regras formais para a obteno do resultado ou da
soluo do problema [AURLIO]
Algoritmo
Portanto, podemos redefinir Algoritmo como:
Algoritmo a descrio de um conjunto de aes que,
obedecidas, resultam numa sucesso finita de passos, atingindo o
objetivo.
Em geral um algoritmo destina-se a resolver um problema: fixa
um padro de comportamento a ser seguido, uma norma de
execuo a ser trilhada, com o objetivo de alcanar a soluo de
um problema.
O que padro de comportamento?
Imagine a seguinte seqncia de nmeros: 1, 6, 11, 16, 21, 26....
Para determinar o stimo elemento da srie, precisamos descobrir
qual a sua regra de formatao, isto , seu padro de
comportamento.
Para tal, observamos que a srie obedece uma constncia; visto
que existe uma diferena constante entre cada elemento, a qual
pode ser facilmente determinada, somos capazes de determinar o
stimo e qualquer outro termo.
Algoritmo
Podemos, ento, descrever uma atividade bem
cotidiana, como, por exemplo, trocar uma lmpada.
Apesar de aparentemente bvias demais, muitas
vezes fazemos esse tipo de atividade
inconscientemente. Sem percebermos seus pequenos
detalhes.
Vejamos se ela fosse descrita passo a passo:
pegue a escada;
posicione-a embaixo da lmpada;
busque uma lmpada nova;
suba na escada;
retire a lmpada velha;
coloque a lmpada nova.
Algoritmo
Algoritmo no
computacional
cujo objetivo
usar um
telefone pblico.
S
E
Q
U

N
C
I
A
L

DESVIO
Incio
1. Tirar o fone do gancho;
2. Ouvir o sinal de linha;
3. Introduzir o carto;
4. Teclar o nmero desejado;
5. Se der o sinal de chamar
5.1 Conversar;
5.2 Desligar;
5.3 Retirar o carto;
6. Seno
6.1 Repetir;
Fim.
Algoritmo
Involuntariamente, j seguimos uma determinada
seqncia de aes que, representadas neste
algoritmo, fazem com que ele seja seguido
naturalmente por pessoas, estabelecendo um padro
de comportamento.
assim tambm com os algoritmos escritos para
computador, voc deve especificar todos os passos,
para que o computador possa chegar ao objetivo.
Algoritmo
Por exemplo:
Dados os nmeros naturais(N)
0, 1, 2, 3, 4, 5, 6, ...

passo 1 faa N igual a zero
passo 2 some 1 a N
passo 3 volte ao passo 2

Soma dos primeiros 100 nmeros naturais:
passo 1 faa N e Soma iguais a zero
passo 2 some 1 a N
passo 3 some N a Soma
passo 4 se N for menor que (100 1)
ento volte ao passo 2
seno pare
Nos dois exemplos acima, o primeiro possui repertrio bem definido
mas no finito, enquanto que o segundo tem um critrio de parada, ou
seja, finito e descreve um padro de comportamento, ou seja, temos
um algoritmo.
Por que precisamos de
algoritmos?
Vejamos o que algumas pessoas importantes, para a Cincia da
Computao, disseram a respeito de algoritmo:
A noo de algoritmo bsica para toda a programao de
computadores. [KNUTH - Professor da Universidade de
Stanford, autor da coleo The art of computer programming]
O conceito central da programao e da cincia da computao
o conceito de algoritmo. [WIRTH - Professor da Universidade
de Zurique, autor de diversos livros na rea e responsvel pela
criao de linguagens de programao como ALGOL, PASCAL e
MODULA -2]
A importncia do algoritmo est no fato de termos que
especificar uma seqncia de passos lgicos para que o
computador possa executar uma tarefa qualquer, pois o mesmo
por si s no tem vontade prpria, faz apenas o que
mandamos.
Com uma ferramenta algortmica, podemos conceber uma
soluo para um dado problema, independendo de uma
linguagem especfica e at mesmo do prprio computador.
Caractersticas
Todo algoritmo deve apresentar algumas
caractersticas bsicas:
ter fim;
no dar margem dupla interpretao (no
ambguo);
capacidade de receber dado(s) de entrada do
mundo exterior;
poder gerar informaes de sada para o mundo
externo ao do ambiente do algoritmo;
ser efetivo (todas as etapas especificadas no
algoritmo devem ser alcanveis em um tempo
finito).
Algoritmo x Qualidade
Todo algoritmo deve ser feito de maneira lgica e
racional, visando principalmente a sua eficincia e
clareza.
Ao construir algoritmos devemos:
1. Saber que estes sero lidos por outras pessoas, permitindo
sua fcil correo.
2. Escrever comentrios na sua elaborao. Devem acrescentar
alguma coisa, no apenas frasear.
3. Sempre atualizar os comentrios, em caso de manuteno. Pior
do que um programa sem comentrios, um programa com
comentrios errados.
4. Use comentrios, tambm, no cabealho do algoritmo, incluindo,
principalmente:
descrio do que faz o algoritmo
autor
data de criao
Algoritmo x Qualidade
5. Os comandos nos dizem o que est sendo feito, os comentrios
dizem o porqu.
6. Utilizar espaos e/ou linhas em branco para melhorar a
legibilidade.
7. Uso de parnteses aumenta a legibilidade e previne erros.
8. Escolha nomes representativos para variveis, todavia evite
nomes muito longos. Ex:
Prefira SalBruto ou SalarioBruto ao invs de SB ou VAR1
Prefira TotAlunosAprovDireta ao invs de
TotalAlunosAprovacaoDireta
9. Destaque as palavras-chave das estruturas de controle e
comandos com sublinhado.
Ex: se media >= 7 ento
...
seno
...
fim-se
Algoritmo x Qualidade
10.Um comando por linha suficiente.
11.Utilize identao, pois mostra a estrutura lgica do algoritmo.
Use identao nos comandos de acordo com o nvel que estejam,
ou seja, alinhe comandos de mesmo nvel e desloque comandos
de nvel inferior. Ex.:
incio
comando 1;
se condicao1 ento
comando2;
comando3;
seno
comando4;
comando5;
fim-se
comando6;
fim
Mtodo para construo de
algoritmos
Ler atentamente o enunciado.
justamente o enunciado do exerccio que fornece o
encaminhamento necessrio resoluo do problema, que se
torna, portanto, dependente de sua completa compreenso.
Retirar do enunciado a relao das entradas de dados.
Retirar do enunciado a relao das sadas de dados.
Determinar o que deve ser feito para transformar as entradas
determinadas nas sadas especficas.
Nesta fase que determinamos a construo de algoritmos
propriamente dito, pois, a partir de alguns requisitos
especificados, devemos determinar qual a seqncia de aes
capaz de transformar um conjunto definido de dados nas
informaes de resultado.
Para isso, podemos:
Utilizar o Mtodo Cartesiano;
Aplicar o Planejamento Reverso;
Montar uma Tabela de Deciso.
Mtodo Cartesiano
Utilizar o Mtodo Cartesiano quando a complexidade (variedade)
no estiver totalmente absorvida, conhecida.
Nosso principal objetivo enquanto programadores vencer a
complexidade, o que mantm clebre a frase de Descartes
Dividir para Conquistar.
Este mtodo consiste justamente em atacar o problema
abrangente dividindo-o em partes menores, a fim de torn-lo mais
simples ou especfico e, se necessrio, dividir novamente as
partes no compreendidas.
Podemos esquematizar o seguinte procedimento (algoritmo) para
o mtodo:
Dividir o problema em suas partes principais.
Analisar a diviso obtida para garantir coerncia.
Se alguma parte no for bem compreendida, aplicar a ela o mtodo.
Analisar o objeto para garantir entendimento e coerncia.
Planejamento Reverso
Processo utilizado que, a partir das
sadas (informaes de resultado).
Procura desagregar, desmontando a
informao, a fim de atingir os dados
de entrada
Quando ento teramos (do fim para o
incio) todas as aes.
Tabelas de Deciso
Utilizar quando uma ou mais aes dependentes de um
conjunto de condies assumirem determinadas
combinaes de valores.
Objetiva basicamente relacionar as aes que dependem de
alguma condio com as prprias condies, a fim de
esclarecer e visualizar facilmente quais valores o conjunto
de condies deve assumir para que se efetue sua
respectiva ao.
Construir o algoritmo.
Executar o algoritmo.
Implica executar todas as aes descritas seguindo o fluxo
de execuo estabelecido, verificando se os resultados
obtidos correspondem ao esperado quando da montagem
do algoritmo, detectando ento algum possvel erro no
desenvolvimento deste.
Essa atividade conhecida por teste de mesa.
Exerccios
1. Um homem precisa atravessar um rio com um barco que possui
capacidade de carregar apenas ele mesmo e mais uma de suas trs
cargas, que so: um lobo, um bode e um mao de alfafa. O que o
homem deve fazer para conseguir atravessar o rio sem perder suas
cargas?
2. Construa um algoritmo que mostre todos os passos que voc segue
para escolher o tipo de roupa com que vai sair, aps levantar,
levando em considerao apenas o tempo (bom, nublado, chuvoso)
e a temperatura (quente, moderado, frio).
3. Elabore um algoritmo que mova trs discos de uma Torre de Hani,
que consiste em trs hastes (a - b - c), uma das quais serve de
suporte para trs discos diferentes (1 - 2 - 3), os menores sobre os
maiores. Pode-se mover um disco de cada vez para qualquer haste,
contanto que nunca seja colocado um disco maior sobre um menor.
O objetivo transferir os trs discos para outra haste.
Exerccios
4. Suponha que voc possua um rob e queira faz-lo trocar
uma lmpada, sendo que o mesmo foi programado para
obedecer aos seguintes comandos:
1. pegue <objeto>
2. pressione <objeto>
3. gire garras 180 no sentido horrio
4. gire garras 180 no sentido anti-horrio
5. mova <objeto> para <lugar>
6. desloque-se para <lugar>
e ainda capaz de:
perceber quando algum comando no pode mais ser executado
sentir alguma fonte de calor
Que ordens voc daria para que seu rob trocasse a lmpada?
Exerccios
5. Trs jesutas e trs canibais precisam atravessar um rio; para
tal, dispem de um barco com capacidade para duas pessoas.
Por medidas de segurana no se permite que em alguma
margem a quantidade de jesutas seja inferior de canibais.
Qual a seqncia de passos que permitiria a travessia com
segurana?
6. Numa determinada noite, acontece uma queda de energia.
Voc sabia que poderia encontrar uma vela na gaveta da
cozinha, um lampio embaixo da cama, fusveis de reserva no
armrio da sala e fsforos na estante da cozinha. Descreva a
seqncia de passos que poderia ser utilizada para
diagnosticar e resolver o problema, que pode ser previsto em
duas possibilidades:
a) o fusvel queimou;
b) a queda na estao da companhia eltrica.
Formas de representao
Algoritmos podem ser representados,
dentre outras maneiras, por:
Descrio narrativa;
Fluxograma;
Linguagem algortmica.

Faz-se uso do portugus para descrever algoritmos.
Exemplo: Receita de Bolo:
Providencie manteiga, ovos, 2 Kg de massa, etc.
Misture os ingredientes
Despeje a mistura na frma de bolo
Leve a frma ao forno
Espere 20 minutos
Retire a frma do forno
Deixe esfriar
Prove
VANTAGENS:
o portugus bastante conhecido por ns;
DESVANTAGENS:
impreciso;
pouca confiabilidade (a impreciso acarreta a desconfiana);
extenso (normalmente, escreve-se muito para dizer pouca coisa).
Descrio narrativa
Fluxograma
Utilizao de smbolos grficos para
representar algoritmos.
No fluxograma existem smbolos
padronizados para incio, entrada de dados,
clculos, sada de dados, fim, etc.

Fluxograma
Exemplo Explicao

Incio do algoritmo

Entrada do nmero

Clculo do dobro do nmero

Apresentao do resultado

Fim do algoritmo
Fluxograma
VANTAGENS:
Uma das ferramentas mais conhecidas;
Figuras dizem muito mais que palavras;
Padro mundial
DESVANTAGENS:
Pouca ateno aos dados, no oferecendo
recursos para descrev-los ou represent-los;
Complica-se medida que o algoritmo cresce.
Linguagem algortmica
Consiste na definio de uma pseudolinguagem de programao, cujos
comandos so em portugus, para representar algoritmos.
Exemplo: Algoritmo CALCULA_DOBRO
NUM, DOBRO: inteiro
incio
Leia NUM
DOBRO 2 * NUM
Escreva DOBRO
fim
VANTAGENS:
Usa o portugus como base;
Pode-se definir quais e como os dados vo estar estruturados;
Passagem quase imediata do algoritmo para uma linguagem de
programao qualquer.
DESVANTAGENS:
Exige a definio de uma linguagem no real para trabalho;
No padronizado.
Um ambiente para escrever
algoritmos
Descreveremos uma mquina hipottica para a qual escreveremos nossos
algoritmos. O nosso computador hipottico apresentar a seguinte
organizao:

Um ambiente para escrever
algoritmos
Cada uma das partes constituintes da figura acima tem os seguintes
significados:
1. Dispositivo de entrada (o teclado):
o meio pelo qual os dados que sero trabalhados pelo algoritmo vo
ser introduzidos em nosso computador hipottico;
2. Unidade Lgica e Aritmtica (ULA):
Parte responsvel pelas operaes matemticas e avaliaes lgicas;
3. Unidade de Controle:
Exerce controle sobre as demais partes do nosso computador. uma
verdadeira gerente que distribui tarefas s outras unidades;
4. Memria:
Guarda o algoritmo a ser executado e os dados a serem utilizados pelo
mesmo. Todo dado fornecido ao computador e o resultado de suas
operaes ficam guardados na memria;
5. Dispositivo de Sada (vdeo e impressora):
o meio que se dispe para apresentao dos resultados obtidos.
Funcionamento do nosso
computador
Todos os computadores, independentemente dos seus tamanhos, so
conceitualmente semelhantes ao esquema da figura anterior.
Resumidamente, podemos afirmar que existem 4 operaes bsicas
que qualquer computador pode executar:
a) operaes de entrada e sada: ler dados do teclado e escrever
dados na tela so exemplos destas operaes. Elas servem para
introduzir dados na memria do nosso computador e exibir dados
que j estejam l armazenados;
b) operaes aritmticas: so utilizadas na realizao de
operaes matemticas (adio, subtrao, multiplicao e
diviso);
c) operaes lgicas e relacionais: tm aplicabilidade em
comparaes, testes de condies lgicas (2>6 ? X=Y ?);
d) movimentao de dados entre os vrios componentes: as
operaes aritmticas so executadas na Unidade Lgica e
Aritmtica, necessitando da transferncia dos dados para essa
unidade e da volta do resultado final para ser guardado na
memria.
Resolvendo um problema
Suponha que queiramos resolver o seguinte
problema: a partir de dois nmeros que sero
informados, calcular a adio dos mesmos.
Se voc fosse encarregado de efetuar essa
tarefa, seria bem provvel que utilizasse os
passos a seguir:
a) saber quais so os nmeros;
b) calcular a soma dos nmeros;
c) responder questo com o valor do
resultado.
Resolvendo um problema
Vejamos como seria resolvido esse mesmo problema
em termos das operaes bsicas citadas
anteriormente:
a) operao de entrada de dados dos nmeros ;
b1) movimento do valor dos nmeros entre a memria
e a ULA;
b2) operao aritmtica de somar os 2 nmeros;
b3) movimentao do resultado da ULA para guardar na
memria;
c) operao de sada do resultado, que est guardado
na memria, para o dispositivo de sada desejado.
Deve-se salientar que os passos b1 e b3,
normalmente, ficam embutidos na operao
matemtica, no sendo explicitados.
Resolvendo um problema
Em resumo, pode-se dizer que escrever algoritmos ou, em
ltima anlise, programar consiste em dividir qualquer problema
em muitos pequenos passos, usando uma ou mais das quatro
operaes bsicas citadas.
Esses passos que compem o algoritmo so denominados de
comandos.
Os comandos de uma linguagem de programao podem estar
mais prximos da mquina (linguagens de baixo nvel) ou serem
mais facilmente entendidos pelo homem (linguagens de alto
nvel).
A seqncia de operaes bsicas, dada anteriormente, para
resolver o problema de adicionar dois nmeros, est em uma
linguagem de baixo nvel para o nosso computador hipottico.
Em uma linguagem de alto nvel teramos um resultado assim:
Leia X,Y
SOMA X + Y
Escreva SOMA
Estruturas chaves da
construo de algoritmos
Existem 3 estruturas bsicas de controle
nas quais se baseiam os algoritmos:
Sequenciao
Deciso ou seleo
Repetio ou iterao

Seqenciao
Os comandos do algoritmo fazem parte de uma seqncia, onde
relevante a ordem na qual se encontram os mesmos, pois
sero executados um de cada vez, estritamente, de acordo com
essa ordem.
De uma forma genrica, poderamos expressar uma seqncia
da seguinte maneira:
Comando-1
Comando-2
Comando-3
:
Comando-n
Tem-se uma seqenciao de n comandos na qual os comandos
sero executados na ordem em que aparecem, isto , o
comando de ordem i+1 s ser executado aps a execuo do
de ordem i (o 3 s ser executado aps o 2).
Todo algoritmo uma seqncia. A seqenciao aplicada
quando a soluo do problema pode ser decomposta em passos
individuais.
Deciso ou Seleo
Essa estrutura tambm conhecida por estrutura condicional.
H a subordinao da execuo de um ou mais comandos
veracidade de uma condio.
Vejamos o funcionamento:
Se <condio>
ento <seq. de comandos-1>
seno <seq. de comandos-2>
Se a <condio> for verdadeira ser executado a <seq. de
comandos-1> e, em caso contrrio, teremos a execuo da
<seq. de comandos-2>.
A deciso deve ser sempre usada quando h a necessidade de
testar alguma condio e em funo da mesma tomar uma atitude.
Em nosso dia-a-dia, estamos sempre tomando decises, vejamos
um exemplo:
Se tiver dinheiro suficiente, ento vou almoar em um bom
restaurante.
Caso contrrio (seno), vou comer um sanduche na lanchonete
da esquina.
Repetio ou Iterao
Essa estrutura tambm conhecida por looping ou lao.
A repetio permite que tarefas individuais sejam repetidas um nmero
determinado de vezes ou tantas vezes quantas uma condio lgica
permita.
Vejamos alguns exemplos:
a) vou atirar pedras na vidraa at quebr-la;
b) baterei cinco pnaltis;
c) enquanto tiver sade e dinheiro, vou desfrutar a vida.
No exemplo (a), vai-se repetir a ao de atirar pedras na janela at
que seja satisfeita a condio de quebrar a janela.
No exemplo (b), haver a repetio da atitude de bater um pnalti um
nmero determinado de vezes (cinco).
No exemplo (c), a condio que me permitir continuar desfrutando a
vida ter dinheiro e sade.
A utilizao combinada dessas 3 estruturas descritas vai permitir
expressar a soluo para uma gama muito grande de problemas.
Todas as linguagens de programao oferecem representantes dessas
estruturas.
Refinamentos sucessivos
Um algoritmo considerado completo se os seus comandos
forem do entendimento do seu destinatrio.
Num algoritmo, um comando que no for do entendimento do
destinatrio ter que ser desdobrado em novos comandos, que
constituiro um refinamento do comando inicial, e assim
sucessivamente, at que os comandos sejam entendidos pelo
destinatrio.
Por exemplo, o algoritmo para calcular a mdia aritmtica de
dois nmeros pode ser escrito da seguinte forma:
Algoritmo CALCULA_MDIA
Incio
Receba os dois nmeros
Calcule a mdia dos dois nmeros
Exiba o resultado
Fim
Refinamentos sucessivos
Podemos desdobrar o comando Calcule a
mdia dos dois nmeros em:
Soma os dois nmeros
Divida o resultado por 2
Aps esse refinamento, o algoritmo pode ser
considerado completo, a menos que o
destinatrio no saiba fazer as operaes de
adio e diviso, ou no seja capaz de
entender diretamente algum comando.
Refinamentos sucessivos
O algoritmo estando completo, podemos
reescrev-lo, inserindo o refinamento na
posio do comando que foi refinado.
Assim sendo, obtm-se:
Algoritmo CALCULA_MDIA
Incio
Receba os dois nmeros
Soma os dois nmeros
Divida o resultado por 2
Exiba o resultado
Fim
Refinamentos sucessivos
Reescrever um algoritmo completo, com os
refinamentos sucessivos inseridos nos seus
devidos lugares, permite ter uma viso global
de como o algoritmo deve ser executado.
medida que o algoritmo passa a ser maior e
mais complexo, esta viso global torna-se
menos clara e, neste caso, um algoritmo
apresentado com os refinamentos sucessivos
separados oferece uma melhor abordagem
para quem precisar entend-lo.

You might also like