Geral

Algoritmos e Programação de Computadores II

Semana 1 4

#1

A linguagem Python possui um alocador que se responsabiliza por alocar memória na área de objetos, eles, por sua vez, classificam-se em duas situações: mutável e imutável. Os objetos mutáveis permitem que seus valores sejam alterados e seu uso é recomendado diante da necessidade de alteração do tamanho ou do conteúdo.

Assinale a alternativa que apresenta um tipo mutável na linguagem Python.

A

Bool.

B

Float.

C

String.

D

Int.

E

List.

#2

A leitura e a gravação de arquivos em Python possibilitam a gravação dos dados em disco, por isso existem duas formas de se trabalhar com arquivos, uma que permite abri-los e editá-los em qualquer editor de texto (arquivos de texto) e outra que permite manipular imagens, sons, vídeos etc. (modo binário).


Com base nas informações apresentadas, identifique se são verdadeiras (V) ou falsas (F) as afirmativas a seguir.


I. Usando Python, ao abrir um arquivo de texto para realizar sua leitura, o que ocorre é: a leitura de seus bytes, sua decodificação e sua interpretação conforme uma tabela de caracteres para que gere como resultado um objeto string

II. Usando Python, ao abrir um arquivo binário para realizar sua leitura, o que ocorre é: a leitura de seus bytes, que logo após são transferidos para memória, sendo interpretados e decodificados. 

III. Usando Python, ao realizar uma gravação em um arquivo de texto, o que ocorre é: a codificação dos caracteres de uma string para que sejam transformados em bytes, possibilitando sua gravação em disco. 


Assinale a alternativa que apresenta a sequência correta.

A

F - F - V.

B

V - V - F.

C

V - F - F.

D

F - V - V.

E

V - F - V.

#3

Sobre a leitura e a escrita  de arquivos na linguagem Python, escolha a alternativa que contém somente afirmações corretas. 

 I. Os padrões de processamento de arquivos de  texto não muito grandes implicarão a leitura do conteúdo inteiro do arquivo para  strings ou para  uma lista de strings (linhas). ​ 

II. A função readline() lerá caracteres ou linhas  até o final do arquivo de texto.​ 

III. Quando um arquivo de texto é aberto para gravação, um buffer é criado na memória. Todas as gravações no arquivo na realidade são escritas nesse buffer. Em geral,  nada é gravado imediatamente no disco, para que o programa não fique lento devido ao acesso à memória secundária.​ 

IV. Em arquivos binários lidos ou gravados haverá  apenas uma sequência de bytes, não existindo linhas.

A

I, III e IV, apenas. 

B

 I e III, apenas. 

C

 II e IV, apenas. 

D

II, III e IV, apenas. 

E

 I e II, apenas. 

#4

Arquivos binários são: 

A

arquivos que possuem uma codificação e são legíveis pelo usuário.

B

arquivos que contêm uma sequência de bytes definidos conforme o padrão ASCII.

C

arquivos usados na Web, tais como os arquivos XML.

D

arquivos que sempre podem ser executados pelo computador. 

E

arquivos compostos por  bytes que são  trazidos para a memória e necessitam de programas desenvolvidos para sua interpretação.

Semana 2 5

#1

As classes são uma forma de agrupar e estruturar dados e funcionalidades, ao ser criada uma classe, é gerada uma nova classificação de objeto que possibilita criar novas instâncias relacionadas a essa classificação, permitindo que cada instância da classe tenha atributos juntos a ela para manter seu estado. E essas instâncias, por sua vez, podem modificar seu estado (que foi definido pela classe) por meio dos métodos que possuem. Tais métodos permitem que os atributos privados classe sejam buscados e alterados fora dela.


Assinale a alternativa que apresenta tais métodos.

A

Set e init.

B

Get e init.

C

Set e self.

D

Get e set.

E

Self e init

#2

Considere o seguinte programa em Python: 

classData:def__init__(self, dia, mes, ano): self.dia = dia self.mes = mes self.ano = ano def__eq__(self, other):return self.dia == other.dia and self.mes == other.mes and self.ano == other.ano

Assinale a alternativa correta: 

A

Dois objetos desta classe d1 e d2 poderão ser comparados por meio de: d1 > d2. 

B

Dois objetos desta classe d1 e d2 poderão ser comparados por meio de: d1 == d2. 

C

Dois objetos desta classe d1 e d2 poderão ser comparados por meio de: d1 < d2. 

D

Dois objetos desta classe d1 e d2 poderão ser comparados por meio de: d1 <= d2. 

E

Dois objetos desta classe d1 e d2 poderão ser comparados por meio de: d1 >= d2.

#3

Assinale V para as afirmativas corretas e F para as afirmativas falsas: 

 

() Na programação estruturada, procedimentos são implementados de forma que a troca de dados entre eles seja feita via passagem de parâmetros. 

() Na programação orientada a objetos, os objetos encapsulam dados e procedimentos. 

() Na programação estruturada, a execução de um aplicativo é caracterizada pela chamada a funções sequencialmente. 

() Na programação orientada a objetos, o estado de um objeto se refere aos valores que seus atributos possuem num determinado momento. 

A

F-F-V-V.

B

V-V-V-V.

C

V-F-V-F.

D

F-F-F-F.

E

V-V-F-F.

#4

