Revisões Ciclo While
Comandos de repetição – While(fazer
enquanto) |
||
|
|
|
|
a) Explica
o funcionamento do programa; {7. Faça uma algoritmo para
ler salários, onde o Flag será um Salário igual a 0
e escreva quais os três maiores valores dos salários lidos.} program salariosLer; uses crt; var i,flag,primeiro,segundo,terceiro,auxiliar:integer; begin writeln('********************'); writeln('* Salarios *'); writeln('********************'); writeln('digite no minimo 3 valores de salario'); flag:=1; i:=0; while (flag<>0) do begin i:=i + 1; writeln('---> 0 para
sair <----'); writeln('digite o
salario:'); repeat readln(flag); if (flag <0) then begin writeln('Invalido! deve
ser maior que 0.'); end; until flag>=0; if (flag <> 0) then begin if (i <= 3) then begin case i of 1: primeiro:=flag; 2: segundo:=flag; 3: terceiro:=flag; end; end else begin if (flag >= primeiro) then begin auxiliar:=primeiro; primeiro:=flag; terceiro:=segundo; segundo:=auxiliar; end else begin if (flag >=segundo) then begin auxiliar:=segundo; segundo:=flag; terceiro:=auxiliar; end else begin if (flag >= terceiro) then begin terceiro:=flag; end; end; end; end; //ordenação
de 3 numeros if (i =3) then begin if(primeiro >
segundo)or( primeiro > terceiro)then begin if(terceiro >
segundo) then begin auxiliar:=primeiro; primeiro:=segundo; segundo:=auxiliar; end else begin auxiliar:=primeiro; primeiro:=terceiro; terceiro:=auxiliar; end; end; if(segundo >
terceiro)then begin auxiliar:=segundo; segundo:=terceiro; terceiro:=auxiliar; end; // troca
primeiro com terceiro auxiliar:=primeiro; primeiro:=terceiro; terceiro:=auxiliar; end; end else begin i:=i-1; if (i<3)then begin writeln('ERRO:
quantidade de salario menor que 3'); end else begin writeln('maior salario digitado
= ',primeiro); writeln('segundo maior
salario digitado = ',segundo ); writeln('terceiro maior
salario digitado = ',terceiro); end; end; end; readkey; end. |
B) Explica
o funcionamento do programa; program
exercicio13; { Repeticao com While e If } uses
crt; var altura, maior :
real; nome, nome_m : string [15]; num : integer; begin altura := 0; nome := ' '; maior := 0; num := 0; nome_m := ' '; clrscr; while upcase(nome) <> 'FIM' do { Upcase:
transforma p/ maiúscula } begin writeln; write ('Nome: '); readln (nome); writeln; if upcase(nome) = 'FIM' then begin writeln ('Total de
mocas no concurso: ', num); writeln ('Moca mais alta:
', nome_m); writeln ('Altura: ', maior:3:2); writeln; end else begin write ('Altura:
'); readln (altura); writeln; num := num + 1; if altura > maior then begin maior := altura; nome_m := nome; end ; end ; end ; end. |
|
Exercícios Tente fazer os
exercícios, depois veja uma das soluções mais abaixo na página. 1) Construir um
programa em Pascal que calcule a média de vários valores inteiros positivos,
lidos externamente. O final da leitura acontecerá quando for lido um valor
negativo. 2) Escrever um
programa que leia uma quantidade desconhecida de números e conte quantos
deles estão nos seguintes intervalos: (0 a 25), (26 a 50), (51 a 75), (76 a
100). A entrada de dados deve terminar quando for lido um número negativo. 3) Escrever um
programa que leia um número N que indica quantos valores devem ser lidos a
seguir. Para cada número lido mostre, como resultado, o valor lido e o
fatorial deste valor. 4) Escreva um
programa que lê dois números N1 e N2. Como resultado, calcule quantos números
ímpares existem entre N1 e N2. Supor que N1 e N2 não entram no cálculo. 5) Fulano tem
1,50 metros e cresce 2 cm por ano, enquanto Ciclano
tem 1,10 metros e cresce 3 cm por ano. Construa um programa que calcule e
imprima quantos anos serão necessários para que Ciclano
seja maior que Fulano. |
|
|
|
|
|
|
|
ENVIAR AO
PROFESSOR (PROFCARLOS2006@gmail.com) |
Resolução
1) PROGRAM MEDIA; Var valor,cont:integer; soma:real; Begin soma:=0; cont:=0; writeln('Digite um valor
positivo(negativo pra terminar)'); read(valor); while(valor>=0)do begin soma:=soma+valor; cont:=cont+1; writeln('Digite um valor
positivo(neg.para terminar)'); read(valor); end; if cont>0
then writeln('Media=',soma/cont) else writeln('Nenhum
valor positivo foi digitado'); End. |
2) PROGRAM INTERVALOS; Var valor,interv1,interv2,interv3,interv4:integer; Begin interv1:=0; interv2:=0; interv3:=0; interv4:=0; writeln('Digite um valor
positivo(neg. para terminar)'); read(valor); while(valor>=0)do begin if valor<=25 then interv1:=interv1+1 else begin
if valor<=50
then
interv2:=interv2+1 else begin if valor<=75 then interv3:=interv3+1 else begin
if valor<=100
then
interv4:=interv4+1;
end end
end; writeln('Digite um valor
positivo(neg. para terminar)'); read(valor); end; writeln('(0-25):',interv1,',(26-50):',interv2,',(51-75):',interv3,',(76-100):',interv4);
End. |
3) PROGRAM FATORIAL; Var n,valor,cont,cont2,fatorial:integer; Begin writeln('Quantos numeros devem ser lidos?'); read(n); for cont:=1 to n do begin writeln('Digite o número'); read(valor); while(valor<0) do begin writeln('Nao
exite fatorial de nr.
negativo'); writeln('Digite o número'); read(valor); end; fatorial:=1; if valor>1 then begin
for
cont2:=valor downto 1 do
begin fatorial:=fatorial*cont2;
end;
end; writeln(fatorial); end;
End. |
4)versão otimizada PROGRAM IMPAR; Var n1,n2,cont,qto_imp,aux:integer; Begin qto_imp:=0; writeln('Digite os nrs.'); read(n1,n2); if n1>n2 then begin
aux:=n1; n1:=n2; n2:=aux; end; if (n1 mod
2)=1 then n1:=n1+2 else n1:=n1+1; cont:=n1; while(cont<n2)
do begin cont:=cont+2; qto_imp:=qto_imp+1; end; writeln('Quantidade de
impares:',qto_imp); End. |
5) PROGRAM ALTURA; Var anos,altful,altci:integer; Begin altful:=150; altci:=110; anos:=0; while(altful>=altci)do begin altful:=altful+2; altci:=altci+3; anos:=anos+1; end; writeln('Anos necessarios:',anos); End. |
|