Baixe o app para aproveitar ainda mais
Prévia do material em texto
GABARITO DISCIPLINA COM120 - Algoritmos e Programação de Computadores II APLICAÇÃO 03/12/2020 CÓDIGO DA PROVA P001/P002 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__ 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’. 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.
Compartilhar