Um módulo trata-se de um arquivo que contém definições para serem utilizadas em um script ou em uma execução interativa do interpretador. Essas definições podem ser importadas para o módulo principal ou para outros módulos o que indica que ao importar um módulo, é possível fazer uso de tudo que está definido dentro dele.


Avalie as afirmações a seguir, em relação aos módulos que podem ser importados no Python a fim de se organizar projetos e programas e relacione-os aos termos aos quais se referem.


1 – Random. 

2 – Turtle.

3 – Math.


I – Módulo para acessar funções aleatórias que permite a geração de dados aleatórios com o objetivo de que o programa não tenha sempre o mesmo comportamento.

II – Módulo que oferece funcionalidades gráficas que podem ser controladas por meio de comandos de movimentação realizados pelo usuário. 

III – Módulo que fornece acesso às funções matemáticas possibilitando trabalhar com funções hiperbólicas, trigonométricas e logarítmicas para números reais.


Assinale a alternativa que correlaciona adequadamente os dois grupos de informação.

A

1-III; 2-II; 3-I.

B

1-I; 2-III; 3-II.

C

1-II; 2-I; 3-III.

D

1-III; 2-I; 3-II.

E

1-I; 2-II; 3-III.

#5

Em Programação Orientada a Objetos, qual a melhor definição para o termo Objeto? 

A

Uma função relacionada com uma entidade.

B

Uma ideia abstrata sem representação.

C

Abstração de uma entidade e definição de seu conjunto de estados e comportamentos. 

D

Uma instância de uma classe.

E

Descrição de características e comportamentos de uma entidade. 

Semana 3 8

#1

Sobre funções recursivas, assinale V ou F para as alternativas: 

 

() Uma função recursiva deve sempre ter um critério de parada.  

() Uma função recursiva sempre será mais rápida que uma função não recursiva. 

() Função recursiva é aquela que chama um método implementado em outra classe. 

() Funções recursivas são úteis para resolver problemas cuja definição é também recursiva. 

A

F-F-V-V

B

F-F-F-F

C

V-F-F-V

D

V-V-V-V

E

V-V-F-F

#2

A recursividade em Python é apresentada como uma forma para solucionar problemas cujo fundamento é a fragmentação de um problema em subproblemas menores de tal forma que a função para trazer a solução chame a si mesma até chegar em um problema que tenha uma simplicidade que viabiliza sua resolução de uma forma trivial. Todos os algoritmos recursivos devem obedecer a três leis importantes, apontadas em 1, 2 e 3. Sobre tais leis, avalie as afirmações a seguir, e relacione-as adequadamente aos termos às quais se referem.


1. Primeira lei.

2. Segunda lei.

3. Terceira lei.


I. Deve mudar seu estado para se aproximar do caso básico.

II. Deve chamar a si mesmo, recursivamente.

III. Deve possuir um caso básico.


Assinale a alternativa que correlaciona adequadamente os dois grupos de informação.

A

1-II; 2-I; 3-III.

B

1-III; 2-II; 3-I.

C

1-I; 2-III; 3-II.

D

1-I; 2-II; 3-III.

E

1-III; 2-I; 3-II.

#3

O algoritmo de busca binária considera um vetor ordenado de n elementos para realizar a varredura dos elementos, por isso é possível implementar um algoritmo mais eficiente do que aquele que utiliza a busca sequencial. Adotando o paradigma dividir para conquistar, o problema global é dividido em subproblemas, o que faz com que o espaço de busca se reduza à metade a cada iteração do algoritmo.

Com relação ao algoritmo de busca binária apresentado, avalie as afirmações a seguir. 

I.  Se n for um valor pequeno, o custo adicional para ordenar a lista pode não compensar.

II. As comparações requeridas começam com uma lista de tamanho n/2, depois n/4, depois n/6, depois n/8 e assim sucessivamente enquanto o elemento procurado não tiver sido encontrado, e a lista não for vazia.

III. O número máximo de comparações requeridas é dado por nlog ( n ).

IV. A análise da busca binária elimina metade dos itens que restam a cada comparação.

Está correto que se afirma em:

A

II e III, apenas.

B

I e IV, apenas.

C

III e IV, apenas. 

D

I e III, apenas. 

E

II e IV, apenas. 

#4

A recursão ocorre quando uma função chama a si própria. Vale destacar a  importância de se saber identificar o ponto de parada da função, de modo a evitar que ela seja executada infinitamente. Esse ponto de parada é chamado de “caso base” ou "caso básico". 

Identifique se são verdadeiras (V) ou falsas (F) as afirmativas a seguir.

I. () O problema da Torre de Hanói é exemplo clássico de um problema resolvido com facilidade por meio da recursão.

II. () O caso base (ou caso básico) é necessário em toda função recursiva escrita corretamente.

III. () As funções recursivas em Python apresentam grandes benefícios em relação à melhora da eficiência.

Assinale a alternativa que apresenta a sequência correta.

A

V - F - V.

B

V - F - F.

C

F - V - V

D

F - F - V.

E

V - V - F.

#5

Ao passar um valor x para uma função recursiva para realizar uma soma, o que acontece é que a função vai somar de 1 até o valor x, o que indica que ela está chamando a si mesma, porém, a cada vez, com um argumento diferente. 


Assinale a alternativa que representa a função citada de forma generalizada.

