• Nenhum resultado encontrado

Introdução à Programação 2006/07. Algoritmos

N/A
N/A
Protected

Academic year: 2021

Share "Introdução à Programação 2006/07. Algoritmos"

Copied!
24
0
0

Texto

(1)

Introdução à Programação 2006/07

(2)

Cálculo da média de uma sequência

Algoritmos: Exercício 1

Pretende-se escrever um programa que, dado um

numero indeterminado de números introduzidos pelo

teclado, atéque apareça o número zero como

indicador de paragem, calcule a média dos números

lidos e escreva-a no monitor.

„

a)Efectue a especificação da estrutura de dados e

solução do cálculo da média de uma sequência.

(3)

Introdução à Programação 2006/2007

Especificação

Variável de entrada: Numero (número lido)

Valor numérico real

Variável de saída: Media (média calculada dos números lidos)

Valor numérico real representado com 1 casa decimal

Variáveis internas:

Soma (soma acumulada dos números lidos)

Valor numérico real

N (contador dos números lidos

Valor numérico inteiro positivo ou nulo

(4)

Algoritmo inicial

Nome

:

Cálculo da média de uma sequência de números

{

Leitura de uma sequencia de números e contagem (Soma ↑, N↑)

Se há números para calcular a média

Então 1º calculo da média (Soma ↓, N ↓, Media ↑)

2º Escrita da média

Senão escrita de uma mensagem de erro

(5)

Introdução à Programação 2006/2007

Algoritmo de segundo nível

nome: Cálculo da média de uma sequência de números (Soma ↑, N ↑)

{

Soma=0.0; N = 0; Do {

Output (“introduza um número? “); Input (Numero);

If (Numero != 0.0 {

Soma = Soma + Numero; N = N +1;

}

} while (Numero != 0.0);

}

nome: Cálculo da média (Soma ↓, N ↓, Media ↑)

{

Media = Soma / N }

nome: Escrita da média

{

output (“Média dos números lidos = ”. Media); }

nome: Escrita de uma mensagem de erro

{

output (“Não foi introduzido qualquer número válido”); }

(6)

Algoritmo final

nome: Cálculo da média de uma sequência de números (1ª versão) {

/* Leitura da sequência de números, sua soma e contagem */ Soma=0.0;

N = 0; do {

Output (“introduza um número? “); Input (Numero);

If (Numero != 0.0 {

Soma = Soma + Numero; N = N +1;

}

} while (Numero != 0.0);

if (N > 0) /* foram lidos números? */ { /* Cálculo de média */

Media = Soma / N;

/* Escrita da média */

output (“Média dos números lidos = ”. Media); }

(7)

Introdução à Programação 2006/2007

Segunda versão final do Algoritmo

nome: Cálculo da média de uma sequência de números (2ª versão) {

/* Leitura da sequência de números, sua soma e contagem */ Soma=0.0;

N = 0;

Output (“introduza um número? “(; Input (Numero);

while (Numero != 0.0); {

Soma = Soma + Numero; N = N +1;

Output (“introduza um número? “(; Input (Numero);

}

if (N > 0) /* foram lidos números? */ { /* Cálculo de média */

Media = Soma / N;

/* Escrita da média */

output (“Média dos números lidos = ”, Media); }

else output (“Não foi introduzido qualquer número válido”); }

(8)

Algoritmos: Exercício 2

„

Pretende-se um programa que leia números inteiros

positivos introduzidos pelo teclado, até que apareça

o número zero como indicador de paragem ou até à

leitura de um máximo 50 números, e que determine e

escreva o maior dos números lidos no monitor.

Portanto, pretende-se ignorar eventuais números

negativos que forem introduzidos pelo teclado.

„

a)Efectue a especificação da estrutura de dados e

solução do problema.

(9)

Introdução à Programação 2006/2007

Especificação

Variável de entrada: Numero (número lido)

Valor numérico inteiro positivo

Variável de saída: Maior (maior número lidos)

Valor numérico inteiro positivo

Variável interna: N (contador dos números lidos

(10)

Algoritmo inicial

Nome

:

Cálculo do maior número de uma sequência de números

{

Leitura de uma sequencia de números e contagem (Maior ↑, N↑)

Se foram lidos números

Então escrita do maior número detectado (Maior ↓) Senão escrita de uma mensagem de erro

(11)

Introdução à Programação 2006/2007

Algoritmo de segundo nível

nome: Cálculo do maior número de uma sequência de números (Maior ↑, N ↑)

{

/* Leitura da sequência e detecção do maior número lido sua soma e contagem */

N = 0; Maior = 0; do { do {

Output (“introduza um número positivo? “); Input (Numero);

} while (Numero < 0); If (Numero != 0)

{

N = N + 1

if (Numero > Maior) Maior = Numero; )

} while ((n < 50) and (Numero != 0)); }

nome: escrita do maior número detectado (Maior ↓)

{

output (“Maior dos números lidos = ”. Maior); }

nome: Escrita de uma mensagem de erro

{

output (“Não foi introduzido qualquer número válido”); }

(12)

Algoritmo final – 1ª versão

nome: Cálculo do maior número de uma sequência de números (1ª versão)

{

/* Leitura da sequência e detecção do maior número lido */

N = 0; Maior = 0; do { do {

Output (“introduza um número positivo? “); Input (Numero);

} while (Numero < 0); If (Numero != 0)

{

N = N + 1

if (Numero > Maior) Maior = Numero; )

} while ((n < 50) and (Numero != 0)); If (N > 0) /* foram lidos números? */

(13)

Introdução à Programação 2006/2007

Algoritmo final – 2ª versão

nome: Cálculo do maior número de uma sequência de números (1ª versão)

{

/* Leitura da sequência e detecção do maior número lido */

N = 0; Maior = 0; do { do {

output (“introduza um número positivo? “); input (Numero);

} while (Numero < 0); if (Numero == 0) break;

N = N + 1

if (Numero > Maior) Maior = Numero; )

} while ((n < 50) and (Numero != 0)); If (N > 0) /* foram lidos números? */

output (“Maior dos números lidos = ”, Maior);

else output (“Não foi introduzido qualquer número válido”); }

(14)

Algoritmos: Exercício 3

Possuímos um arquivo com a idade de n pessoas. Queremos

calcular o número de pessoas que tem a idade X. O valor de X é lido na primeira linha do arquivo, precedendo os valores da idade das próximas pessoas.

--- formato do arquivo : 18 21 21 . . . 15 18

(15)

Introdução à Programação 2006/2007

Algoritmos: Exercício 3

ALGORITMO inteiro n, X, qtdePessoas; n = 0; qtdePessoas=0; X =0; INICIO

leia(X); {primeira posição do arquivo - linha 1}

enquanto((leia (n) )== verdadeiro) faça se(X == n) então

qtdePessoas = qtdePessoas +1; fim se

fim enquanto

escreva("A quantidade de pessoas que possuem a mesma idade são ", qtdePessoas);

FIM

(16)

Algoritmos: Exercício 4

„

Elabore um diagrama que apresente ao seu

final o somatório dos valores pares existentes

entre 1 e 500.

(17)

Introdução à Programação 2006/2007

Algoritmos: Exercício 4

„

para este exercício considero o contador cont

começando em 2 ou seja já é o primeiro par... o próximo

par basta somar 2 ao contador...

„

ALGORITMO

inteiro soma, cont; soma = 0;

INICIO

PARA(cont=2 até (cont <= 500), cont = cont + 2) soma = soma + cont;

FIM PARA

escreva("A soma é ", soma); FIM

(18)

Algoritmos: Exercício 4

„

Outra forma de fazer:

ALGORITMO

inteiro soma, cont; soma = 0;

INICIO

enquanto(cont <= 500) faça se ((cont % 2)== 0)então

soma = soma + cont; fim se

fim enquanto

escreva("A soma é ", soma); FIM

(19)

Introdução à Programação 2006/2007

Algoritmos: Exercício 5

„ Escrever um diagrama para gerar e imprimir os N primeiros

termos da série de Fibonacci, cujo comportamento é o seguinte: A partir do terceiro (Inclusive) cada termo é obtido

somando-se os dois antecessores. Inicie com o numero 1 e 1 Serie: (1 1 2 3 5 8 13 21 34...) FORMULA : Fn = F(n-1) + F(n-2) ou seja: F1 = 1 F2 = 1 F3 = F2 + F1 --> F3 = 2 F4 = F3 + F2 --> F4 = 3

(20)

Algoritmos: Exercício 5

ALGORITMO

inteiro n, cont, fib_n, fib_n1, fib_n2;

fib_n = fib_n1 = fib_n2 = n = cont = 0; {inicialização de variaveis NULAS}

INICIO

fib_n1 = 1; {inicio da serie : primeiro termo} escreva(fib_n1); {mostra o termo}

fib_n2 = 1; {inicio da serie : segundo termo} escreva(" - ", fib_n2); {mostra o termo}

cont = 2; {cont começa com dois números contado F1 e F2} escreva("Digite o ultimo termo a encontrar: ");

leia(n); {qtde de termos da série: exemplo n = 6, F6 = 8} enquanto(cont <= n) faça

fib_n = fib_n1 + fib_n2;

escreva(" - ", fib_n); {mostra os termos} fib_n2 = fib_n1; {troca de valores}

fib_n1 = fib_n; cont = cont +1; fim enquanto

(21)

Introdução à Programação 2006/2007

+ Problemas de Algoritmos

„ Pretende-se o algoritmo de um programa que leia um número

inteiro introduzido pelo utilizador e verifique se ele se encontra entre 1 e 10.

„ Pretende-se o algoritmo de um programa que calcule a nota

final da disciplina de Introdução à programação de um aluno, de acordo com as regras definidas na ficha de disciplina.

„ Pretende-se o algoritmo de um programa para jogar o jogo do

advinha. O computador terá que gerar um número aleatório entre 0 e 100, e o utilizador irá tentar adivinhar o número gerado. Sempre que o utilizador introduzir uma tentativa, o programa deverá informar se é maior, menor ou igual ao

número gerado. Quando o utilizador adivinhar, o programa deve informar do número de tentativas efectuadas.

„ Pretende-se um programa para descobrir um número entre 0 e

(22)

Algoritmo do jogo para acertar num

número pensado por um colega.

„

Dividir a turma a meio e cada metade tenta

resolver uma das partes do jogo.

„

Metade da turma pensa no problema do ponto

de vista de quem vai escolher um número e

responde às perguntas de um utilizador que

tenta acertar no número escolhido.

„

A outra metade pensa no algoritmo para

tentar acertar num número entre 1 e 100.

„

No final alteramos as duas soluções para

(23)

Introdução à Programação 2006/2007

Algoritmo

gerar um número aleatório n, entre 1 e 100 inicializar o numero de tentativas com 0

enquanto tentativas < 10 ou ainda não acertou fazer pedir ao utilizador para digitar um outro número ler o novo número x

se x = n o utilizador acertou senão

se n>x

informar que o número procurado é maior

senão informar que o número procurado é menor acrescentar o número de tentativas

fim_enquanto

se acertou informar que acertou caso contrário revelar o número procurado

(24)

programa adivinha

var n,tentativa,x : integer; acertou : boolean; r : real; begin r:=random; x:=round(r*100); tentativa:=0; acertou:=false;

while(not acertou) and (tentativa<10)do write(“digite um número entre 0 e 100”); read(n);

if(n=x) acertou:=true else

if(x>n) write(“o número é maior que “,n) else write('o número é menor que ', n); tentativa:=tentativa+1;

Referências

Documentos relacionados

condição – expressão cujo valor resultante é booleano estrutura condicional – estrutura de desvio do fluxo de controle que executa diferentes comandos de acordo com uma

Funcional Lógico Estruturado.

O rosto deve ser olhado, contemplado, porque só assim temos acesso ao conhecimento do outro: a singularidade do rosto, a possível presença nele de traços do seu parentesco,

Neste exemplo, para além do atributo border=0 (que especifica que não se pretende a bordadura que é colocada, por defeito, pelo HTML), constate-se uma outra possibilidade que é

Apesar de esta prática já existir em diversos países europeus desde as primeiras décadas do século XX (principalmente, em França, Bélgica e Holanda), Portugal apenas viria a

Suponha que tem de desenvolver um programa mapeamento das cadeias de transmissão do vírus Covid-19. Para cada pessoa que tenha teste positivo, é necessário registar sobre

Os tipos de documento mais apropriados para micro-republicação são: (1) livros e revistas esgotadas, especialmente impor- tante não somente para substituir coleções em tamanho

Finalmente, no que concerne ao uso de canábis medicinal em doentes com perturbações do sono associadas a dor crónica, a esclerose múltipla, a fibromialgia e a infeção por VIH