Baixe o app para aproveitar ainda mais
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---~ ---- .•..-------- - ---
Compartilhar