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])
A Python, assim como outras linguagens de programação, utiliza estruturas de dados com as listas unidimensionais e multidimensionais e também possui outros comandos de manipulação das listas, que trazem facilidade no desenvolvimento de soluções de tratamento de dados e informações.Com base no uso de listas multidimensionais em Python, analise as asserções a seguir e as relações propostas entre elas.I. A criação de listas multidimensionais pode ser feita usando estruturas de repetição encadeadas, sendo uma delas para preenchimento das linhas e outra para preenchimento das colunas.PORQUEII. A leitura de uma matriz ou de uma lista multidimensional em Python pode ser feita usando estruturas de repetição encadeadas, sendo uma delas para leitura das linhas e outra para leitura das colunas.Analisando as asserções anteriores, conclui-se que:
A linguagem Python tem recursos para manipular estruturas de dados, dentre eles, as listas multidimensionais.Com base no uso das listas multidimensionais em Python, analise as asserções a seguir e as relações propostas entre elas.I. É possível criar uma lista multidimensional para armazenar uma lista de clientes e seus atributos, como código, nome, data de nascimento, endereço e telefone.PORQUEII. As listas multidimensionais em linguagem Python são mutáveis e permitem alteração, exclusão, inclusão e recuperação dos seus elementos.Analisando as asserções anteriores, conclui-se que:
As listas multidimensionais são recursos indispensáveis para a produtividade do desenvolvimento de software que usa estruturas de dados.Assim, considere as seguintes matrizes:
numeros = [[0,1],[1,2],[3,4][5,6]]
numeros = [[1,0],[2,1],[4,3]]
numeros = [[0,1, 2],[1,3, 2],[5,4,3]]
I. numeros[2][0] = 4II. numeros[1][1] = 3III. numeros[1][1] = 2Assinale a alternativa que relaciona adequadamente os dois grupos de informações, sendo o primeiro grupo as matrizes e seus elementos, e o grupo dois o elemento no índice da linha e coluna.
Dado o seguinte programa com uma lista multidimensional, indique a alternativa correta que descreva os comandos das linhas: 6, 7 e 8. Utilize a funçãolen, para saber o tamanho da matriz, e a função range.1 matrizNumeros =[[1,2,3,4],2[1,3,5,7],3[8,6,4,2],4[7,5,3,1]]56for i ____________:7for j ____________ 8print(____________[i][j], end=" ")9print()
As listas multidimensionais permitem a manipulação de estruturas de dados aderentes à maior parte dos sistemas de informação.Analise o programa a seguir que cria uma lista multidimensional de frutas:matriz_frutas = [['laranja', 'banana', 'maçã'], ['morango', 'pera', 'uva']]print(matriz_frutas[1][1])Com base no programa acima, assinale a alternativa correta com relação ao resultado da instrução print(matriz_frutas[1][1]).
As listas multidimensionais são importantes recursos na linguagem Python quando se deseja criar estruturas de dados mais complexas. Com base na definição de listas multidimensionais ou matrizes, assinale a alternativa correta.
Dado o seguinte programa:1defpotencia(base,expoente):2 resultado =13for numero inrange(1,expoente+1):4 resultado = resultado * base 5return resultado 67 numero =eval(input("Entre um número que quer calcular (base): "))8 expoente =eval(input("Entre o expoente: "))9print('Potencia : ',potencia(numero,expoente))Analise as afirmações:
No comando def potencia(base,expoente),base e expoente são variáveis locais;
No comando def potencia(base,expoente), base e expoente são variáveis globais;
No comando numero = eval(input("Entre um número que quer calcular (base): ")), numero é variável global;
No comando expoente = eval(input("Entre o expoente: ")), expoente é variavel global.
Indique a alternativa que apresenta as afirmações verdadeiras.