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.
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.
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.
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 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.
Alocação estática.
Alocação dinâmica.
Alocação sequencial.
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.
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.
Pré-ordem.
In-ordem.
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.
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.
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 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).POISII - 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.
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.
lista
coleções.deque
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.
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.
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:
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.
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.PORQUEII. 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.
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 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.
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:
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.
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.
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.
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.anoAssinale a alternativa correta:
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 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 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.
Dado o seguinte programa com uma matriz de 3x3:1 matriz =[[3,4,5],[5,6,7],[7,6,5]]2for i inrange(0,3):3print(matriz[i])4Indique a alternativa que apresenta o resultado da execução das linhas 2 e 3.
Ao usar uma função em um programa, normalmente o desenvolvedor não precisa conhecer os detalhes de sua implementação, mas somente o que ela faz. Indique a alternativa que apresenta como se chama esta característica.
Um dos mais importantes recursos da linguagem Python é sua facilidade em lidar com listas, vetores e matrizes. Uma das formas de criar listas em Python é atribuir um conjunto de valores a uma variável.Com base nas listas em Python, assinale a alternativa correta.
Dado o seguinte programa:1 aluno1Notas =[7.5,7.0,8.7]2 aluno2Notas =[8.0,5.0,9.0]34defcalcula_media(aluno):5 soma =06for nota in aluno:7 soma += nota 8 media = soma /len(aluno)9return media 1011 media = calcula_media(aluno1Notas)12print("A média do aluno 1 é: {:.2f}".format(media))13 media = calcula_media(aluno2Notas)14print("A média do aluno 2 é: {:.2f}".format(media))Você decidiu modificar a estrutura de dados e em vez de usar duas listas, cada uma com as notas do aluno 1 e do aluno 2, criando uma matriz (lista multidimensional) da seguinte forma:Indique a alternativa que apresenta a modificação do programa para esta nova estrutura de dados.
Dado o seguinte programa de uma matriz de 3X3, este programa lê a matriz e depois deveria perguntar para cada elemento da matriz se é maior, menor ou igual a zero. Em cada caso, o programa deverá apresentar uma mensagem. Indique a alternativa correta que apresente os comandos que faltam no programa.1 matriz =[[0,0,0],[0,0,0],[0,0,0]]2for i inrange(0,3):3for j inrange(0,3):4 matriz[i][j]=int(f'Entre com o Valor da Matriz [{i}, {j}]: '))5(1)6(2)7(3)8(4)9(5)10(6)11for x inrange(0,3):12for y inrange(0,3):13print(matriz[x][y])