Buscar

Estrutura de Dados - Questões

Prévia do material em texto

QUESTÕES ABERTAS: 
 Como é a lógica do LIFO? 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. 
 Como é a lógica do FIFO? First in, first out. O primeiro a entrar na fila é o primeiro a sair. 
 Considere duas listas simplesmente encadeadas circulares e não vazias de inteiros e o tipo. no *insere_frente(no *p, 
int valo r) { no *q; q = new no; q ->dado = val or; q->li nk = p; return q; } no *inter(no *x, no *y) { no *t, *r, *q; t = x; q = 
NULL; do { r = y; do { if (t ->dado == r->dado) q = insere_frente(q,t->dad o); r = r->li nk; } while (r ! = y); t = t->li nk; } whil 
e (t != x); return q; } 
 Considere uma lista não ordenada de códigos espiões usados por Sherlock Silva. Ajude-o a encontrar um 
determinado código c, realizando uma busca de acordo com o seguinte rotótipo: int pesquisar(int v[], int c, int n); 
Note: v é o vetor de códigos, c é o código a ser procurado e n é a quantidade de códigos existentes em v. 
int pesquisar(int v[], int c, int n) 
{ 
for (i=0; i<n; i++) 
if (v[i] ==c) 
cout <<achou... esse é o código”; 
} 
else {cout <<”código não encontrado”;} 
 } 
 Considere uma lista simplesmente encadeada não circular de inteiros e o tipo: no *i nverter ( no *ini) // i ni é um 
ponteiro para o iníci o da li sta { no *a , *b, * c; a = i ni; b = NULL; while (a ! = NULL) { c = b; b = a; a = a ->l ink; b-> link = 
c; } ini = b; return(i ni); } /* fi m da função */ 
 Const int TAMMAX = 100; struct Tipo Lista{ int qtde; // descritor que representa a quantidade de 
elementos na lista int elemt[TAMMAX]; }; Fundamento no tipo de dado (registro) acima 
que representa uma implementação de uma lista linear sequencial. Construa um procedimento para adicionar um 
dado no final da lista. A lista e o dado serão passados por parâmetro. Usar o mecanismo de passagem por referência 
se for necessário. Void addFinalLista ( TipoLista &lista, int dado ){ 
If(lista.qtde == TAMMAX){cout << “Lista Cheia”; } 
Else{ lista.elemt[lista.qtde] = dado; 
Lista.qtde++; 
Cout << “Dado adicionado com sucesso”; 
}} 
 Os agentes Leo e Lia receberam sequências de números de seus contatos. Para saberem qual o próximo passo da 
missão, precisam descobrir que números se repetem nas sequencias recebidas por cada um. Faça uma função que 
receba dois vetores v e w de inteiros como parâmetros e gere um vetor z, resultante da intersecção entre v e w. 
Protótipo da função: bool intersecao(int v[ ], Int w[ ], int z [ ], int nv, int nw, int &n); onde nv: quantidade de 
elementos em v, nw: quantidade de elementos em w e n: quantidade de elementos no vetor z. Note: inicialmente n 
vale zero; deverá ser retornado true (sucesso na interseção) ou false (fracasso na interseção). 
bool intersecao(int v[ ], int w[ ], int inter [ ], int nv, int nw, int &n) { 
bool achou = false; 
for (int i = 0; i < nv; i++) 
for (int j = 0; j <nw; j++) 
if (v[i] == w[j]) { 
achou = true; 
n++; 
} 
return achou; 
} 
 Qual a diferença entre pilha e fila? Pilha se caracteriza por ser uma estrutura de dados que são inseridos e retirados 
numa sequência semelhante as anilhas de alteres, isto é, usa a lógica LIFO. Já uma fila se caracteriza por ser uma 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. 
 
QUESTÕES MÚLTIPLA ESCOLHA: 
 __________________________ é uma biblioteca de boas práticas, de domínio público, desenvolvida pelo governo do 
Reino Unido. O conjunto de livros busca promover a gestão com foco no cliente e na qualidade dos serviços de 
tecnologia da informação (TI). ITIL. 
 A adoção da ITIL se dá no momento em que: satisfazer e atingir as suas metas corporativas, o que leva a uma crescente 
demanda por alta qualidade dos serviços de TI. 
 A armazenagem de dados pode ocorrer temporariamente em uma variável, um vetor ou em uma estrutura chamada 
