Prévia do material em texto
18/05/2022 10:07 Exercícios sobre pilhas: ALGORITMOS E ESTRUTURAS DE DADOS II - Engenharia de Software - UNID. EDUC. PRAÇA D… https://pucminas.instructure.com/courses/91650/quizzes/288780 1/11 Exercícios sobre pilhas Entrega 8 mai em 23:59 Pontos 1,04 Perguntas 8 Disponível 2 mai em 20:50 - 16 mai em 19:00 14 dias Limite de tempo Nenhum Instruções Este teste foi travado 16 mai em 19:00. Histórico de tentativas Tentativa Tempo Pontuação MAIS RECENTE Tentativa 1 20 minutos 0,65 de 1,04 As respostas corretas não estão mais disponíveis. Pontuação deste teste: 0,65 de 1,04 Enviado 8 mai em 0:10 Esta tentativa levou 20 minutos. Prezados alunos, Esses exercícios devem ser realizados individualmente e encerrados até o dia 08/05, às 23:59. Essa atividade tem o valor de 1 ponto. Eveline 0,13 / 0,13 ptsPergunta 1 A maioria dos softwares de aplicação possui comandos de "Desfazer" e "Refazer". O primeiro desfaz a última operação ou texto digitado, https://pucminas.instructure.com/courses/91650/quizzes/288780/history?version=1 18/05/2022 10:07 Exercícios sobre pilhas: ALGORITMOS E ESTRUTURAS DE DADOS II - Engenharia de Software - UNID. EDUC. PRAÇA D… https://pucminas.instructure.com/courses/91650/quizzes/288780 2/11 enquanto que, o segundo refaz uma operação ou texto desfeito, conforme sugerem os nomes dos comandos. Internamente, nos softwares, podem ser usadas duas estruturas de dados que armazenam as sucessivas operações de "Desfazer" e "Refazer", de modo que o próximo "Refazer" sempre recupera o último "Desfazer". Os tipos de estrutura de dados que podem ser usados para "Desfazer" e "Refazer" são, respectivamente: Fila e fila Pilha e pilha Fila e pilha Pilha e fila 0,13 / 0,13 ptsPergunta 2 O método abaixo deve ser implementado na classe Pilha, que implementa o tipo abstrato de dados Pilha e suas típicas operações básicas: pilhaVazia(), empilhar(item) e desempilhar(). Esse método deve ser capaz de fazer e retornar uma cópia exata da pilha. // Método capaz de fazer e retornar uma cópia exata da pilha. public Pilha copiar() { Pilha pilhaCopia, pilhaAux; Celula aux; pilhaCopia = new Pilha(); pilhaAux = new Pilha(); 18/05/2022 10:07 Exercícios sobre pilhas: ALGORITMOS E ESTRUTURAS DE DADOS II - Engenharia de Software - UNID. EDUC. PRAÇA D… https://pucminas.instructure.com/courses/91650/quizzes/288780 3/11 if (!(pilhaVazia())) { I while (II) { pilhaAux.empilhar(new Item(aux.item.getId())); III } while (!pilhaAux.pilhaVazia()){ IV } } V } Analise as alternativas abaixo e indique a única que identifica corretamente os comandos que devem preencher as lacunas, numeradas de I a V. I - aux = topo; II - aux != fundo III - aux = aux.proximo; IV - pilhaCopia.empilhar(pilhaAux.desempilhar()); V - return (pilhaCopia); I - aux = topo; II - aux != fundo III - aux = aux.proximo; IV - pilhaAux.empilhar(pilhaCopia.desempilhar()); V - return (pilhaAux); I - aux = topo.proximo; II - aux != fundo III – aux++; IV - pilhaCopia.empilhar(pilhaAux.desempilhar()); V - return (pilhaCopia); I - aux = topo; II - aux != fundo III - aux++; IV - pilhaAux.desempilhar(); V - return (aux); 18/05/2022 10:07 Exercícios sobre pilhas: ALGORITMOS E ESTRUTURAS DE DADOS II - Engenharia de Software - UNID. EDUC. PRAÇA D… https://pucminas.instructure.com/courses/91650/quizzes/288780 4/11 I - aux = topo.proximo; II - aux != null III - aux = aux.proximo; IV - pilhaCopia.empilhar(pilhaAux.desempilhar()); V - return (pilhaCopia); 0 / 0,13 ptsPergunta 3IncorretaIncorreta Considere que os números 10, 11, 12, 13 e 14 foram inseridos, nessa ordem, em uma fila. Esses mesmos números foram inseridos na mesma ordem em uma pilha. Nesse caso, o primeiro elemento a ser removido da pilha é o número 10. o último elemento a ser removido da fila é o número 14. o topo da pilha é o número 10. o número 14 é o primeiro elemento a ser removido da fila. 0,13 / 0,13 ptsPergunta 4 Considere o tipo abstrato de dados Pilha e suas típicas operações básicas: vazia(), empilhar(item) e desempilhar(). Considere também o tipo abstrato de dados Fila e suas operações típicas: vazia(), enfileirar(item), desenfileirar(). Suponha que o TAD Pilha apresente também a operação concatenar(p1, p2). Os parâmetros dessa operação correspondem às duas pilhas que serão concatenadas. A execução dessa operação retornará uma pilha cujo topo será o topo de p1. Além disso, o topo de p2 ficará imediatamente abaixo do item que estava no fundo de p1. 18/05/2022 10:07 Exercícios sobre pilhas: ALGORITMOS E ESTRUTURAS DE DADOS II - Engenharia de Software - UNID. EDUC. PRAÇA D… https://pucminas.instructure.com/courses/91650/quizzes/288780 5/11 Qual pseudocódigo abaixo corresponde à descrição da operação concatenar() conforme indicado acima? // variáveis var nova: Pilha; var f: Fila; enquanto (!p1.vazia()) faça f.enfileirar(p1.desempilhar()); fim_enquanto enquanto (!p2.vazia()) faça f.enfileirar(p2.desempilhar()); fim_enquanto enquanto (!f.vazia()) faça nova.empilhar(f.desenfileirar); fim_enquanto retorne(nova); enquanto (!p1.vazia()) faça p2.empilhar(p1.desempilhar()); fim_enquanto retorne(p2); // variáveis var nova: Pilha; enquanto (!p1.vazia()) faça nova.empilhar(p1.desempilhar()); fim_enquanto enquanto (!p2.vazia()) faça nova.empilhar(p2.desempilhar()); fim_enquanto retorne(nova); 18/05/2022 10:07 Exercícios sobre pilhas: ALGORITMOS E ESTRUTURAS DE DADOS II - Engenharia de Software - UNID. EDUC. PRAÇA D… https://pucminas.instructure.com/courses/91650/quizzes/288780 6/11 // variáveis var nova: Pilha; var f: Fila; enquanto (!p2.vazia()) faça f.enfileirar(p2.desempilhar()); fim_enquanto enquanto (!p1.vazia()) faça f.enfileirar(p1.desempilhar()); fim_enquanto enquanto (!f.vazia()) faça nova.empilhar(f.desenfileirar); fim_enquanto retorne(nova); // variáveis var aux: Pilha; enquanto (!p1.vazia()) faça aux.empilhar(p1.desempilhar()); fim_enquanto enquanto (!aux.vazia()) faça p2.empilhar(aux.desempilhar()); fim_enquanto retorne(p2); 0,13 / 0,13 ptsPergunta 5 A pilha é uma estrutura de dados que permite a inserção e a remoção de dados sempre por meio de regras pré-definidas. Para que essas 18/05/2022 10:07 Exercícios sobre pilhas: ALGORITMOS E ESTRUTURAS DE DADOS II - Engenharia de Software - UNID. EDUC. PRAÇA D… https://pucminas.instructure.com/courses/91650/quizzes/288780 7/11 operações sejam realizadas, são utilizados dois métodos: push() e pop(). Com base nessas informações, considere que um programa possua uma pilha p, inicialmente vazia, e que as seguintes operações foram realizadas, nesta ordem: p.push(10); p.push(5); p.push(3); p.push(50); p.pop(); p.push(11); p.push(9); p.push(20); p.pop(); p.pop(). Ao fim da execução desses comandos, quais serão o topo da pilha e o somatório dos elementos ainda dentro da pilha, respectivamente? 9 e 38 11 e 29 3 e 29 50 e 68 20 e 58 0,13 / 0,13 ptsPergunta 6 Suponha as seguintes operações de empilhar e desempilhar realizadas em uma pilha vazia: empilhar(10), empilhar(5), empilhar(7), desempilhar(), empilhar(13), empilhar(4), desempilhar(), desempilhar(), desempilhar(), empilhar(1), desempilhar(), desempilhar(). Assinale a alternativa que contenha a sequência de números que foram removidos da pilha pela operação de desempilhar na sequência que foi executada. 7 - 4 - 13 - 5 - 1 - 10 7 - 4 - 10 - 5 - 13 – 1 10 - 5 - 13 - 7 - 4 - 1 10 - 5 - 7 - 13 - 4 - 1 18/05/2022 10:07 Exercícios sobre pilhas: ALGORITMOS E ESTRUTURAS DE DADOS II - Engenharia de Software - UNID. EDUC. PRAÇA D… https://pucminas.instructure.com/courses/91650/quizzes/2887808/11 5 - 13 - 4 - 10 - 5 - 1 0 / 0,13 ptsPergunta 7IncorretaIncorreta Considere o tipo abstrato de dados Pilha e suas típicas operações: criarPilha(), vazia(), empilhar(item), desempilhar() e copiar(). Analise o pseudocódigo abaixo e assinale a alternativa correta: função func(A[]: inteiro; n: inteiro): booleano // variáveis var i: inteiro var pilhaEntrada: Pilha var pilhaCopia: Pilha; var pilhaInverso: Pilha; início pilhaEntrada = criarPilha(); pilhaInverso = criarPilha(); para i <- 0 até (n - 1), com passo 1, faça pilhaEntrada.empilhar(A[i]); fim_para pilhaCopia = pilhaEntrada.copiar(); enquanto (!pilhaCopia.vazia()) faça 18/05/2022 10:07 Exercícios sobre pilhas: ALGORITMOS E ESTRUTURAS DE DADOS II - Engenharia de Software - UNID. EDUC. PRAÇA D… https://pucminas.instructure.com/courses/91650/quizzes/288780 9/11 pilhaInverso.empilhar(pilhaCopia.desempilhar()); fim_enquanto enquanto (!pilhaEntrada.vazia()) faça se (pilhaInverso.desempilhar() != pilhaEntrada.desempilhar()) então return falso; fim_se fim_enquanto return verdadeiro; fim A função “func” verifica se o vetor de entrada “A” é simétrico em relação à posição do meio, ou seja, se ele apresenta a mesma sequência de inteiros quer seja percorrido de frente para trás ou de trás para frente. Se a variável “pilhaCopia”, do algoritmo descrito acima, fosse retirada, juntamente com todo o pseudocódigo que a referencia; nenhuma alteração seria observada na execução da função, pois pilhaCopia é preenchida e, em seguida, esvaziada. O TAD Pilha não é o mais adequado para a resolução desse problema. Deveria ter sido utilizado o TAD Fila para a resolução mais eficaz do problema proposto. A execução da função “func” sempre retornará verdadeiro, quaisquer que sejam os parâmetros de entrada. 18/05/2022 10:07 Exercícios sobre pilhas: ALGORITMOS E ESTRUTURAS DE DADOS II - Engenharia de Software - UNID. EDUC. PRAÇA D… https://pucminas.instructure.com/courses/91650/quizzes/288780 10/11 A execução de “func” pode acessar posições de memória não alocadas anteriormente. 0 / 0,13 ptsPergunta 8IncorretaIncorreta Suponha uma estrutura de dados do tipo Pilha (“P”) e as operações básicas desse tipo de estrutura de dados: empilhar(item) e desempilhar(). Considere também uma estrutura de dados do tipo Fila (“F”) e as operações básicas desse tipo de estrutura de dados: enfileirar(item) e desenfileirar(). A pilha “P” e a fila “F” possuem originalmente n elementos cada (n > 5). Seja o pseudocódigo abaixo: para i = 1 até n, faça P.empilhar(P.desempilhar()); F.enfileirar(F.desenfileirar()); fim-para Ao final da execução do pseudocódigo acima, os estados finais de “P” e “F” serão, respectivamente: elementos em ordem inversa e elementos em ordem original. elementos em ordem inversa e elementos em ordem inversa. elementos em ordem original e elementos em ordem original. 18/05/2022 10:07 Exercícios sobre pilhas: ALGORITMOS E ESTRUTURAS DE DADOS II - Engenharia de Software - UNID. EDUC. PRAÇA D… https://pucminas.instructure.com/courses/91650/quizzes/288780 11/11 elementos em ordem original e elementos em ordem inversa. Pontuação do teste: 0,65 de 1,04