Vous êtes sur la page 1sur 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. Importncia do algortmo

1.2

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

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

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: 1.4.2 impreciso; pouca confiabilidade (a impreciso acarreta a desconfiana); extenso (normalmente, escreve-se muito para dizer pouca coisa). 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

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 representlos; 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

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 X<0 Imprimir msg: Raiz Impossvel em R

No

Y = raiz(x)

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

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

Condies

Sim

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:

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

No

Sim Instrues

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

I = 1, 30 1 Sim Ler Nota1, Nota2

No

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

Vous aimerez peut-être aussi