A

f(x) = f(x-1) - x

B

f(x) = f(x-1)

C

f(x) = f(x+1) - x

D

f(x) = f(x+1) + x

E

f(x) = f(x-1) + x

#6

As listas em Python permitem listar informações dentro de uma única variável para que elas sejam utilizadas dentro do código. Uma prática comum ao se trabalhar com listas é a utilização de informações dentro dela, já que uma lista comporta uma estrutura de dados com itens organizados linearmente que podem ser acessados por meio de um índice. Essa tarefa de acesso pode ser facilitada diante de uma ordenação que simplifica o trabalho das informações contidas na lista. 


Assinale a alternativa que representa a função cujo objetivo é a ordenação das informações de uma lista.


A

sorted()

B

list()

C

remove()

D

index()

E

pop()

#7

Ao tentar resolver o problema do fatorial de um número, basta multiplicá-lo por todos os seus antecessores até chegar ao número 1. Com o uso da recursividade, esse problema pode ser resolvido inicialmente sendo dividido em subproblemas menores do mesmo tipo (multiplicando um número por seus antecessores) e tomando um ponto de parada da recursão que neste caso deve ser o retorno em 1. Mas isso exige cálculos repetidos.


Após análise do problema apresentado, avalie as asserções a seguir e a relação proposta entre elas. 


I. O uso da recursividade exigida em problemas como o cálculo de fatorial ou cálculo da série de Fibonacci podem ocasionar problemas.

PORQUE 

II. Existem chances de que o subproblema resolvido na árvore de recursão já esteja resolvido e continue sendo resolvido provocando uma sobrecarga.


A respeito dessas asserções, assinale a alternativa correta.

A

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

B

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

C

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

D

As asserções I e II são falsas.

E

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

#8

No programas que usam recursão, como no caso do Fibonacci que exemplifica uma sobrecarga de operador de chamada de função, faz-se necessário que quando uma função é chamada de forma repetida fazendo uso das mesmas entradas, o seu resultado seja carregado do cache ao invés de ser recomputado porque isso fará com que recursos da CPU sejam economizados. 


Analise as alternativas abaixo e indique qual delas contém a técnica citada no enunciado.

A

Cache.

B

Função.

C

Recursão.

D

Recorrência.

E

Memoização.

Semana 4 12

#1

Uma pilha pode ser implementada usando uma lista em Python. Os métodos disponíveis do objeto List que podem ser usados para implementar as funções push() e pop() são, respectivamente: 

A

pop(-1) e append(x)

B

append(x) e pop(0)

C

append(x) e pop(-1)

D

append(-1) e pop(0)

E

pop(0) e push(0)

#2

Uma árvore binária (T) é um conjunto finito de n nós que pode ser nula (quando T for um conjunto vazio e n=0) ou ter características como: a existência de um nó especial chamado raiz; nós restantes divididos em T1, T2 estruturas disjuntas em que T1 é a subárvore esquerda e T2 é a subárvore direita da raiz. Um exemplo de utilização de uma árvore binária é para o armazenamento de expressões aritméticas, facilitando  sua avaliação.


Avalie as alternativas abaixo e indique a que representa o conteúdo de cada nível de uma árvore binária que armazena a expressão (6 + 9) * (3 - 7) + 8; considerando que: − a árvore será lida na ordem esquerda-raiz-direita;  − os primeiros cálculos serão das operações entre parênteses; depois será executado o operador de multiplicação,  que tem maior precedência do que o operador de adição, sendo, portanto, executado primeiro.

A

Primeiro nível: 6 9 

Segundo nível: 3 7 

Terceiro nível: 8

Quarto nível: + * - 

B

Primeiro nível: 6 9

Segundo nível: 8

Terceiro nível: 3 7 

Quarto nível: + * - 

C

Primeiro nível: +

Segundo nível: * 8

Terceiro nível: + - 

Quarto nível: 6 9 3 7 

D

Primeiro nível: 6 9 3 7

Segundo nível: 8 

Terceiro nível: * 

Quarto nível: + - 

E

Primeiro nível: * 

Segundo nível: + 

Terceiro nível: 8 - 

Quarto nível: 6 9 3 7 

#3

Uma fila é uma estrutura de dados linear que armazena itens na forma FIFO (First In First Out), na qual o elemento adicionado menos recentemente é removido primeiro. Em Python, a implementação de filas pode utilizar algumas formas com o uso de estruturas de dados e módulos da biblioteca Python. Avalie as afirmações a seguir, em relação às formas para implementar uma fila em Python, e relacione-as adequadamente aos termos às quais se referem.


1. lista

2. coleções.deque

3. queue.Queue


I. Fila segue a regra FIFO e inicializa uma variável com um tamanho máximo de maxsize.

II. Indicada em casos em que há necessidade de operações de inserção e remoção mais rápidas em ambos os lados da fila.

III. Faz uso das funções append() e pop(), mas operações de inserção e remoção são mais lentas.


Assinale a alternativa que correlaciona adequadamente os dois grupos de informação.

A

1-I; 2-II; 3-III.

B

1-III; 2-I; 3-II.

C

1-I; 2-III; 3-II.

D

1-III; 2-II; 3-I.

E

1-II; 2-I; 3-III.

#4

