Buscar

AV1__G 37 A ED 4_-_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 13 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 13 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 13 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

* Algumas perguntas ainda não avaliadas
AV1
Entrega 29 out em 23:59 Pontos 40 Perguntas 10
Disponível 23 out em 0:00 - 29 out em 23:59 Limite de tempo 120 Minutos
Instruções
Histórico de tentativas
Tentativa Tempo Pontuação
MAIS RECENTE Tentativa 1 39 minutos 27 de 40 *
Pontuação deste teste: 27 de 40 *
Enviado 29 out em 11:48
Esta tentativa levou 39 minutos.
Leia com atenção as orientações abaixo antes de iniciar esta avaliação:
Será permitida uma tentativa para realizar esta prova.
Programe-se para realizar sua avaliação com tranquilidade, pois você terá 120 minutos
cronometrados para conclusão e envio das respostas.
Ao iniciar a avaliação o cronômetro não para, independentemente de a plataforma estar aberta ou
não;
Após este prazo, a avaliação sera automaticamente finalizada.
Durante a realização da prova:
Será exibido uma questão por vez, podendo “Avançar” ou “Voltar” quando necessário, dentro do
período da tentativa;
A tentativa somente será contabilizada após clicar no botão “Enviar”, mas finalizados os 120
minutos do cronômetro, a prova será finalizada automaticamente pelo sistema.
 
Boa prova!
3 / 3 ptsPergunta 1
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
https://newtonpaiva.instructure.com/courses/18574/quizzes/40321/history?version=1
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.
 int vetor1[30]. 
 int vetor1[31]. Correto!Correto!
 char vetor1[31]. 
 float vetor1[31]. 
 float vetor1[30]. 
Feedback:
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.
3 / 3 ptsPergunta 2
Analise o seguinte código escrito em linguagem C.
#include <stdio.h>
#include <stdlib.h>
int main () {
int i, sequencial[20], aleatorio[20];
for(i=0;i<=19;i++) {
sequencial[i]=i;
aleatorio[i]=rand();
}
}
Neste contexto, julgue as afirmações a seguir.
I – O laço de repetição for apresentará erro de execução, pois
seu índice se inicia e zero(0).
II – Os elementos dos vetores são impressos em tela.
III – O código inicializa dois vetores de 20 posições.
Está(ão) correta(s) a(s) afirmativa(s):
 I e III, somente. 
 III, somente. Correto!Correto!
 II, somente. 
 I e II, somente. 
 I, somente. 
Feedback:
- Na linguagem C/C++ os índices dos vetores começam em zero,
assim, não ocorrerá erro de execução no laço for.
- O código apenas inicializa os vetores, não imprimindo-os em tela.
- O código inicializa dois vetores de vinte posições.
3 / 3 ptsPergunta 3
Analise o case a seguir:
Um programa funcionava de forma correta há algum tempo e, ao utilizar
uma variável declarada como float, para receber o resultado do cálculo
de uma média, começou a não apresentar o resultado corretamente.
O programador, ao analisar o código, verificou que todos os cálculos
foram realizados de forma correta e que as variáveis comuns estavam
declaradas corretamente.
Considerando que foram utilizados, sem muito cuidado, ponteiros na
implementação, o que pode ter acontecido para gerar o erro?
 Ter sido feita a atribuição com tipos incompatíveis. 
 A variável não foi declarada de forma correta. 
 
Ter gerado um erro em tempo de projeto causado pelo ponteiro, que não
pode receber endereços para valores reais.
 
Ter utilizado a variável da média apontando para alguma variável
“ponteiro”.
 
Ter sido utilizado de forma incorreta algum ponteiro, que acessou
indevidamente a área de memória ocupada pela variável de média.
Correto!Correto!
Feedback:
O uso de ponteiros sem muito cuidado pode acarretar no acesso
indevido à memória. Considerando a situação apresentada, há
uma grande chance de ser um problema com algum ponteiro.
3 / 3 ptsPergunta 4
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 
 18 
 13 
 10 
 23 Correto!Correto!
