Baixe o app para aproveitar ainda mais
Prévia do material em texto
Pontuação desta tentativa: 15 de 15 Pergunta 1 1,5 / 1,5 pts Em um software que está sendo desenvolvido para receber a avaliação (de 0 a 10) de produtos, são tratadas informações que chegam a todo momento e por isso não existe um número certo de registros a serem armazenados, nesse contexto, considerando o cadastro das notas e avaliando as características de vetores e matrizes, seria possível o uso dessas estruturas para tratar os dados desse software? Marque a alternativa que traga a resposta e a justificativa corretas. (Adaptado de CUNHA, Claudia, 2018) Não, pois se trata de mais de um tipo de dados a serem armazenados. Sim, mas nesse caso deverá ser utilizada matriz para uma melhor organização dos dados. Não, pois não tem como se definir o tamanho da estrutura, que por ser estática, deve ser declarada com o tamanho especificado. Não, pois existem dados de mais de um tipo a serem armazenados no vetor, o que não é possível. Sim, pois o único dado de entrada é nota que pode ser declarado como um vetor de inteiros. Está correta a alternativa "Não, pois não tem como se definir o tamanho da estrutura, que por ser estática, deve ser declarada com o tamanho especificado.", pois o vetor é estático e deve ser declarado com o tamanho especificado. No capítulo 02 do livro-texto da unidade I é explicado que o vetor é uma variável composta com número finito de registros. Pergunta 2 1,5 / 1,5 pts Um vetor é uma variável composta homogênea unidimensional, ou seja, uma sequência finita de variáveis todas do mesmo tipo, com o mesmo identificador (mesmo nome) e alocadas sequencialmente na memória. Neste contexto, julgue as seguintes afirmações. I – Os índices utilizados na linguagem C/C++ para identificar as posições de um vetor começam sempre em 0 (zero). II – A declaração de vetores é feita de forma similar à declaração de variáveis simples, com uma diferença: por ser uma estrutura estática, o vetor tem um tamanho que deve ser definido entre colchetes quando ele é declarado. III – Um vetor é um conjunto de variáveis do mesmo tipo que podem ser referenciadas por um único identificador. Está(ão) correta(s) a(s) afirmativa(s): I e II, somente. I, somente. III, somente. II, somente. I, II e III. As três afirmações estão corretas, e cada uma delas versam sobre as características dos vetores. A primeira delas versa sobre os índices dos vetores, a segunda sobre sua declaração e a terceira sobre o identificador. Esse assunto pode ser visto na unidade 1 no tópico 1.2 “Estrutura de Dados”. Pergunta 3 1,5 / 1,5 pts Vetores são estruturas de dados muito interessantes pois permitem a ligação entre várias variáveis do mesmo tipo que podem ser referenciadas por um mesmo identificador, seguido por um índice que, em linguagem C, sempre se inicia com 0. O código apresentado a seguir mostra o preenchimento de um vetor feito em uma estrutura de repetição, índice por índice, até o que vetor esteja completamente preenchido, observe-o com atenção para responder à questão que vem a seguir: for(i=0;i<=30;i++) { vetor1[i]=i; } Sabendo que todas as variáveis em C devem ser declaradas, inclusive os vetores, utilize o conhecimento que tem sobre essas estruturas para marcar a alternativa que mostra a declaração correta do vetor que é utilizado no código. float vetor1[31]. char vetor1[31]. int vetor1[30]. float vetor1[30]. int vetor1[31]. A resposta correta é a alternativa "int vetor1[31].", através dos valores de i na repetição (de 0 a 30) pode-se perceber que o vetor tem 31 posições, o tipo é definido pelo valor que ele recebe (i) que sendo também o índice do vetor é sempre inteiro. A explicação sobre isso pode ser vista no capítulo 2 do livro- texto da unidade I, sobre vetores. Pergunta 4 1,5 / 1,5 pts Uma matriz é uma coleção de variáveis de mesmo tipo, acessíveis com um único nome e armazenados contiguamente na memória. Neste contexto, julgue as seguintes afirmações. I – Para percorrer toda uma Matriz de duas dimensões são necessárias duas estruturas de repetição, uma dentro da outra. A mais externa salta as linhas e a mais interna preenche as colunas de forma sequencial. II – Na matriz, cada célula é acessada por dois índices numéricos, um referente a linhas e outro referente a colunas. III – Uma matriz pode ser definida apenas com duas dimensões. Está(ão) correta(s) a(s) afirmativa(s): I e II, somente. I e III, somente. III, somente. II e III, somente. I, somente. As duas afirmações iniciais estão corretas. A primeira delas versa sobre a necessidade de duas estruturas de repetição para percorrer uma matriz, e a segunda versa sobre a necessidade de dois índices para referenciar um elemento da matriz. A terceira afirmação está incorreta, pois uma matriz pode ter mais do que duas dimensões, por exemplo, a sintaxe a seguir define uma matriz de três dimensões. float matriz[10][10][10]; Esse assunto pode ser visto na unidade 1 no tópico 1.3 Estrutura de Dados. Pergunta 5 1,5 / 1,5 pts A alocação dinâmica de memória é uma forma de armazenamento de dados que deve ser feita com muito cuidado, uma vez que o menor descuido pode acarretar em erros graves no funcionamento do programa. Nesse contexto, o conhecimento sobre o uso dos operadores new e delete se mostra muito importante para um bom programador. Considerando o que já foi estudado sobre os operadores utilizados na alocação dinâmica de memória, avalie as afirmativas a seguir: I. O operador new sempre alocará a memória nas mesmas posições para o mesmo ponteiro, independentemente do tamanho necessário para isso ou de outras alocações feitas. II. A criação de uma variável composta dinâmica, com mais de um elemento, será feita com os campos alocados na memória de forma sequencial e consecutiva. III. O uso do operador delete é feito quando se deseja liberar o espaço alocado na memória. É correto o que se afirma em: I, II e III. II e III, apenas. III, apenas. I e II, apenas. I, apenas. Tendo em vista que, dentre as afirmações, a I é falsa, pois, a cada vez que se refaz a alocação, em tempo de execução, o heap pode ter sido modificado por novos espaços alocados ou liberado e, caso mude o tamanho a ser alocado, pode ser que o espaço antes reservado não o comporte mais. Pergunta 6 1,5 / 1,5 pts Para responder a essa questão, observe o seguinte trecho de código: int *ptrX,*ptrY,x,y; x=18; y=5; ptrY=&y; ptrX=&x; *ptrX=*ptrY+x; ptrX=ptrY; Qual valor estará na variável x ao terminar a execução? 5 23 18 10 13 O valor em X é 23, pois, através do operador indireto (*), a soma de *ptrY (valor de y) com o valor da variável x (18 + 5 = 23) é armazenado em *ptrX (o valor é colocado indiretamente na variável x). Pergunta 7 1,5 / 1,5 pts Analise o case a seguir: Luiz estava desenvolvendo o código de uma aplicação a fim de alocar diretamente a memória. Passando um endereço para o ponteiro (sem utilizar o operador new), indicou uma posição de memória aleatória, sem conferir se ela já estava sendo utilizada por outra variável. O código funcionou sem erros de compilação. Contudo, Luiz pode ter um problema com isso. Qual o possível problema no código desse programador? Se houver outra variável utilizando aquela área de memória, ela deixará de existir no programa. Um ponteiro que não armazena um endereço de memória e sim um valor float. Alguma variável comum apontar para a variável “ponteiro”, gerando erro. Existiroutra variável utilizando aquela parte da memória, causando inconsistência de dados. Um ponteiro que não aponta corretamente para um banco de dados relacional. Alternativa “Existir outra variável utilizando aquela parte da memória, causando inconsistência de dados.” correta, pois o uso de ponteiros de forma desordenada pode levar à inconsistência de dados, uma vez que eles podem utilizar uma área de memória que já esteja ocupada sem ter sido pensado para isso pelo programador. Pergunta 8 1,5 / 1,5 pts Uma pilha se comporta como uma lista com disciplina de acesso. Com base na informação apresentada acerca das pilhas, avalie as afirmações a seguir. 1. Listas e pilhas se diferenciam pela forma de inserção e retirada de elementos. 2. O algoritmo de inserção para uma lista ordenada pode ser utilizado em uma pilha. 3. Uma pilha não pode ser utilizada como estrutura heterogênea. É correto o que se afirma em: b) II, apenas. e) I, II e III. a) I, apenas. c) I e III, apenas. d) II e III, apenas. A alternativa correta é a A, pois somente a afirmativa I está correta. A II está errada, pois o algoritmo que faz a inserção em ordem para a lista ordenada não obedece à disciplina de acesso da pilha. A III está errada, pois a pilha pode ser tanto homogênea quanto heterogênea. Pergunta 9 1,5 / 1,5 pts As listas são estruturas de dados que podem ser implementadas com diversas variações referentes às suas características. Quanto às alocações de memória, uma lista pode ser estática ou dinâmica; já quanto ao tipo de dados, ela pode ser homogênea ou heterogênea e, quanto à forma de utilizar seus campos, a lista pode ser ordenada ou não ordenada. Cada forma de imlpementação tem suas características quanto ao código e às aplicações. Com base no texto e nos conhecimentos que você tem sobre essa estrutura, avalie as afirmativas abaixo sobre listas encadeadas: I. Na lista simplesmente encadeada não ordenada, os itens podem ser inseridos em qualquer lugar da lista. II. Na lista simplemente encadeada ordenada, os itens podem ser inseridos em qualquer lugar da lista, mas existe a opção de inseri-lo na ordem correta. III. Na lista encadeada, é necessário, entre outras coisas, a declaração de uma struct e de ponteiros para a lista. É correto o que se afirma em: I e III, apenas. II e III, apenas. II, apenas. I, apenas. I, II e III. A alternativa D é a correta, pois, na afirmativa 2, é dito que podem se inserir itens em qualquer ordem em uma lista ordenada quando, na verdade, nesse tipo de lista, a inserção é obrigatoriamente na ordem correta. Para mais informações, consulte os capítulos 7 e 8 da apostila da unidade 3. Pergunta 10 1,5 / 1,5 pts O preenchimento dos campos do nodo de uma lista diz muito sobre sua posição, considerando que o elo entre os elementos é feito pelos ponteiros e que o nodo armazenado deve ter um valor em seu campo-chave (campo de dados). Qual das afirmativas mostradas a seguir indica que o elemento é o último em uma lista duplamente encadeada com vários elementos inseridos? Os ponteiros *anterior e *próximo apontam para null. Os ponteiros *anterior e *próximo apontam para endereços de memória. O ponteiro *anterior do nodo aponta para um endereço, enquanto o ponteiro *próximo aponta para null. O ponteiro *anterior do nodo aponta para null enquanto o ponteiro *próximo aponta para um endereço. O nodo não tem valor em seu campo-chave. A alternativa C é a correta, pois, no último nodo de uma lista que tenha outros elementos, o ponteiro próximo aponta para null.
Compartilhar