A implementação de uma fila ou de uma pilha deve oferecer um bom desempenho por compor programas usados diariamente por usuários em seus cotidianos, assim, da mesma forma para as filas, a implementação de pilhas pode utilizar uma lista como estrutura para armazenamento dos dados, exigindo que se defina como será o funcionamento de tal estrutura.


Após análise da situação apresentada, avalie as asserções a seguir e a relação proposta entre elas. 


I - Para que uma fila seja manipulada corretamente, deve-se considerar métodos adicionais e restrições devido aos vários tipos de fila como Queue (FIFO, First In, First Out), LifoQueue (Last In, First Out) e PriorityQueue (por ordem crescente de valor).

POIS 

II - O módulo integrado do Python queue pode ser utilizado tanto para filas quanto para pilhas de forma a oferecer um apoio na programação encadeada quando as informações devem ser trocadas com segurança entre vários encadeamentos. 


A respeito dessas asserções, assinale a alternativa correta.

A

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I

B

As asserções I e II são falsas.

C

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

D

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

E

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

#5

Considere o seguinte programa em Python: 

classPilha():def__init__(self): self.data =[]defpush(self, x): self.data.append(x)defpop(self):iflen(self.data)>0:return self.data.pop(-1)defempty(self):returnlen(self.data)>0 p = Pilha() q = Pilha()for i inrange(5):if i %2==0: p.push(i)else: q.push(i)while p.empty(): q.push(p.pop())while q.empty():print(q.pop())

O programa irá imprimir, nesta ordem: 

A

Os números 1, 3, 0, 2 e 4.

B

Os números 0, 2, 4, 3 e 1.

C

Os números 4, 3, 2, 1 e 0.

D

Os números 0, 1, 3, 4 e 2.

E

Os números 0, 1, 2, 3 e 4. 

#6

Uma árvore apresenta uma estrutura hierárquica de vários elementos, ou seja, é composta por um conjunto de _____________ e serve, por exemplo, para organizar informações em sistemas de banco de dados, pois permite um tratamento computacional eficiente sendo mais fácil de manipular. Há um nó chamado _____________, que passa a ser identificado por r e que possui zero ou mais subárvores cujas raízes estão ligadas a r, e os nós-raízes dessas subárvores são chamados _____________ do nó _____________ r.  O número de subárvores de cada nó é chamado de grau desse nó. As folhas de uma árvore não possuem filhos, sendo, portanto, nós com grau zero.


Preencha as lacunas escolhendo a alternativa correta.

A

filhos, pai, nós, raiz.

B

nós, filho, pais, raiz. 

C

nós, raiz, filhos, pai.

D

raiz, pai, filhos, nós.

E

filhos, raiz, pais, nós.

#7

Uma árvore binária exibe os elementos que ela armazena e em algumas aplicações é preciso percorrê-la de modo sistemático realizando a visita em cada nó uma só vez e obedecendo uma ordem preestabelecida. Considerando as estratégias que possibilitam percorrer uma árvore, avalie as afirmações a seguir, em relação a tais estratégias, e relacione-as adequadamente aos termos às quais se referem.


1. Pré-ordem.

2. In-ordem.

3. Pós-ordem.


I. Visita o número contido no filho esquerdo, depois o próprio nó, e logo após o nó do filho direito, de forma recursiva.

II. Visita o número contido em um nó, mas somente depois de visitar os nós dos dois filhos.

III. Visita o número contido em um nó, depois a subárvore da esquerda e, por último, a da direita, de forma recursiva.

 

Assinale a alternativa que correlaciona adequadamente os dois grupos de informação.

A

1-III; 2-I; 3-II.

B

1-II; 2-I; 3-III.

C

1-III; 2-II; 3-I.

D

1-I; 2-II; 3-III.

E

1-I; 2-III; 3-II.

#8

A lista em Python é uma estrutura genérica, ou seja, é uma generalização de pilhas e filas. Em outras palavras, podem ser implementadas pilhas e filas usando-se listas. Apesar de a linguagem Python oferecer um mecanismo simples e intuitivo para criação e manipulação de listas, é importante conhecermos suas variações, pois dependendo do caso, será necessário escolher diferentes implementações para melhorar a performance da aplicação.

Considerando as quatro maneiras básicas de se implementar uma lista, avalie as afirmações a seguir e relacione-as adequadamente aos termos ou conceitos às quais se referem.


1. Alocação estática.

2. Alocação dinâmica.

3. Alocação sequencial.

4. Alocação encadeada.


I. Diz respeiro ao momento de alocação da memória. Toda memória é alocada de uma única vez, de antemão, quer no início, quer durante a execução do programa.

II. Os elementos são inseridos contiguamente, um ao lado do outro, na memória principal. Assim sendo, tem-se acesso direto por meio dos índices; em outras palavras, é permitida a realização de um acesso aleatório a uma determinada posição da lista.

III. A alocação da memória é feita sob demanda à medida que a lista cresce.

IV.  Os elementos são relacionados por meio de ponteiros, que indicam qual o próximo elemento, dado o elemento atual. O encadeamento pode ir crescendo aos poucos conforme vão sendo adicionados novos elementos.


Assinale a alternativa que correlaciona adequadamente os dois grupos de informação.

A

1-II; 2-I; 3-VI; 4-III.

B

1-I; 2-II; 3-III; 4-IV.