Feedback:
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).
3 / 3 ptsPergunta 5
É conhecido que as listas podem ter variações entre estática, dinâmica,
homogênea, heterogênea, ordenada ou não ordenada. Sabe-se também
que as características relativas aos tipos de dados e à forma de alocação
de memória podem ser identificadas por meio da forma de declaração da
lista, enquanto as características de ordenação de uma lista só poderão
ser identificadas com uma análise das funções implementadas pelo
algoritmo.
Observando a declaração do nodo a seguir, é possível identificar a qual
tipo de lista ele pertence.
 
struct nodo
{
 int idade;
 float altura;
 char sexo;
 nodo *proximo;
};
 
Marque a alternativa que tenha as características corretas para a lista
declarada:
 Lista estática heterogênea. 
 Lista estática homogênea. 
 Lista encadeada dinâmica heterogênea. Correto!Correto!
 Lista encadeada dinâmica homogênea. 
 Lista duplamente encadeada dinâmica heterogênea. 
3 / 3 ptsPergunta 6
As listas estáticas, baseadas em vetores e dinâmicas, criadas com base
em structs com ponteiros para a ligação entre os nodos, embora
implementem as mesmas funções, têm algumas diferenças quanto ao uso
de memória e às possibilidades de acesso. Com base nesse contexto e
em seus conhecimentos sobre listas, analise as afirmativas abaixo:
 
I. Na aplicação de lista encadeada dinâmica, a função de esvaziar lista
não libera os espaços correspondentes na memória, só os retira da lista.
II. Listas simplesmente encadeadas só podem ser acessadas em um
sentido.
III. Quando um nodo é apontado para a primeira posição da lista
encadeada, ele se torna o primeiro elemento da lista.
 
É correto o que se afirma em:
 II, apenas. 
 II e III, apenas. Correto!Correto!
 I, apenas. 
 I e III, apenas. 
 I, II e III. 
Feedback:
Quando a lista é esvaziada, as posições são liberadas na memória
através do operador delete.
3 / 3 ptsPergunta 7
As funções para manipulação e navegação em uma lista possuem
características específicas que possibilitam a distinção entre elas e
mesmo a identificação de características da lista. Avalie o código abaixo e
responda a questão a seguir:
 
 
 nodo *novo=new nodo();
 novo->num=val;
 if(inicio==NULL)
 {
 inicio=novo;
 fim=novo;
 novo->proximo=NULL;
 novo->anterior=NULL;
 }else
 {
 novo->proximo=inicio;
 inicio->anterior=novo;
 novo->anterior=NULL;
 inicio=novo;
 }
 
O código é a lógica completa de uma das funções de uma lista. Marque
abaixo qual função é e de qual tipo de lista.Função retirar elemento da lista duplamente encadeada não ordenada. 
 
Função inserir elemento no fim da lista duplamente encadeada ordenada. 
 
Função inserir elemento no início da lista duplamente encadeada não
ordenada.
Correto!Correto!
 
Função inserir elemento no início da lista duplamente encadeada
ordenada.
 Função retirar elemento da lista duplamente encadeada ordenada. 
Feedback:
O código é de inserção, pois cria o novo nodo e insere o valor. A
inserção é feita no início devido à movimentação dos ponteiros.
Como a inserção não é feita na ordem, trata-se de uma lista não
ordenada.
3 / 3 ptsPergunta 8
Listas são estruturas que armazenam vários valores, podendo ser
limitado o número de valores ou não limitado. Os valores também podem
ser de um ou de vários tipos, enquanto a navegação entre os elementos
pode ser só em um sentido ou nos dois sentidos. A inserção de nodos
pode ser feita em ordem ou fora de ordem. Essas características que
identificam o tipo de lista que se está utilizando.
As afirmativas a seguir apresentam algumas características de listas com
suas explicações. Avalie o que é exposto e responda à questão a seguir:
I – Uma lista duplamente encadeada ordenada pode ser acessada nos
dois sentidos.
II – A lista que tem mais de um tipo em cada nodo é considerada
heterogênea.
III – Uma lista simplesmente encadeada pode ser homogênea ou
heterogênea.
É correto o que se afirma em:
 II e III, apenas. 
 II, apenas. 
 I e II, apenas. 
 I, apenas. 
 I, II e III. Correto!Correto!