Struct na linguagem C e C++. Como se procede a atribuição de valor a um determinado campo de uma estrutura do 
tipo Struct? Nome da estrutura ponto nome do campo. 
 A estrutura de dados linear que obedece o seguinte critério: o último elemento inserido será o primeiro elemento a 
ser retirado (LIFO) é: pilha. 
 A que estrutura pertence a definição: " Uma estrutura não linear que é um conjunto de nós e suas conexões entre eles 
e não há limitação de vértices. Muito utilizada para representação de percursos em mapas." Grafos. 
 A SLM - Service Level Management ou Gestão de Níveis de Serviço é essencial para as empresas na medida em que: I. 
Tem a ver com o nível de serviço de tecnologias de informação que é necessário para suportar o negócio e que deve 
ser determinado e colocado sob a forma de um contrato entre o cliente e o prestador de serviços. II. Deve ser efetuado 
um acompanhamento informal para verificar se os níveis de serviço estão sendo cumpridos, sem a necessidade de 
criação de relatórios gerenciais. III. É a base para a gestão contínua da qualidade de serviços de tecnologias de 
Informação. IV. O cumprimento desse contrato terá como consequência a satisfação do cliente. Somente I, III e IV 
corretas. 
 A técnica LIFO (last in first out), utilizada em programação estruturada, é fundamentada no conceito de: pilha 
 Alguns indicadores são usados na medição de resultados dos processos de TI. Quanto ao processo "Gerenciar 
desempenho e capacidade", podemos afirmar que os indicadores de desempenho para "Número de processos finais 
de negócio que sofreram paradas causadas por desempenho e capacidade inadequada de TI" é: Fonte: Fernandes, 
Agnaldo Aragon. Governança de TI. Brasport, 2010, p.62. Número de processos críticos de negócios não cobertos por 
um plano formal de disponibilidade de serviços. 
 Alguns indicadores são usados na medição de resultados dos processos de TI. Quanto ao processo "Identificar e alocar 
recursos", podemos afirmar que os indicadores de desempenho para "Custo benefício atual de TI" é: Fonte: Fernandes, 
Agnaldo Aragon. Governança de TI. Brasport, 2010, p.62. Percentual de variação entre o orçamento realizado e o 
planejado. 
 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 inversa da entrada. 
 Analisando o trecho do algoritmo abaixo SE TOPO < MAXIMO ENTAO INÍCIO TOPO <- TOPO +1
 PILHA(TOPO) <- VALOR SUCESSO <- VERDADEIRO FIM. Pode-se afirmar que se trata de uma 
operação de: inserção de um elemento em uma estrutura LIFO. 
 Analise as afirmativas abaixo e selecione a alternativa correta. I. Algumas aplicações da estrutura de dados grafo são: 
Diagrama de Entidade Relacionamento e Redes de computadores. II. Arvore e lista duplamente encadeada são 
estruturas não lineares. III. A Fila é uma estrutura não linear e a inserção de um elemento acontece ao final. IV. A lista 
é uma das estruturas de dados mais simples, mas não se pode ordená-la. V. O uso de ponteiros é fundamental para 
construção de listas encadeadas. I e V são verdadeiras. 
 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: 
somentea alternativa I. 
 Analise as sentenças abaixo sobre as Responsabilidades do Gerente de Nível de Serviço e, em seguida, assinale a 
alternativa correta. Um Acordo de Nível de Serviço (SLA, do inglês Service Level Agreement) é a parte de contato de 
serviços entre duas ou mais entidades no qual o nível da prestação de serviço é definido formalmente. Na prática, o 
termo é usado no contexto de tempo de entregas de um serviço ou de um desempenho específico. Responsabilidades 
do Gerente de Nível de Serviço são: I. Realizar revisões de técnicas com a equipe de desenvolvimento. II. Negociar, 
documentar e divulgar os Acordos de Nível de Serviço e Acordos de Nível Operacional. III. Identificar, entender e 
documentar os Requisitos de Nível de Serviço atuais e futuros. IV. Medir, registrar e analisar a satisfação dos clientes 
com os serviços entregues. Apenas as sentenças II, III e IV estão corretas. 
 Analise o seguinte trecho de algoritmo de ordenação de dados, cujos elementos estão dispostos em um vetor de nome 
v com n elementos. ... { 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; } } 
... Assinale o método ao qual o trecho de algoritmo pertence. Inserção. 
 Ao definirmos uma função, podemos afirmar: I. Toda função tem parâmetros; II. Quando nada retorna, o tipo é void. 