C

1-IV; 2-III; 3-II; 4-I.

D

1-III; 2-IV; 3-II; 4-I.

E

1-I; 2-III; 3-II; 4-IV.

#9

Dada a seguinte definição, assinale a alternativa que melhor representa o conceito apresentado: 

 “Retorna elementos em ordem inversa” também representado pela sigla LIFO (do inglês, last in, first out).

A

Pilha.

B

Lista.

C

Árvore.

D

Fila.

E

Conjunto ou set.

#10

Nas estruturas não sequenciais os elementos não são individualizados por meio de seu índice. Portanto utilizam meios que possibilitam o acesso a esses elementos, tais meios são coleções de dados que permitem, por exemplo, adicionar, remover, acessar, pesquisar e ordenar. _____________ são coleções de dados não ordenados que comporta elementos _____________ e imutáveis (como string, int e tuplas) e possuem métodos para operações matemáticas (união, interseção, diferença e diferença assimétrica). Os _____________ são não sequenciais e compreendem uma chave e um valor, sendo que cada chave possui um valor associado, o que possibilita o acesso à um elemento individual, portanto, devem ser utilizados diante da necessidade de armazenamento de dados de maneira organizada.


Preencha as lacunas escolhendo a alternativa correta.

A

sets, múltiplos, dicionários.

B

sets, únicos, dicionários.

C

dicionários, múltiplos, sets.

D

sets, mutáveis, dicionários.

E

dicionários, únicos, sets.

#11

As estruturas de dados organizadas em pilhas permitem inserir e remover um elemento do final da pilha construída, o que indica que o último elemento que foi inserido na estrutura será o primeiro elemento a ser removido da estrutura, e para que isso aconteça normalmente a implementação é feita com arranjos utilizando métodos para inserção e para remoção.


Assinale a alternativa que representa o método destinado à inserção de elementos na pilha.

A

top()

B

pop()

C

empty()

D

append()

E

popleft()

#12

Em uma árvore binária de busca, também conhecida por árvore ordenada: 

 

I. Ao buscar um elemento, é possível que este não esteja na árvore. 

II. Ao comparar o elemento a ser buscado com a raiz, se este for maior, deve-se iniciar a busca na subárvore da esquerda. 

III. Para saber se um elemento existe ou não na árvore, basta compará-lo com a raiz.  

 

Selecione a alternativa correta. 

A

Apenas I.

B

Apenas II.

C

Apenas III.

D

Apenas I e II.

E

Apenas II e III.

Semana 5 8

#1

O algoritmo de busca que exige que os elementos estejam ordenados é: 

A

Busca binária.

B

Busca em largura.

C

Busca aleatória.

D

Busca sequencial.

E

Busca em profundidade.

#2

O algoritmo de ordenação Quick Sort escolhe um pivô que corresponde ao primeiro elemento da lista e o troca de posição com o elemento do meio da lista. É iniciada a varredura da lista comparando os elementos com esse pivô, de forma que os elementos _____________ que ele são colocados ou mantidos na lista do lado esquerdo, e os elementos _____________ que ele são colocados ou mantidos na lista do lado direito. Ao realizar esse processo de forma _____________, chega-se ao final com uma lista totalmente ordenada.


Preencha as lacunas escolhendo a alternativa correta.

A

menores — maiores — iterativa.

B

maiores — iguais — recursiva.

C

menores — maiores — recursiva.

D

maiores — iguais — iterativa.

E

maiores — menores — iterativa.

#3

Considere a seguinte implementação em Python de um algoritmo de busca: 

defbusca(v, chave):for i inrange(len(v)):if chave == v[i]:return i return-1

O algoritmo de busca implementado acima é a: 


A

Busca aleatória.

B

Busca binária.

C

Busca em profundidade.

D

Busca sequencial. 

E

Busca em largura. 

#4

Os algoritmos de ordenação reúnem um conjunto de instruções que recebem um array ou lista como entrada e organizam os itens em uma ordem específica. Existe um algoritmo de ordenação em que são realizadas diversas passagens por meio de uma lista, comparando os elementos vizinhos e trocando-os, caso estejam fora de ordem. Dessa forma, a cada passagem pela lista, coloca-se o maior valor em sua devida posição e, assim, cada elemento movimenta-se para a posição que lhe pertence.


Analise as alternativas a seguir e indique a que retrata o algoritmo de ordenação citado.


A

Bubble Sort. 

B

Heap Sort.

C

Merge Sort.

D

Quick Sort.

E

Insertion Sort.

#5

Na intenção de mostrar para os alunos a importância da ordenação interna, um professor apresentou o seguinte conceito: a ordenação de elementos fundamenta-se em sua organização de forma crescente ou decrescente, a fim de facilitar a pesquisa desses elementos, portanto a ordenação foca em facilitar buscas por um elemento que são realizadas em um determinado conjunto de dados. Desse modo, o algoritmo de ordenação deve ser escolhido considerando o tempo utilizado pela ordenação. 


Após a explicação, um aluno questiona: a escolha do algoritmo de ordenação interna deve basear-se no número de elementos, e não no tempo que a ordenação leva.


Após análise da situação apresentada, avalie as asserções a seguir e a relação proposta entre elas.



