Buscar

AV1 - Estrutura de dados

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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.

Outros materiais