Você está na página 1de 4

C1105 - Introduo Programao em C

1 Trabalho de Laboratrio

Algoritmos, Fluxogramas e Pseudo-Cdigo


Objectivo
O objectivo deste trabalho introduzir a noo de algoritmo, bem como duas formas alternativas que podem ser utilizadas para a sua representao.

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

C1105 - Introduo Programao em C


Incio

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.

Controlo da Execuo - Decises


Uma instruo de deciso, tambm designada por instruo condicional ou instruo de seleco, permite tomar uma deciso quanto ao fluxo de execuo entre dois (ou mais) caminhos de execuo distintos, dependendo da resposta a uma pergunta (condio) que colocada. Em pseudocdigo pode ser representada da seguinte forma: Se (condio for verdadeira) <aco a executar se condio verdadeira> Caso Contrrio < aco a executar se condio falsa> Fim Se Podemos, evidentemente fazer o mesmo com um fluxograma:

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

C1105 - Introduo Programao em C

1 Trabalho de Laboratrio

Controlo da Execuo - Repeties


O ingrediente final necessrio a capacidade para realizar a repetio de uma ou vrias instrues. A repetio pode ser por um determinado nmero de vezes ou enquanto uma determinada condio for verdadeira (p.e.: Enquanto houver degraus, subir.). Por uma questo de generalidade vamos considerar esta ltima. Em pseudocdigo pode ser representada da seguinte forma: Enquanto (condio verdadeira) <aco se condio verdadeira> Fim Enquanto Com recurso a um fluxograma teremos:

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

C1105 - Introduo Programao em C


Incio

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

SIM Escrever S FIM

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

Você também pode gostar