Prévia do material em texto
1. (COTEC/2013 - Adaptada) A linguagem C permite alocar (reservar) dinamicamente (em
tempo de execução) blocos de memórias u lizando ponteiros. A esse processo dá-se o nome
de alocação dinâmica, que faz uso das funções malloc, calloc, realloc e free, disponíveis na
biblioteca stdlib.h. Para liberar um bloco de memória previamente alocado, por meio de um
único parâmetro de entrada, marque (V) verdadeiro ou (F) falso onde faz-se uso de qual
função?
( ) Realloc.
( ) Calloc.
( ) Hiplloc.
( ) Malloc.
( ) Free.
2. Quando apresentamos uma sequência já ordenada para os algoritmos da bolha e para o
Insert Sort, marque (V) verdadeiro ou (F) falso:
( ) A sequência ordenada não é o melhor caso dos métodos analisados.
( ) Ambos executam sempre em O(1?) operações.
( ) Ambos executam sempre em tempo linear para as instâncias já ordenadas.
( ) O Insert Sort irá executar mais rápido, uma vez que, para sequências ordenadas, o método
executa n-1 comparações, enquanto o método da bolha sempre executa n (n-1)/2
comparações.
( ) O método da bolha irá executar mais rápido, uma vez que, para sequências ordenadas, o
método da bolha executa n-1 comparações, enquanto o Insert Sort executa n (n-1)/2
comparações.
3. Marque (V) verdadeiro ou (F) falso na regra de que o elemento mais an go numa lista é o
primeiro a ser removido corresponde, respec vamente, ao conceito e ao nome de:
( ) FIFO e PILHA
( ) LIFO e FILA
( ) LIFO e DEQUE
( ) FIFO e FILA
( ) LIFO e PILHA
4. Nas linguagens de programação, as variáveis são vinculadas aos seus valores em tempo de
execução. E o escopo de uma vinculação é o conjunto de trechos de um programa que se
consegue usar as variáveis. No caso da linguagem C, as variáveis são divididas quanto ao
escopo em três pos. Marque (V) verdadeiro ou (F) falso na opção que apresenta esses três
pos:
( ) Parâmetros atuais, parâmetros reais e parâmetro formais
( ) Parâmetros formais, parâmetros informais e sem parâmetro
( ) Parâmetros formais, variáveis internas e variáveis externas
( ) Variáveis locais, variáveis globais e parâmetros formais
( ) Variáveis por valor, variáveis por referência e variáveis por argumento
5. Considere que você está desenvolvendo um novo so ware para catalogar os jogadores de
futebol. Você modelou o seu programa u lizando as structs apresentadas abaixo.
typedf struct me {
char nome[50];
} Time;
struct Jogador {
int nr camisa;
char nome[30];
Time t;
} jogador;
Considerando que você precise cadastrar um novo jogador chamado Ronaldo Nazário, que irá
atuar no me do Real Madrid Club, com a camisa número 10, marque (V) verdadeiro ou (F)
falso na alterna va que apresenta a forma correta de inserir os dados.
( ) jogador.camisa = 10;
strepy(jogador.nome, "Ronaldo Nazário");
strepy(jogador.nome.nome, " Real Madrid Club ");
( ) jogador.camisa = 10;
strepy(jogador.nome, "Ronaldo Nazário");
strepy(jogador.t.nome, "Real Madrid Club");
( ) camisa.jogador = 10;
strcpy(nome.jogador, "Ronaldo Nazário");
strcpy(t.nome.jogador, " Real Madrid Club ");
( ) Camisa->jogador = 10;
strcpy(nome->jogador, "Ronaldo Nazário");
strepy(t->nome->jogador, " Real Madrid Club ");
( ) jogador->camisa = 10;
strepy(jogador->nome, "Ronaldo Nazário");
strepy(jogador->t->nome, " Real Madrid Club ");
6. Árvores binárias de busca (ABB) são uma aplicação de árvores binárias para solucionar
problemas de busca. Para isso, uma ABB tem seus nós rotulados de forma que estes guardem
uma relação de precedência entre os que pertencem às subárvores esquerda e direita. Marque
(V) verdadeiro ou (F) falso na única opção que contém uma afirmação correta sobre ABB.
( ) Os nós da subárvore esquerda de um nó v têm rótulos maiores do que v.
( ) Os nós das subárvores de um nó v têm rótulos maiores do que v.
( ) Se um nós é inserido na ABB e já existe outro nó p com o mesmo rótulo, s é inserido na
subárvore oposta a p.
( ) Todos os nós da subárvore esquerda sempre têm rótulos menores que os nós da subárvore
direita.
( ) Os nós da subárvore direita de um nó v têm rótulos menores do que v.
7. Uma pilha segue a regra: "o ul mo a chegar é o primeiro a sair". Já as filas obedecem à
regra: o primeiro a chegar é o primeiro a sair. Com base nesses argumentos,
Uma pilha P e uma fila F originalmente com n elementos cada (n > 5), onde suas operações
são:
empilha(P, elemento): insere elemento na pilha P;
desempilha(P): remove da pilha P e retorna o elemento removido;
enfileira(F, elemento): insere elemento na fila F;
desenfileira(F): remove da fila F e retorna o elemento removido;
para i= 1 até n, faça
empilha(P, desempilha(P))
enfileira(F, desenfileira(F))
fim-para
Ao final da execução do pseudocódigo, marque (V) verdadeiro ou (F) falso nos estados finais de
P e F serão respec vamente:
( ) elementos em ordem original e elementos em ordem inversa.
( ) Ambas as estruturas estarão vazias.
( ) elementos em ordem inversa e elementos em ordem inversa.
( ) elementos em ordem original e elementos em ordem original.
( ) elementos em ordem inversa e elementos em ordem original.
8. (FUNCAB/2015 - adaptada) Na linguagem C, o cabeçalho de biblioteca stdio.h possui
definições de subro nas rela vas às operações de entrada/saída padrão. Marque (V)
verdadeiro ou (F) falso em uma das funções tratadas na biblioteca, associada a esse cabeçalho,
que é a função:
( ) Prin .
( ) Strcpy.
( ) Loca me.
( ) Trunc.
( ) Stderr.
9. Sobre o método da bolha, marque (V) verdadeiro ou (F) falso no que é correto afirmar:
( ) O tempo de execução é definido pela complexidade computacional sempre,
independentemente da instância apresentada.
( ) O tempo de execução pode ser linear em relação ao tamanho da entrada se a instância
apresentada es ver ordenada em ordem reversa a desejada.
( ) O tempo de execução pode ser linear em relação ao tamanho da entrada se a instância
apresentada já es ver ordenada.
( ) O algoritmo executa sempre no mesmo tempo para instâncias de mesmo tamanho n.
( ) A complexidade computacional deste algoritmo é O (n log n).
10.
Considerando a figura acima, que ilustra uma árvore de busca binária, marque (V) verdadeiro
ou (F) falso na opção correta.
( ) Transformando essa árvore em uma nova árvore de ordem 2, as folhas teriam de estar no
nível 2.
( ) Se a referida árvore for balanceada, a inserção de um nó 5 fará que ele tome o lugar do nó
4, passando a ser o nó 5 a raiz da subárvore.
( ) Se a árvore em tela for balanceada, depois da inserção de um nó 9, o nó 12 assume a raiz da
árvore.
( ) Se a árvore em questão não for balanceada, então, com a remoção do nó 8, o nó 12 deve
assumir a raiz da árvore.
( ) O percurso a percorrer nessa árvore na pré-ordem é 4 10 15 12 8.
11. As estruturas de dados definem os diversos pos de mecanismos que podem ser
empregados para organizar os dados que serão tratados pelos algoritmos computacionais para
a solução de um problema.
Escolher corretamente a estrutura de dados tem impacto direto no desempenho do algoritmo.
Se você escolher uma estrutura inadequada, seu algoritmo terá um desempenho insa sfatório,
acarretando em uma má experiência.
Assim, diante das afirmações acima e considerando as diversas estruturas de dados existentes,
imagine o problema abaixo:
Problema: uma startup precisa armazenar os dados funcionais, pessoais e acadêmicos de seus
funcionários, além dos nomes e idades de seus dependentes (filhos e cônjuge), para realizar
estudos na área de recursos humanos e elaborar um plano de qualificação.
Nesse contexto, ao avaliar a estrutura de dados necessária para elaborar o algoritmo (solução)
podemos afirmar:
I) Os dados pessoais dos funcionários poderiam ser armazenados em um registro (struct),
tendo em vista serem dados de diversos pos, ou seja, dados heterogêneo;
II) Os nomes dos dependentes poderiamser armazenados em um vetor, tendo em vista que
são dados de um mesmo po (string);
III) A idade dos dependentes pode ser armazenada em um campo po lógico, tendo em vista
que cada dependente tem apenas uma idade;
IV) O nome de um funcionario pode ser armazenado em estrutura simples do po string, que
irá compor uma estrutura complexa do po registro, que por sua vez armazenará todos os
dados pessoais de um funcionário.
Diante das afirmações acima, marque (V) verdadeiro ou (F) falso na alterna va correta:
( ) apenas as alterna vas II, III e IV estão corretas;
( ) apenas as alterna vas I, II e IV estão corretas;
( ) todas as alterna vas estão corretas.
( ) apenas as alterna vas I, II e III estão corretas;
( ) apenas as alterna vas I, III e IV estão corretas;
12. Em um projeto de so ware em C++, a modularização de código desempenha um papel
fundamental para manter o código organizado, facilitar a manutenção e reu lização de partes
do programa. Para isso, você pode usar funções para dividir o código em módulos
independentes e mais gerenciáveis.
Marque (V) verdadeiro ou (F) falso nas seguintes afirmações sobre a modularização de código
em C++ está correta.
( ) A modularização de código em C++ só é possível por meio do uso de bibliotecas externas,
pois a linguagem não suporta recursos para a criação de módulos internos.
( ) A modularização de código em C++ é alcançada usando funções, que permitem que partes
do código sejam encapsuladas em unidades independentes e reu lizáveis.
( ) A modularização de código em C++ é restrita ao uso de macros, que simplificam a escrita do
código, mas não permitem a reu lização.
( ) A modularização de código em C++ é feita exclusivamente por meio de classes e objetos.
( ) A modularização de código é uma prá ca desnecessária em C++, pois a linguagem não
suporta funções ou módulos.
13. Ana precisa u lizar uma estrutura de dados para gerenciar trabalhos de impressão em uma
impressora compar lhada por vários computadores em uma rede. As regras dessa estrutura
devem permi r que os trabalhos sejam impressos na ordem em que forem enviados, ou seja, o
primeiro a enviar um pedido de impressão deve ser o primeiro a ter sua solicitação atendida.
Não deve ser permi do inserir pedidos de impressão no meio dos pedidos já realizados.
Marque (V) verdadeiro ou (F) falso na estrutura de dados mais adequada para Ana u lizar.
( ) árvore binária.
( ) lista encadeada ordenada.
( ) fila.
( ) pilha.
( ) tabela hash.
14. (ENADE 2017) O algoritmo a seguir recebe um vetor v de números inteiros e rearranja esse
vetor de tal forma que seus elementos, ao final, estejam ordenados de forma crescente.
01 void ordena(int *v, int n)
02 {
03 int i, j, chave;
04 for(i =1;ix= 0 && v[j] = 0 && v[j] > chave)
( ) A linha 08 deve ser corrigida da seguinte forma:
while(j >= 0 && v[j] > chave)
e a linha 10, do seguinte modo:
v[j + 1] = v[j];
( ) A linha 04 deve ser corrigida da seguinte forma:
for(i=1;i( ) Inser on sort
( ) Merge sort
20. (ENADE 2017 - Adaptada) O fragmento de código C++, a seguir, contém a implementação
da inserçao de um nó em uma árvore binária:
Com base no exposto, marque (V) verdadeiro ou (F) falso na opção que apresenta o fragmento
de programa para imprimir os valores con dos nos nós, percorrendo a árvore em pré-ordem.