III. Quando todos os parâmetros são do mesmo tipo, é suficiente usar o tipo uma vez e separar os nomes dos 
parâmetros por vírgulas. IV. Na passagem por valor, o endereço da variável da função chamadora é passado para a 
função chamada. Após uma análise das afirmativas acima, escolha a opção correta. Somente II está correta. 
 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 é: vetor. 
 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. Seleção 
 As estruturas de dados podem ser caracterizadas como sendo uma forma organizada de armazenar dados ou 
informações na memória, de modo a otimizar o acesso a estes. Muitas vezes existem algoritmos de manipulação de 
dados associados a estas estruturas. Verifique as seguintes sentenças: I-Filas são estruturas que recuperam os dados 
na ordem direta em que estes foram armazenados. II-As Pilhas são estruturas que recuperam os dados na ordem 
reversa em que estes foram armazenados. III-As Pilhas são estruturas que recuperam os dados na ordem direta em 
que estes foram armazenados. IV-As Filas são estruturas que recuperam os dados na ordem reversa em que estes 
foram armazenados. Marque a alternativa CORRETA: As alternativas I e II estão corretas. 
 As estruturas de dados são importantes para a programação porque facilitam a pesquisa, pois permitem a ordenação 
dos dados de forma crescente ou decrescente. Dessa forma, assinale a alternativa correta que define um tipo de dado 
estruturado. Permitem agregar mais do que um valor em uma variável, existindo uma relação estrutural entre seus 
elementos. 
 As funções em programação permitem que se possa realizar a modularização do código diminuindo assim sua 
complexidade. Analise a função abaixo e assinale alternativa que descreve corretamente o tipo de função: int funcao 
(int x){ if (x = = 0) return 0; else função(x-1); }. Recursiva. 
 As listas encadeadas podem ser elaboradas de duas formas utilizando uma técnica de encadeamento simplesmente 
ou encadeamento duplo. O que difere uma lista simplesmente encadeada de uma lista duplamente encadeada? Em 
uma lista simplesmente encadeada cada nó aponta para um único nó enquanto a lista duplamente encadeada aponta 
para mais de um nó. 
 As pilhas sequenciais são estruturas que guardam a ordem reversa dos dados nelas armazenados, e isto em muitas 
ocasiões é muito vantajoso. A operação usada para inserir um elemento X numa pilha é conhecida na literatura como 
PUSH (x). Para remover um elemento de uma pilha a operação é o POP ( ). Assim estas duas funções devem 
implementar o algoritmo LIFO (Last in – first out) ou o ultimo a entrar é o primeiro a sair. Sendo assim se aplicarmos 
as seguintes operações em uma PILHA vazia: PUSH(10), PUSH(5), POP(), PUSH(7), POP(), PUSH(2), POP(), POP(). Quais 
valores restarão na pilha? Nenhum, a pilha estará vazia. 
 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: global. 
 Assinale a alternativa que apresenta duas formas de passagem de parâmetros para uma rotina ou função: por valor e 
por referência. 
 Assinale a opção certa. Quando não se escreve o protótipo de uma função... é preciso definir a função antes do 
programa principal. 
 Blocos únicos de códigos que realizam diversas tarefas distintas são de difícil manutenção. Portanto, utiliza-se a técnica 
da modularização de programas, a fim de facilitar a implementação e a manutenção dos programas. Esta técnica, 
também chamada de modularização, tem como principal elemento: As funções. 
 Com a utilização das estruturas de dados e seus tipos, em algumas situações é imprescindível a criação de funções que 
façam determinada verificação ou ação nestas estruturas. Dessa forma, analise a função abaixo e marque 
corretamente a alternativa que descreve as funcionalidades desta. int funcao(float v[], float vl, int n) {
 for (int i = 0; i < n; i++) if (v[i] == vl) return i; return -1; }. Retorna a 
posição de v se o valor vl foi encontrado. 
 Com relação à struct, é correto afirmar que: cada elemento da struct é denominado membro ou campo, sendo que a 
struct pode armazenar elementos de tipos diferentes ou não. 
 Com relação as listas lineares sequenciais: I - Uma lista linear sequencial é um vetor em linguagens estruturadas, 
