• 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

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

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 é

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

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

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,

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