Baixe o app para aproveitar ainda mais
Prévia do material em texto
Local: Sa la 1 - Sa la de Aula / Anda r / Polo Ma r icá / PO LO MARICÁ - RJ Acadêmi co: EAD-IL10301-20214A Aluno: PAB LO HENRIQ UE ENEDINO DO S ANJO S Avali ação: A3 Matrí cula: 20204300475 Data: 11 de Dez embr o de 2021 - 08:00 Fi na l i z a do Correto Incorreto Anulada Discursiva Objetiva Total: 8,50/10,00 1 Código: 35702 - Enunciado: O conceito de grafo, definido por Simões-Pereira (2014), apresenta o grafo G = (V, E) como um sistema formado por um conjunto V de elementos chamados vértices, pontos ou nodos e por um conjunto E de pares não ordenados de vértices denominados arestas ou linhas. As estruturas de dados árvores são advindas dos grafos. Neste viés, analise a figura a seguir. Indique o que representa essa figura. a) Dígrafo. b) Árvore binária balanceada. c) Árvore AVL. d) Grafo não direcionado. e) Árvore binária não balanceada. Alternativa marcada: a) Dígrafo. Justificativa: Resposta correta: Dígrafo.A figura refere-se à representação de um dígrafo, também conhecido como grafo direcionado, por apresentar setas para ligar os vértices desse grafo. Distratores:Árvore AVL. Errada, pois reportam aos tipos de estruturas de dados árvores cuja representação gráfica apresenta um nó-pai ligado, no máximo, a dois nós-filhos.Árvore binária balanceada. Errada, pois reportam aos tipos de estruturas de dados árvores cuja representação gráfica apresenta um nó-pai ligado, no máximo, a dois nós-filhos. Árvore binária não balanceada. Errada, pois reportam aos tipos de estruturas de dados árvores cuja representação gráfica apresenta um nó-pai ligado, no máximo, a dois nós-filhos.Grafo não direcionado. Errada, pois se refere a um grafo que não apresenta seta na ligação de seus vértices. 1,00/ 1,00 2 Código: 35713 - Enunciado: Veja a seguinte descrição de estrutura de dados: "Suas operações de inserção e remoção são realizadas pelo topo, com os respectivos nomes técnicos de push e pop."Indique a qual tipo de estrutura de dados o trecho se refere. a) Grafo. b) Árvore. c) Pilha. 1,00/ 1,00 d) Lista. e) Fila. Alternativa marcada: c) Pilha. Justificativa: Resposta correta: Pilha.A estrutura de dados pilha é responsável pelos processos de empilhamento (push) e desempilhamento (pop). Distratores:Árvore. Errada, pois não é uma estrutura de dados que realiza os processos de push e pop. Seu processo é aleatório e balanceado, assim como os grafos.Lista. Errada, pois não é uma estrutura de dados que realiza os processos de push e pop. Seu processo é input sequencial.Fila. Errada, pois não é uma estrutura de dados que realiza os processos de push e pop. Seu processo é FIFO.Grafo. Errada, pois não é uma estrutura de dados que realiza os processos de push e pop. Seu processo é aleatório e balanceado, assim como as árvores. 3 Código: 35698 - Enunciado: As árvores são estruturas de dados que apresentam nós, tecnicamente denominados vértices, que podem estar ligados a outros nós por meio de uma linha de ligação, tecnicamente denominada aresta. Existem diversas formas de representar graficamente a estrutura de dados árvore. Nesse contexto, analise a figura a seguir e identifique o tipo de representação. a) Representação por inclusão. b) Representação hierárquica. c) Representação por parênteses aninhados. d) Representação por indentação. e) Representação por vetor de dados. Alternativa marcada: e) Representação por vetor de dados. Justificativa: Resposta correta: Representação por vetor de dados. Distratores: Representação por indentação. Errada, pois não apresenta a estrutura na forma indentada.Representação hierárquica. Errada, pois não apresenta a estrutura em forma de árvore.Representação por parênteses aninhados. Errada, pois não apresenta a estrutura na forma de pareamento.Representação por inclusão. Errada, pois a estrutura não está na forma de diagrama de Venn. 1,00/ 1,00 4 Código: 41092 - Enunciado: De acordo com Forbellone e Eberspacher (2005), denominamos lista "um conjunto de elementos individualizados em que cada um referencia outro elemento distinto como sucessor". (Fonte: FORBELLONE, A. L. V.; EBERSPACHER, H. F. Lógica de programação: a construção de algoritmos e estruturas de dados. 3. ed. São Paulo: Prentice Hall, 2005.) Neste contexto, leia as assertivas a seguir e marque a alternativa correta.I. A lista simplesmente encadeada apresenta uma posição de início e 1,00/ 1,00 término (NULL) dessa lista, em que cada elemento é armazenado em uma posição de memória que vem acompanhada da informação do próximo endereço de memória onde se encontra o próximo elemento dessa lista.II. A lista duplamente encadeada apresenta duas posições de início e término (NULL) dessa lista, pois a realização da leitura do elemento da lista pode decorrer tanto no sentido horário como no sentido anti- horário, dada a existência da referência de dois ponteiros, anterior e próximo, que indicam a posição anterior e posterior da lista, respectivamente.III. A lista circular simplesmente encadeada apresenta uma posição de início e término dessa lista, que aponta sempre para o primeiro elemento, caracterizando, portanto, uma estrutura circular. a) II e III, apenas. b) I e II, apenas. c) I, II e III. d) I e III, apenas. e) Somente a II. Alternativa marcada: c) I, II e III. Justificativa: Resposta correta: I, II e III.A afirmativa I está correta, pois a lista simplesmente encadeada apresenta uma posição de início, em que os elementos dessa lista são inseridos, e término, indicando vazio ou NULL, pois ela é unidirecional.A afirmativa II está correta, pois a lista duplamente encadeada apresenta duas posições de início, em que os elementos dessa lista são inseridos, e término, indicando vazio ou NULL, pois ela é bidirecional.A afirmativa III está correta, pois a lista circular simplesmente encadeada apresenta uma posição de início, em que os elementos são inseridos, e término, indicando vazio ou NULL, podendo ser caracterizada como unidirecional ou bidirecional. 5 Código: 35784 - Enunciado: Tomando como base a tabela a seguir, analise os elementos de sua composição, de forma a interpretá-los, buscando identificar, por meio do percurso de pós-ordem, referente ao método de busca em profundidade, a ordem de visita de cada elemento, e marque, em seguida, a alternativa correta em relação à leitura realizada. a) 18, 22, 36, 23, 52, 58, 76, 88, 99, 97, 69, 45. b) 18, 22, 23, 36, 45, 52, 58, 69, 76, 88, 97, 99. c) 45, 23, 22, 18, 36, 69, 58, 52, 97, 88, 76, 99. d) 45, 23, 69, 22, 36, 58, 97, 18, 52, 88, 99, 76. e) 23, 22, 36, 18, 69, 58, 52, 97, 88, 99, 76, 45. Alternativa marcada: a) 18, 22, 36, 23, 52, 58, 76, 88, 99, 97, 69, 45. 1,50/ 1,50 Justificativa: Resposta correta: 18, 22, 36, 23, 52, 58, 76, 88, 99, 97, 69, 45. Indica saída do percurso pós-ordem (EDR) // Algoritmo Pós-Ordemvoid PosOrdem(Arvbin p) { if (p) { PosOrdem(p->esq); PosOrdem(p->dir); Visite(p); } } Distratores: 45, 23, 22, 18, 36, 69, 58, 52, 97, 88, 76, 99. Errada, pois indica saída do percurso pré-ordem (RED). // Algoritmo Pré-Ordemvoid PreOrdem(Arvbin p) { if (p) { Visite(p); PreOrdem(p->esq); PreOrdem(p->dir); } } 45, 23, 69, 22, 36, 58, 97, 18, 52, 88, 99, 76. Errada, pois indica saída do percurso para busca em largura (DFS). // Algoritmo Busca em Larguravoid Largura(Arvbin p) { inicializa_fila(); ins_fila(p); while (!fila_vazia()) { p = rem_fila(); if (p) { Visite(p); ins_fila(p->esq); ins_fila(p->dir); } } finaliza_fila(); } 18, 22, 23, 36, 45, 52, 58, 69, 76, 88, 97, 99. Errada, pois indica saída do percurso em ordem (ERD)..// Algoritmo Em Ordemvoid EmOrdem(Arvbin p) { if (p) { EmOrdem(p->esq); Visite(p); EmOrdem(p->dir); } } 23, 22, 36, 18, 69, 58, 52, 97, 88, 99, 76, 45. Errada, pois representa erro no processamento de saída, pois não referencia nenhum dos métodos válidos (o aluno confundiu o primeiro valor da esquerdacomo 23) 6 Código: 35792 - Enunciado: Faça a análise do programa a seguir, cujo código está escrito em linguagem C, e marque a alternativa que corresponda à implementação da rotina de remoção de dados em uma lista simplesmente encadeada. void main( ) { setlocale(LC_ALL, "portuguese"); ListaSimplesEnc minhaLista; int valor, op, valorAlt; criarLista(&minhaLista); printf("Escolha uma opção:\n"); while (1) { printf("\n(1) Inserir elemento no início da Lista\n"); printf("(2) Inserir elemento em ordem (verifique se a lista está ordenada)\n"); printf("(3) Remover elemento no início da Lista\n"); printf("(4) Remover elemento específico da Lista\n"); printf("(5) Mostrar Lista\n"); printf("(6) Apagar todos os elementos da Lista\n"); printf("(7) Alterar elemento da Lista\n"); printf("(0) Sair\n"); printf(" ? "); scanf("%d", &op); system("cls"); switch (op) { case 1: // inserir elemento no início printf("Valor? "); scanf("%d", &valor); inserirIni(&minhaLista, valor); break; case 2: // inserir elemento ordenado printf("Valor? "); scanf("%d", &valor); inserirOrd(&minhaLista, valor); break; case 3: // remover o primeiro removerIni(&minhaLista); break; case 4: // remover determinado elemento printf("Valor? "); scanf("%d", &valor); removerEle(&minhaLista, valor); break; case 5: // mostrar lista if (estaVazia(&minhaLista)) { printf("Lista vazia\n"); } else { mostrarLista(&minhaLista); } break; case 6: // apagar todos os elementos da Lista removerTudo(&minhaLista); break; case 7: // alterar um elemento printf("Valor a ser alterado? "); scanf("%d", &valor); printf("Novo valor? "); scanf("%d", &valorAlt); alterarEle(&minhaLista, valor, valorAlt); break; case 0: // abandonar o programa removerTudo(&minhaLista); exit(0); default: printf("Opção inexistente!\n"); } }} 1,50/ 1,50 a) void atento(ListaSimplesEnc *pList) { Nodo *pAux = pList->prim; if (pAux != NULL) { pList->prim = pList->prim->prox; free(pAux); } else { printf("Lista Vazia\n"); }} b) void atento(ListaSimplesEnc *pList, int v1, int v2) { Nodo *pAtu, *pAnt; pAnt = NULL; pAtu = pList->prim; while (pAtu != NULL && pAtu->info != v1) { pAnt = pAtu; pAtu = pAtu->prox; } if (pAnt != NULL) { if (pAtu != NULL) { pAtu->info = v2; } else { printf("Valor não encontrado\n"); } } else { printf("Lista Vazia\n"); }} c) int atento(ListaSimplesEnc *pList) {// Atento aos comentários: elemento removido com sucesso return(pList->prim == NULL);} d) void atento(ListaSimplesEnc *pList, int v) { Nodo *novo; novo = (Nodo*)malloc(sizeof(Nodo)); if (novo != NULL) { novo->info = v; novo->prox = pList->prim; pList->prim = novo; } else { printf("Memória Insuficiente\n"); }} e) void atento(ListaSimplesEnc *pList) { Nodo *p; printf("Lista: "); for (p = pList->prim; p != NULL; p = p->prox) { printf("%d -> ", p->info); } printf("NULL\n");} Alternativa marcada: a) void atento(ListaSimplesEnc *pList) { Nodo *pAux = pList->prim; if (pAux != NULL) { pList->prim = pList->prim->prox; free(pAux); } else { printf("Lista Vazia\n"); }} Justificativa: Resposta correta: Representa uma rotina de remoção de elementos de uma lista simplesmente encadeada.void atento(ListaSimplesEnc *pList) { Nodo *pAux = pList->prim; if (pAux != NULL) { pList->prim = pList->prim->prox; free(pAux); } else { printf("Lista Vazia\n"); }} Distratores:void atento(ListaSimplesEnc *pList, int v) { Nodo *novo; novo = (Nodo*)malloc(sizeof(Nodo)); if (novo != NULL) { novo->info = v; novo->prox = pList->prim; pList->prim = novo; } else { printf("Memória Insuficiente\n"); }}Errada, pois se refere à operação de inclusão de elementos em uma lista simplesmente encadeada. void atento(ListaSimplesEnc *pList) { Nodo *p; printf("Lista: "); for (p = pList->prim; p != NULL; p = p->prox) { printf("%d -> ", p->info); } printf("NULL\n");}Errada, pois se refere à rotina de consulta de elementos de uma lista simplesmente encadeada. void atento(ListaSimplesEnc *pList, int v1, int v2) { Nodo *pAtu, *pAnt; pAnt = NULL; pAtu = pList->prim; while (pAtu != NULL && pAtu->info != v1) { pAnt = pAtu; pAtu = pAtu->prox; } if (pAnt != NULL) { if (pAtu != NULL) { pAtu->info = v2; } else { printf("Valor não encontrado\n"); } } else { printf("Lista Vazia\n"); }}Errada, pois se refere à rotina de alteração de elementos de uma lista simplesmente encadeada. int atento(ListaSimplesEnc *pList) {// Atento aos comentários: elemento removido com sucesso return(pList->prim == NULL);}Errada, pois se refere à rotina de teste paralista vazia. 7 Código: 35796 - Enunciado: "As árvores, independentemente de sua variação — árvores binárias, árvores AVL, árvores rubro-negras, árvore B, por exemplo — permitem que sejam realizadas as operações de busca em árvore. Quanto aos métodos de busca em árvores, são apresentadas a busca em profundidade, que permite a aplicação das técnicas de percurso de pré-ordem, em ordem e pós-ordem, e busca em largura." (Fonte: BOENTE, A. N. P. Aprendendo a programar em linguagem C: do básico ao avançado. Rio de Janeiro: Brasport, 2003.) Neste contexto, analise a árvore a seguir e marque a alternativa que corresponda ao método de busca em profundidade sob a técnica de percurso de pós-ordem. a) 1, 2, 4, 5, 3, 6, 7. b) 4, 2, 4, 1, 6, 3, 7. c) 4, 5, 2, 6, 7, 3, 1. d) 1, 2, 3, 4, 5, 6, 7. e) 1, 2, 3, 6, 7, 4, 5. Alternativa marcada: c) 4, 5, 2, 6, 7, 3, 1. Justificativa: Resposta correta: 4, 5, 2, 6, 7, 3, 1. Representa o percurso pós-ordem (EDR). Distratores:1, 2, 3, 4, 5, 6, 7. Errada, pois apresenta busca em largura (BFS).1, 2, 3, 6, 7, 4, 5. Apresenta erro na tentativa da composição do percurso pré-ordem.1, 2, 4, 5, 3, 6, 7. Errada, pois apresenta percurso pré-ordem (RED).4, 2, 4, 1, 6, 3, 7. Errada, pois apresenta percurso em ordem (ERD). 1,50/ 1,50 8 Código: 37888 - Enunciado: De acordo com Boente (2003), "a alocação dinâmica de memória em tempo de execução é realizada na linguagem C, por meio de ponteiros ou apontadores, utilizando, para isso, a função malloc( )". (Fonte: BOENTE, A. N. P. Aprendendo a programar em linguagem C: do básico ao avançado. Rio de Janeiro: Brasport, 2003.) Neste contexto, analise o código-fonte a seguir, escrito em linguagem C, e marque a alternativa correta.#include <stdio.h>#include <malloc.h>#include <dos.h>void main ( ){ int *ptr; ptr = ( int * ) malloc( sizeof( int ));*ptr = 3; system(“CLS”); printf (“Conteudo do ponteiro: %d\n\n”, *ptr); system(“PAUSE”);} a) Permite que o apontador *ptr aponte para a próxima informação que está contida na posição 3 de memória. b) Não executa função alguma, pois existe um erro na linha de código ptr = ( int * ) malloc( sizeof( int ));. c) Permite que o apontador *ptr aponte para o próximo endereço de memória que está contido na posição 3. d) Imprime o conteúdo de dado 3, armazenado no apontador ptr. e) Imprime o valor do próximo endereço dinâmico de memória em que *ptr é igual a 3. 0,00/ 1,50 Alternativa marcada: e) Imprime o valor do próximo endereço dinâmico de memória em que *ptr é igual a 3. Justificativa: Resposta correta: Imprime o conteúdo de dado 3, armazenado no apontador ptr.Trata-se de uma função de exibição. Distratores:Permite que o apontador *ptr aponte para a próxima informação que está contida na posição 3 de memória. Errada, pois &ptr; é a instrução endereço de memória, e não *ptr, que é utilizada para conteúdo de dado, como afirma a questão.Permite que o apontador *ptr aponte para o próximo endereço de memória que está contido na posição 3. Errada, pois &ptr; é a instrução endereço de memória, e não *ptr, que é utilizada para conteúdo de dado, como afirma a questão.Imprime o valor do próximo endereço dinâmico de memória em que *ptr é igual a 3. Errada pois &ptr; é a instrução endereço de memória, e não *ptr, que é utilizada para conteúdo de dado, como afirma a questão.Não executa função alguma, pois existe um erro na linha de código ptr = ( int * ) malloc( sizeof( int ));. Errada, pois não existe erro na linha de código ptr = ( int * ) malloc( sizeof( int ));.
Compartilhar