Exercícios de revisão Prof. Luis Otavio Alvares Considerando A=1, B=5 e C=-1, dizer se é verdadeiro ou falso: 1. (A + B) > (C + 5) 2. (A>=1) e (C>0) 3. (A<=A) ou (B<C) Para que valores de A as expressões abaixo são verdadeiras? 1. (A<1) e (A>10) 3. (A>1) e (A<10) 4. (A>1) ou (A<10) 2. (A<1) ou (A>10) Dado o algoritmo abaixo, que valores serão mostrados? Início A3 B5 CA + B – 6 se A > C então C C- B senão B 1 Se A > B então se B > C então A 20 senão C 10 senão A A + 5 mostrar A,B,C fim Dado o algoritmo abaixo, que valores serão mostrados? início A0 enquanto A <= 0 faça AA+1 BA+1 CA+B*2 mostrar A,B,C fim Dado o algoritmo abaixo, que valores serão mostrados? Início A, B, I: inteiro R: real B 2 A 3 R 20 para I=1 até 3 faça A A * I B B + I R R / 2 * I se A > 10 então B B - 1 mostrar A,B,R fim Dado o algoritmo abaixo, que valores serão mostrados? Início A = 3 B = 2 para I=1 até 2 faça inicio A = A * I para K=1 até I faça inicio B = B+K se I > 1 então A=A-1 fim B = B+I fim mostrar A,B fim Corrija os seguintes trechos, se e onde julgar necessário: a) Var temp_max: real; begin .... write(“Temperatura Máxima = ”, temp_max); .... c) Var val: integer; begin Readln(‘informe o valor: ‘, val); ... b) Var ano: integer; begin ... If (ano mod 4 = 0) and (ano mod 400 : = 0) Then writeln(‘Ano bissexto!’); .... d) Var indice: real Begin ….. if indice > 0.3 then writeln(‘Parar grupo1’); if indice > 0.5 then writeln(‘Parar grupos 1 e 2’); else writeln(‘Parar os 3 grupos’); ... Seja o trecho de programa: Var soma, valor: real; begin soma := 0; readln(valor); while valor > 0 do begin soma := soma + valor; readln(valor); end; .... Indique a seguir, em cada caso, o valor, ou valores, fornecido(s) pelo usuário (comando readln(valor)), que faça(m) com que o trecho do comando while acima (em vermelho) seja executado: uma vez: nenhuma vez: duas vezes: Exercício • Fazer um algoritmo (e também um programa Pascal) que leia um valor (X) e depois calcule e escreva o resultado do seguinte somatório: 25. X 24. X 23. X 22. X 1. X ... 1 2 3 4 25 Exemplo de solução em Pascal: Program exerRevisao1; Var X,soma:real; I,sinal:integer; begin soma:=0; sinal:=1; write('Informe o valor de X: '); readln(X); for I:=1 to 25 do begin soma:=soma + sinal*(26-I)*X/I; sinal:=sinal*-1; end; writeln('O valor do somatorio eh: ',soma:1:10); readln; end. Exercício • Define-se um número perfeito como aquele em que a soma dos seus divisores positivos, exceto o próprio, é igual a ele mesmo. Exemplos: 6 (1+2+3) e 28 (1+2+4+7+14). Desenvolva um algoritmo que informe se um número inteiro lido é perfeito ou não. Escreva também um programa Pascal para resolver o problema. Exemplo de solução em Pascal: Program nroPerfeito; Var I,soma,X:integer; begin soma:=0; write('Informe o numero: '); readln(X); for I:=1 to X-1 do if X mod I = 0 then begin soma:=soma+I; writeln(' ', I); end; if soma=X then writeln('O numero ', X, ' eh um numero perfeito') else writeln('O numero ', X, ' nao eh um numero perfeito'); readln; end. • Escreva um algoritmo (e um programa pascal) para mostrar os números inteiros cujo fatorial seja menor que 1.000.000. Exemplo de solução program fatorial_menor_100000; var N,I,fat:integer; begin N:=1; repeat fat:=1; for I:= 1 to N do fat:=fat*I; if fat < 1000000 then writeln(N,' cujo fatorial eh ',fat); N:=N+1; until fat >=1000000; readln; end. Outra solução program fatorial_menor_1000000; var N,I,fat:integer; begin N:=1; fat:=1; while fat <1000000 do begin fat:=1; for I:= 1 to N do fat:=fat*I; if fat < 1000000 then writeln(N,' cujo fatorial eh ',fat); N:=N+1; end; readln; end. Exercício Foi realizada uma pesquisa em Florianópolis, com um número desconhecido de pessoas. De cada entrevistado foram colhidos os seguintes dados: - clube de preferência (1-Avaí; 2-Figueirense; 3-Outros); - salário; - naturalidade (0-Florianópolis; 1-Outras). Deseja-se saber: 1) percentual de torcedores por clube; 2) média salarial dos torcedores do Avaí e do Figueirense; 3) número de pessoas nascidas em Florianópolis que não torcem por nenhum dos dois primeiros clubes; 4) número de pessoas entrevistadas. Desafio: Escrever um algoritmo que lê um valor no caixa eletrônico e calcula o número de cédulas de R$ 100, R$ 50,00, R$ 20,00, R$ 10,00, R$ 5,00 e R$ 2,00 necessárias para que o caixa eletrônico efetue o pagamento do valor sacado ao cliente. Deve-se utilizar o menor número possível de cédulas. program caixaEletronico; var Valor,cem,cinquenta,vinte,dez,cinco,dois,resto:integer; Begin write('Informe o valor da retirada: '); readln(valor); if (valor=1) or (valor=3) then writeln(' Retirada impossivel pois nao temos moedas') else begin if valor mod 2 = 1 then begin cinco:=1; resto:=valor-5; end else begin cinco:=0; resto:=valor; end; {continua no próximo slide} Cem:=resto div 100; resto:=resto mod 100; cinquenta:=resto div 50; resto:=resto mod 50; vinte:=resto div 20; resto:=resto mod 20; dez:=resto div 10; resto:= resto mod 10; dois:=resto div 2; writeln('cedulas: '); writeln('100: ',cem); writeln(' 50: ',cinquenta); writeln(' 20: ',vinte); writeln(' 10: ',dez); writeln(' 5: ',cinco); writeln(' 2: ',dois); readln; end; end.