Prévia do material em texto
Prova Impressa GABARITO | Avaliação I - Individual (Cod.:955135) Peso da Avaliação 2,00 Prova 82601662 Qtd. de Questões 10 Acertos/Erros 9/1 Nota 9,00 Imagine um restaurante no qual, a todo momento, clientes deixam pratos sujos para serem lavados. Geralmente, um ou mais garçons recolhem os pratos e os depositam na cozinha, cada prato em cima do prato anterior, formando uma estrutura conhecida como pilha. Sabendo que o conceito de pilha pode ser transportado para o contexto da análise de sistemas, analise as afirmativas a seguir: I. As pilhas são um tipo especial de listas cuja regra segue os princípios FIFO. II. O novo elemento, quando é adicionado à pilha, de maneira geral, deve-se incrementar o valor de seu topo. III. A implementação de uma pilha estática dispensa o auxílio das estruturas conhecidas genericamente por "Nós". É correto o que se afirma em: A III, apenas. B I, II e III. C II e III, apenas. D I, apenas. E I e II, apenas. Tanto a fila como a pilha são conjuntos ordenados de itens, porém ambas se diferenciam pelas regras de entrada e saída. Na pilha, a entrada e a saída de dados se dão pela mesma extremidade, chamada de topo da pilha. Na fila, a entrada e a saída ocorrem em lugares opostos: a entrada acontece no final da fila e a saída no seu início. No caso de uma variável simples, a princípio, armazena-se apenas uma informação de um determinado tipo. Para armazenar mais de um elemento em uma variável, podemos usar estruturas homogêneas ou heterogêneas. Fonte: adaptado de: DROZDEK, A. Estrutura de dados e algoritmos em C++. 2. ed. São Paulo: Cengage Learning, 2016. A respeito das estruturas de dados mencionadas, assinale a alternativa correta: A As filas e pilhas podem armazenar elementos de um mesmo tipo, mudando apenas as funções de inclusão e remoção das filas para as pilhas. B A função de desempilhar retira da pilha sempre o último elemento, a não ser que um índice seja indicado por parâmetro. C Os registros são estruturas de dados para armazenamento heterogêneo, que possuem os dados a serem armazenados e um ponteiro para o próximo elemento. D As pilhas são estruturas homogêneas, de acesso direto, onde podemos armazenar apenas elementos de tipos diferentes, sem uma ordem predeterminada. VOLTAR A+ Alterar modo de visualização 1 Revisar Conteúdo do Livro 2 E A função de desempilhar retira da pilha sempre o primeiro elemento, a não ser que um índice seja indicado por parâmetro. Após estudar ponteiros, é possível criarmos estruturas que aumentam ou diminuem conforme a necessidade. Esse é o caso de listas encadeadas, que podem ser tratadas em diversas formas, por exemplo como pilha, fila, duplamente encadeada, circulares e assim por diante. Com base em seus estudos, observe o trecho de código a seguir: 01 - void nomeDaFuncao(struct ptr_no *lista, int dado){ 02 - struct ptr_no *atual; 03 - atual = (struct ptr_no*) malloc(sizeof(struct ptr_no)); 04 - while((lista->dado != dado)){ 05 - if(lista->proximo == NULL){ 06 - break; 07 - } 08 - atual = lista; 09 - lista = lista->proximo; 10 - } 11 - if(lista->dado == dado){ 12 - atual->proximo = lista->proximo; 13 - } 14 - } Considere que, durante a invocação da referida função, o parâmetro lista recebe um ponteiro que aponta para o primeiro elemento da estrutura de dados. Ainda, leve em consideração que a struct ptr_no possui dois campos, a saber: dado, do tipo inteiro; e proximo, um ponteiro do tipo struct ptr_no. Assinale a alternativa correta que descreve a funcionalidade executada pela função apresentada: A Insere um item da fila. B Remove um item da pilha. C Remove um item da fila. D Insere um item na lista encadeada. E Remove um item da lista encadeada. Analise o trecho de código apresentado: 01 - struct no { 02 - int dado; 03 - struct no *proximo; 04 - }; 05 - 06 - typedef no *ptr_no; 07 - 08 - ptr_no lista; 09 - 10 - void lista_operacao(ptr_no lista, int valor){ 11 - while(lista->proximo != NULL){ 12 - lista = lista->proximo; 13 - } 14 - lista->proximo = (ptr_no) malloc(sizeof(no)); 15 - lista = lista->proximo; 16 - lista->dado = valor; 17 - lista->proximo = NULL; 18 - } Assinale a alternativa correta com relação ao objetivo da função lista_operacao(): A Inserir um nó no final da lista. B Remover o primeiro nó da lista. 3 4 C Remover o último nó da lista. D Inserir um nó no início da lista. E Inserir dois nós no inicio da lista. Um programador criou uma lista dinâmica com base na estrutura apresentada a seguir: struct no { int dado; struct no *proximo; }; struct lista{ struct no *inicio; } struct lista l; O programador criou um programa para percorrer toda a lista, fazendo com que um ponteiro ptr, iterador, seja inicializado em l->inicio e incrementado até atingir o final da respectiva lista. No critério de parada da estrutura de repetição utilizada para percorrer a lista, o programador deve esperar que ptr->proximo seja igual a que valor ou identificar o final da lista como? A Nulo. B '\0'. C END. D l->final. E NULL. Pode-se imaginar uma pilha ou fila nas quais seus elementos contivessem, além do dado armazenado, o endereço de referência para o próximo elemento. Para a estrutura de dados que se organiza dessa maneira, dá-se o nome de lista encadeada. Fonte: adaptado de: DROZDEK, A. Estrutura de dados e algoritmos em C++. 2. ed. São Paulo: Cengage Learning, 2016. Sobre a implementação de listas, avalie as asserções a seguir e a relação proposta entre elas: I. A utilização de estruturas de dados que podem utilizar alocação dinâmica de memória, como as listas duplamente encadeadas, mostra-se vantajosa, principalmente por evitar desperdício de memória. PORQUE II. A memória física de um computador é como um grande vetor estático, que pode ser vasculhado à procura de posições livres para se realizar alocação de memória em tempo de compilação. A respeito dessas asserções, assinale a opção correta: A A asserção I é uma proposição falsa e a II é uma proposição verdadeira. B As asserções I e II são falsas. C As asserções I e II são verdadeiras, e a II é uma justificativa correta da I. 5 6 D As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I. E A asserção I é uma proposição verdadeira e a II é uma proposição falsa. A Pilha é uma das estruturas mais simples e mais versáteis dentre as utilizadas na computação. Antes de entrar nas nuances técnicas sobre pilhas, vamos abstrair o seu conceito para uma situação real. Fonte: adaptado de: DROZDEK, A. Estrutura de dados e algoritmos em C++. 2. ed. São Paulo: Cengage Learning, 2016. As funções de desempilhar e de empilhar são comumente chamadas de pop() e push(), respectivamente. Considere a seguinte pilha de números inteiros: PILHA: INÍCIO -> 5, 2, 15, 3, 9, 8, 4, 12, 10, 7, 1, 11 <-TOPO Sobre essa pilha, execute a seguinte sequência de operações: pop(); pop(); pop(); push(6); push(13); pop(); push(14); pop(); pop(); Assinale o elemento que será o próximo a ser removido se for chamada a função pop() mais uma vez: A 8. B 9. C 11. D 7. E 10. Considere o seguinte cenário: Você está visitando um médico para um check-up. Há muitas pessoas na clínica. Uma senhora está digitando os nomes de todas as pessoas em um arquivo. A pessoa que chegar mais cedo será atendida primeiro. Quando o médico está livre, ele chama o próximo paciente na sequência de chegada. Sobre o exposto, avalie as asserções a seguir e a relação proposta entre elas: I. O cenário representa a estrutura Fila porque segue o método primeiro que entra é o primeiro que sai. PORQUE II. Em uma fila, adicionamos elementos na parte de trás e os removemos na frente. A respeito dessas asserções, assinale a opção correta: A A asserção I é uma proposição falsa e a II é uma proposição verdadeira. 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 As asserções I e II são verdadeiras, e a II é uma justificativa correta da I. E As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I. Tanto a fila como a pilha são conjuntos ordenados de itens, porém ambas se diferenciam pelas regras de entrada e saída. Na pilha, a entrada e a saída de dados se dão pela mesma extremidade, chamada de topo da pilha. Na fila, a entrada e a saída ocorrem em lugares opostos: a entrada acontece no final da fila e a saída no seu início. 7 8 9 Fonte: adaptado de: DROZDEK, A. Estrutura de dados e algoritmos em C++. 2. ed. São Paulo: Cengage Learning, 2016. A respeito de tais estruturas de dados, assinale a alternativa correta: A A função de desempilhar retira da pilha sempre o primeiro elemento, a não ser que um índice seja indicado por parâmetro. B As pilhas são estruturas homogêneas, de acesso direto, onde podemos armazenar elementos de tipos diferentes, sem uma ordem especificada. C A função de desempilhar retira da pilha sempre o último elemento, a não ser que um índice seja indicado por parâmetro. D Os registros são estruturas de dados para armazenamento heterogêneo, que possuem os dados a serem armazenados e um ponteiro para o próximo elemento. E As filas e pilhas podem armazenar dados do mesmo tipo, mudando apenas as regras para implementar suas respectivas funções de inserção e remoção de elementos. Os ponteiros estão entre as estruturas de dados mais importantes das linguagens de programação, pois graças a eles é possível fazer alocação dinâmica de memória e utilizar estruturas de dados mais complexas. Fonte: adaptado de: DROZDEK, A. Estrutura de dados e algoritmos em C++. 2. ed. São Paulo: Cengage Learning, 2016. Sobre ponteiros, assinale a alternativa correta: A Armazena o endereço de uma posição de memória. B Armazena o valor de uma variável e sua posição no vetor. C É o recurso mais utilizado por programadores iniciantes. D Permite apenas alocação dinâmica de memória. E Não pode ser utilizado como parâmetro de uma função. 10 Imprimir