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