também chamado de array. II - Um elemento de uma lista linear sequencial pode ser acessado diretamente através de 
um índice. III - Uma lista linear sequencial pode ter elementos de um mesmo tipo, ou de tipos diferentes. Apenas as 
afirmações I e II estão corretas. 
 Considerando a estrutura de fila circular vista em sala, que define as seguintes operações com uma fila: int enfileirar(int 
v[], int valor, int *fim) - insere um elemento na fila indicada por v. int desenfileirar(int v[], int *inicio, int fim, float 
&valor) - remove um elemento da fila indicada por v. Supondo que foram realizadas as seguintes operações numa fila 
circular (implementada em uma estrutura linear sequencial) de números inteiros de tamanho 5, que inicialmente se 
encontrava vazia: enfileirar (minhaFila[], 10, fim); enfileirar (minhaFila[], 20, fim); desenfileirar (minhaFila[], inicio, fim, 
valor); enfileirar (minhaFila[], 30, fim); desenfileirar (minhaFila[], inicio, fim, valor); enfileirar (minhaFila[], 40, fim); 
enfileirar (minhaFila[], 50, fim); enfileirar (minhaFila[], 60, fim); desenfileirar (minhaFila[], inicio, fim, valor); enfileirar 
(minhaFila[], 70, fim); Qual a posição, dentro da estrutura linear sequencial (vetor - que representaa fila), que se 
encontra o último elemento inserido na fila? 1. 
 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: (A) I, apenas. 
 Considere o trecho de um programa em C++. Int numero = 20; void mistério(int &v) { int aux = 111; aux = aux – 11; v = 
v-aux; numero=aux-numero; cout<<”auxiliar=”<<aux; } int main() { int valor = 1000; mistério(valor); cout << ”Numero1 
= ” << valor << “Numero2=” << numero << endl; }. Marque a opção correta que mostra o que é impresso na tela. Auxiliar 
= 100 Numero1 = 900 Numero 2 = 80. 
 Considere uma estrutura de dados do tipo vetor. Com respeito a tal estrutura, é correto que seus componentes são 
caracteristicamente: homogêneos e de acesso aleatório por intermédio de índices. 
 Considere uma estrutura de dados, representada pela variável P, com procedimentos de inclusão, exclusão e consulta 
do próximo elemento (e) disponível na estrutura, obedecendo às seguintes propriedades: 1) exclui (inclui (e, P))=P 2) 
próximo (inclui (e, P))=e. Pode-se concluir, então, que P corresponde à seguinte estrutura de dados? PILHA. 
 Considere uma lista com n livros, em que cada livro é modelado pela struct: struct Livro { string titulo, editora, autor; 
float preco; }; A função X abaixo void X (livrov[], int &n, Livro L) { v(n)=L; n++; cout<<”operação realizada com sucesso”; 
} implementa a operação de: inserção. 
 Considere uma lista sequencial L com n fichas de alunos, onde cada ficha de aluno é caracterizada pela struct: struct 
aluno { int matricula; char nome[30]; }; e a lista L é assim declarada: aluno L[n];. Assinale o trecho que 
corretamente exibe todas as matrículas e nomes de todos os n alunos de L. for (int i = 0; i <n; i++) cout << L[i].matricula 
<< “ “ << L[i].nome << endl; 
 Dentre os vários processos que constituem a ITIL, podemos definir a Gestão de Nível de Serviço como o processo de 
planejar, coordenar, acordar, monitorizar e reportar os SLA (Acordos de Nível de Serviço), que deve: I. executar 
projetos usando ferramentas de modelagem. II. assegurar a revisão contínua dos resultados dos serviços. III. Deve 
garantir que o custo necessário e justificável da qualidade de serviço se mantém e é progressivamente melhorado. 
Somente as opções I e II estão corretas. 
 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.5 1.5 3.5 1.5 
 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. 
 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, 20. 
 É correto afirmar sobre o funcionamento da busca sequencial. Os elementos são pesquisados de acordo com o índice. 
Pior caso: o elemento está no último índice do meu vetor. 
 É 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 ...... binária. 
 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: ponteiros. 
 Em relação à classificação do método de ordenação, assinale abaixo aquele que, durante o processo de ordenação, só 
usa a memória principal: ordenação interna. 
 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. 
 Em um ambiente de desenvolvimento de sistemas de informação, os acordos de níveis de serviço (SLA) geralmente 
são estabelecidos para: I. Serviços de desenvolvimento, implantação e manutenção de sistemas. II. Serviços de 
Segurança da informação. III. Serviços de suporte ao usuário. IV. Serviços gerais. Somente I, II e III corretas. 
 Em um container do tipo Pilha: utiliza-se a ordenação Last In First Out (LIFO). 
 Em uma lista linear simplesmente encadeada. Cada nó possui um só ponteiro que referencia o próximo nó da lista. 
 Entre os diversos algoritmos de pesquisa existentes, certamente os mais famosos são os da pesquisa sequencial e o da 
