25.03.2015 Views

Exame Especial - UFMG

Exame Especial - UFMG

Exame Especial - UFMG

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!