I. O aluno está certo, a escolha pelo algoritmo de ordenação interna deve tomar como base a quantidade de elementos que compõem a lista.

PORQUE

II. Na existência de uma grande quantidade de elementos a serem ordenados, eles não se acomodam na memória principal, e o acesso a esses elementos ocorre de forma sequencial ou em grandes blocos.


A respeito dessas asserções, assinale a alternativa correta.

A

As asserções I e II são falsas.

B

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

C

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

D

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

E

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

#6

Considere o detalhamento a seguir em relação a um algoritmo de ordenação que se baseia em comparação local:


1. Se o elemento for o primeiro, ele já encontra-se classificado;

2. É feita a escolha do próximo elemento; 

3. Ele é comparado com os elementos na sublista classificada inicialmente;

4. São movidos os elementos na sublista classificada que são maiores que o elemento a ser ordenado;

5. O elemento é inserido; 

6. O processo de 1 a 5 é repetido até a sublista classificada ser toda a lista.


Analise as alternativas e indique aquela que contém o algoritmo de ordenação cujo processo de ordenação corresponde aos passos citados.

A

Merge Sort.

B

Bubble Sort.

C

Heap Sort.

D

Insertion Sort.

E

Quick Sort.

#7

A pesquisa em memória primária tem a capacidade de encontrar a informação (que é dividida em registros contendo uma chave) desejada em um grande volume de dados. A busca por essa informação requer a escolha de um método de busca que considere a quantidade de dados envolvidos e a periodicidade das operações de inserção e remoção.


Considerando a pesquisa em memória primária, avalie as afirmações a seguir em relação aos métodos de pesquisa e as relacione adequadamente aos termos a que se referem.


1. Pesquisa sequencial. 

2. Pesquisa binária.

3. Transformação de chave (hashing).


I. Os registros armazenados em uma tabela são diretamente endereçados a partir de uma transformação aritmética sobre a chave de busca.  

II. Percorre-se uma lista comparando a chave de busca com o valor de cada posição. Se o valor da chave for igual para alguma posição, então devolva esta posição. Caso a lista toda tenha sido percorrida então devolva -1, indicando que a chave não foi encontrada.

III. Adota o paradigma dividir para conquistar, fazendo com que o tempo de busca seja reduzido, pois, a cada iteração do algoritmo, o tamanho do vetor é dividido ao meio.


Assinale a alternativa que relaciona adequadamente os dois grupos de informações.

A

1-I; 2-II; 3-III.

B

1-II; 2-III; 3-I.

C

1-III; 2-I; 3-II.

D

1-III; 2-II; 3-I.

E

1-I; 2-III; 3-II.

#8

Há um algoritmo eficiente para encontrar um elemento presente em uma lista ordenada que, repetidas vezes, separa a parte da lista que contém o elemento, a fim de reduzir as possíveis localizações a somente uma localização, sendo assim, a ______________ inicia com um palpite da localização do elemento procurado que sempre é o elemento localizado no ______________ do vetor, caso o palpite seja correto, significa que o elemento foi encontrado, mas se o palpite for errado então o próximo palpite fica restrito a uma parte do vetor porque ele encontra-se ______________.


Preencha as lacunas escolhendo a alternativa correta.

A

busca binária — meio — desordenado.

B

busca binária — fim — ordenado.

C

busca binária — meio — ordenado.

D

busca linear — meio — ordenado.

E

busca linear — fim — ordenado.

Semana 6 8

#1

As tecnologias utilizadas para construção de sites são chamadas de padrões da web que englobam as especificações (documentos técnicos para detalhar a forma exata do funcionamento). Para uma página web, devem ser considerados no seu conteúdo elementos que definem layout, cabeçalhos, imagens, vídeos, hiperlinks, dentre outros. __________ é uma linguagem de __________ contendo distintos elementos que podem agrupar o conteúdo, a fim de oferecer uma __________.


Preencha as lacunas escolhendo a alternativa correta.

A

HTML — marcação — semântica.

B

HTML — marcação — sintaxe. 

C

CSS — marcação — semântica.

D

JSON — marcação — semântica.

E

JSON — marcação — sintaxe.

#2

Considere o seguinte trecho de código em Python: 

from urllib.request import urlopen resp = urlopen('http://www.google.com')for field in resp.getheaders():print(field)


I. O trecho usa a API em Python URLLIB para fazer a requisição de uma página contida na URL especificada na função urlopen. 

II. A função urlopen irá retornar um objeto da classe http.client.HTTPResponse. 

III. O loop irá percorrer todos os campos de cabeçalho retornados pela requisição. 

IV A URL especificada precisa estar online para que o código funcione como esperado. 

 

Estão corretas: 

A

I e II

B

Apenas III

C

I, II, IV

D

Todas estão corretas.

E

II, III e IV

#3

Considere o seguinte trecho de código em HTML

<ahref=http://www.w3.org>Clique aqui</a>

I. O trecho é um exemplo de uso de âncoras em HTML. 

II. O trecho define um hiperlink para um outro site. 

III. O navegador Web irá exibir a string “Clique aqui”, possibilitando o usuário clicar nela e ser direcionado para outra página. 

IV. O código possui um elemento HTML que, por sua vez, possui um atributo. 

 

Estão corretas: 

A

III, apenas.

B

I e II, apenas.

C

I, II, e IV, apenas.

D

