Você está na página 1de 4

GABARITO

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 = ['abc', ['d'], ['ef']]

( ) lista[0] = 'x'
( ) lista[0][0] = 'x'
( ) lista[1][0] = 'x'
( ) lista[2][0] = 'x'
( ) lista[2][0][0] = 'x'

Assinale a alternativa que apresenta a sequência correta, respectivamente:


a) S-N-S-S-N
b) S-S-S-S-N
c) S-S-S-N-N
d) S-S-N-N-N
e) S-N-N-N-N

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)

Considere as afirmativas como verdadeiras (V) ou falsas (F):


( ) A instrução print(f2) fará com que seja gerado um erro.
( ) f1 e f2 são objetos da classe Fracao.
( ) A classe Fracao possui dois atributos, f1 e f2.

Assinale a alternativa que apresenta a sequência correta, respectivamente:


a) F-V-F
b) V-V-V
c) V-V-F
d) V-F-F
e) F-F-F

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)

Rubricas | critérios de correção


30% - Sintaxe.
50% - Classe contendo todos os requisitos.
20% - Função __repr__ ou __str__ implementada corretamente.

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()

O que representa e para que serve a variável entry?

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.

Rubricas | critérios de correção


40% - Informou que é um objeto da classe Entry.
60% - Informou que é um widget para inserção de texto na janela.

Você também pode gostar