A maior rede de estudos do Brasil

Grátis
259 pág.
apostila

Pré-visualização | Página 12 de 50

(Na˜o use multiplicac¸a˜o. Apenas operac¸o˜es
de soma):
1 x N
2 x N
3 x N
4 x N
5 x N
Isto e´, suponha que N=3. Enta˜o a sa´ıda deve ser:
3
6
9
12
15
Outro exemplo, para N=6
6
12
18
24
30
4. Dado um nu´mero inteiro que representa uma quantidade de segundos, determi-
nar o seu valor equivalente em graus, minutos e segundos. Se a quantidade de
segundos for insuficiente para dar um valor em graus, o valor em graus deve ser
0 (zero). A mesma observac¸a˜o vale em relac¸a˜o aos minutos e segundos. Por
exemplo: 3.600 segundos = 1 grau, 0 minutos, 0 segundos. ; 3.500 segundos =
0 graus, 58 minutos e 20 segundos.
5. Dadas duas frac¸o˜es ordina´rias a/b e c/d, determinar a sua soma e o seu produto,
no formato de frac¸o˜es. A entrada de dados deve ser constitu´ıda de duas linhas,
cada uma contendo dois inteiros, uma para a e b outra para c e d. A sa´ıda
devera´ ser tambe´m de duas linhas cada uma contendo um par que representa o
numerador e o denominados da soma e produto calculadas.
50 CAPI´TULO 5. CONCEITOS ELEMENTARES
6. Ler uma sequeˆncia de N nu´meros e imprimir a me´dia aritme´tica.
7. Calcular o produto dos nu´meros ı´mpares de N1 a N2 (incluindo ambos), onde
N1 ≤ N2 sa˜o lidos do teclado.
8. Calcule o valor da soma dos quadrados dos primeiros 50 inteiros positivos na˜o
nulos.
9. Ler uma massa de dados onde cada linha conte´m um nu´mero par. Para cada
nu´mero lido, calcular o seu sucessor par, imprimindo-os dois a dois em listagem
de sa´ıda. A u´ltima linha de dados conte´m o nu´mero zero, o qual na˜o deve ser
processado e serve apenas para indicar o final da leitura dos dados.
10. Ler uma massa de dados onde cada linha conte´m um valor nume´rico do tipo
real. O programa deve calcular a me´dia aritme´tica dos diversos valores lidos,
imprimindo cada valor lido e, ao final, a me´dia calculada. A u´ltima linha de
dados conte´m o u´nico nu´mero zero. Este zero na˜o deve ser considerado no
ca´lculo da me´dia.
11. Ler uma massa de dados contendo a definic¸a˜o de va´rias equac¸o˜es do segundo
grau da forma Ax2 + Bx + C = 0. Cada linha de dados conte´m a definic¸a˜o de
uma equac¸a˜o por meio dos valores de A, B e C do conjunto dos nu´meros reais. A
u´ltima linha informada ao sistema conte´m 3 (treˆs) valores zero (exemplo 0.0 0.0
0.0). Apo´s a leitura de cada linha o programa deve tentar calcular as duas ra´ızes
da equac¸a˜o. A listagem de sa´ıda, em cada linha, devera´ conter sempre os valores
de A, B e C lidos, seguidos dos valores das duas ra´ızes reais. Considere que o
usua´rio entrara´ somente com valores A, B e C tais que a equac¸a˜o garantidamente
tem duas ra´ızes reais.
12. Dados dois nu´meros inteiros positivos determinar quantas vezes o primeiro di-
vide exatamente o segundo. Se o primeiro na˜o divide o segundo o nu´mero de
vezes e´ zero.
13. Fac¸a um programa em Pascal que imprima exatamente a sa´ıda especificada na
figura 1 (abaixo) de maneira que, em todo o programa, na˜o aparec¸am mais do
que treˆs comandos de impressa˜o.
14. Fac¸a um programa em Pascal que imprima exatamente a mesma sa´ıda solicitada
no exerc´ıcio anterior, mas que use exatamente dois comandos de repetic¸a˜o.
15. Fac¸a um programa em Pascal que receba dois nu´meros inteiros N e M como
entrada e retorne como sa´ıda N MOD M usando para isto apenas operac¸o˜es de
subtrac¸a˜o. O seu programa deve considerar que o usua´rio entra com N sempre
maior do que N .
16. Adapte a soluc¸a˜o do exerc´ıcio anterior para que a sa´ıda seja exatamente con-
forme especificada na figura 2 (abaixo).
5.10. EXERCI´CIOS 51
17. Fac¸a um programa em Pascal que receba uma massa de dados contendo o saldo
banca´rio de alguns clientes de um banco e imprima aqueles que sa˜o negativos.
O u´ltimo saldo, que na˜o corresponde a nenhum cliente (e portanto na˜o deve ser
impresso), conte´m o valor –999.999,99.
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
Figura 1
1
121
12321
1234321
123454321
12345654321
1234567654321
123456787654321
12345678987654321
Figura 2
18. Para cada uma das expresso˜es aritme´ticas abaixo, determine o tipo de dados
da varia´vel que esta´ no lado esquerdo do comando de atribuic¸a˜o bem como o
resultado da expressa˜o que esta´ no lado direito:
(a) A := 1 + 2 ∗ 3;
(b) B := 1 + 2 ∗ 3/7;
(c) C := 1 + 2 ∗ 3 DIV 7;
(d) D := 3 DIV 3 ∗ 4.0;
(e) E := A+B ∗ C −D
19. Indique qual o resultado das expresso˜es abaixo, sendo:
a=6; b=9.5; d=14; p=4; q=5; r=10; z=6.0 ; sim= TRUE
• ((z/a)+b*a)-d DIV 2
• p*(r MOD q)-q/2
• NOT sim AND (z DIV y + 1 = x)
• (x + y > z) AND sim OR (y >= x)
20. Indique qual o resultado das expresso˜es abaixo, sendo:
a=5; b=3; d=7; p=4; q=5; r=2; x=8; y=4; z=6; sim=TRUE
(a) (z DIV a + b * a) - d DIV 2
(b) p / r MOD q - q / 2
(c) (z DIV y + 1 = x) AND sim OR (y >= x)
21. Escrever um programa em Pascal que leia do teclado uma sequeˆncia de nu´meros
inteiros ate´ que seja lido um nu´mero que seja o dobro ou a metade do anterior-
mente lido. O programa deve imprimir na sa´ıda os seguintes valores:
52 CAPI´TULO 5. CONCEITOS ELEMENTARES
• a quantidade de nu´meros lidos;
• a soma dos nu´meros lidos;
• os dois valores lidos que forc¸aram a parada do programa.
Exemplos:
Entrada
-549 -716 -603 -545 -424 -848
Saı´da
6 -3685 -424 -848
Entrada
-549 -716 -603 -545 -424 646 438 892 964 384 192
Saı´da
11 679 384 192
22. Escreva um programa que troque o conteu´do de duas varia´veis inteiras sem
utilizar varia´veis auxiliares.
23. Escreva em Pascal as seguintes expresso˜es aritme´ticas usando o mı´nimo poss´ıvel
de pareˆnteses:
(a) W
2
Ax2+Bx+C
(b)
P1+P2
Y−Z R
W
AB
+R
24. Tente compilar este programa. Procure descobrir qual(is) e´ (sa˜o) o(s) erro(s) e
corrigi-lo(s).
(∗ programa que le um numero e retorna o ultimo algarismo ∗)
(∗ escrito por Marcos Castilho em 22/10/2002, com erros . ∗)
program ultalgarismo ;
begin
read (A)
writeln (A mod 10, A div 10) ;
end.
25. Seja o seguinte programa em Pascal :
program Misterio ;
var nota1 ,nota2 ,media: integer ;
begin
readln(nota1 ,nota2)
while nota1 <> 0 do
media:=nota1+nota2/2;
writeln(nota1 ,nota2 ,media) ;
readln(nota1 ,nota2) ;
end.
5.10. EXERCI´CIOS 53
(a) Quantos sa˜o, e quais sa˜o, os erros de compilac¸a˜o deste programa?
(b) Considerando que voceˆ corrigiu os erros de compilac¸a˜o corretamente, o que
faz este programa?
(c) Considerando a estrutura do programa, os nomes das varia´veis e a en-
dentac¸a˜o usada, podemos afirmar que o programador cometeu alguns erros
de lo´gica. Quantos sa˜o e quais sa˜o estes erros?
(d) O que faz o programa faz apo´s estas correc¸o˜es?
26. Enumere e explique todos os erros contidos no seguinte co´digo Pascal :
program misterio2 ;
var
m, g: real ;
N1, N2: integer ;
begin
readln(N1, N2) ;
i f (N1 > N2) then
m := N2
else
m := N1;
g:= 1;
while g do
begin
if (N1 mod m = 0) AND (N2 mod m = 0) then
g := 0;
else
m := m− 1;
end;
i f (m := N1) then
writeln(’O valor resultante eh: ’ m) ;
end.
27. Dado o programa abaixo, mostre o acompanhamento de sua execuc¸a˜o para treˆs
valores de entrada (valores pequenos). Em seguida, descreva o que o programa
faz, comprovando suas afirmac¸o˜es.
program questao1(input , output) ;
var
x: integer ;
y, m: longint ;
begin
read(x) ;
y := 0;
m := 1;
while x > 0 do
begin
y := y + (x mod 2) ∗ m;
x := x div 2;
m := m ∗ 10;
end;
writeln(y)
end.
54 CAPI´TULO 5. CONCEITOS ELEMENTARES
28. Uma ageˆncia governamental deseja conhecer a distribuic¸a˜o da populac¸a˜o do pa´ıs
por faixa salarial. Para isto, coletou dados do u´ltimo censo realizado e criou um
arquivo contendo, em cada linha, a idade de um cidada˜o particular e seu sala´rio.
As idades variam de zero