Buscar

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 30 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 30 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 30 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

ESTRUTURA DE DADOS – COLETÂNEA DE QUESTÕES DE PROVAS ANTERIORES
01. Qual das alternativas a seguir pode definir uma estrutura de pilha?
Entrada e saída de dados pelo final.
Entrada de dados pelo início e saída pelo final.
Entrada de dados pelo final e saída pelo início.
Entrada e saída de dados em qualquer local.
Entrada e saída de dados pelo início.
02. Qual das seguintes estruturas de dados é classificada como heterogênea?
Vetor
Pilha
Loop
Registro
Fila
03. Na estrutura de dados tipo pilha, há duas operações básicas para empilhamento e desempilhamento. Essas operações são conhecidas como:
PUSH e PULL;
PUSH e POP.
HEAP e POP;
Base e Topo;
PULL e POP;
04. O processo de rearranjar um conjunto de dados em uma ordem crescente ou decrescente é chamado de ordenação. Existem várias técnicas de ordenação, entretanto a técnica que procura o menor valor entre todos os elementos do vetor e troca-o pelo primeiro elemento; para os n - 1 elementos restantes, determinação do elemento de menor valor e troca pelo segundo elemento e assim sucessivamente, é chamado de:
Inserção
Seleção
Binária
Hash
Bolha
05. Analise as seguintes afirmações: 
I. Na Passagem por Referência, o parâmetro que vai ser passado na chamada da função deve ser uma variável, de tal forma que uma alteração de valor neste parâmetro também altera a variável correspondente. 
II. Uma recursão consiste em uma função chamar ela mesma com argumentos sempre do mesmo valor.
III. Considerando-se o escopo das variáveis, é correto afirmar que uma variável é dita global quando a sua passagem no momento da chamada de uma função se dá tanto por valor quanto por referência. Uma variável é dita local quando esta passagem se dá apenas por valor. 
Indique a opção que contenha todas as afirmações verdadeiras.
II e III.
I e II.
I e III.
Somente a alternativa e II.
Somente a alternativa I.
06. Seja Q uma estrutura de dados do tipo fila, em que ENQUEUE(X) significa a adição do elemento X à Q e que EQUEUE(), a retirada de um elemento. Q está inicialmente vazia e sofre a seguinte sequencia de operações:
ENQUEUE(1)
ENQUEUE(2)
DEQUEUE()
ENQUEUE(3)
ENQUEUE(4)
DEQUEUE()
DEQUEUE()
ENQUEUE(5)
Ao final da sequencia, a soma dos elementos de que (Q) será?
5
6
9
15
0
07. Analisando o trecho de código abaixo, marque a alternativa correta que apresenta o que será impresso na tela do usuário. Sabe-se que na linguagem C os ponteiros são representados pelo sinal de asterisco (*), o endereço de memória pelo sinal & e a função de impressão é denominada printf. void funcao ( int *a, int *b) 
{
int c; 
c = *a; 
a = b; 
*b = c;
}
main() 
{
int a=2, b=3; 
funcao (&a, &b);
printf("%d - %d \n",a,b); 
}
3 - 3
2 - 2
3 - 2
2 - 3
Não irá compilar
08. Determinados tipos de estrutura de dados, são utilizados para implementar um algoritmo de escalonamento de processos do sistema operacional UNIX, chamado Round Robin, onde cada processo ganha uma fatia de tempo. Esse tipo de estrutura de dados é chamado de:
Tabela Hash
Lista encadeada
Pilha
Lista duplamente encadeada
Método Bolha
09. O espaço necessário para a representação dos dados pode ser alocado à medida que se torne necessário, através da alocação dinâmica. Uma estrutura armazenada através de encadeamento apresenta seus nodos alocados em posições aleatórias na memória, e não lado a lado. Dessa forma, existem várias vantagens no uso de representar os dados por encadeamento. Marque a alternativa correta que apresenta estas vantagens.
Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de componentes.
Transferência de dados, gerenciamento de memória e procedimentos menos intuitivos.
Proteção de memória, transferência de dados, estruturas simples.
Previsão de espaço físico, estruturas complexas, procedimentos menos intuitivos.
Acesso, representação, compartilhamento de memória.
10. Marque a afirmativa correta para a "inserção incremental".
É um tipo de ordenação por intercalação
Os pivôs são escolhidos aleatoriamente.
É um tipo de sequenciação por intercalação.
A técnica é boa quando os dados ficam uniformemente distribuídos entre os seus compartimentos.
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de elementos.
11. O registro de ativação de uma sub-rotina é o conjunto das informações que devem/precisam ser alocadas em memória. Assinale abaixo a única opção que representa a composição destas informações.
( ) endereço de retorno / variáveis locais / parâmetros passados
( ) endereço de retorno / valor de retorno / endereço de ponteiro
( ) endereço de ponteiro / variáveis locais / endereço inicial
( ) variáveis locais / valor de retorno / endereço de ponteiro
( ) parâmetros passados / endereço inicial / endereço de retorno
12. Considere:
I - Os algoritmos de busca binária e de busca seqüencial executam processamento repetitivo.
II - Os algoritmos de busca binária e de busca seqüencial utilizam a técnica de recursão.
III - A busca seqüencial executa cada fase de repetição na forma de uma subtarefa da fase anterior.
IV - A busca binária trabalha com uma forma circular de repetição. 
Está correto o que consta em:
I e II, apenas.
II, apenas.
I e IV, apenas.
I, II, III e IV.
I, apenas.
13. As estruturas de dados permitem o uso de certos algoritmos para a ordenação dos elementos de forma a facilitar a consulta de determinado elemento. Existem vários tipos de algoritmos para realizar a ordenação dos elementos, onde um algoritmo de ordenação deve rearranjar o vetor de forma a estabelecer uma ordem entre os elementos. O trecho de código abaixo descreve o algoritmo chamado:
algoritmo ordena (int a[], int n){ 
Para i da primeira posição até a penúltima faca 
mínimo = i 
para j da posição seguinte a i até a ultima posição faça
se (a[j] < a[mínimo]) 
mínimo =j; 
fim para 
fim para 
troca(a[mínimo],a[i]); 
fim algoritmo
MergeSort
Bolha
Seleção
Inserção
QuickSort
14. É um método de pesquisa ou busca, cujo algoritmo parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca, comparando o elemento buscado (chave) com o elemento no meio do vetor. Se o elemento do meio do vetor for a chave, a busca termina com sucesso. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E finalmente, se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor.
A descrição apresentada trata-se do método denominado busca...
Randômica.
Linear.
Binária.
Por contagem.
Por comparação.
15. Tanto a operação TOP (acessa topo), quanto à operação POP (remover), permite acessar o último elemento armazenado em uma Pilha. Quanto à diferença entre ambas as operações em relação ao estado da Pilha é correto afirmar:
Ambas alteram o estado da Pilha
Somente a operação POP altera o estado da Pilha
Nenhuma das operações altera o estado da Pilha
Somente a operação TOP altera o estado da Pilha
A operação TOP remove um elemento e altera o estado da Pilha
16. Sobre estrutura de dados, identifique o que está correto afirmar.
I. Pilha é uma estrutura de dados com acesso restrito aos seus elementos, uma vez que eles são colocados e retirados por um único lado e são ordenados pelo princípio LIFO (last in first out). Assim, sempre que um elemento é adicionado ou retirado seu topo é alterado.
II. Pilha é o tipo de estrutura usada, por exemplo, na avaliação de expressões numéricas, na recursividade e pelos compiladores, na passagem de parâmetros para as funções.
III. Registro é uma estrutura básica que permite guardar coleções de dados de diferentes tipos, sendo normalmente utilizado quando um objeto tem diferentes atributos, isto é, contém campos de diferentes tipos.
IV. Lista pode conter um número qualquer de elementos, expandindo-se ou contraindo-se conforme o elementos são inseridos ou retirados. Nesse tipo de estrutura, os acessostanto podem ser feitos sequencialmente como diretamente. V. Fila, assim como a pilha , é uma versão especial de lista, e como tal, seus elementos são ordenados pelo princípio LIFO (last in first out).
I, II e III.
II, III, IV e V.
I, III e V.
I, III, IV e V.
II, IV e V.
17. Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são altamente especializadas, destinando-se a algumas tarefas específicas. Dessa forma a definição de Estrutura de Dados está expressa na alternativa:
É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados de modo eficiente.
É um modo de utilização de dados nos programas de computador.
É um modo de distribuição e organização de dados em uma rede de computador de modo que possam ser usados de modo eficiente.
São os nomes dados as variáveis na montagem de uma rotina.
É um modo de deleção de dados em um computador.
18. A técnica LIFO (last in first out), utilizada em programação estruturada, é fundamentada no conceito de:
Ponteiro
Loop
Array
Pilha
Fila
19. Os métodos de ordenação são muito utilizados em estruturas de dados para facilitar a busca e a recuperação posterior de itens de conjuntos ordenados. Existem vários métodos de ordenação, por este motivo, marque corretamente a alternativa que apresenta o código do método de seleção.
int ordena(float v[], float valor, int n){ 
for (int i = 0; i < n; i++)
if (v[i] == valor) 
return i;
return -1; 
}
int ordena(float v[], float valor, int n) 
{ 
int ini = 0, fim = n -1, meio; 
while (ini <= fim){ 
meio = (ini + fim)/2; 
if (v[meio] == valor) 
return meio;
if (valor < v[meio]) 
fim = meio -1; 
else 
ini = meio+1; 
}
return -1; 
}
void ordena (int v[], int n){ 
int i, j, aux; 
for (j = 1; j < n; j++) 
for (i=j; i > 0 && v[i-1]> v[i]; i--){ 
aux = v[i-1]; 
v[i-1] = v[i]; 
v[i] = aux; 
} 
}
void ordena(int v[], int n){ 
int i, j, menor, aux; 
for (j = 0; j < n-1; j++) { 
for (i = j+1; i < n; i++) { 
if (v[i] < v[j]) { 
aux = v[j];
v[j] = v[i]; 
v[i] = aux; 
} 
}
} 
}
int ordena(float v[], float valor, int n) { 
int ini = 0, fim = n-1, meio; 
while (ini >= fim){ 
meio = ini/2;
if (v[meio] == valor) 
return meio; 
if (valor < v[meio])
fim = meio -1; 
else ini = meio+1;
}
20. A função apresentada representa uma das operações básicas de uma Pilha?
int funcao(int v[], int &topo){
int valor;
if (topo <0){
cout << "MENSAGEM DE ERRO\n\n";
exit(1);
}
valor = v[topo--];
return(valor);
}
 
Que operação é esta? 
Inserção. 
Busca. 
Verificação de Cheia. 
Verificação de Vazia. 
Retirada. 
21. Chama-se “membros” os elementos que compõe uma estrutura (struct). E para acessá-los utiliza-se o operador ponto (.) . Suponha que as seguintes declarações tenham sido feitas: 
struct atleta { 
float altura; 
float peso; 
}; 
atleta Paulo; 
atleta Marcos; 
Marque a única alternativa contendo uma atribuição CORRETA: 
Marcos=80; 
Paulo.Peso=Marcos;
Marcos=Paulo.altura; 
Paulo.altura=1.80; 
Paulo altura.peso=1.80 , 80;
22. O tipo estrutura é a forma existente em C++ de possibilitar ao programador a criar seus próprios tipos de dado. Seja um tipo de dado definido pela estrutura: 
struct ponto{ int x; int y}; 
Considere ainda a seguinte declaração de variáveis: ponto p1,p2,p3; 
Qual a única instrução referente as estas variáveis é VÁLIDA? 
p1=p2+5; 
p1=p2+p3; 
p1-p2=p1-p3; 
p1=p2; 
p1+p3=p2;
23. Considere a função que deve implementar a busca sequencial. Note que ela está incompleta e que você deve completá-la. 
int buscaSequencial(int v[ ], int valor) 
{ 
 int i; 
 for (i = 0; i < 10; i++) 
 __________________ 
 __________ 
 ____________ 
} 
Assinale a opção que mostra a função completa e correta.
int buscaSequencial(int v[ ], int valor) 
{ 
int i; 
for (i = 0; i < 10; i++) 
{ 
if(v[i] == valor) 
{ 
return i; 
return -1; 
} 
} 
} 
int buscaSequencial(int v[ ], int valor) 
{ 
int i; 
for (i = 0; i < 10; i++) 
if(v[i] == valor) 
return i; 
else 
return -1; 
} 
int buscaSequencial(int v[ ], int valor) 
{ 
int i; 
for (i = 0; i < 10; i++) 
if(v[i] != valor) 
return i; 
return -1; 
} 
int buscaSequencial(int v[ ], int valor) 
{ 
int i; 
for (i = 0; i < 10; i++) 
if(v[i] == valor) 
return i; 
return -1; 
} 
int buscaSequencial(int v[ ], int valor) 
{ 
int i; 
for (i = 0; i < 10; i++) 
{ 
if(v[i] == valor) 
return i; 
return -1; 
} 
}
24. Para aprovação imediata nas disciplinas, o aluno deve obter média nas duas primeiras provas (AV1 e AV2) igual ou superior a 6,0. Caso o aluno obtenha média inferior a 6,0, pode fazer a uma terceira prova (AV3) e para ser aprovado a média aritmética de suas três provas deve ser maior ou igual a 6,0. Marque a alternativa correta da implementação de uma função que receba como parâmetros as notas das duas primeiras provas de um aluno (AV1 e AV2), que ficou para final (AV3) e retorne a nota mínima que o aluno precisa tirar na terceira prova para que seja aprovado. 
floatnota_minima(float av1,float av2) 
{ 
av3=(av1+av2); 
} 
floatnota_minima(float av1,float av2) 
{ 
av3=(18-av1-av2); 
} 
floatnota_minima(av1, av2) 
{ 
return (18-av1-av2); 
} 
voidnota_minima(float av1,float av2) 
{ 
return (18-av1-av2); 
} 
floatnota_minima(float av1,float av2) 
{ 
return (18-av1-av2); 
} 
25. Na criação de uma função precisamos definir suas partes, sendo algumas obrigatórias e outras alternativas, na linguagem C temos: 
tipo nome ( tipo1 parâmetro1, tipo2 parâmetro2, ..., tipon parâmetroN) { corpo da função } 
Das opções apresentadas marque a que apresenta apenas partes obrigatórias de se digitar de forma que a função execute alguma tarefa, sem levar em consideração os símbolos (chaves, parêntese, etc). 
Tipo, Nome e Parâmetros. 
Tipo, Parâmetro e corpo da função. 
Nome, Parâmetro e Corpo da função. 
Tipo, Nome, Parâmetros e Corpo da Função. 
Nome, Tipo e Corpo da função. 
26. Assinale a opção correta. 
Para pesquisar dados em um vetor ordenado, o mais apropriado é usar ... 
Busca binária
Busca sequencial com bubblesort
Bubblesort
Busca sequencial
Busca sequencial modificada, de forma que a ordem seja considerada
27. Com relação à struct, é correto afirmar que : 5 
A struct é sempre definida dentro da main. 
Cada elemento da struct é denominado membro ou campo, sendo que a struct pode armazenar elementos de tipos diferentes ou não. 
Cada elemento da struct é chamado componente. 
Cada elemento da struct é chamado campo e cada campo deve ser, obrigatoriamente, de um tipo de dados distinto de outro campo. 
Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados do mesmo tipo.
28. Considerando n o número de elementos de v, o trecho 
void ordenar(int v[ ], int n) { 
int i, j, aux; 
for (j = 1; j < n; j++) 
 for (i=j; i > 0 && v[i-1]> v[i]; i = i – 1) 
 { 
 aux = v[i-1]; 
 v[i-1] = v[i]; 
 v[i] = aux; 
 } 
}
Implementa o método de ordenação : 
Por seleção 
Uma mistura dos métodos de ordenação por inserção e bubblesort. 
Uma mistura dos métodos de ordenação por seleção e por inserção. 
Bubblesort 
Por inserção 
29. Editores de texto geralmente oferecem um mecanismo de reversão de operações (“O famoso desfazer, undo”), que cancela operações recentes e reverte um documento ao estado anterior ao da operação realizada. 
Que tipo de estrutura de dados seria melhor aplicada para este mecanismo? 
Pilha 
Grafo 
Fila 
Árvore 
Registro
30. Em relação a estruturas de dados, avalie a correspondência existente entre as estruturas de dados Lineares e Não Lineares com suas respectivas coleções de dados.
A correta associação entre os elementos das duas tabelas é:
a2, b2, c1, d2.
a1, b1, c2, d2.
a1, b2, c1, d1.
a2, b1, c2, d1.
a1, b1, c2,d1
31. Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são altamente especializadas, destinando-se a algumas tarefas específicas. Dessa forma a definição de Estrutura de Dados está expressa na alternativa:
É um modo de utilização de dados nos programas de computador.
São os nomes dados as variáveis na montagem de uma rotina.
É um modo particular de armazenamento e organização de dados em um computador de modo que possam ser usados de modo eficiente.
É um modo de deleção de dados em um computador.
É um modo de distribuição e organização de dados em uma rede de computador de modo que possam ser usados de modo eficiente.
32. O que acontece ao se inserir uma informação quando já usamos toda a área disponível do vetor (topo = fim)?
Underflow
Overflow
Inclusão
Remoção
Ordenação
33. Ordene a coluna direita de acordo com a da esquerda, associando as características de implementação de cada: (Podem existir mais de uma opção à direita para alguma da esquerda)
Indique a alternativa correta:
a - c - a - b - c - a
a - a - a - b - c - b
b - b - a - c - c - c
a - b - a - c - c - b
c - a - a - b - c - b
34. Suponha uma listagem, contendo número de inscrição e pontuação (ordenada pelo número de inscrição) dos candidatos para o cargo de Analista de Sistemas de uma grande empresa pública. São 1024 candidatos inscritos e o sistema implementado para consulta do resultado, permite busca binária ou busca sequencial pelo número de inscrição. O número máximo de comparações executadas se fosse utilizada a busca binária e se fosse utilizada busca sequencial, respectivamente, seria de:
10 e 10
9 e 9
9 e 10
512 e 1024
1024 e 512
35. Analisando o trecho do algoritmo abaixo,
Pode-se afirmar que se trata de uma operação de: Se topo < Maximo Então início Topo <- Topo + 1 Pilha[Topo] <- Valor Sucesso <- verdadeiro Fim
Inserção de um elemento em uma estrutura LIFO
Remoção de um elemento de uma estrutura FIFO
Inserção de um elemento em uma estrutura FIFO
Exibição de um elemento em uma estrutura LIFO
Remoção de um elemento de uma estrutura LIFO
36. Assinale a alternativa que apresenta duas formas de passagem de parâmetros para uma rotina ou função:
Por teste e por reforço.
Por memória e por disco.
Por inferência e por valor.
Por reforço e por referência.
Por valor e por referência
37. Existem vários tipos de algoritmos para realizar a ordenação dos elementos, onde um algoritmo de ordenação deve rearranjar o vetor de forma a estabelecer uma ordem entre os elementos. Marque a alternativa correta que cita o algoritmo cuja descrição é: "considera cada elemento uma vez inserindo-o em seu lugar correto entre os elementos que já estão em ordem". E o seu passo a passo pode ser descrito como: "o elemento é inserido entre os ordenados movendo-se os elementos maiores que ele uma posição para a direita e posteriormente inserindo-o na posição vaga".
Inserção
Bolha
Seleção
QuickSort
MergeSort
38. Para consultarmos uma estrutura de dados, normalmente, empregamos um tipo de pesquisa de dados. O trecho de programa a seguir refere-se a uma pesquisa por um elemento único (sua primeira ocorrência), em um conjunto de elementos de dados armazenado em uma estrutura de acesso indexado e aleatório. Selecione a opção correspondente ao algoritmo utilizado, no programa, para a referida pesquisa:
int busca(float v[], float valor, int n) {
int ini = 0, fim = n -1, meio;
while (ini <= fim) {
meio = (ini + fim)/2;
if (v[meio] == valor) return meio;
if (valor < v[meio]) fim = meio -1;
else ini = meio+1;
}
return
Pesquisa Binária
Pesquisa Sequencial
Pesquisa Cadeias Indexada
Pesquisa De Cadeias
Pesquisa Indexada
39. Sabe-se que um protótipo de uma função é o cabeçalho da função com ;(ponto-e-vírgula) ao final. E que nas funções a passagem de parâmetros se dá por valor ou por referência.
Para o protótipo: void troca(float&,float&); pode-se dizer que:
É um protótipo de função que recebe dois argumentos por passagem de valor. Os dois do tipo real e retorna, para a função chamadora, um valor inteiro.
É um protótipo de função que recebe dois argumentos reais e retorna, para a função chamadora, um valor real.
É um protótipo de função que recebe dois argumentos que são endereços que armazenam números reais, por passagem por referência. E a função não retorna nada para a função chamadora.
É um protótipo de função que recebe dois argumentos reais por passagem de valor e não retorna nada para função chamadora.
É um protótipo de função que recebe dois argumentos por passagem de valor. Um do tipo char e outro do tipo int, mas não retorna nada para função chamadora.
40. Para o cadastro de algumas notas e médias de alunos, foi criada a seguinte estrutura e declarada como global:
struct aluno{
float nota1, nota2,media;
}alunos[20];
Sabendo-se que a média deve ser obtida através de cálculo:
- a partir das notas armazenadas na estrutura;
- em seguida ser armazenada na estrutura e;
- retornada a quem chamou;
Qual das funções abaixo executa este processo de forma correta.
float calcmedia(){
float m;
m = (alunos[i].nota1+ alunos[i].nota2)/2;
alunos[i].media= m;
return m;
}
float calcmedia(int i){
float m;
m = (aluno[i].nota1+ aluno[i].nota2)/2;
aluno[i].media= m;
return m;
float calcmedia(int i){
float m;
m = (alunos[i].nota1+ alunos[i].nota2)/2;
alunos[i].media= m;
}
float calcmedia(int i){
float m;
m = (alunos[i].nota1+ alunos[i].nota2)/2;
alunos[i].media= m;
return m;
}
void calcmedia(int i){
float m;
m = (alunos[i].nota1+ alunos[i].nota2)/2;
alunos[i].media= m;
}
41. Com relação à struct, é correto afirmar que:
Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados do mesmo tipo.
A struct é sempre definida dentro da main.
Cada elemento da struct é chamado componente.
Cada elemento da struct é chamado campo e cada campo deve ser, obrigatoriamente, de um tipo de dados distinto de outro campo.
Cada elemento da struct é denominado membro ou campo, sendo que a struct pode armazenar elementos de tipos diferentes ou não.
42. A alocação dinâmica de memória vem possibilitar a criação de tipos de dados e estruturas de qualquer tamanho durante a execução do programa. Quais são os operadores que respectivamente alocam e liberam espaço na memória?
insere e apaga.
novo e deleta.
new e delete.
insert e delete.
aloc e maloc.
43. As listas simplesmente encadeadas tem como característica. Marque a resposta correta.
Possuir um nó com o máximo de dois elementos, sendo um deles um ponteiro para o próximo nó.
Possuir um nó com no mínimo dois elementos, sendo um deles um ponteiro para o próximo nó.
Possuir um nó com o máximo de três elementos, sendo dois ponteiros que indicam o nó anterior e o próximo.
Possuir um nó com apenas um elemento, sendo este um ponteiro para o próximo nó.
Possuir um nó com três elementos, sendo dois ponteiros que indicam o nó anterior e o próximo.
44. Nas listas encadeadas podemos fazer referência a uma parte de um nó, através de um outro nó. Na estrutura apresentada o ponteiro p armazena o endereço do próximo nó.
struct teste {
int valor;
struct teste *p;
};
Das opções apresentadas qual permite armazenar na variável val do tipo inteiro o valor que está no nó seguinte ao nó posicionado , sabendo-se que aux, contem o endereço do nó atual.
 
val= aux->p->valor;
val= aux->valor;
val= p->p->valor;
val-> aux->p->valor;
val= aux->p.p;
45. Determinado método de ordenação seleciona o menor elemento dentro do conjunto e coloca na primeira posição, depois o segundo menor e coloca na segunda posição e assim por diante até que todo o conjunto esteja ordenado. Qual das opções apresenta este método?
Merge sort;
Quick sort;
Insertion sort;
Shell sort;
Selection sort;
46. Considere.
struct nodupla {
int dado;
struct *dlink, //aponta para o nó à direita
*elink; //aponta para o nó à esquerda
};
Assinale a função quecorretamente substitui o valor armazenado no último nó de uma lista duplamente encadeada não vazia pelo valor 50.
void substituir(nodupla *p)
{
while (p.dlink != NULL)
p = p.dlink;
p.dado = 50;
}
void substituir(nodupla *p)
{
while (p->dlink != NULL)
{
p = p->dlink;
p->dado = 50;
}
}
void substituir(nodupla *p)
{
while (p != NULL)
p = p->dlink;
p->dado = 50;
}
void substituir(nodupla *p)
{
while (p->dlink != NULL)
p = p->dlink;
p->dado = 50;
}
void substituir(int dado)
{
while(p->dlink != NULL)
p = p->dlink;
p->dado = 50;
}
47. Assinale a opção certa. 
Quando não se escreve o protótipo de uma função...
A chamada da função poderá ser feita em qualquer hipótese.
A definição da função deverá ser escrita, obrigatoriamente, após o programa principal.
O programa não funcionará de forma alguma.
A chamada da função não poderá ser feita em qualquer hipótese.
É preciso definir a função antes do programa principal.
48. Como é a lógica do LIFO?
Resposta: Na lógica LIFO ( Last In First Out ) o último elemento a entrar é o primeiro a sair. Esse conceito está aplicado na estrutura Pilha, no qual o último elemento que foi inserido na pilha será o primeiro a sair.
49. Imagine a seguinte estrutura em C/C++, para descrever um produto:
struct Produto {
int codigo;
char descricao[40];
float preco;
};
Considere a função que atribui o preço ao produto
void atribui (struct Produto *pProd) {
/* atribuição do preço */
...
}
A forma correta para atribuir 2.99 ao campo preco dentro de função atribui é:
*pProd -> preco=2.99;
pProd.preco=2.99;
(*pProd) -> preco=2.99;
*pProd.preco=2.99;
pProd -> preco=2.99;
50. Podemos dizer que estrutura de dados é:
Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente determinada.
O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações.
É a saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo.
51. Geralmente em algumas situações é necessário fazer a desalocação do espaço utilizado na memória. Porém, isso depende de como a reserva de uma quantidade de espaço de memória é feita, pois em alguns casos, o próprio compilador faz a desalocação. Quando o compilador não faz esta desalocação a memória foi reservada utilizando______.
Declaração de função
Declaração de vetor
Alocação dinâmica de memória
Alocação estática de memória
Declaração de matriz
52. Uma fila duplamente terminada, isto é, uma estrutura linear que permite inserir e remover de ambos os extremos é chamada de:
Boyer-Moore.
Deque.
Árvore.
Autômato.
Shift-and.
53. Em um container do tipo Pilha:
Utiliza-se a ordenação First In Fisrt Out (FIFO).
É possível acessar os dados armazenados por várias ordenações.
Se permite acesso aos dados armazenados pelo seu conteúdo.
A ordenação utilizada não importa, uma vez que a recuperação dos dados é feita pela posição do mesmo.
Utiliza-se a ordenação Last In First Out (LIFO).
54. Marque a afirmativa que represente uma concatenação em listas.
Consiste em dividir a lista em duas outras listas. A quantidade de nós que cada lista terá, depende da necessidade.
Organizar os dados da lista em ordem crescente ou decrescente.
Intercalar a ordem dos dados da lista do final para o início, atualizando a lista.
Alterar a ordem dos dados da lista do final para o início, atualizando a lista.
Juntar duas listas, colocando uma lista no final de outra, obtendo, ao final, uma só lista resultante.
55. Qual a diferença entre pilha e fila?
Resposta: Pilha - na Pilha o último dado que entra é o primeiro que sai, e o primeiro que que entra é o ultimo a sair, como sugere o nome LIFO (Last in First out) o ultimo que entra é o primeiro que sai, ou seja, o dado entra por um lado e sai pelo mesmo lado. 
 Fila - Já é diferente o dado que entra primeiro sai primeiro, ou seja, o dado entra por um lado e sai por outro lado, daí o nome FIFO(First in First Out) o primeiro a entrar é o primeiro a sair.
56. Em programação podemos utilizar um recurso que modulariza o programa chamado função. As funções precisam ser ativadas para que possam ser executadas. Para isso, é necessário chamar a função pelo seu nome e enviar, quando necessário, os valores respectivos para os parâmetros de entrada. Ao enviar os valores para os parâmetros de entrada, o programa pode fazer uma cópia deste valor ou trabalhar em um endereço enviado. Quando se envia o endereço estamos ativando a função por meio de:
Registro.
Passagem por valor.
Ponteiros.
Envio de valor.
Envio de inteiro.
57. Dado o seguinte código, escrito em C++, qual a saída do programa?
#include
using namespace std;
void func1 (float x) {
cout << "X: "<< x << endl;
x = 3.5;
cout << "X: "<< x << endl;
}
int main () {
float y=1.5;
cout << y << endl;
func1(y);
cout << y << endl;
return 0;
}
1. 1.5 1.5 3.5 1.5 0
2. 1.5 1.5 0
3. 1.5 1.5 0
4. 1.5 1.5
5. 1.5 1.5 3.5 1.5
58. Sistemas operacionais utilizam filas para gerenciar, tarefas, processos e recursos. Qual é a ordenação dos elementos armazenados aleatoriamente em uma lista do tipo LIFO?
Posições aleatórias
Ordem decrescente
Primeiro que entra é o primeiro a sair
Ordem de entrada
Ordem crescente
59. Observe o trecho de código em C/C++ a seguir. O laço for preenche os dados dos candidatos no vetor de selecionados. (adaptado para C/C++)
1.struct Candidato {
2. char nome[15];
3. double nota;
4. };
5.
6.int main(){
7. struct Candidato selecionados[5];
8. int i;
9. for (i=0; i<5; i++){
10. cout << "Nome: ";
11. cin.get();cin.get(***********,15);
12. cout << "Nota: ";
13. cin >> ***********;
14. }
15. ...
16.}
Observe que o código no interior dos comandos das linhas 11 e 13 foi substituido por ***********.
Para que este programa compile e execute sem erros, os asteriscos nas linhas 11 e 13 devem ser substituídos respectivamente por:
Candidato[i].nome
Candidato[i].nota
Candidato.nome[i]
Candidato.nota[i]
nome[i]
nota[i]
selecionados[i].nome
selecionados[i].nota
selecionados.nome[i]
selecionados.nota[i]
60. Analisando a seqüência do código abaixo, pode se afirmar que se trata da:
for (int i = topo-1; i>=0 ; i--)
cout << " "<< v[i] <<" "<
Exibição de todos os elementos armazenados em uma Fila na ordem de entrada.
Exibição de todos os elementos armazenados em uma Pilha na ordem de entrada.
Exibição de todos os elementos armazenados em uma Fila na ordem decrescente.
Exibição de todos os elementos armazenados em uma Pilha na ordem inversa da entrada.
Exibição de todos os elementos armazenados em uma Fila na ordem inversa da entrada.
61. O espaço necessário para a representação dos dados pode ser alocado à medida que se torne necessário, através da alocação dinâmica. Uma estrutura armazenada através de encadeamento apresenta seus nodos alocados em posições aleatórias na memória, e não lado a lado. Dessa forma, existem várias vantagens no uso de representar os dados por encadeamento. Marque a alternativa correta que apresenta estas vantagens.
Previsão de espaço físico, estruturas complexas, procedimentos menos intuitivos.
Transferência de dados, gerenciamento de memória e procedimentos menos intuitivos.
Compartilhamento de memória, maleabilidade e facilidade para inserção e remoção de componentes.
Acesso, representação, compartilhamento de memória.
Proteção de memória, transferência de dados, estruturas simples.
62. Se a e b são variáveis inteiras (int) e p1 e p2 ponteiros para int, quais das seguintes expressões de atribuição está errada?
a = (*p1 + *p2)/b+1;
p1 = &a;
*p2 = *p1;
*p2 = &b;
b = *p2;
63. As estruturas de dados permitem o uso de certos algoritmos para aordenação dos elementos de forma a facilitar a consulta de determinado elemento. Existem vários tipos de algoritmos para realizar a ordenação dos elementos, onde um algoritmo de ordenação deve rearranjar o vetor de forma a estabelecer uma ordem entre os elementos. O trecho de código abaixo descreve o algoritmo chamado:
algoritmo ordena (int a[], int n){
Para i da primeira posição até a penúltima faca
mínimo = i
para j da posição seguinte a i até a ultima posição faça
se (a[j] < a[mínimo])
mínimo =j;
fim para
fim para
troca(a[mínimo],a[i]);
fim algoritmo
MergeSort
Bolha
QuickSort
Inserção
Seleção
64. As variáveis em programação são utilizadas para armazenar um valor de determinado tipo em um espaço reservado na memória. Em algumas linguagens de programação podemos declarar, ou seja, reservar um espaço na memória, fora do escopo da função principal, e fora do escopo de qualquer outra função. Ao fazer a declaração desta forma estamos declarando uma variável do tipo:
Local
Constante
Real
Inteiro
Global
65. Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-se de uma estrutura de dados denominada:
Lista encadeada
Fila
Vetor
Lista circular
Pilha
66. Como é a lógica do FIFO?
1º Resposta: A fila usa a lógica FIFO, que diz que o primeiro elemento a entrar será o primeiro a sair.
2º Resposta: O primeiro que entra na fila é o primeiro que sai.
67. O que será impresso pelo trecho de código a seguir?
int main() {
int vet[5] = {80, 70 , 10, 50, 20};
int *ptr;
ptr = vet;
cout << *(ptr) << " ";
cout << *(ptr + 3);
return 0;
}
70 10
80 50
70 73
80 10
80 83
68. Sistemas operacionais utilizam filas para gerenciar, tarefas, processos e recursos. Qual é a ordenação dos elementos armazenados aleatoriamente em uma lista do tipo LIFO?
Primeiro que entra é o primeiro a sair
Ordem de entrada
Ordem decrescente
Posições aleatórias
Ordem crescente
69. Em uma lista linear simplesmente encadeada.
Cada nó possui um só ponteiro que referencia o próximo nó da lista.
O ponteiro do "primeiro" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista, formando um ciclo.
Além do campo relativo ao dado, cada nó possui dois ponteiros,
Cada ponteiro possui um só endereço que referencia o primeiro nó da lista.
O ponteiro do "último" nó não é NULL, mas sim aponta de volta para o "primeiro" nó da lista.
70. As estruturas de dados em programação são muito utilizadas para tornar o acesso aos dados mais eficiente e organizado. A estrutura de dados considerada mais simples e tem como característica apresentar apenas uma dimensão é:
Matriz
Função
Registro
Variável
Vetor
71. Considere:
I - Os algoritmos de busca binária e de busca sequencial executam processamento repetitivo.
II - Os algoritmos de busca binária e de busca sequencial utilizam a técnica de recursão.
III - A busca sequencial executa cada fase de repetição na forma de uma subtarefa da fase anterior.
IV - A busca binária trabalha com uma forma circular de repetição. 
Está correto o que consta em:
I e IV, apenas.
II, apenas.
I, apenas.
I e II, apenas.
I, II, III e IV.
72. Em programação podemos utilizar um recurso que modulariza o programa chamado função. As funções precisam ser ativadas para que possam ser executadas. Para isso, é necessário chamar a função pelo seu nome e enviar, quando necessário, os valores respectivos para os parâmetros de entrada. Ao enviar os valores para os parâmetros de entrada, o programa pode fazer uma cópia deste valor ou trabalhar em um endereço enviado.
Quando se envia o endereço estamos ativando a função por meio de:
Envio de inteiro.
Passagem por valor.
Registro.
Envio de valor.
Ponteiros.
73. Existem vários algoritmos de busca em estruturas de dados, um destes realiza a busca em vetores, e requer acesso aleatório aos elementos desta estrutura e parte do pressuposto de que os dados do vetor estejam ordenados e utiliza a técnica de divisão e conquista comparando o elemento desejado com o elemento do meio do vetor. Esta técnica ainda verifica se o elemento do meio do vetor for o desejado, a busca termina. Caso contrário, se o elemento do meio vier antes do elemento buscado, então a busca continua na metade posterior do vetor. E se o elemento do meio vier depois da chave, a busca continua na metade anterior do vetor. O algoritmo que utiliza esta metodologia é:
Seleção
Pesquisa binária
Bolha
Inserção
Pesquisa sequencial
74. Analisando o trecho de código abaixo, marque a alternativa correta que apresenta o que será impresso na tela do usuário. Sabe-se que na linguagem C os ponteiros são representados pelo sinal de asterisco (*), o endereço de memória pelo sinal & e a função de impressão é denominada printf.
void funcao ( int *a, int *b)
{
int c;
c = *a;
a = b;
*b = c;
}
main()
{
int a=2, b=3;
funcao (&a, &b);
printf("%d - %d \n",a,b);
}
3 - 3
Não irá compilar
2 - 2
3 - 2
2 – 3
75. Podemos dizer que um container é:
A entrada, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
O que permite o armazenamento e a recuperação de dados independentemente de seu conteúdo.
A saída, que satisfaz a quaisquer restrições impostas pelo problema, necessária para se calcular uma solução do problema.
O meio para armazenar e organizar dados com o objetivo de facilitar o acesso e as modificações.
Uma sequência de passos computacionais que transforma uma entrada em uma saída previamente determinada.
76. Diga, para o programa abaixo, qual a opção que melhor representa a saída em tela. (Considere que o programa será compilado sem erros, e irá executar também sem problemas).
#include
using namespace std;
void FuncX( int x, int *y )
{
int tmp;
tmp = *y;
*y = x * 2;
x = tmp+1;
}
int main()
{
int a = 13, b = 10;
FuncX( a-3, &b );
cout<<"Valores: "<< a<<"\t"<< b<
system("pause");
}
Valores: 13, 10
Valores: 13, 20
Valores: 10, 10
Valores: 20, 10
Valores: 10, 20
77. Considerando que a lista a seguir, encontra-se criada na memória, o que será exibido pelo trecho de programa a seguir:
INICIO H K M
 VALOR PRÓXIMO
aux = inicio;
while (aux -> proximo != NULL)
aux = aux -> proximo;
novo = new tipoNo;
novo -> valor = 'F';
novo -> proximo = NULL;
aux -> proximo = novo;
aux = inicio;
while (aux != NULL){
cout << aux -> valor << " ";
aux = aux -> próximo;
}
F
H K M
NULL
H
H K M F
78. Assinale a alternativa que apresenta duas formas de passagem de parâmetros para uma rotina ou função:
Por teste e por reforço.
Por inferência e por valor.
Por valor e por referência
Por reforço e por referência.
Por memória e por disco.
79. Qual o valor da variável a ao final da execução do trecho de programa a seguir?
int main() {
int a, b, *p;
a=4;
b = 2;
p = &a;
a++;
*p = a + b;
(*p)++;
(*p) += a;
cout << "\n a = " << a << endl;
return(0);
}
8
5
4
7
16
80. Com relação as afirmações abaixo, a respeito de lista lineares, assinale as Verdadeiras e asFalsas. Indique a alternativa que representa a sequência correta:
I - Nas listas encadeadas não precisamos saber previamente o número de elementos a serem armazenados.
II - Podemos aumentar e diminuir o tamanho da lista encadeada quando quisermos, enquanto que a lista sequencial não.
III - Quando o número de acessos randômicos a uma área de armazenamento é muito maior que o número de inserções e remoções de elementos armazenados, a organização dessa área de armazenamento por meio de uma lista encadeada resulta em desempenho melhor que o apresentado por organização feita usando uma lista linear.
V F V
V V F
F V F
V V V
F V V
81. Ao atributo ou conjunto de atributos de uma relação que referencia a chave primária de outra relação, de forma a garantir a restrição de integridade referencial, dá-se o nome de chave.
Transitiva.Secundária. 
Candidata. 
Estrangeira.
Referencial.
82. Ao atributo ou conjunto de atributos de uma relação que referencia a chave primária de outra relação, de forma a garantir a restrição de integridade referencial, dá-se o nome de chave.
Transitiva. 
Secundária. 
Candidata. 
Estrangeira.
Referencial.
83. As seguintes afirmações são verdadeiras (V) ou falsas (F)? 
A integridade referencial é garantida através da chave primária.
Mapeamento é um método para converter o diagrama ER conceitual na sua derivação lógica dando origem a arquivos convencionais.
Quando há ocorrência de valores nulos os usuários tem certeza de que o atributo em questão não é aplicável para uma instância em particular da entidade. 
O principal conceito da abordagem relacional deriva da teoria de conjuntos combinado com a ideia de que o usuário não necessita saber onde os dados estão nem como estão. 
F, F, V, V
F, F, F, V
V, V, F, F
F, V, F, V
V, F, F, V
84. Um conceito importante no modelo de Entidade e Relacionamento (ER) é o conceito de relacionamento. Descreva este conceito.
É a representação do relacionamento entre as entidades.
OU
Além de especificar os objetos sobre os quais deseja-se manter informações, o Diagrama de Entidades e Relacionamentos (DER) deve permitir a especificação das propriedades dos objetos que serão armazenadas no banco de dados. Uma das propriedades sobre as quais pode ser desejável manter informações é a associação entre objetos. Sendo assim, descrevemos os relacionamentos entre esses objetos com a finalidade de mapear a relação entre eles.
85. Um modelo entidade-relacionamento foi reestruturado conforme mostrado na figura abaixo:
Concluiu-se que todos os usuários eram funcionários, embora nem todos os funcionários fossem usuários. O modelo relacional derivado desse modelo conceitual possuía originalmente duas variáveis de relação básicas, com os mesmos nomes das entidades correspondentes, tendo ambos os EMAILS como chave primária.
Considerando que a variável de relação FUNCIONARIO não será modificada e que a independência de dados lógica será honrada, a variável de relação USUARIO:
Será substituída por uma variável de relação 
 derivada, apenas.
Dispensará o uso de chaves candidatas.
Será substituída por uma variável de relação 
básica e uma derivada.
Será substituída por uma variável de relação 
básica, apenas.
Terá que manter todos os seus atributos 
originais.
86. O SGBD possibilita o desenvolvimento de programas aplicativos que não possuem a descrição real de como os dados (arquivos) estão fisicamente armazenados. Desta forma, alteração nas estruturas dos arquivos do Banco de Dados não afetam os programas aplicativos. Podem-se apresentar dois tipos de independência de dados. Independência Lógica dos Dados e Independência Física dos Dados. Descreva sobre a independência Lógica dos Dados.
Independência Lógica dos Dados consiste na capacidade de alterar o esquema interno sem provocar modificações no esquema conceitual.
87. Para as questões seguintes considere os atributos sublinhados como a chave primária de cada relação R. Sabendo-se que todos os atributos são atômicos assinale as alternativas que estão na 3NF: 
1. R(A, B, C), e as dependências funcionais A -> B e A -> C
2. R(A, B, C), e a dependência funcional A -> C 
3. R(A, B, C, D) e as dependências funcionais A -> B e A -> C 
4. R(A, B, C, D) e a dependência funcional AB -> C e AB -> D 
5. R(A, B, C), e as dependências funcionais A -> B e B -> C
3, 4
2, 3
1, 3,
4, 5
1, 4
88. Considerando os conceitos de dependência funcional e normalização (obs: chaves primárias estão em negrito e chaves estrangeiras sublinhadas) e observando a tabela Trabalha é correto afimar que:
 
Trabalha (pessoa_nome, empresa_nome, empresa_cidade, empresa_rua, pessoa_salário, (nome_dependente)*)
 
- Atributo multivalorado = nome_dependente
	Na tabela Trabalha o atributo pessoa_salário possui dependência transitiva em relação ao atributo pessoa_nome, pertencente à chave primária, e por isso a tabela precisa ser convertida para a segunda forma normal.
	A tabela precisa ser convertida até a 5ª Forma Normal, para retirar dependências de junção, resultando no esquema a seguir:
Empresa 	(empresa_nome, empresa_cidade, empresa_rua)
Pessoa	(pessoa_nome, empresa_nome, pessoa_salário, nome_dependente)
	A tabela Trabalha tem problemas de redundância e anomalias de atualização, e está na primeira forma normal (1FN). Quando convertido para a segunda forma normal (2FN) o esquema consiste de
Trabalha (pessoa_nome, empresa_nome)
Empresa (empresa_nome, empresa_cidade, empresa_rua)
Pessoa (pessoa_nome, pessoa_salário, nome_dependente)
	Na tabela Trabalha o atributo empresa_cidade possui dependência funcional parcial em relação à chave primária, e por isso a tabela precisa ser convertida para a segunda forma normal, em que o objetivo é atingir a dependência funcional total;
	O esquema em 1FN (primeira forma normal) consiste de
Trabalha (pessoa_nome, empresa_nome)
Localizado (empresa_nome, empresa_cidade, empresa_rua, nome_dependente)
Ganha (pessoa_nome, pessoa_salário)
89. Considerando a arquitetura de três-esquemas (externo, conceitual e físico) de um sistema de banco de dados, a capacidade de modificar a definição dos esquemas de um banco em determinado nível, sem afetar o esquema do nível superior, é denominada:
	Modelo semântico de dados
	Suporte a múltiplas visões
	Independência de dados 
	Abstração de dados 
	Conjunto de entidades
 
	90. O conceito de dependência funcional é essencial para o entendimento do processo de:
	
Relacionamento
Indexação
Abstração
Encapsulamento
Normalização
	91. Na notação de Peter Chen um losango representa um(a) : 
Atributo 
Agregação 
Relacionamento 
Entidade Tipo 
Relacionamento Tipo 
92. Estão entre algumas das possíveis formas de se estruturar dados: 
Grafos, lista ordenada, vetores. 
Grafos, algoritmos, fila. 
Algoritmos, lista ordenada, vetores. 
Lista encadeada, vetores, algoritmos.
Grafos, lista ordenada, algoritmos.
93. Qual das alternativas a seguir pode definir uma estrutura de fila?
Entrada de dados pelo início e saída pelo final.
Entrada e saída de dados pelo início.
Entrada e saída de dados pelo final.
Entrada e saída de dados em qualquer local.
Entrada de dados pelo final e saída pelo início.
94. A técnica LIFO (last in first out), utilizada em programação estruturada, é fundamentada no conceito de: 
Loop 
Pilha 
Fila 
Registro 
Ponteiro
95. Na área de estrutura de dados, em determinados casos, é necessário utilizar um tipo de dado onde seu valor serve como referência direta a outro valor alocado em outro espaço de memória. Este tipo de dado se chama:
Variável
Endereço
Matriz
Vetor
Ponteiro
96. Em relação às estruturas de dados, é correto afirmar:
Guardar endereço de memória em "nós", normalmente identificados por previous ou next, é uma característica presente nas listas duplamente encadeadas. 
Um grafo com um único vértice e sem arestas é conhecido como dígrafo.
LIFO refere-se à estrutura de dados do tipo pilha, que nada mais é do que uma lista linear, sem disciplina de acesso, onde o primeiro elemento a entrar é o último a sair. 
LIFO refere-se à estrutura de dados do tipo pilha, que nada mais é do que uma lista linear, duplamente encadeada. 
Nos sistemas operacionais, a execução dos processos concorrentes ocorre segundo os princípios da estrutura FILO.
97. Suponha que uma pilha, P1, esta descrita através de uma lista encadeada como apresentado na figura a seguir: 
 
Imagine uma segunda pilha, P2, inicialmente vazia.
Suponha ainda que, a pilha P2 fosse preenchida com os elementos removidos de P1.
Qual seria a saída apresentada na tela, caso o conteúdo da pilha P2 fosse sendo removido e, cada elemento retirado de P2, fosse apresentadona tela? 
 
Suponha agora que ao invés da pilha P2, uma fila F1 (inicialmente vazia) fosse usada. Assim, fila F1 fosse preenchida com os elementos removidos da pilha P1.
Qual seria a saída apresentada na tela, caso o conteúdo da fila F1 fosse sendo removido e, cada elemento retirado de F1, fosse apresentado na tela? 
A resposta para cada uma das perguntas respectivamente seria.
MARROCOS/SOCORRAM.
SOCORRAM/SOCORRAM.
SOCORRAM/MARROCOS.
Nada seria apresentado, pois a pilha P2, assim como a fila F1 estão vazias.
MARROCOS/MARROCOS.
98. Considerando as definições de estruturas de dados e a declaração tipo nó :: reg (dado: inteiro; próximo: ref nó), na qual reg é um registro contendo os campos: dado, que guarda valores inteiros, e próximo, que guarda endereço de outro nó, assinale a opção correta:
O algoritmo para inclusão de elementos em uma pilha é usado sem nenhuma alteração para incluir elementos em uma lista.
Uma lista duplamente encadeada é uma lista em que o seu último elemento referencia o primeiro.
O uso de recursividade é totalmente inadequado na implementação de operações para manipular elementos de uma estrutura de dados do tipo vetor. 
As listas, pilhas, filas e árvores são estruturas de dados que têm como principal característica a sequencialidade dos seus elementos.
O tipo nó é inadequado para implementar estruturas de dados do tipo pilha.
99. Em algumas situações, principalmente na utilização de listas, há a necessidade de posicionar o ponteiro em determinado local da lista. Dessa forma, analisando o trecho de código abaixo, que mostra uma função, assinale a alternativa correta que descreve o objetivo desta. Sabe-se que o sinal de asterisco (*) sinaliza um ponteiro.
void funcao (Nodo **P){
 if ( *P != NULL ){
 while ( (*P) -> Anterior != NULL )
 *P= (*P) -> Anterior;
 }
}
Posicionar o ponteiro no meio da lista
Posicionar o ponteiro onde houver o valor NULL
Posicionar o ponteiro no início da lista
Colocar o valor NULL em todos os ponteiros
Posicionar o ponteiro no final da lista
100. Assinale a alternativa que apresenta duas formas de passagem de parâmetros para uma rotina ou função:
Por reforço e por referência.
Por teste e por reforço.
Por valor e por referência
Por memória e por disco.
Por inferência e por valor.
101. Pilha é uma estrutura de dados
Cujo acesso aos seus elementos segue a lógica LIFO.
Cujo acesso aos seus elementos segue tanto a lógica LIFO quanto a FIFO.
Que pode ser implementada somente por meio de vetores.
Que pode ser implementada somente por meio de listas.
C ujo acesso aos seus elementos ocorre de forma aleatória.
102. Como é a lógica do FIFO?
Resposta: Onde o primeiro que entra é o primeiro que sai da pilha
103. Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-se de uma estrutura de dados denominada.
Vetor.
Fila.
Pilha.
Lista encadeada.
Lista circular.
104. Em uma pesquisa sequencial a lista deve estar?
Desordenada somente da metade da lista até o final.
Ordenada somente o primeiro da lista.
Ordenada ou desordenada.
Sempre desordenada.
Ordenada somente do início até a metade da lista.
105. O registro de ativação de uma sub-rotina é o conjunto das informações que devem/precisam ser alocadas em memória. Assinale abaixo a única opção que representa a composição destas informações.
( ) variáveis locais / valor de retorno / endereço de ponteiro
( ) endereço de ponteiro / variáveis locais / endereço inicial
( ) endereço de retorno / valor de retorno / endereço de ponteiro
( ) parâmetros passados / endereço inicial / endereço de retorno
( ) endereço de retorno / variáveis locais / parâmetros passados
106. O seguinte trecho de programa abaixo representa qual tipo de estrutura de ordenação?
O seguinte trecho de programa abaixo representa qual tipo de estrutura de ordenação?
void ordenar(float v[], int n) // n é o no. de elementos em v
{
int i , // índice
aux, // auxiliar para troca
trocou = true,
fim = n - 1;
while (trocou)
{
trocou = false; // sinaliza que é falso que trocou
for (i = 0; i < fim; i++)
{
if (v[i] > v[i+1])
{
aux = v[i];
v[i] = v[i+1];
v[i+1] = aux;
// sinaliza que é verdadeiro que trocou
trocou = true;
} // fim if
} // fim for
fim--; // decrementa o fim
} // fim while
} // fim da função
Shellsort
Quicksort
Heapsort
Mergesort
Bublesort
107. Tanto a operação TOP (acessa topo), quanto à operação POP (remover), permite acessar o último elemento armazenado em uma Pilha. Quanto à diferença entre ambas as operações em relação ao estado da Pilha é correto afirmar:
Somente a operação POP altera o estado da Pilha
Somente a operação TOP altera o estado da Pilha
Nenhuma das operações altera o estado da Pilha
A operação TOP remove um elemento e altera o estado da Pilha
Ambas alteram o estado da Pilha
108. Sobre estrutura de dados, identifique o que está correto afirmar.
I. Pilha é uma estrutura de dados com acesso restrito aos seus elementos, uma vez que eles são colocados e retirados por um único lado e são ordenados pelo princípio LIFO (last in first out). Assim, sempre que um elemento é adicionado ou retirado seu topo é alterado.
II. Pilha é o tipo de estrutura usada, por exemplo, na avaliação de expressões numéricas, na recursividade e pelos compiladores, na passagem de parâmetros para as funções.
III. Registro é uma estrutura básica que permite guardar coleções de dados de diferentes tipos, sendo normalmente utilizado quando um objeto tem diferentes atributos, isto é, contém campos de diferentes tipos.
IV. Lista pode conter um número qualquer de elementos, expandindo-se ou contraindo-se conforme o elementos são inseridos ou retirados. Nesse tipo de estrutura, os acessos tanto podem ser feitos sequencialmente como diretamente.
V. Fila, assim como a pilha , é uma versão especial de lista, e como tal, seus elementos são ordenados pelo princípio LIFO (last in first out).
I, III e V.
II, III, IV e V.
I, II e III.
I, III, IV e V.
II, IV e V.
109. Para a criação de uma Fila seqüencial basta iniciar as variáveis de início e final, ou seja, apontá-las para as posições iniciais do vetor. O que alteraria na rotina de inserir se a variável final fosse inicializada com o valor -1 (menos um):
Antes da inserção deve-se fazer o decremento da variável final
Após a inserção deve-se fazer o incremento da variável final
Antes da inserção deve-se fazer o incremento da variável final
Após a inserção deve-se fazer o decremento da variável final
Após a inserção deve-se fazer o incremento da variável inicio
110. O que acontece quando tentamos retirar um elemento de uma pilha que já está vazia?
Remoção.
Ordenação.
Inclusão.
Overflow.
Underflow.
111. Marque a opção que representa uma característica CORRETA a respeito da estrutura de dados pilha.
O primeiro item inserido é o primeiro a ser retirado.
Não é possível criar uma pilha utilizando vetores.
Os acessos aos itens ocorrem de forma aleatória.
O último item inserido é o último item a ser retirado.
O último item inserido é o primeiro item a ser retirado.
	112. Considere uma estrutura de dados do tipo vetor. Com respeito a tal estrutura, é correto que seus componentes são caracteristicamente: 
	Homogêneos e com acesso indexado-sequencial. 
	Heterogêneos e com acesso LIFO. 
	Homogêneos e de acesso aleatório por intermédio de índices. 
	Heterogêneos e com acesso indexado-sequencial. 
	Heterogêneos e com acesso FIFO. 
	113. Qual a diferença entre pilha e fila? 
	Resposta: Pilha Utiliza-se a ordenação Last In First Out (LIFO). Fila Utiliza-se a ordenação First In Fisrt Out (FIFO). 
	
Resposta: Pilha se caracteriza por ser uma estrutura de dados que são inseridos e retirados numa sequencia semelhante as anilhas de alteres, isto é, usa a lógica LIFO. Já uma fila se caracteriza por ser um estrutura semelhante a fila de banco, isto é, os dados vão chegando e sendo processados e retirados da estrutura.Essa lógica é chamada de FIFO. 
114. Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades.
Se o item for igual ao item que está na metade do vetor, o item não foi encontrado.
Se o item for menor que o item que está na metade do vetor, procure na segunda metade, ou seja, a da direita.
Se o item for maior que o item que está na metade do vetor procure na primeira metade, ou seja, a da direita.
Se o item for igual ao item que está na metade do vetor, o item foi encontrado.
Se o item for menor que o item que está na metade do vetor, o item foi encontrado.
115. É correto afirmar sobre o funcionamento da busca sequencial.
Os elementos são pesquisados de acordo com o índice. Melhor caso: o elemento está no último índice do meu vetor.
Os elementos são pesquisados de acordo com o índice. Pior caso: o elemento está no último índice do meu vetor.
Os elementos são pesquisados de acordo com o índice. Pior caso: o elemento está no primeiro índice do meu vetor.
Os elementos são pesquisados de acordo com o índice. Melhor caso: o elemento está no meio do meu vetor.
Os elementos são pesquisados aleatoriamente. Pior caso: o elemento está no último índice do meu vetor.
116. O resultado do concurso para o cargo de uma empresa está armazenado em um vetor, que contém em cada um de seus elementos o nome e a nota obtida pelo candidato. Deseja-se que este vetor seja ordenado pela nota, em ordem decrescente.
Sendo o vetor pequeno (poucos elementos), o programador responsável por desenvolver este algoritmo, escolheu um método de ordenação que executa os seguintes passos:
Selecione candidato com maior nota entre todos e troque-o com o candidato que está na primeira posição do vetor;
Selecione o segundo maior e troque-o com o candidato que está na segunda posição;
Os passos descritos anteriormente são seguidos para a terceira nota, quarta nota e assim por diante até que reste apenas um candidato.
O algoritmo utilizado pelo programador trata-se do método de ordenação denominado:
Bolha
Heapsort
Seleção
Inserção
Quicksort
117. O almoxarifado de um órgão pediu ao técnico de informática que elaborasse um sistema de custeio que, para cada saída de material, considerasse o custo do mais recente que houvera dado entrada no almoxarifado. O técnico deve desenvolver um programa para tratar com uma estrutura de dados do tipo?
TABLE
FIFO
RECORD
ARRAY
LIFO
118. A implementação da pilha de chamadas e retorno de funções é um tópico muito importante. Além disso, estratégias para o gerenciamento de outra área de memória chamada de heap são importantes para a comprensão de objetos dinâmicos como ________________. Com base na afirmativa marque a opção correta para completá-la:
REPETIÇÕES
MATRIZES
ESTRUTURAS
VETORES
CONDICIONAIS
119. Ao remover um elemento armazenado em uma pilha é necessário a atualização da variável (Topo) indicadora de posição. Qual das alternativas abaixo está correta?
Após a operação de remoção decrementa a variável indicadora de posição.
Antes a operação de remoção decrementa a variável indicadora de posição.
Antes da operação de remoção incrementa a variável indicadora de posição.
Após a operação de remoção incrementa a variável indicadora de posição.
Após a operação de remoção incrementa a variável indicadora de inicio.
120. Em que aplicação se pode utilizar a "ordenação"?
Busca, Par mais próximo, Unicidade de elementos, Distribuição de ausência, Seleção e Casco conexo.
Busca, Par mais próximo, Unicidade de elementos, Distribuição de frequência, Seleção e Casco conexo.
Busca, Par mais próximo, Unicidade de elementos, Distribuição de ausência, Seleção e Casco convexo.
Busca, Par mais endógeno, Unicidade de elementos, Distribuição de frequência, Seleção e Casco convexo.
Busca, Par mais próximo, Unicidade de elementos, Distribuição de frequência, Seleção e Casco convexo.
121. As coleções de dados podem ser classificadas em estruturas lineares e estruturas não lineares. Nesse contexto, é correto afirmar que:
A lista é uma estrutura linear cuja implementação pode ser feita por meio de lista ligada em que as estruturas são estáticas ou através de um array para permitir que as estruturas sejam ligadas dinamicamente.
Na pilha, uma estrutura não linear, os elementos são colocados e retirados por um único lado da lista, ou seja, pelo topo, que é alterado sempre que um elemento é adicionado ou retirado da pilha. É um tipo de estrutura que tem a ordenação do tipo LILO.
A fila de prioridade é uma versão especial da fila, uma estrutura não linear. Quando se retira um elemento desta estrutura é selecionado aquele que tem maior prioridade, tendo portanto a ordenação do tipo FIFO.
Na tabela de Hash a chave é transformada num índice inteiro que é usado para acessar os dados. A chave pode ser um string, desde que haja uma função que transforme essa chave num inteiro. É uma estrutura linear.
Tendo uma estrutura não linear, um array dinâmico é criado usando técnicas de alocação e gestão dinâmica de memória. Pode ser redimensionado e é alocado durante o tempo de compilação.
122. Os algoritmos de busca são muito utilizados em estrutura de dados. Sendo assim, o algoritmo que realiza a busca em vetores e que exige acesso aleatório aos elementos do mesmo e que parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca comparando o elemento que se deseja com o elemento do meio do vetor, é chamado de:
Pesquisa binária
Tabela Hash
Pesquisa sequêncial
Pesquisa de seleção
Pesquisa ordena

Continue navegando

Outros materiais