Você está na página 1de 17

Fundamentos de Informtica Algortmos de Programao

Bibliografia

Alves, R. 2003. Fluxogramas, PP 1-7.

1. Algortmos de programao

1.1 Definio de Algortmo

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. Alm disto preciso definir como os dados que sero
processados sero armazenados no computador. Portanto, a soluo de um problema por
computador baseada em dois pontos: a sequncia de passos; e a forma como os dados
sero armazenados no computador.

A palavra algoritmo, primeira vista, parece-nos estranha. Embora possua designao


desconhecida, fazemos uso constantemente de algoritmos em nosso quotidiano: a maneira
como uma pessoa toma banho um algoritmo. Outros algoritmos frequentemente
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 fornece uma sequncia de operaes para


resolver um problema especfico.
um conjunto de instrues ou comandos que, quando executados , levam a um
conjunto finito de aces.
um conjunto ordenado de instrues que quando seguidas desempenham uma
tarefa especifica.
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.

1.2 Importncia do algortmo

A noo de algoritmo bsica para toda a programao de computadores;


O conceito central da programao e da cincia da computao o conceito de algoritmo;

Grupo da Disciplina 1
Fundamentos de Informtica Algortmos de Programao

A importncia do algoritmo est no facto 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, independentemente de uma
linguagem especfica e at mesmo do prprio computador.

1.3 Caractersticas

Um algoritmo tem cinco caractersticas importantes:

Finitude: Um algoritmo deve sempre terminar aps um nmero finito de passos ou seja, um
algortmo deve ter fim;

Definio: Cada passo de um algoritmo deve ser precisamente definido. As aes devem ser
definidas rigorosamente e sem ambiguidades, isto , no dar margem dupla interpretao
(no ambguo);

Entradas: Um algoritmo deve ter zero ou mais entradas, isto quantidades que so lhe so
fornecidas antes do algoritmo iniciar. Um algortmo deve ter capacidade de receber dado(s)
de entrada do mundo exterior;

Sadas: Um algoritmo deve ter uma ou mais sadas, isto quantidades que tem uma relao
especfica com as entradas. Este, deve gerar informao de sada para o mundo externo ao
do ambiente do algortmo.

Efetividade: Um algoritmo deve ser efetivo (todas as etapas especificadas no algortmo


devem ser alcanadas em um tempo finito). 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 humano usando papel e lpis.

1.4 FORMAS DE REPRESENTAO

claro que todos ns sabemos construir algoritmos. Se isto no fosse verdade, no


conseguiramos sair de casa pela manh, ir ao trabalho, decidir qual o melhor caminho para
chegar a um lugar, voltar para casa, etc. Para que tudo isto seja feito necessrio uma srie
de entradas do tipo: a que hora acordar, que hora sair de casa, qual o melhor meio de
transporte, etc.

Um factor importante que pode haver mais de um algoritmo para resolver um determinado
problema. Por exemplo, para ir de casa at o trabalho, posso escolher diversos meios de
transporte em funo do preo, conforto, rapidez, etc. A escolha ser feita em funo do
critrio que melhor se adequar as nossas necessidades.

As formas mais comuns de representao dos algortmos so as seguintes:

1.4.1 Linguagem natural ou Descrio narrativa

Os algoritmos so expressos directamente em linguagem natural.

Grupo da Disciplina 2
Fundamentos de Informtica Algortmos de Programao

EXEMPLO1:
Algortmo para preparar Bolo:
Providencie manteiga, ovos, farinha, 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

EXEMPLO2:
Para ilustrar mais um conceito importante de algoritmos vamos analisar mais um exemplo,
considerando o problema de calcular a rea de uma mesa retangular. Este clculo pode ser
efetuado se seguirmos os seguintes passos:

Clculo da rea de uma mesa.


Medir a largura da mesa e anotar o resultado.
Medir o comprimento da mesa e anotar o resultado.
Multiplicar o comprimento pela largura e anotar o resultado.
O valor da rea da mesa o resultado anotado no passo anterior.
Fim do clculo da rea da mesa.

EXEMPLO3:
Vamos agora considerar um exemplo um pouco mais matemtico e estudar o algoritmo para
calcular as razes de uma equao do segundo grau da forma ax2+bx+c=0

As razes podem ser calculadas pelas frmulas

x1=[-b+(b2-4ac)(1/2)]/(2a)

x2=[-b-(b2-4ac)(1/2)]/(2a)

