Buscar

P1 e P2 de Computação 2 - EvandroMacedo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 14 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

"
Universidade Federal do Rio de Janeiro
Primeira Prova de Computação 11
Turma EN1
. Prof. Evandro Macedo
Período 2017.2 - 15 de setembro de 2017
A prova é individual e sem consulta. Responda as questões na folha
de respostas, a lápis ou a caneta. A prova tem duração de 2 horas.
Considere a versão 2.7 do Python.
NOME: _l'1o!b f;\P) 'YD ttis.tgb
DRE: ~ _
Questão: 1 2 3 4 Total
Pontos: 2,0 2,5 4,0 1,5 10
Nota:
c~ O J S' .LS l J... 1.1...
/'
QUES . - O 1: Assinale Verdadeiro (V) ou Falso (F) para as questões abaixo. Comente
as quest es que considerar falsas. Use os conceitos vistos em aula de forma que as questões
fiquem verdadeiras.
4 (f;! Os conceitos de classe e objeto são os mesmos, assim, não é necessário diferenciá-los.
9.. (~O comando raise serve para capturar exceções que podem ocorrer durante a execuçãQ..
de um módulo Python. \..,\er<'~q)\ 4
1 (Çt1 Uma classe qualquer pode herdar atributos e métodos de mais de uma classe. Este
conceito é chamado Polimorfismo. '2-)
lt ~ Um objeto de uma classe também pode ser chamado de instância de uma classe. L--
9'" (V) Um bloco de comandos de tratamento de exceções tem obrigatQriamente um try: e um
finallu:. para que as ~ce~s sejam capturadas. I _ id-t IVvd~\ ~Q<.c.oh,.
• i- ll11Ódul(, Ia r~i(JO ~V-.t. cY\ t)<,ihcü ~do - _ t/YIt-~ 'Pl
fi WJ Todo diretório (ou pasta) é automaticamente considerado um acote em ython. ,
.1. ~ c,\O-S ~t -I' t9"n~<Jlf\W ~ tOIC~'i. C{.-'U. poU~ a+rt'b U~~J com..c..tt.rrt+~~~1 ~ ~1à/l'I~~ ~ h~
-tv.:,
Ob~+-O 4 ·\ro~.\ômCj.O~o.. clo<~~e.,
\
QUES ~: Jogo dos ~ erros. Encontre os sete erros no código abaixo. Indique as
linhas é.qual o en:if que iI1lR~deo funcionamento correto do código. Depois disso, dado que os
erros foram corrigidos, o que seria obtido como saída após a execução do código em questão?
2
1 class Carro:
iMt--r --
def __ ini t (-self, mar ca ,
self.m{rca = mar~a
self.modelo· = mode~o
self . ano = ano-
self .cor = cor
3
4
6
8
9
10
11
12
13
14
15
16
17
18
19
20
21
mode-lo, ano, cor):
5
7
self.ligado = False )
~\; -- $TI-- Ls..J~ . G.s1-r~SfJ~.Q).mo)
__ str __ () :
saida = "Marca: " + self.marca + "\nModelo: " + \
self. modelo + "\nAno: " + self. an.o + \
"\nCor: " + self. cor + "\ri"Ligado: " + \
. s t r Cs eLf .ligado) + "\n"
re tu, r (\'\ S o.,/da ~ t-f(j.1'r\ ~ f NV'O lU
ligar(self): bod'y;(1.I\-O Q.,O""\ Shi~
ligado = Tr'u e
~ s(..\.&.\i~<960
defdesligar(self) :
self . ligado = FALSE r"" L
~ 1"_ô>'~Q;
def
def
22 celta = Carro("Chevrolet", "Celta't, 2015, "preto")
t(} 23 pr í n t l c e Lt a j
24 cel ta. ligar -t ?rVJY'<f~ú -4 ce.H\~.t.ij~ttr ()
25 Pr i nt ( c e1ta')
3 IO(,.t 1- iI'n;L-t SeJJ-
J
'II1ac 00-, mo oW a; o.rn ". cod : c...-----
,~- _s+r- _($.61&):C-/
I so.id.o.-::. II~Otrro.:\\+.s.e.J&.I'r{I~rJA--+ :\MMod..tlo: li + 5d~.f)y\oclJo + "\rY\AMOÓ\\ +
I : s1-rl~.fJ~.CllhcJ + I/~ 'I + $eJ~'U>1 + It\('n!...i o..à.o:II -+ $t(L~QI+.\\~(J.do)\
+ \I \.M \\ !I} Prllnt 1"P-dJnt
~
MCHOO-: OhtvtollL~
tv\o~lo! ~\hv
10
I'
"
(sJk l;~<tdo:= +('~("
sd1,\i~Cldo z Fo,\sCJ
11À('(\o- I 2O~S""
leor: 'prfJ-\o
iLí~u,d.O; Fo..h:.t.
~4 ea1~.\\~oJ() ( C--"
---------~----- -- 9/~
--
QUEST~ o rie as classes abaixo de acordo com as orientações. Coloque comentários
breves (mas -oerentes) em seu código em relação ao objetivo_da classe e de §§us respectiyos
métodQ_s.Para ~S as classes, crie o método cQnstrutor, o método "toString"e os m..é~dos
aces~ores (apenas para os atributos indicados como privados!), além dos métodos específicos.
Você pode criar outros atributos e métodos que julgar necessários para o funcionamento de seu
código.
~rie a classeAplicativo com os seguintesatributos e métodos
Atributos: nome (string), tamanho (fioat), preço (fioat, privado). Se for passado um
(Í~diferente do tipo }!..oat,então uma e~~ erro de tipo deve ser lançada.
Métodos: abrir,e fechar. Q~étodo abrirJ.9,Jlçª-JJIDa-exceçffi,odo tipo _Exception çaSo~
aplicativo já esteja aberto .....j- --ti."I' L. O 111,11-111 L. j,. t'I '!,Ml+'Ú______~ ~ ~ lc:x.tnv(:) ~ pem v 'Tv tCiltVó,lK. j ~ }
ef,crie a classeCelular com os seguintesatributos e métodos:
Atributos: marca (string), modelo (string), appslnstalados (lista, privado)
Métodos: instalarAplicativo, desinstalarAplicativo. Estes métodos devem receber como
parâmetro um b '~to da classe Aplicativo, IJ:§nipulando o <!1ribJltQ_apps~alados, adi-
cionando ou removendo da lista de aplicativos instalados.
dCrie a classe Semsun, que representa um novo tipo de celular já disponível nas lojas.P Contudo, corno ele é novo, apenas apresenta um atributo a mais relativo ao sistema----....:-- ~-~---. '------~--=-----".~ '.~-..~.-
~aci~tilizado.
r:v1Crie a classe Epou, que também é um celular, que vem de fábrica com o aplicativo
-P "Zapp\iVhat" instalado. Essa classe também tem um atributo relativo ao sistema opera-
cional.
3
QUESTÃ~ Considere as funções abaixo:"7 ':1;; ~3e-!X
1 de f somar Cpar c~1a SD) : ----------------------
2 resultado = O
3 for parcela in parcelas: => \,t~
4 resultado += parcela '2n
5 return resultado
6
7 def dividirCa, b ) :
8 return a / b
9
10 def multiplicar(v, t ) :
11 return a * b
12
~ Oc,'Jo
13 def subtrairCx, y) :
14 return x - y
Para cada linha abaixo (que usa uma das funções definidas anteriormente), indiqueo resul-
t~?er jmpresso. Caso seja lançada uma exceção, i!:lcdique_:.g;u.~po, ou seja, a classe da
exceção lançada.
1 print somar C[20, 7J; .. 3]) 2.0 *1-'""? =-:>
2 print subtrair 00, er§,!~)
3 print multiplicarC32.5, 100)
4 print dividirC485, O)
'30 c.....-
1'ypt-Error c....-.
Sy~~J(G.rro,. .x,
Z-U-o \::)ivitic!Y\ ~rtor C---
BOA PROVA!
"Lembre-se: o sucesso é uma jornada, não um destino.
Tenha fé na sua capacidade."
(Bruce Lee)
4
+
-::::
../'
=
o t»
~o~,- r.;3- ,i
à
~ ~
,~
.....,.e
::I
.--CI
~
'Z:-+- .
o
vio \.l.
v ,-T~ '"<:4 t,r),
~ .OQ.. -:{'------- .•
=
-I-
)
+
/ --•...
v}
O
g
-C
~
-c..
-t•....
~-2
~..,
~
,,--.
J~~DiS -
~
-
..,
E
\1
~§-
<-\:7-;;;
Vl
-:»
-l=
YI
+--
a
ê)
rY
~
'-"J,.,c.,
("'-r
~
+
::
s
/"
c,
+
o
~
O>
~
c..t.--.
j
-I-
--- ~o
~
Qs:
::;
+
;::
5--
-t-
5
l-
~
~--r
+
::::~ªa ~."2-.....)
I
::::
I sJ:-
L-;~
:t
~
~
\..-.1
~ -s. "
4-
""
I
I
Universidade Federal do Rio de Janeiro
Segunda Prova de Computação 11
Turma ENl
Prof. Evandro Macedo
Período 2017.2 - 20 de outubro de 2017
A prova é individual e sem consulta. Responda as questões na folha
de respostas, a lápis ou a caneta. A prova tem duração de 2 horas.
Considere a versão 2.7 do Python.
DRE: ~ _
Q~ 1: Responda à.s perguntas abaixo de forma clara e concisa.
(a) Qual o tipo específico de exceção deve ser tratado quando lidamos com manipulação de
arquivos?
,/ / /
Questão: /y 2 z: /Lt' Total
Pontos: 1,0 3,0 3,0 3,0 10
Nota: s» J.R to ~(J '\g
(b) O que significa serializar um objeto?
(c) O que é um widget?
(d) Para que serve o método bind de um widget?
.s&'\'"~~\i3()c~ c:gns I(t~ -Um +r-CJ.I\"I\fQrfYY\~r ~
~{y)~\JJ'0toclL co,r s-.ot~\.ll~(s+r í (V1~J
/
rl) Â sso elo. \JJ'M «. ~<.wJ-o cx" W-v- Q ~O-C;, C, O ~Y..t
\L ~()\Wf \tJ'ff' bcwo O-L \}J'm~ ()VI.
(I) U,Hcl~e+- e,
1Ju++OCh, ~rCJJ'rhlf,.J I .LUrnrY j s. s..
QUESTÃO 2: Considere a classe abaixo:
1 # -*- coding: utf -8 -*-
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Pessoa(object):
, "
Classe que representa
- nome
- idade
- cpf
uma pessoa com os atributos:
, "
def __init __ (self, nome,
self.nome = nome
self .cpf = cpf
idade, cpf ):
if type (idade) != int:
raise ValueError("A idade deve ser um número! ")
self.idade = idade
("!Implemente O métodosalvar, que salva todosos valor~s dos at~ibut~da classe, conca-lJ tenados em formato de texto, em um arquivo aberto em modo all eiui. Concatene os
-- - ---_ ~ _ _ -- - - ...:.i<?""'-
atributos colocando um espaçQ entre eles e uma quebra de linha no final.
(lifrlmplemente o método abrir, que abl:L.u!!l~9.l1ivo em.Jg~ "!!!:-ct e imprime o conteúdo.
I' ~Yº-ª:Qertº;
(0 Implemente o método salvarObjeto que recebe por parâI!l-etro um objeto da classe em
( questão e o persiste em--;:rqui~o. Para este item, utilize -af~nçã-º dum'IL!Jo módulo pickle.
(11' Implemente o método recuperarObjeto que retoma um.QQjeto da classe em questão,
/ recuperado a partir de um arquivo que contenha um objeto serializado desta classe. Para
este item, utilize a função load do módulo pickle.
Dica: Lembre-se de tratar corretamente possíveis exceções que possam ocorrer, bem como
de fechar o arquivo aberto.
Comandos do módulo pickle:
pickle. dump (objeto, arquivo)
objeto = pickle.load( arquivo)
2
QUES ÃÜ 3: Considere o código abaixo que implementa uma interface gráfica em Tkin-
ter. Exp .que, hrevemente, como será a interface e quais componentes estão presentes nela. Se
preferir, faça um desenho que represente a janela gerada após a execução deste código. Depois
disso, escreva o que acontece após o botão buttonAgendar ser acionado com um dique do botão
esquerdo do mQ-UB~ Leve em conta os casos em que o cl)eckbuttQ.n está marcado e desmarcado.
1 # -*- coding: utf -8 -*-
2
3 from Tkinter import *
4 import tkMessageBox
5
6 class Janela(Tk, object):
7
8
9
10
11
12
13~\'). '( SframeTopLevel = frame(self)
14 '" ,JrameTopLevel. pack O _
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def __ init __ (self):
super (Janela, s e l f ) . __init __ O
self.title("Bandex vi.O")
self.framelnfo = Frame(frámeTopLevel)
self.framelnfo.pack() .
self.label = Label(self.~ramelnfo,
self.label.pack(side=LEFT)
self.entry = EntrY(self.framelnfo)
self.entry.pack(side=LEFT)
text="CPF: li)
self.frameButton~ = Frame(frameTopLevel)
self.frameButtons.pack()
29
30
31
self.robo = BooleanVar()
self.chkButton = Checkbutton(self.frameButtons,
robô!", variable = self.robo)
self.chkButton.pack(side=TOP)
text="Não sou um+->
self . buttonAgendar = Button (self . frameButtons, text=" Agendar +->
bandejão")
self . buttonAgendar. bind (" <Button -i> ", self. agendar)
self.buttonAgendar.pack(side=BOTTOM)
32
33
34
35
36
37
38
39
40
def agendar (self, event):
41
try:
int(self.entry.get(»
except ValueError as e:
tkMessageBox.showerror(IIBandex
inválido! :/" % self.entry.getO)
return
vi. O", li Desculpe, CPF %s é +->
42
43 if self. robo . get O:
44 tkMessageBox.showinfo("Bandex vi.O", "Parabéns!\nVocê vai +->
almoçar i2h hoje no bandejão! :D")
45 else:
46 tkMessageBox.showerror("Bandex vi.O", "Sai fora robô! >:-(")
47
48 janela = Janela ()
49 janela. mainloop ()
3
. QU~O 4: Explique o que faz o mét.odo abaixo, descrevendo o que acontece em cada
lmha. dndlque o resultado final após execução do método.
--1 import numpy as np
-2
-3- def calcula () :
-4-- A = np. arange (4)
=--~ Acum = A. cumsum ()
--=õ' A A.reshape(2, 2)
--r- A = np.mat(A)
~ B = np.matrix([[10, 20J, [30, 40JJ)
~ C = np.dot(A,B)
....qe- det = C[O,OJ * C[1,1J - C[0,1J * CU,OJ
~ print "Resultado: " + str(det) + "\n"
12 print "Cumsum: "+ str(Acum)
~ ('mQ;fr\31b ~ o.,rrays --r O(lD-rctCIJU>
.1--+ irrn ~orro. O rm«f dtt10 ('(\(.I.JffiPJ ~ 0\0 BOA PROVA!
lo~~() elo P(O~~G. 'v'CA,! ~(,~ri~ ~o
_ (j \J \J ""Saber não é o bastante; precisamos aplicar.
~ 0rn O ~orrno Itlp- Querer não é o bastante, precisamos jazer. ""
~I ~L-. (Bruce Lee)r:"" r=oa
~...j. J-o,/Y\C100 c,dcuJA..- J q-\!J..cuY1cID e u~o/n~o chCU'MaV' k\ J-V0Y"Iyo'b J C \')rO~(QrYY\C!v
e-)(L,\.Lt~r-q O) <:.,O'"'MaMdeJS ~ j i(\nn~ 4 0\ ~t.,
dL,jiW A-e-UiY'n
A CJ,I.!JVY) -=
C.f\ \!}v C0 d-.t ÜIJYY'I e, t\'TOt 4 }
A -:. O\-rrlDl.j( l,Oj:-I( 2, ,1~1)
WW1 O ~ $'Q rm~ -C>LU.l rY\.\.t IOl~ d-t A.
o.rrO-y(tCO/1 J 3 J~J)) ~
Olt A} +-rW\.5fDr/YVicwc)Q -o ~ \JJ'I'-I Cf).. f\rUr ~X:2-.
'" -4> ()'Y1Qi)')d)oU Iu.. ct evt-fv{-...u rq,
A ~ l[o) -1 1)
[2./~J)
A (Y\,Vv ("(v\ <9- {Yh o..tr i
~ -b rrrc.lf\tt..srj-co rrm 0_
.-
''O
'2-~
x \- iG 'j 0'1/I' I I G
3 21" '-1u~". ....; D'.J _
20 +- SCI
tO
~O +- \LCi
'0('
( [0'1])
[2/31 )
IWtG ;~ s .
(\'hçJ-y;~ ele 4~ 2.0] J
[)eJj 40] J)
c.rJ...tr'f\oú,' c (!)<!7\t'v) e o pro c.tuJo ele A IV f!::, } Q;yy, alu. QJ'~
Ia. e,a ~ ro ~J-(] cJ...G I'M C9.ttI~S -
<: ~ i. [f 3q '10] )
rm(ll'i~ [4 ~Oj~0 O] J ) .
clt~lfYU old- coemo Ov oru-ru,epõ clós Q,I~QM~~ c\-t G-
dJA-=. CC%] * CC .!.J~ J - C [.0)11 * ct; ~I OJ
cltJ-::: 20.' ~0ó - 4o~ J1-4V ~
d1A-~ 400
1..!4 ilMp r, ('Mt, O yÓvlo r- clt, clt t- W· O .s.l.6",.ç --e r-u Q u.r' q, '/rn h..Ov
(lu tA; +0..\10: ~ao . C--
'12 ~ lr(Y\tJri{'f'.~~ ~ VOlt o 'r cJ.l A ()J;vv, crJvn~ s t-r ;Mc5
tUfY\l S \JYYI \ ( [ C O; 4 / j/ b JJ ) ~
I oUó
:"I~OC>
LJSJO
'{lvú
A rós e-j(~~~~r o lY'rti+od~ +Jlr~~o~ :
Y2.~suJ-h.tdo: 400
CWroStJ/Yh: ([ [0;1;'1" JJ) C---
_.-~
@o(j \di~ ~Q Iuw- t~~J ;
, -1-<y: @
& ~ opvn l" ~tr,~~ ,+Xiii) "0.")l' VJr~~ (. $--'-~' 1\'10 (mil- + !'. li + S1-rl s.e.~.Cpls 1 + ~'" >+.~~.\rlk~' illofo.) )
e.Xc.e.pt 'I-oE.rror O,,; Q. ; + 1/ \",\'
pr-t/'()T Q I
.;-iI\')r.J\ y : L-------Y
~I dO$(' t )
clt& o.b\'"' r L ~I,r):
<trv'I . t L L L11I1 li)
.&-= Orº-<Yl \. uWibU.'rQS.,x-r' I r
5"' Std(,(.OJ -'" rJ';o p1l.ec f54v"'\-
pr\/h.t- %* r..w.rll;i'n(.s,t }
(,}(Úpt- :.ro~ríor ~ ~,
pru'rIr Q.
á!rno.Uy;
1-" dmt t)
b)
I
C) L{'y\het-_2 ~
d}
/~ t urno: M ()+-~')(l.lU~ H ~ r/' ~S(9Y)
.::swn rz, lct tJ r IlVl() t?CJ-t
I---~ ----
.•..-------- -
---

Outros materiais