Escolar Documentos
Profissional Documentos
Cultura Documentos
1 - Algoritmos, Fluxogramas e Pseudocódigo
1 - Algoritmos, Fluxogramas e Pseudocódigo
1 Trabalho de Laboratrio
O que um Algoritmo?
Um algoritmo um conjunto de passos (ou instrues) bem definido que devem ser executados sequencialmente para levar a cabo uma determinada tarefa. 1. Possui um ponto de entrada (passo inicial) e um ponto de sada (passo final). 2. composto de passos individuais. 3. Cada passo est bem definido, pode ser executado, e o seu resultado previsvel. 4. Existe um sentido lgico para a execuo dos passos (sequncia). Depois de executado um determinado passo, a execuo prossegue no passo seguinte. 5. Tem de existir um nmero finito de passos. 6. Quando executado com um conjunto de dados vlido um algoritmo termina garantidamente produzindo o resultado esperado. Do ponto de vista da forma como decorre o fluxo de execuo num algoritmo (qual a sequncia de execuo dos passos), pode ser demostrado que qualquer algoritmo de computador pode ser construdo com recurso a apenas trs tipos de construes: 1. Sequncia Salvo outra indicao, os passos so executados um a seguir ao outro, de cima para baixo. 2. Deciso - Uma forma de decidir entre a execuo de duas instrues ou dois conjuntos de instrues. 3. Repetio - Uma forma de repetir a execuo de uma dada instruo ou conjunto de instrues. Isto , qualquer mtodo de representao de algoritmos que permita representar as trs noes acima descritas suficiente para representar qualquer tipo de algoritmo. Para alm das construes relacionadas com o controlo da execuo, para que seja possvel representar qualquer algoritmo num computador, o mtodo de representao tem ainda de ser capaz de: 1. Ler e escrever valores. 2. Realizar as 4 operaes aritmticas bsicas 3. Fornecer uma forma de definir quantidades (variveis) capazes de armazenar valores. 4. Permitir a atribuio de valores a variveis. Como evidente existem inmeras maneiras de expressar estes conceitos numa quantidade de linguagens de programao diferentes. E, por outro lado, existem muitas outras coisas que so includas nessas linguagens para as tornar mais teis. No entanto, em termos de conceitos bsicos, os acima indicados so tudo o que precisa saber! Alis, qualquer que seja o mtodo de representao que utilizemos para escrever um algoritmo, caso este se destine a ser implementado com um computador, temos de ter em ateno que o conjunto de operaes elementares que este capaz de realizar bastante restrito e composto por pouco mais do que as operaes acima descritas.
O que um Fluxograma?
Um fluxograma no mais do que uma representao esquemtica de um algoritmo. A figura seguinte ilustra um fluxograma que representa um algoritmo hipottico composto por trs passos. O incio e o fim do algoritmo so representados por ovais, e cada passo da sequncia que constitui o algoritmo representado por um rectngulo. A sequncia pela qual os passos so executados indicada por linhas e setas. 2 Semestre 2006/2007 1/4
1 Trabalho de Laboratrio
Passo 1
Passo 2
Passo 3
Fim
O que o Pseudocdigo?
O pseudocdigo no mais do que uma outra forma de expressar um algoritmo. Enquanto as linguagens de programao o fazem de um modo formal, o pseudocdigo permite faz-lo de um modo mais informal, sem a preocupao de obedecer a um lxico e a uma gramtica rgida. No entanto, apesar desta liberdade, dois programadores distintos devem ser capazes de estar de acordo quanto a um dado algoritmo escrito em pseudocdigo e ser capazes de escrever dois programas funcionalmente equivalentes, mesmo em linguagens de programao distintas. O pseudocdigo pode ser escrito em qualquer linguagem natural (humana) na forma de uma lista ordenada (ou numerada) de passos. O algoritmo acima descrito na forma de um fluxograma pode ser escrito em pseudocdigo como: Incio Passo 1 Passo 2 Passo 3 Fim Onde se admite a conveno habitual nas linguagens naturais de ler de cima para baixo.
V
Aco a executar se condio verdadeira
Condio?
F
Aco a executar se condio falsa
Note que introduzimos uma nova forma, um losango, para representar o local onde se toma a deciso entre dois caminhos de execuo. Note que uma instruo de deciso caracteriza-se por possuir apenas um caminho a entrar e dois a sair. Apenas uma das aces pode ser executada. 2 Semestre 2006/2007 2/4
1 Trabalho de Laboratrio
Condio?
V
Aco a executar se condio verdadeira
Exerccios Exerccio 1
O pseudocdigo seguinte permite calcular as solues para uma equao de segundo grau com coeficientes reais A, B e C. Represente o mesmo algoritmo recorrendo a um fluxograma. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. INCIO Clculo das razes de uma equao de 2 grau SE (B2 4AC < 0) ESCREVER (No h soluo porque B2 4AC < 0) CASO CONTRRIO (isto , se B2 4AC 0) SE (A 0) SE (B2 4AC = 0) x = B/(2A) ESCREVER (Uma soluo: x, porque B2 4AC = 0) CASO CONTRRIO (isto , se B2 4AC > 0) x1 = (B + B2 4AC)/(2A) x2 = (B B2 4AC)/(2A) ESCREVER (Duas solues: x1 e x2) FIM DO SE CASO CONTRRIO (isto , se A = 0) SE (B 0) x = C/B ESCREVER (Apenas uma soluo x, porque A = 0) CASO CONTRRIO (isto , se B = 0) ESCREVER (No h solues porque A = 0 e B = 0) FIM DO SE FIM DO SE FIM DO SE FIM DO ALGORITMO
Note a importncia da indentao como forma de indicar visualmente, por exemplo, que o passo 3, est dependente do SE, e que os passos do 5 ao 21 esto dependentes do CASO CONTRRIO.
Exerccio 2
Vejamos com podemos resolver um problema simples como o seguinte: Enunciado: Calcule a soma dos inteiros positivos entre 1 e N. 2 Semestre 2006/2007 3/4
1 Trabalho de Laboratrio
INCIO
Uma soluo evidente poderia ser a indicada no fluxograma 1. O problema que para cada valor de N, teramos de escrever um algoritmo diferente (repare nas reticncias!). Para N = 5, o algoritmo tem um total de 9 passos, para N = 500, tem 504 passos e para N igual a 5000 tem 5004 passos! Gostaria de fazer esse fluxograma? Uma melhor soluo a representada no fluxograma 2. Escreva esse algoritmo em pseudocdigo. Como curiosidade, e para que perceba a importncia da fase de concepo de um algoritmo, fique a saber que Karl Friedrich Gauss (17771855) descobriu que S pode ser obtido matematicamente recorrendo seguinte equao: S = N (N + 1) / 2. (Consegue descobrir porqu?)
NO
Ler N
I = 1, S = 1
S=1
S=2
S=N
Escrever N
Fluxograma 2
Fim
Fluxograma 1
Exerccio 3
O pseudocdigo seguinte permite calcular P = Kn e deve-se ao matemtico rabe Al-Kashi que o descobriu em 1414. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. INCIO Clculo de P = Kn P = 1 ENQUANTO (N 1 ) SE (N PAR) N = N/2 k = k k CASO CONTRRIO (isto se N impar) N = N - 1 P = P k FIM DO SE FIM ENQUANTO ESCREVER (P) FIM DO ALGORITMO
Seria este o seu algoritmo? Como evidente pode escrever uma soluo semelhante ao fluxograma 2 do exerccio anterior, percorrendo todos os possveis valores de N. Escreva o pseudocdigo e desenhe o fluxograma deste algoritmo. Compare-o com o algoritmo apresentado. Qual mais eficiente? Isto , qual mais rpido (executa menos passos)?
Entrega do trabalho
A entrega do trabalho deve ser feita at s 24:00 da vspera do dia da prxima aula prtica. Os trs exerccios devero ser entregues num documento Word, chamado IPLAB1.doc, no qual tambm colocado o fluxograma pedido. Note que pode fazer os fluxogramas com o programa Visio, mas depois deve fazer Copy&Paste para os colocar no documento Word. O documento deve ser depois anexado a uma mensagem cujo ASSUNTO deve ser IPLAB1 e enviada para o endereo de correio electrnico indicado pelo professor. O corpo da mensagem deve incluir os nomes, os elementos do grupo. Exemplo: Para: Hxxxx@yyyy.ptH Assunto: IPLAB1 Joo Manuel Silva, n123456 - 1T1 Eng. Electrotcnica Francisco Costa Lino, n 454332 - 1P1 Eng. Industrial Turno PL4 2 Semestre 2006/2007 4/4 nmeros, a turma o turno e o curso dos