Aparentemente o algoritmo se reduziria ao clculo da frmula, no entanto ao detalharmos as


aces devemos prever tudo que pode acontecer durante o clculo desta frmula. Por
exemplo o que fazer se o valor do coeficiente a for igual a zero? Um possvel algoritmo o
seguinte:

Algoritmo para clculo de uma equao do segundo grau.


Obter os coeficientes a, b e c
Se o coeficiente a for igual a zero informar que esta no uma equao do segundo
grau e terminar o algoritmo.
Caso contrrio continue e faa
o Calcular delta=b2-4ac

Grupo da Disciplina 3
Fundamentos de Informtica Algortmos de Programao

o Se o valor de delta for negativo informar que a equao no tem raizes reais e
terminar o algoritmo.
Caso contrrio continue e faa
o Calcular a raiz quadrada de delta e guardar o resultado como raiz
o Calcular x1=(-b + raiz)/(2a)
o Calcular x2=(-b - raiz)/(2a)
o Fornecer como resultado x1 e x2
o Terminar o algoritmo.
Fim do algoritmo para clculo de uma equao do segundo grau.

Neste algoritmo em diversos pontos tivemos de tomar decises e indicar o que fazer em
cada uma das possibilidades, mesmo que seja mostrar que no podemos continuar o
algoritmo. Toda vez que decises tiverem de ser tomadas devemos incluir todas as
possibilidades para o evento que estamos considerando.

Este um dos possveis algoritmos por diversas razes. Por exemplo, poderamos incluir no
algoritmo o clculo das razes imaginrias ou no caso do coeficiente a ser igual a zero calcular
como se fosse uma equao do primeiro grau.

VANTAGENS:

Uso da lingua portuguesa para descrever o algortmo usando a descrio natural e, o


portugus bastante conhecido por ns;

DESVANTAGENS:

impreciso;
pouca confiabilidade (a impreciso acarreta a desconfiana);
extenso (normalmente, escreve-se muito para dizer pouca coisa).

1.4.2 Fluxograma

Esta um representao grfica que emprega formas geomtricas padronizadas para indicar
as diversas aces e decises que devem ser executadas para resolver o problema. No
fluxograma existem smbolos padronizados para incio, entrada de dados, clculos, sada de
dados, fim, etc.

Clculo Deciso Entrada Sada Incio/Fim Sequenciao


entre 2
instrues

Exemplo:

Grupo da Disciplina 4
Fundamentos de Informtica Algortmos de Programao

Incio

Ler NUM

Dobro = Num * 2

Dobro

Fim

Explicao do Fluxograma acima:


Incio do algoritmo
Introduzir o nmero
Clculo do dobro do nmero
Apresentao do resultado (Imprimir o resultado)
Fim do algortmo

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.

EXEMPLO2:
Outro exemplo de um algoritmo descrito por meio de fluxogramas o problema de calcular
a soluo da equao de primeiro grau.

Grupo da Disciplina 5
Fundamentos de Informtica Algortmos de Programao

ax+b=0
x=-(b/a)

se a for diferente de zero. A Figura abaixo mostra um possvel algoritmo para resolver este
problema.

Incio

Ler a

Ler b

a=0

No h raizes reais X=-(b/a)

Imprimir X

Fim

1.4.3 Linguagem algortma ou Pseudo-cdigos/ Pseudo-linguagem

Consiste na definio de uma pseudolinguagem de programao, cujos comandos so em


portugus, para representar algoritmos. Emprega uma linguagem intermediria entre a
linguagem natural e uma linguagem de programao para descrever os algoritmos.

Este modo de representar algoritmos procura empregar uma linguagem que esteja o mais
prximo possvel de uma linguagem de programao de computadores de alto nvel mas
evitando de definir regras de construo gramatical muito rgidas. A idia usar as vantagens
do emprego da linguagem natural, mas restringindo o escopo da linguagem. Normalmente
estas linguagens so verses ultra reduzidas de linguagens de alto nvel do tipo Pascal ou C.

Um exemplo simples da forma geral de um algoritmo o seguinte:

principal ()
incio
imprimir "Alo mundo."

Grupo da Disciplina 6
Fundamentos de Informtica Algortmos de Programao

fim

O algoritmo comea com a funo principal que a funo obrigatria em todos os


algoritmos. Os parnteses aps o nome primcipal so normalmente usados para delimitar a
lista de argumentos, tambm chamados parmetros que a funo ir receber para executar a
sua tarefa. Neste caso a funo no est recebendo nenhum parmetro. Esta algoritmo
executa um nico comando que imprime o texto "Alo mundo" em um dispositivo qualquer
de sada de dados.

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.