I, II, III e IV.

E

II, III e IV, apenas.

#4

Dada a seguinte definição abaixo, assinale a alternativa que melhor representa o conceito definido: 

 

“Provê recursos a partir de uma requisição”  

A

HTTP.

B

Cliente.

C

WWW.

D

Servidor.

E

Contêiner. 

#5

Ao se acessar um site por meio de um navegador, uma requisição é disparada pela internet em direção ao computador em que o site é hospedado e, após o envio da requisição, a aplicação que trabalha para o usuário espera até chegar a resposta do servidor para que a comunicação possa ser encerrada. Todo o processo acontece entre computadores.


Analise as alternativas a seguir e indique a que retrata a comunicação apresentada no enunciado.

A

WWW.

B

Esquema.

C

HTML. 

D

URL.

E

Cliente e servidor.

#6

Os protocolos de rede funcionam como uma linguagem universal pois abrangem normas que permitem a comunicação entre computadores conectados à internet, em que os dados dividem-se em pacotes que trafegam por distintos caminhos até seu destino, ocasião em que são novamente recompostos. 

 

Após análise do conceito apresentado sobre protocolos de rede, avalie as asserções a seguir e a relação proposta entre elas. 


I. Havendo duas ou mais máquinas conectadas à internet, é possível sua comunicação devido aos protocolos de rede que possibilitam uma interpretação das informações por parte desses computadores.

PORQUE

II. Esses protocolos são definidos por elementos-chaves que possibilitam essa interpretação, são eles: a sintaxe, a semântica e o timing.


A respeito dessas asserções, assinale a alternativa correta.

A

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

B

As asserções I e II são falsas.

C

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

D

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

E

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

#7

Os elementos HTML integram um arquivo fonte HTML em que cada um responsabiliza-se por definir um componente, como um cabeçalho, uma lista, uma imagem ou um link), que faz referência à página web a que se associa. 


Considerando tais elementos, avalie as afirmações a seguir, em relação às suas funções, e as relacione adequadamente aos termos a que se referem.


1. Cabeçalho.

2. Lista.

3. Parágrafo.


I. Usado no agrupamento de conteúdos relacionados a um determinado tipo.

II. Descreve de forma sucinta o tópico da seção em que se encontra.

III. Serve para representar itens de forma ordenada iniciando com a tag <ol>.


Assinale a alternativa que relaciona adequadamente os dois grupos de informações.

A

1-I; 2-II; 3-III.

B

1-II; 2-III; 3-I.

C

1-III; 2-I; 3-II.

D

1-III; 2-II; 3-I.

E

1-I; 2-III; 3-II.

#8

A linguagem Python destaca-se pelos vários módulos de sua biblioteca padrão. 

Considerando os módulos e funções que permitem que desenvolvedores acessem e processem recursos na Web, avalie as afirmações a seguir em relação às suas funcionalidades e as relacione adequadamente aos termos a que se referem.


1. Biblioteca html.parser.

2. Biblioteca urllib.request.

3. Função urlopen().


I. É usada para abrir uma URL: formulando uma requisição HTTP que  é enviada ao servidor especificado no parâmetro; e retornando um objeto de resposta.

II. Facilita o processamento de  elementos HTML de  uma página Web.

III. Com o uso de suas funções e classes, qualquer programa pode atuar como um cliente Web e acessar e baixar recursos na Web, abrindo URLs, principalmente as URLs HTTP.

.

A

1-III; 2-I; 3-II.

B

1-II; 2-I; 3-III.

C

1-I; 2-II; 3-III.

D

1-II; 2-III; 3-I.

E

1-III; 2-II; 3-I.

Semana 7 9

#1

Uma interface gráfica do usuário (GUI) consiste em blocos de montagem visuais básicos, normalmente chamados de widgets. Botões, labels, formulários de entrada, menus e caixas de seleção são exemplos de widgets. Em Python, para o correto posicionamento de  widgets, são passadas diretivas para o gerenciador de geometria (geometry manager) da tkinter.

Sobre o posionamento de widgets, escolha a alternativa que contém somente afirmações corretas. 

  

I. Com o uso do método grid() para fornecer  diretivas  ao gerenciador de geometria, a janela é dividida em linhas e colunas; e cada célula pode armazenar um widget.

II. Usando-se o método pack(), para fornecer  diretivas ao gerenciador de geometria, pode ser definido o argumento opcional side para que o  widget seja empurrado contra determinada borda de seu master.

III. Se precisarmos colocar vários widgets em um padrão tipo grade, o método grid()é mais apropriado que o método pack().

IV. Para que seja definido um melhor posicionamento dos widgets, podem ser passadas diretivas ao gerenciador de geometria usando-se a função clicked().

A

II e IV, apenas. 

B

I, II, e III, apenas. 

C

II, III e IV, apenas. 

D

I e III, apenas. 

E

II e III, apenas. 

#2

O widget Frame pode ser entendido como um conteiner retangular com a principal finalidade de servir de base para a instalação de outros widgets, cujo posicionamento depende do fornecimento de informações precisas em relação às coordenadas x e y para o canto superior esquerdo do widget.


Após análise do conceito sobre o widget Frame, avalie as asserções a seguir e a relação proposta entre elas. 


I. Ao utilizar uma função up() para mover a coordenada y em 10 unidades, o que acontece é o que o valor de y diminui 10 unidades.

