Baixe o app para aproveitar ainda mais
Prévia do material em texto
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?
Compartilhar