1.5 ESTRUTURAS CHAVES DA CONSTRUO DE ALGORITMOS

Existem 3 estruturas bsicas de controle nas quais se baseiam os algoritmos: sequenciao,


deciso e repetio.

1.5.1 SEQUENCIAO

Os comandos do algoritmo fazem parte de uma sequncia, 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
:

Grupo da Disciplina 7
Fundamentos de Informtica Algortmos de Programao

Comando-n

Tem-se uma sequenciao 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 sequncia. A sequenciao aplicada quando a soluo do problema


pode ser decomposta em passos individuais.

Exemplo: Faa um fluxograma para somar dois nmeros

Inicio

Ler A, B

Soma = A + B

Imprimir Soma

Fim

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

Grupo da Disciplina 8
Fundamentos de Informtica Algortmos de Programao

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 Hamburguer na lanchonete da esquina.

Exemplo: Faa um fluxograma para o clculo de raiz quadrada de um nmero X.

Inicio

Ler X

Sim No
X<0

Imprimir msg: Y = raiz(x)


Raiz Impossvel
em R

Imprimir Y

Fim

Estrutura de deciso do tipo SElECO

Este tipo de estrutura uma generalizao da estrutura Se, onde a condio avaliada conduz
a no mximo duas possibilidades de aces. Na estrutura de deciso do tipo Seleco podem

Grupo da Disciplina 9
Fundamentos de Informtica Algortmos de Programao

existir uma ou mais possibilidades de aces a serem tomadas. A Figura abaixo mostra a
sintaxe em fluxograma para a estrutura Seleco.

A sintaxe de uma estrutura condicional do tipo Seleco (Escolha) em portugus estruturado


:

1.5.3 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 no vidro at quebr-lo;


b) baterei cinco pnaltis;
c) enquanto tiver sade e dinheiro, vou desfrutar a vida.

No exemplo (a), vai-se repetir a aco 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.

Grupo da Disciplina 10
Fundamentos de Informtica Algortmos de Programao

A utilizao combinada dessas 3 estruturas descritas vai permitir expressar, usando qualquer
que seja a ferramenta, a soluo para uma gama muito grande de problemas. Todas as
linguagens de programao oferecem representantes dessas estruturas.

Para representar estruturas cclicas em fluxogramas, h que ter em ateno que uma
repetio ou um ciclo de instrues no mais do que uma condio se ( IF ), conjugada
com um retrocesso na execuo do programa.

Exemplo: Faa um fluxograma para somar todos os nmeros inteiros desde 1 at 10.

1.5.3.1 While ... Do (Enquanto ... Faa)

Sua semntica a seguinte: ao inicio estrutura de repetio Enquanto a condio testada.


Se o resultado do teste for falso, ento as instrues no seu interior no sero executadas e a
execuo prossegue normalmente pela instruo seguinte ao Fim Enquanto.

Aqui, a condio de continuidade testada logo no incio, podendo dar-se o caso de o ciclo
no chegar a ser executado se a condio for falsa logo partida.

Se a condio for verdadeira, as intrues sero executadas e ao seu trmino retorna-se ao


teste da condio. Assim, o processo acima ser repetido enquanto a condio testada for
verdadeira.

Grupo da Disciplina 11
Fundamentos de Informtica Algortmos de Programao

Incio
I=1
Soma = 0;

Enquanto I <= 10 fazer


Soma = soma + i;
I = I + 1;
Fim enquanto
Imprimir soma;

Fim

1.5.3.2 Repeat ... Until (Repita ... At)

Seu funcionamento bastante pareido ao da construo Enquanto, mas as instrues


contidas no interior do lao sero executadas pelo menis uma vez. Em seguida a condio
testada, caso ela seja falsa, as intrues sero executadas novamente. Este processo
repetido at que a condio seja verdadeira, ento a execuo prossegue pela instruo
imediatamente posterior ao final da estrutura.

Grupo da Disciplina 12
Fundamentos de Informtica Algortmos de Programao

Aqui, as instrues do ciclo so executadas pelo menos uma vez, e a condio de


continuidade testada no final.

Inicializar o
contador

Instrues

Actualizar o
contador

No Sim
Condies

Incio
I=1
Soma = 0;

repetir
Soma = soma + i
I = I + 1;
at i > 10;
Imprimir soma;

Fim

