(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