Ficha de Trabalho nº 4 - Soluções Propostas
1 - Escreva um programa em Pascal que leia um número inteiro positivo N e calcule o maior número par P tal que a soma
de todos os números pares inferiores a P seja inferior a N. Por exemplo, se o valor dado N for 57 então o resultado será P=14 porque 2 + 4 + 6 + 8 + 10 + 12 + 14 = 56.
program somaPares(input, output); { objectivo: utilização do while; inicialização de variáveis} var numero, par, soma: integer; begin soma := 0; par := 0; write('Introduza um número inteiro positivo: '); readln(numero); while soma < numero do begin par := par + 2; soma := soma + par; end; writeln('O Valor de P é ', par - 2); readln; end.
2 - Modifique o programa anterior por forma a verificar se N é positivo. N deve ser pedido ao utilizador até que o
utilizador escreva um número superior a zero.
program somaPares2(input, output); {objectivo: utilização do while; inicialização de variáveis.} var numero, par, soma: integer; begin soma := 0; par := 0; repeat write('Introduza um número inteiro positivo: '); readln(numero); until numero > 0; while soma < numero do begin par := par + 2; soma := soma + par; end; writeln('O Valor de P é ', par - 2); readln; end.
3 - Escreva um programa em Pascal que leia um número inteiro positivo (integer) e inverta a ordem dos seus dígitos. Por
exemplo, se o número dado pelo utilizador for 3454 o resultado deve ser 4543 (Sugestão: retire o dígito da direita do número através de sucessivas divisões por 10. Tenha em atenção os casos em que o número acabe em 0, isto é, se o número dado for 4300 o resultado deve ser 34).
var numero, digito: integer; begin repeat write('Introduza um número inteiro positivo: '); readln(numero); {atenção: valor máximo=maxint=32767 } until (numero > 0); inverso := 0; while numero <> 0 do begin digito := numero mod 10; numero := numero div 10; inverso := inverso * 10 + digito; end; write(‘O número invertido é ’, inverso); readln; end.
4 - Escreva um programa em Pascal que escreva os N primeiros termos da série de Fibonacci. O valor N é pedido ao
utilizador e deve ser positivo. A séries de Fibonacci é definida do seguinte modo:
F(1) = 1 F(2) = 1 F(i+2) = F(i+1) + F(i)
program fibonacci(input, output); {objectivo: while; repeat; variáveis temporárias;} var n, termo, i: integer; termo_ant,
termo_ant_ant: integer; { termo_ant_ant -> F(i-2) } begin writeln('Escreva um número inteiro positivo.'); repeat write('-> '); readln(n); if n <= 0 then writeln('O número deve ser positivo.') until n > 0; writeln(1); { n >= 1 sempre } termo_ant_ant := 1;
if n >= 2 then begin writeln(1); { F(2) = 1 } termo_ant := 1; { termo_ant = F(2) } end; i := 2;
while i < n do begin termo := termo_ant + termo_ant_ant; writeln(termo); termo_ant_ant := termo_ant; termo_ant := termo; i := i + 1; end; readln;
5 - Escreva um programa em Pascal que escreva a tabela de multiplicações 10x10.
program tabuada(input, output); { objectivo: while ou repeat aninhados; } var i, j: integer; begin j:=1; repeat i := 1; repeat write(i*j:5); i := i + 1; until i > 10; writeln; j := j + 1; until j > 10; readln; end.
6 - Escreva um programa em Pascal que implemente o jogo do palpite. Um utilizador introduz um número inteiro entre 0 e
100 (o programa deve obrigar a que seja um número dentro destes limites) e um segundo utilizador tenta adivinhar esse número. O programa deve indicar se o número dado no palpite é superior ou inferior ao número a adivinhar.
program jogoPalpite(input, output); { objectivo: while; repeat; condições múltiplas para terminação de ciclo; variável de guarda (certo).} uses crt; var numero, palpite: integer; certo: boolean; begin repeat write('Jogador 1: introduza um valor entre 0 e 100: '); readln(numero); until (numero >= 0) and (numero <= 100); clrscr; certo := false; { inicialização da variável de guarda } writeln('Jogador 2: '); repeat write('Qual o seu palpite? '); readln(palpite); if palpite > numero then writeln('Tente um palpite inferior!') else if palpite < numero then writeln('Tente um palpite superior!') else begin writeln('Bingo! Acertou.'); certo := true; end; until certo; end.
7 - Acrescente ao programa anterior um contador de tentativas.
program jogoPalpite2(input, output); { objectivo: ciclos; condições múltiplas para terminação de ciclo; variável de guarda (certo); utilização de contador. } uses crt; var numero, palpite, tentativas: integer; certo: boolean; begin repeat write('Jogador 1: introduza um valor entre 0 e 100: '); readln(numero); until (numero >= 0) and (numero <= 100); clrscr; certo := false; { inicialização da variável de guarda } tentativas := 0; { inicialização do contador } writeln('Jogador 2: '); repeat write('Qual o seu palpite? '); readln(palpite); tentativas := tentativas + 1; if palpite > numero then writeln('Tente um palpite inferior!') else if palpite < numero then writeln('Tente um palpite superior!') else begin writeln('Acertou em ', tentativas, ' tentativas.'); certo := true; end; until certo; end.
Escreva um programa que calcule a soma dos N primeiro números inteiros, escrevendo em cada iteração o total
program somaNNumeros(input, output); { objectivo: ciclo for. Determina a soma dos N primeiros nº inteiros} var n,soma,i:integer; begin write('N : ');readln(n); soma:=0; for i:=1 to N do
soma:=soma+i; writeln(soma); end; writeln('Soma: ',soma); end.
9 - Escreva um programa que calcule a soma da seguinte série de N termos:
program serie(input, output); { objectivo: utilizar o ciclo for. Determina a soma dos N termos 1 -1/2 +1/4 -1/6.} var n,i,sinal:integer; soma:real;
begin write('N : ');readln(n); soma:=1; sinal:=-1; for i:=1 to N-1 do begin soma:=soma+(sinal/(2*i)); sinal:=sinal*-1 end; writeln('Soma: ',soma:2:6); end.
10 - Escreva um programa em Pascal que calcule a tabuada de um número inteiro i dado pelo utilizador no formato
program tabuada(input, output); { objectivo: ciclo for. Calcular a tabuada de um número dado pelo utilizador.} var i, n: integer; begin
write('Vou-lhe dizer a tabuada. De que número quer saber? ');
11 - Modifique o programa da alínea anterior por forma a calcular a tabuada toda de 0 a 10, parando o output entre cada
program tabuadaToda(input, output); { objectivo: ciclos for aninhados. Calcular a tabuada toda de um a dez. } var i, j: integer; begin
write('Vou dizer a tabuada toda. Tecle para continuar.');
for j := 1 to 10 do writeln(i:2, ' x ', j:2, ' = ', i*j:2);
12 - Escreva um programa que “desenhe” o seguinte triângulo:
program triangulo(input, output); { objectivo: ciclo for. } var i, j: integer; begin for i := 1 to 5 do begin
for j := 1 to 2*i-1 do write('*'); writeln; end;
13 - Modifique o programa da alínea anterior, para que forneça uma pirâmide direita ou uma pirâmide invertida ou um
losango, com um número de linhas dado pelo utilizador e de acordo com uma opção por ele indicada.
14 - Sendo dado o valor de N, compreendido entre 0 e 9, produza uma pirâmide de números de acordo com o exemplo
program piramideNumeros(input, output); { objectivo: outra forma de escrever uma piramide com vários ciclos for.
var n,i,j:integer; begin write('n: ');readln(n); for i:=1 to n do begin for j:=i+1 to n do write(' '); for j:=1 to i do write(j); for j:=i-1 downto 1 do write(j); writeln end; end.
17- Escreva um programa que calcule o capital acumulado com base num capital inicial, uma taxa de juro e um número de anos (pedidos ao utilizador).
Exemplo: Capital inicial: 1000Є % Juros: 10 Nº de anos: 9
Ao fim de 9 anos, com capital inicial de 1000Є
o capital final obtido é igual a 2357.948Є.
program capitalAcumulado(input, output); { objectivo: ciclos for. inicialização de variáveis.} var anos, i: integer;
capital, capitalTotal, juro, taxa: real;
capitalTotal := capitalTotal * (1 + taxa);
write('Ao fim de ', anos, ' anos, com capital inicial de ');
write(capital, ' Euros, o capital final obtido é');
writeln(' igual a ', capitalTotal, ' Euros.');
15 - Escreva um programa que calcule a média das N notas do utilizador.
Die Tamiflu-Lüge Milliarden haben Regierungen ausgegeben für das Grippemedikament Tamiflu, um gegen eine Pandemie gewappnet zu sein. Nun warnen Wissenschaftler: Die veröffentlichten Daten zu dem Mittel sind massiv geschönt. Etwa für jeden fünften Bundesbürger liegen sie bereit: Grippemittel, die im Falle einer Pandemie die lebensgefährlichen Komplikationen der Infektion entschärfen
Q&A Tamiflu Webinar 5/12/2009 Q: Dr. Glimp-Would we be able to get Tamiflu for our client if they approved the purchase to keep here in A: I won’t be able to extend that far. I am pleased to be able to do this for our associates. One factor is that Tamiflu is now only recommended for healthcare workers and those with risk factors for complication of influenza, including age >