pesquisa binária. A busca ou pesquisa sequencial pode ser aplicada em vetores independente destes estarem 
ordenados, entretanto a busca binária só se aplica em vetores ordenados. Seja o vetor A={10,35,41,55,69,70,98}, 
suponha que o número 70 foi pesquisado pelo algoritmo da busca sequencial e também pelo algoritmo da busca 
binária, ambos algoritmos realizam testes nos elementos do vetor até achar o que procuram ou definirem que o 
elemento não se encontra no vetor. Sendo assim marque a alternativa que expressa o numero de testes realizados 
pela busca sequencial e o numero de testes realizados pela busca binária, respectivamente, até encontrarem o 70. 6 e 
2. 
 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 é: pesquisa 
binária. 
 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çãopara a direita e posteriormente inserindo-o na posição vaga". 
Inserção. 
 Funções são instrumentos de modularização de programas, que tem como finalidade tornar o código mais legível, isto 
é mais fácil de entender, evita replicação de instruções e permite o reuso das funções em outros programas. Então 
considere o seguinte código: #include <iostream> using namespace std; int main () { float a = 10.0; float b=4.0; cout << 
media (a,b); return 0; } float media (float x, float y) {return (x+y)/2;}. Marque a alternativa CORRETA: o código não 
compila, pois há a necessidade de se declarar float media (float, float) como protótipo da função float media (float x, 
float y) antes da função principal. 
 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 
___________. Alocação dinâmica de memória. 
 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; 
 Leia com atenção as afirmativas abaixo e assinale a resposta correta. I A estrutura de dados que melhor representa os 
diretórios ou pastas de arquivos do computador é a árvore. II A estrutura de dados FILA é não linear assim como o 
Grafo. III O termo folha em uma estrutura de dados é usado para um nó sem filhos e que tem grau 0. IV O grau de uma 
árvore é definido pelo número de subárvores de um nó. V O grafo é uma estrutura de dados que tem limitação para o 
número de vértices. VI Uma das aplicações da estrutura de dados grafo é a Computação Gráfica. I, III, IV e VI são 
afirmativas verdadeiras. 
 Marque a afirmativa correta para a “Busca ou pesquisa binária”. Consiste em fazer uma busca em um vetor já ordenado, 
dividindo o espaço de busca ao meio e verificando se o dado está no meio ou antes do meio ou depois do meio. 
 Marque a afirmativa correta para a "Inserção em lista linear sequencial ordenada". Consiste em adicionar um valor no 
vetor, mantendo a ordem existente e ajustando o total de elementos. 
 Marque a afirmativa correta para a “inserção incremental”. Consiste em adicionar um valor no vetor, mantendo a ordem 
existente e ajustando o total de elementos. 
 Marque a afirmativa correta para a “Ordenação em Listas Lineares Sequenciais”. É o processo pelo qual um conjunto 
de dados é colocado em uma ordem crescente ou decrescente. 
 Marque a opção correta, considerando struct Livro { int código; float preco; } liv liv.preco=30.70; 
 Marque a opção que representa uma característica CORRETA a respeito da estrutura de dados pilha. O último item 
inserido é o primeiro item a ser retirado. 
 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: ponteiro. 
 Na maioria dos sistemas operacionais, os arquivos são organizados hierarquicamente em um esquema de diretórios 
(pastas) e sub-diretórios. Qual a estrutura mais adequada para representar este problema? Árvore. 
 No programa abaixo, diga em que área de memória serão alocados os elementos de dados y e r, respectivamente. 
#include using namespace std; int x, y; float media( float a, float b ) { float tmp; tmp = 
(a + b ) / 2.0; return ( tmp ); } int main() { float r; cout<<"Informe 2 valores: "; 
cin>>x>> y; r = media( x, y ); cout<<"\nMedia = "<< r<<"\n"; system ("pause"); } ( ) 
área de dados globais / área de pilha 
 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. 
 O método de ordenação que compara pares de chaves de ordenação, trocando os elementos correspondentes caso 
estejam fora de ordem é o método: bolha. 
 O processo do SLA (Acordo de Nível de Serviço) pode ir de uma simples administração de redes de comunicações até 