1.5.3.3 For ... Do (Para ... Faa)

Grupo da Disciplina 13
Fundamentos de Informtica Algortmos de Programao

Este tipo de estrutura til quando se conhece previamente o nmero de vezes que se deseja
executar um determinado conjunto de comandos. Ento, este tipo de lao nada mais que
uma estrutura dotada de mecanismos para contar o nmero de vezes que o corpo do lao
executado. A sintaxe usada a seguinte:

No
<Var> = <Ini>, <Fim>
<Inc>

Sim

Instrues

Exemplo: Calcule a mdia aritmtica entre duas notas para trinta alunos de uma sala.

Inicio

No
I = 1, 30
1

Sim

Ler Nota1, Nota2

Media = (Nota1 + Nota2)/2

Imprimir Media

Fim

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

Grupo da Disciplina 14
Fundamentos de Informtica Algortmos de Programao

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

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

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.

Grupo da Disciplina 15
Fundamentos de Informtica Algortmos de Programao

Exerccios de Aplicao

Parte I

1. Defina, com suas palavras, o que algortmo.

2. Cite alguns algortmos que podemos encontrar na vida quotidiana.

3. De acordo com seu entendimento, qual a caracterstica mais importante em um


algortmo? Justifique a sua resposta.

4. Suponha que temos um rob a nossa disposio. Esse rob chama-se MANNY e precisa
ser ensinado a fazer determinadas tarefas. Para ensinar o MANNY, vamos fazer uso do
portugus para passar lhe as instrues necessrias execuo de cada actividade.
Escreva os passos necessrios para o nosso rob executar:
a) Encher uma bacia com gua;
b) Trocar uma lmpada no tecto de sua casa;
c) Trocar o pneu de um carro;
d) Calcular a mdia de um aluno com 3 notas.

5. Cite as formas bsicas para se representar algortmos, definindo-as.

6. Em sua opinio, qual a melhor forma de representar algortmos? Justifique a sua


resposta.

7. Quais as estruturas bsicas de controle dos algoritmos? Explique cada uma delas.

8. Escreva um algortmo para multiplicar dois nmeros.

9. comum ouvirmos programadores experientes afirmarem:


algortmos ... aprendi e nunca usei na prtica ... no vejo necessidade ....
Discuta esse tipo de afirmativa

10. Escreva um algortmo que leia 3 nmeros e imprima o maior deles.

11. Escreva um algotmo que leia 3 nmeros e os imprima em ordem crescente.

12. Faa um algotmo capaz de somar todos os nmeros inteiros compreendidos entre 1 e
10, e mostrar o resultado da soma.

13. Escreva um algortmo para calcular, dados trs nmeros inteiros, a soma dos dois
nmeros maiores.

14. Escreva um algortmo para, dado um nmero N, calcular a soma de todos os nmeros
positivos pares, inferiores ou iguais a esse nmero N.

Grupo da Disciplina 16
Fundamentos de Informtica Algortmos de Programao

15. Escreva um algortmo para, dado um nmero N (entre 1 e 10), apresentar a tabuada dos
N. Exemplo: para N=5 dever apresentar: 1x5=5, 2x5=10, 3x5=15, 4x5=20, 5x5=25,
6x5=30, 7x5=35, 8x5=40, 9x5=45, 10x5=50.

16. Escreva um algortmo para calcular o factorial de um nmero.


a) Utilizando unicamente as instrues mnimas do pseudocdigo;
b) Utilizando a instruo: Repita ... AtQue ...;
c) Utilizando a instruo: Enquanto ... Faa ...;
d) Utilizando a instruo: Para ... = ... At ... Faa ...;

17. Escreva um algortmo que dado um nmero inteiro e determine se ele ou no um


nemro primo (um nmero primo aquele que s divisvel por 1 e por ele prprio).

18. Escreve um algoritmo que aceite um nmero inteiro e que determine todos os nmeros
primos iguais ou inferiores a esse nmero.

19. Escreva um algortmo que converta um nmero decimal para a sua representao em
sistema binrio.

20. Escreva um algortmo que converta um nmero decimal para a sua representao numa
outra base qualquer.

21. Escreva um algortmo que converta um nmero representado numa qualquer base, para
a sua representao na base decimal.

22. Escreva um algortmo que receba como entrada uma sequncia desordenada de nmeros
(num(1), num(2), ... num(n)) e que verifique se um determinado nmero (m) se encontra
nessa sequncia.

Grupo da Disciplina 17

Você também pode gostar