PORQUE

II. O sistema de coordenadas na tela de desenho não é o mesmo adotado pelo sistema de coordenadas.


A respeito dessas asserções, assinale a alternativa correta.

A

As asserções I e II são falsas.

B

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

C

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

D

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

E

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

#3

A interação entre código e usuário pode ser realizada por meio de cliques em botões e por meio de áreas em forma de retângulo, em que é possível a escrita de algum texto, portanto uma forma de capturar dados do usuário é por meio do ___________ em que os dados informados são captados em forma de ___________, e o que permite trabalhar tais dados dentro código é o método ___________, fornecido pelo Entry que aceita a maior parte das configurações para botões e labels

Preencha as lacunas escolhendo a alternativa correta.

A

widget entry — char — delete.

B

widget frame — string — bind.

C

widget entry — string — insert. 

D

widget entry — string — get.

E

widget text — string — get.

#4

Há vários recursos para a implementação de interfaces gráficas interativas em Python. No contexto desta questão será usado o kit de ferramentas GUI do módulo tkinter, que faz parte da Biblioteca Padrão Python.

Analise as alternativas a seguir e indique a que corresponde ao comando para informar sobre a importação dos códigos do módulo tkinter.

A

Input tkinter import *.

B

From tkinter import *.

C

Id tkinter import *.

D

Range tkinter import *.

E

Dir tkinter import *.

#5

O frame na programação para GUI é um local, na aplicação gráfica, em que se posicionam os aspectos a serem exibidos na interface gráfica, ou seja, é um widget que serve para armazenar e agrupar outros widgets.


Analise as afirmativas que envolvem a criação de uma aplicação que exibe dois frames e verifique se são (V) verdadeiras ou (F) falsas.


I. (  ) Deve-se criar dois labels (label1, label2) e passar os frames criados como argumento, no caso, um label para cada frame.

II. (  ) Deve ser utilizado o pack() para posicionar os labels nos respectivos frames.

III. (  ) Deve ser usado o index() para posicionar os frames.

IV. (  ) Deve ser chamada a função mainloop() para rodar a aplicação. 


Assinale a alternativa que apresenta a sequência correta.

A

F, V, V, F.

B

V, F, V, F.

C

F, F, V, V.

D

V, F, F, V.

E

V, V, F, V.

#6

No desenvolvimento em Python, existem ferramentas e frameworks que ajudam na construção de interfaces gráficas, como no caso do framework, que é uma biblioteca da linguagem Python que acompanha a instalação padrão, sendo definido como um conjunto de revestimentos que permitem a implementação dos widgets com classes Python e, geralmente, estão presente na maioria das instalações Python, havendo a necessidade apenas da biblioteca.


Analise as alternativas a seguir e indique a que representa o framework citado no enunciado.

A

WxWidgets.

B

Tkinter.

C

PyGTK.

D

PySide.

E

Kivy.

#7

As ações executadas em resposta a um evento são os event handlers e, ao estruturar uma interface gráfica em classes, é possível escrevê-los no formato de métodos, que são as funções definidas dentro da classe para depois atribuir o evento ao event handler.


Após análise do trecho apresentado, avalie as asserções a seguir e a relação proposta entre elas. 


I. Os event handlers são as ações executadas em resposta a um evento, ao associar <Button-1> a um event handler, não é preciso soltar o botão do mouse para que ele seja executado.

PORQUE

II. O event handleré chamado por meio da ação de pressionar o botão do mouse, pois os eventos clicar e soltar do mouse, em um widget, agem de forma diferente em Tkinter.


A respeito dessas asserções, assinale a alternativa correta.

A

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

B

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

C

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

D

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

E

As asserções I e II são falsas.

#8

Considere o programa em Python abaixo:  

from tkinter import Tk, Button, Label, Entry, END defclicked():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()

Sobre a variável button e o trecho de programa, escolha a alternativa que contém somente afirmações corretas.

 

I. É uma classe do objeto Button. 

II. É responsável por adicionar um botão na janela. 

III. Quando clicado, o botão irá exibir  a frase: ‘Olá <nome>’ onde <nome>é a string obtida de uma caixa de texto. 

A

III, apenas.

B

I, II e III.

C

II, apenas.

D

II e III, apenas.

E

I e II, apenas.

#9

O gerenciador de layout pack vai inserindo os widgets na ordem em que forem empacotados, fazendo a chamada do método pack() de cima para baixo, contudo existem diversas opções para empacotar o componentes, como preencher, expandir e lado, para controlar esse gerenciador de geometria. 


Considerando as opções para empacotar os componentes, avalie as afirmações a seguir, em relação às suas funções, e as relacione adequadamente aos termos a que se referem.


1. Side

2. Fill.

3. Expand.


I. Indica o lado em que se deseja adicionar o widget.

II. Preenche um espaço no widget em direção ao eixo x ou ao eixo y, ou a ambos.

III. Define se o widget vai preencher todo o espaço extra do container ou não.


Assinale a alternativa que relaciona adequadamente os dois grupos de informações.

A

1-III; 2-I; 3-II.

B

1-II; 2-I; 3-III.

C

1-III; 2-II; 3-I.

D

1-I; 2-II; 3-III.

E

1-I; 2-III; 3-II.