à gestão completa dos sistemas e tecnologias de informação e comunicação (TIC) de uma organização. Como exemplo, 
podemos citar alguns pontos que têm a ver com um SLA para um Serviço de Help Desk que vai apoiar os usuários de 
TI na sua operação diária: I. Uma situação pode ser reportada por telefone, telegrama ou fax, não havendo a 
necessidade de implantar um modelo padrão de atendimento. II. As chamadas durante os três primeiros meses de 
uma nova release são gratuitas, a partir desse período terão um determinado custo por minuto. III. O Help Desk está 
disponível 7 dias / semana e 24 horas por dia. Assegura-se que o tempo de espera de cada chamada será, em 95% dos 
casos, inferior a um minuto. Somente as opções II e III estão corretas. 
 O que acontece ao se inserir uma informação quando já usamos toda a área disponível do vetor (topo=fim)? Overflow. 
 O que acontece quando tentamos retirar um elemento de uma pilha que já está vazia? Underflow. 
 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 
 O resultado de um concurso foi armazenado por um programador em um vetor, onde cada elemento (descrito pela 
struct Candidato) possui a informação da matrícula e nota de cada candidato, conforme descrito a seguir. Deseja-se 
que o vetor com os resultados fique ordenado em ordem decrescente pela nota. O programador pretende usar o 
algoritmo de busca descrito a seguir, porém precisa de ajuda no trecho contendo ********. Indique a opção que 
contém a solução que completa as linhas 1, 3 e 7 do algoritmo. ... struct Candidato { char mat[10]; float 
nota; }; ... 1.void ordenaSelecao (******** v[], int n) { 2. int i, j, maior; 3. ******** 
aux; 4. for (j = 0; j < n-1; j++) { 5. maior = j; 6. for (i = j+1; i < n; i++) 7. if (********) 8. 
maior = i; 9. aux = v[j]; 10. v[j] = v[maior]; 11. v[maior] = aux; 12. } 13. }. 1. Struct 
Candidato 3. Struct Candidato 7. V[i].nota > v[maior].nota 
 O resultado do concurso para o cargo de uma empresa que 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: Seleção. 
 O resultado do concurso para o cargo de uma empresa que está armazenado em um vetor, que contém em cada um 
de seus elementos o número de inscrição, o nome e a nota obtida pelo candidato. Este vetor está ordenado pelo 
número deinscrição. Para realização de uma consulta que, dado um número de inscrição, apresenta o nome e nota do 
candidato, um programador utilizou um algoritmo de busca que realiza sucessivas divisões no vetor, comparando o 
número de inscrição procurado com o número de inscrição do candidato posicionado no meio do vetor. Se o candidato 
posicionado no meio do vetor tiver o número de inscrição igual ao número de inscrição procurado, a busca termina 
com sucesso. Caso contrário, se candidato posicionado do meio do vetor tiver número de inscrição menor que o 
procurado, então a busca continua na metade posterior do vetor. E finalmente, se o candidato posicionado do meio 
do vetor tiver número de inscrição maior que o procurado, a busca continua na metade anterior do vetor. O algoritmo 
utilizado pelo programador trata-se do método denominado busca: binária. 
 Observe a função que manipula uma pilha e assuma que TAM é uma constante definida com valor 5. Saiba que o nome 
da função já explicita a finalidade dela. Void empilha(int vetor[], &topo, int valor) { if(topo = = TAM) cout<< 
“\nCHEIA\n”; else { //O que entra aqui? Vetor[topo]=valor; } }. Considere a chamada da função conforme linha abaixo, 
sabendo-se que vet é um vetor de tamanho 5 e que não tem nenhum valor ainda: empilha(vet, -1, 23);. Analise as 
afirmativas abaixo que sugerem correções, ou não, na definição na função e assinale a opção que contém as afirmativas 
corretas. I. Faltou & antes da variável vetor e irá acusar erro. II. A variável topo está sem tipo. III. O teste está correto 
porque o índice do primeiro elemento do vetor em C++ é 1, obrigatoriamente. IV. Na linha comentada deveria estar 
presente um comando de atribuição que decrementaria a variável topo. V. A linha vetor[topo]=valor; está correta. II e 
V estão corretas. 
 Observe o algoritmo a seguir, onde ocorre a passagem de parâmetro por valor e por referência, respectivamente, de 
ITALIA para FIAT e de FRANCA para HONDA. Início-algoritmo variáveis numérico: ITALIA; lógica: 
FRANCA; procedimento BADESC(lógica : HONDA; var numérico FIAT); início-procedimento repetir 
se ((FIAT for par) OU HONDA) então atribuir 25 a FIAT senão início atribuir (NÃO HONDA) a HONDA 
atribuir 85 a FIAT; fim; até que HONDA; fim-procedimento {inicio do corpo-do-algoritmo} 
atribuir 97 a ITALIA; atribuir FALSO a FRANCA; BADESC(FRANCA, ITALIA); imprimir (ITALIA, FRANCA) 
fim-algoritmo. Ao final do processamento, as variáveis ITALIA e FRANCA terão, respectivamente, os seguintes valores: 
85 e VERDADEIRO. 
 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: selecionados[i].nome selecionados[i].nota 
 Observe o trecho do programa em C++ abaixo e, após, entrar com os valores sugeridos para sua execução assinale a 
alternativa que representa a resposta final. Cin>>a; Cin>>b; Cin>>c; Cin>>d; Cout<<a; Cout<<b; Cout<<c; Cout<<d; 
Cout<<d; Cout<<c; Cout<<b; Cout<<a. Após a impressão dos valores pela ordem teremos uma fila e uma pilha. 
 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). a) lista ligada desordenada b) array ordenada 