Feedback:
A característica principal da lista duplamente encadeada é o fato
de poder ser acessada nos dois sentidos. Qualquer estrutura de
dados que tenha mais de um tipo de dados diferente é
heterogênea, e as listas simplesmente encadeadas também
podem ser homogêneas ou heterogêneas.
3 / 3 ptsPergunta 9
Uma empresa de atendimento ao cliente deseja criar um software para o
controle da fila de espera. O software deve ser capaz de receber novas
pessoas que chegam para serem atendidas e de controlar quem chegou
antes e que, por isso, devem ser atendidas primeiro.
Considerando o problema a ser resolvido pelo programa, a pilha seria
uma estrutura de dados ideal para resolvê-lo?
 
Marque a alternativa que apresenta a resposta correta.
 Sim, pois faria o controle da fila de acordo com a estratégia FIFO. 
 Sim, mas teria que ser utilizada sem a estratégia de acesso. 
 
Não, pois a disciplina de acesso da pilha não permite que ela funcione da
forma como o programa precisa.
Correto!Correto!
 
Não, pois, embora a pilha funcione da maneira correta para controlar a fila
por ordem de chegada, ela não deve ser utilizada para isso.
 Sim, pois faria o controle da fila de acordo com a estratégia FILO. 
Feedback:
Na pilha, a regra de acesso FILO deve ser respeitada, ou seja, o
último que chegou deve ser o primeiro a sair, ao contrário de uma
fila onde o primeiro a chegar deve ser o primeiro a ser atendido.
Não avaliado ainda / 13 ptsPergunta 10
Sua Resposta:
Compare e exemplifique as principais estruturas de dados
lineares.
1. **Array (Vetor)**:
 - **Descrição**: Um array é uma coleção fixa de elementos do mesmo
tipo armazenados em locais de memória contíguos.
 - **Exemplo**:
 ```c
 int array[5] = {1, 2, 3, 4, 5};
 ```
2. **Lista Ligada (Linked List)**:
 - **Descrição**: Uma sequência de nós, onde cada nó contém um valor
e um ponteiro para o próximo nó.
 - **Exemplo**:
 ```c
 struct Node {
 int data;
 struct Node* next;
 };
 ```
3. **Pilha (Stack)**:
 - **Descrição**: Uma estrutura de dados baseada no princípio LIFO
(Last In, First Out), onde o último elemento inserido é o primeiro a ser
removido.
 - **Exemplo**:
 ```c
 #include <stdio.h>
 #define MAX_SIZE 5
 int stack[MAX_SIZE];
 int top = -1;
 void push(int item) {
 if (top < MAX_SIZE - 1) {
 stack[++top] = item;
 }
 }
 int pop() {
 if (top >= 0) {
 return stack[top--];
 }
 return -1;
 }
 ```
4. **Fila (Queue)**:
 - **Descrição**: Uma estrutura de dados baseada no princípio FIFO
(First In, First Out), onde o primeiro elemento inserido é o primeiro a ser
removido.
 - **Exemplo**:
 ```c
 #include <stdio.h>
 #define MAX_SIZE 5
 int queue[MAX_SIZE];
 int front = 0, rear = -1;
 void enqueue(int item) {
 if (rear < MAX_SIZE - 1) {
 queue[++rear] = item;
 }
 }
 int dequeue() {
 if (front <= rear) {
 return queue[front++];
 }
 return -1;
 }
 ```
Esta pergunta é abrangente e permite que os voces demonstrem
seu conhecimento sobre os principais conceitos de estrutura de
dados. Voces alunos devem abordar os seguintes tópicos vistos
em cada unidade de estudo.
Pontuação do teste: 27 de 40

Continue navegando

Outros materiais