Você está na página 1de 5

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 resolver um determinado problema. 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 que permita representar as trs noes acima descritas suficiente para representar qualquer tipo de algoritmo. que seja possvel representar qualquer algoritmo num computador, o mtodo de representao tem ainda de permitir: 1. Ler e escrever valores (fornecer dados e receber resultados do algoritmo); 2. Realizar as 4 operaes aritmticas bsicas; 3. Fornecer uma forma de armazenar quantidades (tambm designadas por variveis). 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 caractersticas que so includas nessas linguagens para as tornar mais teis.

Para alm das construes acima referidas, relacionadas com o controlo da execuo, para

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 grfica de um algoritmo. A figura seguinte ilustra um fluxograma que representa um algoritmo hipottico composto por trs passos. 1 Semestre 2009/2010 Carlos Limo 1/5

C1105 - Introduo Programao em C

1 Trabalho de Laboratrio

O incio e o fim do algoritmo so representados por rectngulos com os cantos arredondados, 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.

Incio Passo 1 Passo 2 Passo 3 Fim


No mbito desta cadeira todos os fluxogramas que iremos utilizar utilizaro apenas os seguintes smbolos com o significado indicado: Terminador Aco Interaco Deciso

O que o Pseudocdigo?
Enquanto as linguagens de programao permitem expressar um algoritmo 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. 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: 1. Incio 2. Passo 1 3. Passo 2 4. Passo 3 5. 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 seleccionar uma de entre duas aces possveis a executar seguidamente, isto , entre dois caminhos de execuo distintos, dependendo de uma condio (a resposta a uma pergunta) que avaliada.

Em pseudocdigo, uma instruo de deciso pode ser representada da seguinte forma:


Se (condio) <aco a executar se condio verdadeira> Caso Contrrio < aco a executar se condio falsa> Fim Se

Podemos, evidentemente, representar a mesma instruo com recurso a um fluxograma:


1 Semestre 2009/2010 Carlos Limo 2/5

C1105 - Introduo Programao em C

1 Trabalho de Laboratrio

Condio ?

Aco a executar se a condio for verdadeira

Aco a executar se a condio for 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.

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: Com recurso a um fluxograma teremos:

Enquanto (condio for verdadeira) <aco a executar se condio verdadeira> Fim Enquanto

Condio ? S

Aco a executar enquanto a condio for verdadeira

Exerccios Exerccio 1 Sequncia


Escreva o pseudocdigo de um algoritmo para calcular a rea de um crculo. Deve incluir todos os passos necessrios para obter os dados e fornecer os resultados ao utilizador. Nota: Recorde que a rea de um crculo vale x r2 Vejamos uma possvel forma de abordar o problema: Dados Iniciais: necessrio pedir ao utilizador um valor para a medida do raio, ou do dimetro, da circunferncia. Primeira Abordagem Descrio em Linguagem Natural 1 Semestre 2009/2010 Carlos Limo 3/5

C1105 - Introduo Programao em C

1 Trabalho de Laboratrio

Antes de mais necessitamos pedir ao utilizador o valor do raio (ou do dimetro) da circunferncia. Em seguida temos de ler o valor fornecido. Depois podemos calcular o valor da rea como sendo 3,14159 x Valor do Raio x Valor do Raio. Por fim temos de mostrar o valor calculado ao utilizador Segunda Abordagem Aproveitar apenas o essencial 1. 2. 3. 4. Pedir ao utilizador o valor do raio do crculo Ler o valor fornecido pelo utilizador para uma varivel raio Fazer uma varivel rea = 3,14159 x raio x raio Mostrar o valor da rea ao utilizador

Terceira Abordagem Pseudocdigo 1. INCIO Clculo da rea de um Crculo 2. ESCREVER Introduza o raio do crculo: 3. LER Raio 4. FAZER rea = 3,14159 x Raio x Raio 5. ESCREVER A rea do seu crculo , seguido do valor de rea 6. FIM DO ALGORITMO

Desenhe um fluxograma do algoritmo acima descrito.


Exerccio 2 Deciso
Escreva o pseudocdigo de um algoritmo que indique ao utilizador se um determinado nmero inteiro no nulo positivo ou negativo. Dados Iniciais: necessrio pedir ao utilizador um valor inteiro para o podermos avaliar. Primeira Abordagem Descrio em Linguagem Natural Antes de mais necessitamos pedir ao utilizador um inteiro. Em seguida temos de ler o inteiro fornecido. Se o inteiro for maior do que zero, dizemos ao utilizador que o nmero positivo, caso contrrio dizemos ao utilizador que o nmero negativo. Segunda Abordagem Aproveitar apenas o essencial 1. 2. 3. 4. Pedir ao utilizador um inteiro Ler o valor fornecido pelo utilizador para uma varivel chamada nmero Se o valor de nmero for maior que zero dizer ao utilizador que positivo Se o valor de nmero for menor que zero dizer ao utilizador que negativo

Terceira Abordagem Pseudocdigo 1. INCIO Nmero positivo ou negativo 2. ESCREVER Introduza um inteiro no nulo: 3. LER Nmero 4. SE (Nmero > 0) 5. ESCREVER O nmero positivo 6. CASO CONTRRIO 7. ESCREVER O nmero negativo 8. FIM DO SE 13. FIM DO ALGORITMO

Desenhe um fluxograma do algoritmo acima descrito. O que teria de fazer para detectar tambm as situaes em que o valor fornecido nulo?

1 Semestre 2009/2010

Carlos Limo

4/5

C1105 - Introduo Programao em C

1 Trabalho de Laboratrio

Exerccio 3 - Repetio
O pseudocdigo seguinte permite calcular P = Kn e descreve um algoritmo devido ao matemtico rabe Al-K a s h i 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 N = N - 1 P = P k FIM DO SE FIM ENQUANTO ESCREVER (P) FIM DO ALGORITMO

Desenhe um fluxograma deste algoritmo. Construa uma tabela que mostre em cada linha os valores de P, K e N. Na primeira linha os
valores iniciais, e na ltima os valores finais.

Entrega do trabalho
A entrega do trabalho deve ser feita at s 24:00 da vspera do dia da 1 aula prtica da semana seguinte aquela em que o trabalho realizado. Os trs exerccios devero ser entregues num documento PDF, chamado IPLAB1.PDF. Note que pode fazer os fluxogramas com o programa Word. Existe uma pgina no site da cadeira que explica como pode faz-lo. O documento deve ser depois anexado a uma mensagem cujo ASSUNTO deve ser IPLAB1 e enviada para o endereo que lhe foi fornecido no incio do semestre. O corpo da mensagem deve incluir os nomes, os nmeros, a turma e o curso dos elementos do grupo. Exemplo: Para: xyz@mail.pt Assunto: IPLAB1 Joo Manuel Silva, n123456 - 1T1 Eng. Electrotcnica Francisco Costa Lino, n 454332 - 1P1 Eng. Industrial Turma EED teste.cpp

1 Semestre 2009/2010

Carlos Limo

5/5