c) método (bubble sort) ( ) inserção e remoção em tempo constante. ( ) consulta por busca binária em tempo O(log n). 
( ) consulta atravessa a lista toda. ( ) consiste na troca de valores entre posições consecutivas. ( ) é o processo mais 
simples de entender, mais fácil de implementar. ( ) inserção e remoção levam tempo linear. Indique a alternativa 
correta: a – b – a – c – c- b. 
 Os irmãos Silva irão viajar por vários países da Europa e por isso, traçaram no mapa o percurso que farão, de cidade a 
cidade. Qual a estrutura de dados mais adequada para modelar este problema? Grafo. 
 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. 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; } } } } 
 Os métodos de ordenação são muito utilizados para facilitar a recuperação posterior de itens ordenados. Existem 
vários métodos de ordenação, por esse motivo, assinale corretamente a alternativa que mostra o nome do método 
que utiliza a estratégia de ordenação por trocas de vizinhos e é considerado o método mais simples. Bolha. 
 Os sistemas e tecnologias de informação e comunicação (TIC) têm nas empresas um papel cada vez mais importante 
na prestação de serviços com maior grau de exigência. Atendendo a esta realidade foi desenvolvida na Inglaterra a ITIL 
- Information Technology Infrastructure Library, que se baseia nas especificações do ________________. SLM – Service 
Level Management ou Gestão de Níveis de Serviço. 
 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 incremento da variável final 
 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 -1; }. Pesquisa binária. 
 Pilha é uma estrutura de dados: cujo acesso aos seus elementos segue a lógica FIFO. 
 Pilhas são estruturas de dados que se utilizam do algoritmo LIFO, last in first out, ou melhor, o último a entrar é o 
primeiro a sair. Desta forma pode-se abstrair que existe apenas um local para a saída e a entrada de dados, ou seja, o 
topo da pilha. Supondo que uma pilha seja implementada por um vetor de inteiros de tamanho 10 e que exista uma 
variável global chamada topo para indexar esta posição de entrada e saída de dados e ainda quando esta variável 
assume o valor -1 indica que a pilha está vazia. Marque a opção que melhor ilustra a função de exclusão de um dado 
do vetor pilha, supondo ainda que o vetor tenha sido declarado inicialmente de forma global. Void pop(){ if(topo!=-1) 
topo--;} 
 Pode-se definir uma estrutura heterogênea como sendo um conjunto de elementos, geralmente agrupados sob uma 
lógica e associados por um nome. Esses elementos podem ser variáveis simples, matrizes ou ainda outras estruturas. 
Seja a definição de uma estrutura como: struct aluno { string nome; float nota; };. Suponha ainda que 
exista um vetor desta estrutura, definido como: aluno vet [100]. Marque a alternativa em que é atribuída de forma 
correta a nota 5.7 para o décimo primeiroelemento deste vetor. Vet[10].nota=5.7 
 Podemos dizer que estrutura de dados é: O meio para armazenar e organizar dados com o objetivo de facilitar o acesso 
e as modificações. 
 Podemos dizer que um container é: O que permite o armazenamento e a recuperação de dados independentemente de 
seu conteúdo. 
 Preciso cadastrar todos os interessados em meu novo curso de programação. Qual a estrutura de dados mais adequada 
