Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Fundamentos da
Computação
Priscilla Fonseca de Abreu Braz
turmas_uerj@yahoo.com.br
Universidade do Estado do Rio de Janeiro
Instituto de Matemática e Estatística
Resolução da P1
Construa um programa em Pascal que leia
100 valores e determine:
• A soma dos números pares;
• A quantidade de valores negativos.
• A média dos números positivos.
Program P1Q1;
var
num,i,somap,qtdneg, qtdpos:integer;
medpos:real;
Begin
somap:=0;
qtdneg:=0;
medpos:=0;
qtdpos:=0;
for i:=1 to 100 do
begin
writeln('Informe um número: ');
readln(num);
if(num>=0)then
begin
medpos:=medpos+num;
qtdpos:=qtdpos+1;
end
else
qtdneg:=qtdneg+1;
if(num mod 2 = 0)then
somap:=somap+num;
end;
writeln('Resultados:');
writeln('Soma de pares lidos: ',somap);
writeln('Qtde de valores negativos: ',qtdneg);
writeln('Média de números positivos: ',(medpos/qtdpos):5:2);
End.
Resolução da P1 – Questão 2
O que será impresso pelo programa abaixo, caso sejam fornecidos os valores
18 e 36? Justifique!!!
Program questao2;
Uses crt;
Var
a,b,m,i:integer;
Begin
Writeln( ‘Digite dois números inteiros: ’);
readln(a, b);
if ( a > b) then
m :=b
else
m := a;
for i:= 1 to m do
if (a mod i = 0) and (b mod i = 0) then
writeln(i);
readkey;
1,2,3,6, 9, 18
Resolução da P1 – Questão 2
Program *XYZ;
Var
x,y,z: real;
Begin
Write(‘Digite o valor de x, y e z: ’);
Readln(x,y,z);
While (x<>0) do
If (x>y) or (z<=30) then
x:=x*x;
else
x:= x/2;
z:= z/5;
write(‘Digite o valor de x,y e z: ’);
readln(x,y,z);
readkey;
end.
Program XYZ;
Uses crt;
Var
x,y,z: real;
Begin
Write(‘Digite o valor de x, y e z: ’);
Readln(x,y,z);
While (x<>0) do
begin
If (x>y) or (z<=30) then
x:=x*x
else
begin
x:= x/2;
z:= z/5;
end;
write(‘Digite o valor de x,y e z: ’);
readln(x,y,z);
end;
readkey;
end.
Resolução da P1 – Questão 3
Faça um programa em Pascal para receber
dois números inteiros do usuário e mostrar
o seu MMC (mínimo múltiplo comum).
Exemplo: MMC(30,15)=30; MMC(12, 5) =
60.
Program p1q3;
Var
mmc,n1,n2,i:integer;
achou:boolean;
Begin
Writeln( 'Digite dois números inteiros: ');
readln(n1, n2);
if (n1>n2) and (n1 mod n2 = 0) then
begin
mmc:=n1;
end
else
begin
if (n2>n1) and (n2 mod n1 = 0) then
mmc:=n2
else
begin
if (n1>n2) then
i:=n1
else
i:=n2;
achou:=false;
while (achou=false)do
begin
if (i mod n1 = 0) and (i mod n2=0) then
begin
achou:=true;
mmc:=i;
end;
i:=i+1;
end;
end;
end;
writeln('mmc(',n1,', ',n2,')= ',mmc);
end.
Resolução da P1 – Questão 4
Faça um programa em Pascal que leia 50
valores inteiros e armazene-os em um
vetor. Ao final, o algoritmo deve apresentar
o maior e o menor elemento e as
respectivas posições em que os mesmos
foram encontrados. Considere que o vetor
não possui elementos repetidos.
Program p1q4;
Var
i,ma,me,pma,pme:integer;
vet:array[1..5] of integer;
Begin
writeln('Informe o elemento ',1,' do vetor: ');
readln(vet[1]);
ma:=vet[1];
me:=vet[1];
pma:=1;
pme:=1;
for i:=2 to 50 do
begin
writeln('Informe o elemento ',i,' do vetor: ');
readln(vet[i]);
if (vet[i]>ma)then
begin
ma:=vet[i];
pma:=i;
end;
if (vet[i]<me)then
begin
me:=vet[i];
pme:=i;
end;
end;
writeln('Maior elemento: ',ma,' - posição:
',pma);
writeln('Maior elemento: ',me,' -
posição: ',pme);
end.
Exercício – Pesquisa em vetores
(pesquisa sequencial)
• Elabore um programa que leia um vetor
com 10 nomes e depois verifique se um
nome lido se encontra na tabela
Solução
• 1º. Passo preencher o vetor com os
nomes;
• 2º. Passo estabelecer uma estrutura de
repetição que irá parar quando:
– Encontrar o valor procurado, ou
– Chegar ao final dos dados;
• 3º. Passo verificar se foi encontrado o
valor.
Program pesqseq ;
uses crt;
var
nome:array[1..10] of string;
achei:boolean;
nomep:string;
i,j:integer;
Begin
writeln('valores da tabela');
for i:=1 to 10 do
begin
write('digite o ',i,#167,' nome ');
readln(nome[i]);
end;
achei:=false;
write('nome a procurar ');
readln(nomep);
j:=0;
while(j<10) and (achei=false) do
begin
j:=j+1;
if nome[j]=nomep then
achei:=true;
end;
if achei=true then
write('nome achado')
else
write('nome nao achado');
readkey;
End.
Pesquisa em Tabela
• Quando os elementos de um vetor estão
previamente ordenados (classificados)
segundo algum critério, então, técnicas
mais eficientes de pesquisa podem ser
empregadas.
• Entre elas destaca-se o método
de pesquisa binária.
Exercício - Classificação
• Elabore um programa que leia 10 valores
inteiros e classifique-os em ordem
crescente.
Solução
• Criar uma tabela com 10 valores inteiros
• Ler os 10 valores
• Comparar cada valor com os demais
elementos do vetor. Caso esteja fora de
ordem, realizar a troca.
Simulação (1)
pos valor
1 6
2 5
3 4
4 3
Compara pos(1) com pos(2)
Verifica se está em ordem
Troca se não estiver na ordem
Aux:= 6
(1)
(3)
pos valor
1 5
2 6
3 4
4 3
Simulação (2)
pos valor
1 5
2 6
3 4
4 3
Compara pos(1) com pos(3)
Verifica se esta em ordem
Troca se não estiver na ordem
Aux:= 5
(1)
(3)
pos valor
1 4
2 6
3 5
4 3
Simulação (3)
posição valor
1 4
2 6
3 5
4 3
Compara pos(1)com pos(4)
Verifica se esta em ordem
Troca se não estiver na ordem
Aux:= 4
(1)
(3)
pos valor
1 3
2 6
3 5
4 4
Simulação (4)
posição valor
1 3
2 6
3 5
4 4
Compara pos(2) com pos(3)
Verifica se esta em ordem
Troca se não estiver na ordem
Aux:= 6
(1)
(3)
pos valor
1 3
2 5
3 6
4 4
Simulação (5)
posição valor
1 3
2 5
3 6
4 4
Compara pos(2) com pos(4)
Verifica se esta em ordem
Troca se não estiver na ordem
Aux:= 5
(1)
(3)
pos valor
1 3
2 4
3 6
4 5
Simulação (6)
pos valor
1 3
2 4
3 6
4 5
Compara pos(3) com pos(4)
Verifica se esta em ordem
Troca se não estiver na ordem
Aux:= 6
(1)
(3)
pos valor
1 3
2 4
3 5
4 6
Responda
• Quantos valores tinha a tabela?
• Na primeira passada comparou-se pos(1)
com que outros valores?
• Depois, quais foram as comparações?