Computing">
Prova Phython
Prova Phython
Prova Phython
DISCIPLINA
COM120 - Algoritmos e Programação de Computadores II
APLICAÇÃO
03/12/2020
CÓDIGO
DA PROVA P001
QUESTÕES OBJETIVAS
Questão 1.1
Dado o seguinte trecho de código em Python, considere S para as instruções que são válidas, e N para
as que não são válidas:
( ) lista[0] = 'x'
( ) lista[0][0] = 'x'
( ) lista[1][0] = 'x'
( ) lista[2][0] = 'x'
( ) lista[2][0][0] = 'x'
RESOLUÇÃO
A resposta correta é: S-N-S-S-N.
Justificativa
Strings são imutáveis, então, quando tenta-se alterar um caractere dela, dá erro. Por exemplo,
lista[0][0] irá acessar o caractere ‘a’ da primeira string da lista. Já lista[0] acessa a string inteira,
podendo esse ponteiro ser alterado para outra string (no caso é o caractere x).
Questão 1.2
Considere uma classe “Fracao” em Python e dois objetos definidos como segue:
class Fracao:
def __init__(self, num, den):
self.num = num
self.den = den
def __repr__(self):
return str(self.num) + '/' + str(self.den)
f1 = Fracao(1, 2)
f2 = Fracao(3, 4)
print(f1)
print(f2)
RESOLUÇÃO
A resposta correta é: F-V-F.
Justificativa
A instrução print(f2) irá imprimir 3/4.
Os atributos da classe Fracao são: num e den.
Questão 1.3
Assinale a alternativa que melhor representa o conceito apresentado na definição a seguir:
“Primeiro que entra é o primeiro que sai”.
a) Pilha.
b) Fila.
c) Árvore.
d) Lista.
e) Grafo.
RESOLUÇÃO
A resposta correta é: Fila.
Justificativa
Filas são estruturas de dados em que os primeiros elementos que são inseridos são os primeiros a
serem removidos. Todas as outras alternativas são de estruturas que não têm relação com o conceito
do enunciado. Em uma pilha, o último que entra é o primeiro que sai. Já em árvores, listas e grafos, não
há uma ordem de inserção e remoção pré-definida.
Questão 1.4
Assinale a alternativa que melhor representa o conceito apresentado na definição a seguir:
“Realiza comparações entre elementos consecutivos, de modo que a cada iteração do laço mais
externo o maior elemento é posicionado no final do vetor”.
a) Quicksort.
b) Heapsort.
c) Radixsort.
d) Bubblesort.
e) Mergesort.
RESOLUÇÃO
A resposta correta é: Bubblesort.
Justificativa
O algoritmo Bubblesort realiza comparações entre elementos consecutivos, de modo que a cada
iteração do laço mais externo o maior elemento é posicionado no final do vetor.
O Quicksort seleciona um pivô para ordenar os elementos à esquerda e à direita. O Heapsort utiliza
uma árvore binária para ordenar. O Radixsort não é baseado em comparações, e o Mergesort é
baseado em divisão-e-conquista.
QUESTÕES DISSERTATIVAS
Questão 2
Implemente uma classe em Python que represente o conceito ‘Horário’, contendo os seguintes
atributos: hora, minuto e segundo. Em seguida, crie um objeto h dessa classe, em que ao executar a
instrução ‘print(h)’, o programa deverá imprimir uma string no formato: ‘hora:minuto:segundo’.
RESOLUÇÃO
Uma possível resolução seria:
class Horario:
def __init__(self, hora, minuto, segundo):
self.hora = hora
self.minuto = minuto
self.segundo = segundo
def __repr__(self):
return str(self.hora) + ':' + str(self.minuto) + ':' +
str(self.segundo)
h = Horario(15, 17, 23)
print(h)
Questão 3
Considere o programa em Python:
from tkinter import Tk, Button, Label, Entry, END
def clicked():
global entry
name = entry.get()
print('Ola', name)
entry.delete(0, END)
root = Tk()
label = Label(root, text='Nome:')
label.grid(row=0, column=0)
entry = Entry(root)
entry.grid(row=0, column=1)
button = Button(root, text='OK', command=clicked)
button.grid(row=1, column=0, columnspan=2)
root.mainloop()
RESOLUÇÃO
O programa cria uma janela com alguns componentes: Label, contendo o texto ‘Nome:’; entry, que é
uma caixa de texto para o usuário inserir algum dado; e um botão que, quando clicado pelo usuário,
faz com que a função clicked() seja executada. Essa função obtém o texto do componente entry e
imprime o no terminal precedido da string ‘Ola’. Além disso, a função apaga o conteúdo do
componente gráfico.
Desse modo, a variável entry representa um objeto da classe Entry, responsável por adicionar um caixa
de texto na janela, para que o usuário possa inserir um texto pelo teclado.