para modelar este problema, visto que não há qualquer preocupação com ordem de chegada ou saída de aluno da 
turma? Lista. 
 Qual a importância de se entender a "ordenação" de dados? A ordenação é a base na qual, muitos algoritmos são 
construídos. Entendendo a ordenação, tem-se conhecimento para resolver outros problemas. 
 Qual das alternativas a seguir pode definir uma estrutura de pilha? Entrada e saída de dados pelo final. 
 Qual das seguintes estruturas de dados é classificada como heterogênea? Registro. 
 Qual estrutura de dados não linear que é utilizada na implementação de Redes de Computadores, na Computação 
Gráfica, em modelagem de circuitos digitais e etc. E que se caracteriza por apresentar um conjunto de nós e conexões 
entre eles. Grafos. 
 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); }. 16 
 Qual o valor de a após a execução do trecho abaixo? int a = 10; int *x; x = &a; *x = 55. 55 
 Quando as inserções e as remoções ocorrem sempre no mesmo lado da lista, trata-se de uma estrutura de dados 
denominada. Pilha. 
 Sabe-se que Push() coloca um elemento na pilha, Pop() remove um elemento da pilha e Top() exibe o elemento que se 
encontra no topo. Assinale a opção que indica o número que aparecerá após a execução das funções abaixo. Sequencia: 
Push()/ Push()/ Pop()/ Push()/ Pop()/ Top() Números que deverão ser empilhados nessa ordem: 8/15/23/13/18. 8 
 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 referência. Para o protótipo: void troca (float&,float&); pode-se dizer que: 
é 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 função chamadora. 
 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? *p2 = &b; 
 Seja a seguinte função de ordenação: void ordena (int n, int v[]) { int i, j, x; for (j=1; j<n; ++j) { x=v[j]; for (i=j-1; i>=0 && 
v[i] > x; --i) v[i+1]=v[i]; v[i+1]=x; } } Pode-se dizer que é uma função de ordenação: que utiliza o método inserção e realiza 
uma ordenação crescente nos elementos do vetor v. 
 Seja Q uma estrutura de dados do tipo fila, em que ENQUEUE(X) significa a adição do elemento X à Q e que DEQUEUE(), 
a retirada de um elemento. Q está inicialmente vazia e sofre a seguinte sequência de operações: ENQUEUE(1) 
ENQUEUE(2) DEQUEUE() ENQUEUE(3) ENQUEUE(4) DEQUEUE() DEQUEUE() ENQUEUE(5). Ao final da 
sequência, a soma dos elementos de que (Q) será? 9 
 Sistemas operacionais utilizam filas para gerenciar, tarefas, processos e recursos. Qual é a ordenação dos elementos 
armazenados aleatoriamente em uma lista do tipo LIFO? Ordem de entrada. 
 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 os 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, II e III. 
 Sobre o funcionamento da busca binária, é incorreto 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. 
 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 1024. 
 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. 
 Tei Ping, estudante de computação, precisou implementar parte de um jogo que trabalhava com cartas especiais. Cada 
carta possui um numero e uma letra. Alguns jogadores teriam que jogar as cartas na mesa, enquanto outros deveriam 
devolver as cartas na sequencia inversa à jogada. Tei Ping estudou o mecanismo do jogo e decidiu usar a melhor 
estrutura de dados na sua implementação. Qual a estrutura escolhida? Pilha. 
 Um órgão público adotou dois sistemas de senhas para atender os cidadãos na ordem de chegada. O sistema I atende 
os não idosos. O sistema II atende os idosos. Nessa situação: tanto o sistema I, quanto o II, adotam o esquema FIFO de 
organização de dados. 
 Uma fila duplamente terminada, isto é, uma estrutura linear que permite inserir e remover de ambos os extremos é 
chamada de: deque. 
 Uma função possui um valor de retorno inteiro, recebe por valor um inteiro como primeiro parâmetro e por referência 
um inteiro como segundo parâmetro. Qual das respostas abaixo poderia representar o protótipo dessa função: int func 
(int a, int&b); 
 Uma lista ligada é uma estrutura que corresponde a uma sequência lógica de entradas ou nós. Cada nó armazena a 
localização do próximo elemento na sequência, ou seja, de seu nó sucessor. Nessa estrutura: o armazenamento de uma 
lista não requer uma área contígua de memória. Como listas são estruturas dinâmicas, normalmente são definidos 
procedimentos que permitem criar e remover nós na memória.

Continue navegando