You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Universidade Federal de Minas Gerais - <strong>UFMG</strong> Data: 26/11/2005<br />
Instituto de Ciências Exatas - ICEx<br />
Disciplina: Programação de Computadores<br />
Professor: David Menoti (menoti@dcc.ufmg.br)<br />
Aluno: ___________________________________________________________ No. ______<br />
• A prova é individual e sem consulta, exceto o contido em sua mente;<br />
• A interpretação das questões faz parte da avaliação;<br />
• Faça as observações que achar necessário, por escrito, na folha de reposta;<br />
• É obrigatório que as variáveis usadas dentro das funções e nos programas sejam<br />
diferentes;<br />
• Em vez de apresentar o algoritmo em PORTUGOL, é permitido implementar as<br />
funções e os algoritmos em PASCAL ou MATLAB. No entanto, somente uma<br />
forma de expressão será aceita como resposta para cada questão.<br />
<strong>Exame</strong> <strong>Especial</strong> – 100 pontos<br />
1) (30 pontos – 52ª. Questão da Lista 03a (Repetição)) Construir um algoritmo em<br />
PORTUGOL para calcular e imprimir o sen(X). O valor de X deverá ser digitado em<br />
graus, no entanto, utilizado em rad’s na série. O valor do seno de X será calculado pela<br />
soma dos 15 primeiros termos da série a seguir:<br />
3<br />
x<br />
sen( X ) = x −<br />
3!<br />
+<br />
5<br />
x<br />
5!<br />
7<br />
x<br />
−<br />
7!<br />
9<br />
x<br />
+<br />
9!<br />
11<br />
x<br />
− + ...<br />
11!<br />
2) (40 pontos – 20ª. Questão da 4ª. Lista (Vetores) alterada – Resolvidas em Sala de<br />
Aula) Construa um algoritmo para calcular a média dos valores, de 50 números que<br />
serão digitados pelo usuário. Esses dados devem ser armazenados em um vetor. Ao<br />
final o algoritmo deve mostrar a média. O algoritmo deve mostrar também o maior<br />
número e o segundo maior número digitado. Além disso, devem ser impressos os<br />
valores acima da média calculada. Os dados no vetor devem ser ordenados para a<br />
impressão.<br />
3) (30 pontos – 2ª. Questão do 3º. teste do 1º. semestre de 2005 – Resolvida em Sala<br />
de Aula) Uma função do primeiro grau, em R 2 , pode ser definida por dois pontos não<br />
coincidentes. Escreva uma função em PORTUGOL que receba quatro parâmetros X 1 ,<br />
Y 1 , X 2 e Y 2 que correspondam à estes dois pontos e calcule:<br />
- o coeficiente angular (m);<br />
- o coeficiente linear (k), onde:<br />
Y1<br />
− Y2<br />
m = k = Y1 − mX1<br />
= Y2<br />
− mX<br />
2<br />
X<br />
1<br />
− X<br />
2<br />
os valores de m e k devem ser retornados por referencia. A função deve retornar 1,<br />
caso seja possível definir tal função, e 0 em caso contrário. Escreva também um<br />
algoritmo para testar a função criada.<br />
<strong>UFMG</strong> – ICEx – DCC – Programação de Computadores – 2º. Sem 2005 – David Menoti 1
algoritmo EEQ1;<br />
var<br />
inteiro: I, J, FAT;<br />
real: X, SEN;<br />
início<br />
SEN ← 0;<br />
leia(X);<br />
para I de 1 até 15 faça<br />
FAT ← 1;<br />
para J de 2 até 2*I – 1 faça<br />
FAT ← FAT * J;<br />
fim-para<br />
se ( I mod 2 = 0 ) então<br />
SEN ← SEN – ( X ** ( 2 * I – 1 ) ) / FAT; { termo par }<br />
senão<br />
SEN ← SEN + ( X ** ( 2 * I – 1 ) ) / FAT; { termo ímpar }<br />
fim-se<br />
fim-para<br />
imprima("SEN(",X,") = ",SEN);<br />
fim<br />
program EEQ1;<br />
var<br />
I, J: integer;<br />
X, SN, FAT, XE: real;<br />
begin<br />
writeLn('Sen(x)');<br />
write('Digite um valor para X: ');<br />
read(X);<br />
X := X * 0.01745329252; {converte de graus para radianos}<br />
SN := 0;<br />
XE := X;<br />
for I := 1 to 15 do<br />
begin<br />
FAT := 1;<br />
for J := 2 to 2 * I - 1 do<br />
FAT := FAT * J;<br />
if ( I mod 2 = 0 ) then<br />
SN := SN - XE / FAT { termo par }<br />
else<br />
SN := SN + XE / FAT; { termo impar }<br />
XE := XE * X * X;<br />
end;<br />
writeLn('Sen(',X:5:4,') = ',SN:9:8);<br />
writeLn('Sin(',X:5:4,') = ',Sin(X):9:8);<br />
end.<br />
%I, J: integer;<br />
%X, SN, FAT: real;<br />
disp('Sen(x)');<br />
X = input('Digite um valor para X: ');<br />
X = X * pi/180;<br />
SN = 0;<br />
for I = 1 : 15<br />
FAT = 1;<br />
for J = 2 : 2 * I - 1<br />
FAT = FAT * J;<br />
end<br />
if ( mod(I,2) == 0 )<br />
SN = SN - X ^ ( 2 * I - 1 ) / FAT; % termo par<br />
else<br />
SN = SN + X ^ ( 2 * I - 1 ) / FAT; % termo impar<br />
end<br />
end<br />
fprintf(1,'Sen(%d) = %f\n',X,SN);<br />
fprintf(1,'Sin(%d) = %f\n',X,sin(X));<br />
<strong>UFMG</strong> – ICEx – DCC – Programação de Computadores – 2º. Sem 2005 – David Menoti 2
algoritmo EE2;<br />
constante<br />
N = 5;<br />
var<br />
inteiro : C, D;<br />
real : SOMA, MEDIA, M1, M2, AUX, VET[1..N];<br />
início<br />
SOMA M1 ) ou ( C = 1) ) então<br />
M2
program EE2;<br />
const<br />
N = 50;<br />
var<br />
C, D : integer;<br />
SOMA, MEDIA, M1, M2, AUX : real;<br />
VET: array [1..N] of real;<br />
begin<br />
SOMA := 0;<br />
for C := 1 to N do<br />
begin<br />
write('Digite um valor: ');<br />
readLn(VET[C]);<br />
if ( ( VET[C] > M1 ) or ( C = 1) ) then<br />
begin<br />
M2 := M1;<br />
M1 := VET[C];<br />
end<br />
else if ( ( VET[C] > M2 ) or ( C = 2) ) then<br />
begin<br />
M2 := VET[C];<br />
end;<br />
SOMA := SOMA + VET[C];<br />
end;<br />
writeLn('1o. Maior: ',M1);<br />
writeLn('2o. Maior: ',M2);<br />
MEDIA := SOMA / N;<br />
writeln('A media dos valores digitados eh: ',MEDIA);<br />
for C := 1 to N-1 do<br />
for D := 1 to N-C-1 do<br />
if ( VET[D] > VET[D+1] ) then<br />
begin<br />
AUX := VET[D];<br />
VET[D] := VET[D+1];<br />
VET[D+1] := AUX;<br />
end;<br />
writeLn('Valores maiores que a media');<br />
for C := 1 to N do<br />
if ( VET[C] > MEDIA ) then<br />
writeLn(VET[C],' ');<br />
end.<br />
N = 50;<br />
SOMA = 0;<br />
for C = 1 : N<br />
VET(C) = input ('Digite um valor: ');<br />
if ( ( VET(C) > M1 ) | ( C == 1) )<br />
M2 := M1;<br />
M1 := VET(C);<br />
elseif ( ( VET(C) > M2 ) | ( C == 2) )<br />
M2 := VET(C);<br />
end<br />
SOMA := SOMA + VET(C);<br />
end;<br />
fprintf(1,'1o. Maior: %f\n',M1);<br />
fprintf(1,'2o. Maior: %f\n',M2);<br />
MEDIA := SOMA / N;<br />
fprintf(1,'A media dos valores digitados eh: %f\n',MEDIA);<br />
for C = 1 : N-1<br />
for D 1 : N-C-1<br />
if ( VET(D) > VET(D+1) )<br />
AUX = VET(D);<br />
VET(D) = VET(D+1);<br />
VET(D+1) = AUX;<br />
end<br />
end<br />
end<br />
fprintf(1,'Valores maiores que a media\n');<br />
for C = 1 : N<br />
if ( VET(C) > MEDIA )<br />
fprinf(1,'%d ',VET(C));<br />
end<br />
end<br />
fprintf(1,'\n');<br />
end<br />
<strong>UFMG</strong> – ICEx – DCC – Programação de Computadores – 2º. Sem 2005 – David Menoti 4
algoritmo EEQ3;<br />
real : X1L, Y1L, X2L, Y2L, ML, KL;<br />
função EQ1(real : X1, Y1, X2, Y2; var real : M, K ) : real;<br />
início<br />
se ( X1 - X2 = 0 ) então<br />
EQ1