Você está na página 1de 43

ESTRUTURA DE DADOS Lupa

Aluno: FABIO CELESTINO GAIA DE GODOY Matr.: 202306170824

Disc.: ESTRUTURA DE DADOS 2023.4 EAD (G) / EX

Prezado (a) Aluno(a),

Você fará agora seu EXERCÍCIO! Lembre-se que este exercício é opcional, mas não valerá
ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha.

Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da
mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua
AV e AVS.

ESTRUTURAS DE DADOS HETEROGÊNEAS

1. (IADES/2018) A sigla FIFO refere-se a estruturas de


dados do tipo fila. Como é o funcionamento em uma
FIFO?

O primeiro objeto inserido na fila é o último a ser removido.

O último objeto inserido na fila é o primeiro a ser removido.

O primeiro objeto inserido na fila é também o primeiro a ser removido.

Uma FIFO e uma LIFO possuem as mesmas características de entrada e de


saída dos objetos.

O programador irá definir a ordem de entrada e de saída dos objetos em uma


FIFO.
Data Resp.: 01/01/2024 11:11:30

Explicação:

Em uma estrutura de dados do tipo FIFO (First In, First Out), o primeiro elemento a entrar
na fila é o primeiro a sair, ou seja, o elemento que foi inserido primeiro será o primeiro a
ser removido da estrutura. Isso ocorre porque a fila segue uma ordem linear de entrada e
saída de elementos, sem possibilidade de inserção ou remoção em posições
intermediárias.

2. Sobre estruturas de dados, assinale a alternativa


CORRETA.

Pilhas são tipos de dados abstratos caracterizadas pela política


"primeiro a entrar, último a sair".
Listas duplamente ligadas são estruturas em que cada nó possui uma
referência tanto ao nó que o antecede quanto ao nó que o sucede.
Além disso, o último nó da lista também possui uma referência para o
primeiro nó da lista.

Filas são comumente implementadas sobre arrays ou grafos.

Árvores de busca de binárias são estruturas nas quais nós filhos


possuem valores numericamente inferiores aos dos nós pais.
Grafos são estruturas de dados em que cada nó possui um valor e um
conjunto de relações unidirecionais com os demais nós.
Data Resp.: 01/01/2024 11:11:36

Explicação:

A resposta correta é: Pilhas são tipos de dados abstratos caracterizadas pela


política "primeiro a entrar, último a sair".

MODULARIZAÇÃO

3. Observe o trecho de código abaixo, escrito na linguagem


C.

void imprimecabecalho() {

...

void calcula() {

int soma;
...

imprimecabecalho();

Com base nesse código, é correto afirmar que:

O escopo da variável soma é dinâmico e se estende durante toda execução do


programa.

O escopo da variável soma é contido pela função imprimecabecalho().

O escopo e o tempo de vida da variável soma são iguais e contidos pela função
imprimecabecalho().

O escopo da variável soma se estende da função calcula() para a função


imprimecabecalho().

O tempo de vida da variável soma estende-se durante o tempo em que a função


imprimecabecalho() é executada.
Data Resp.: 01/01/2024 11:11:50

Explicação:

Resposta correta: o tempo de vida da variável soma estende-se durante o tempo em que
a função imprimecabecalho() é executada.

4. (NUCEPE/2015 - adaptada) A modularização é


importante para organizar melhor o código, facilitar a
manutenção, entre outras coisas.

Sobre a modularização, assinale a alternativa correta.

É um procedimento que sempre retorna um valor ao programa.

É um método que consiste em decompor um programa em uma série de


subprogramas individuais.

A passagem de parâmetros para um subprograma pode ser somente por valor.

As variáveis definidas no escopo de cada função são acessíveis em todo o


programa.

As variáveis locais são declaradas no escopo do programa inteiro.

Data Resp.: 01/01/2024 11:11:58


Explicação:

A modularização consiste em decompor um programa em uma série de subprogramas


individuais. Trata-se de um método utilizado para facilitar a construção de grandes
programas, através de sua divisão em pequenas etapas.

LISTAS, PILHAS E FILAS

5. (IBFC/2022 - Adaptada) Assinale, das alternativas


abaixo, a única que identifica respectivamente uma
Estrutura de Dados do tipo FIFO (First In, First Out) e
uma outra com a Estrutura de dados do tipo LIFO (Last
In, First Out):

matriz - vetor

vetor - lista

lista - vetor

fila - pilha

pilha - fila

Data Resp.: 01/01/2024 11:12:22

Explicação:

Filas e Pilhas são estruturas de dados lineares que permitem o armazenamento e acesso
a elementos. Ambas são utilizadas para armazenar coleções de elementos, mas
possuem diferenças importantes no que diz respeito ao princípio de acesso aos
elementos.

Uma fila é uma estrutura de dados baseada no princípio First In, First Out (FIFO), ou seja,
o primeiro elemento a ser adicionado é o primeiro a ser removido. É como se fosse uma
fila de pessoas, onde a primeira pessoa a chegar é a primeira a ser atendida. As
operações de inserção e remoção são chamadas de enfileirar e desenfileirar,
respectivamente.

Já uma pilha é uma estrutura de dados baseada no princípio Last In, First Out (LIFO), ou
seja, o último elemento a ser adicionado é o primeiro a ser removido. É como se fosse
uma pilha de pratos, onde o último prato colocado é o primeiro a ser retirado. O LIFO é a
base para as operações de empilhamento e desempilhamento, que permitem adicionar e
remover elementos na pilha, respectivamente.
6. Várias estruturas de dados podem ser utilizadas para
armazenar dados de um aplicação. Em relação ao
assunto, assinale a alternativa correta.

A estrutura de dados do tipo lista, utiliza a ideia do primeiro a chegar, primeiro a


ser servido para inserir elementos.

A estrutura de dados do tipo fila, utiliza a ideia do primeiro a ser inserido, será o
primeiro a ser retirado.

A estrutura de dados do tipo fila, sempre retira os elementos que entraram por
ultimo na fila.

A estrutura de dados do tipo pilha, sempre retira os elementos que fora inseridos
primeiro na estrutura.

A estrutura de dados do tipo pilha, para retirar o elemento do topo da pilha, é


necessário retirar o elemento da base da pilha.
Data Resp.: 01/01/2024 11:12:39

Explicação:

A resposta correta é: A estrutura de dados do tipo fila, utiliza a ideia do primeiro a ser
inserido, será o primeiro a ser retirado.o.

ORDENAÇÃO

7. (FUMARC/2014 - Adaptada) Considere uma estrutura de


dados do tipo vetor de tamanho 6 (seis) inicializado com
as chaves abaixo:

Analise a ilustração dos passos intermediários de um


método de ordenação das chaves do vetor:

O método de ordenação apresentado é:

Ordenação por inserção.

Mestrellasort.

Quicksort.
Shellsort.

Ordenação por seleção.

Data Resp.: 01/01/2024 11:12:49

Explicação:

A ordenação por seleção é um algoritmo de ordenação que consiste em encontrar o


menor valor no vetor e colocá-lo na primeira posição (ou o maior valor, dependendo da
ordem desejada). Em seguida, encontra-se o segundo menor valor e o coloca na segunda
posição, e assim por diante, repetindo o processo para os (n-1) elementos restantes, até
os últimos dois elementos.

8. (UEAP/2014) Leia o seguinte trecho de código-fonte


escrito em Java.

O algoritmo de ordenação implementado nesse trecho de


código-fonte é o

May Sort.

Bubble Sort.

Merge Sort.

Quick Sort.

Heap Sort.

Data Resp.: 01/01/2024 11:12:54

Explicação:

Bubble Sort indica um algoritmo de ordenação de elementos, que é um dos algoritmos


mais simples e conhecidos para ordenar um conjunto de dados. O Bubble Sort funciona
percorrendo a lista de elementos várias vezes, comparando pares de elementos
adjacentes e trocando-os se estiverem na ordem errada. O processo é repetido até que
nenhuma troca seja necessária, o que significa que a lista está ordenada.

ÁRVORES
9. Seja a seguinte árvore binária de busca abaixo, marque
a sequência correta do percurso em pós-ordem:

23,24,25,26,27,29,28

25,24,23,27,26,28,29

25,24,27,23,26,29,30

23,24,29,26,28,25,27

23,24,26,29,28,27,25

Data Resp.: 01/01/2024 11:13:10

Explicação:

O percurso é definido pela recursão, percorrer recursivamente a esquerda, percorrer


recursivamente a direita da raiz considerada e, finalmente, visitar a raiz.

10. Seja a seguinte árvore, marque a opção correta que


indica o porquê a árvore abaixo não é uma árvore binária
de busca:
Não é uma árvore binária de busca pois essa árvore deve estar perfeitamente
balanceada.

Não é uma árvore binária de busca pois o nó 35 deveria estar inserido à direita do
nó 20.

Não é uma árvore binária de busca pois está desbalanceada.

Não é uma árvore binária de busca pois o nó 22 deveria estar inserido à direita do
nó 20.

Não é uma árvore binária de busca pois esta árvore deve estar com os níveis de
suas folhas todas igualmente perfeitas.
Data Resp.: 01/01/2024 11:13:15

Explicação:

Uma árvore binária de busca são árvores que obedecem às seguintes propriedades:

 Dado um nó qualquer da árvore binária, todos os nós à esquerda dele são


menores ou iguais a ele.
 Dado um nó qualquer da árvore binária, todos os nós à direita dele são maiores
ou iguais a ele.

Observe que a sub-árvore 20-22 não respeita a regra básica, portanto, o nó 22 deveria
estar a direita do nó 20.

Não
Não Gravada Gravada
Respondida

Exercício inciado em 01/01/2024 11:11:17.


Exercíci
o por
Temas
avalie sua
aprendizagem

ESTRUTURA DE DADOS Lupa


DGT1335_202306170824_TEMAS

Aluno: FABIO CELESTINO GAIA DE GODOY Matr.: 202306170824


Disc.: ESTRUTURA DE DADOS 2023.4 EAD (G) / EX

Prezado (a) Aluno(a),

Você fará agora seu EXERCÍCIO! Lembre-se que este exercício é opcional, mas não valerá
ponto para sua avaliação. O mesmo será composto de questões de múltipla escolha.

Após responde cada questão, você terá acesso ao gabarito comentado e/ou à explicação da
mesma. Aproveite para se familiarizar com este modelo de questões que será usado na sua
AV e AVS.

ESTRUTURAS DE DADOS HETEROGÊNEAS

1. (IADES/2018) A sigla FIFO refere-se a estruturas de


dados do tipo fila. Como é o funcionamento em uma
FIFO?

O primeiro objeto inserido na fila é o último a ser removido.

O último objeto inserido na fila é o primeiro a ser removido.


Uma FIFO e uma LIFO possuem as mesmas características de entrada e de
saída dos objetos.
O primeiro objeto inserido na fila é também o primeiro a ser removido.
O programador irá definir a ordem de entrada e de saída dos objetos em uma
FIFO.
Data Resp.: 30/01/2024 19:17:58

Explicação:

Em uma estrutura de dados do tipo FIFO (First In, First Out), o primeiro elemento a entrar
na fila é o primeiro a sair, ou seja, o elemento que foi inserido primeiro será o primeiro a
ser removido da estrutura. Isso ocorre porque a fila segue uma ordem linear de entrada e
saída de elementos, sem possibilidade de inserção ou remoção em posições
intermediárias.

2. Sobre estruturas de dados, assinale a alternativa


CORRETA.

Árvores de busca de binárias são estruturas nas quais nós filhos


possuem valores numericamente inferiores aos dos nós pais.
Filas são comumente implementadas sobre arrays ou grafos.
Pilhas são tipos de dados abstratos caracterizadas pela política
"primeiro a entrar, último a sair".
Grafos são estruturas de dados em que cada nó possui um valor e um
conjunto de relações unidirecionais com os demais nós.
Listas duplamente ligadas são estruturas em que cada nó possui uma
referência tanto ao nó que o antecede quanto ao nó que o sucede.
Além disso, o último nó da lista também possui uma referência para o
primeiro nó da lista.
Data Resp.: 30/01/2024 19:18:35

Explicação:

A resposta correta é: Pilhas são tipos de dados abstratos caracterizadas pela


política "primeiro a entrar, último a sair".

3. (UFAM/2022) Considere o programa a seguir, elaborado


na linguagem ANSI C:

#include < stdio.h >

int* pa, a;

int main() { a = 10; pa = &a; a = 8; printf("%d", a); printf("


%d", *pa); }

Assinale a alternativa correta sobre a saída (output)


obtida, ao se executar o programa:

10 8

9 10

10 10

88

8 10
Data Resp.: 30/01/2024 19:18:51

Explicação:
Vamos entender o que acontece em cada linha do código:

Declara-se duas variáveis: pa (um ponteiro para inteiro) e a (um inteiro).

Atribui-se o valor 10 à variável a.

Atribui-se o endereço da variável a ao ponteiro pa.

Atribui-se o valor 8 à variável a. Nesse momento, a variável pa também aponta para o


valor 8.

Imprime-se o valor de a na tela. O valor de a é 8.

Imprime-se o valor apontado por pa na tela. O valor apontado por pa é 8.

Portanto, a saída do programa é "8 8".

Não
Não Gravada Gravada
Respondida

Exercício por Temas inciado em 30/01/2024 19:17:40.

MODULARIZAÇÃO

1. Observe o trecho de código abaixo, escrito na linguagem C.

void imprimecabecalho() {

...

void calcula() {

int soma;

...

imprimecabecalho();

Com base nesse código, é correto afirmar que:

O escopo da variável soma é contido pela função imprimecabecalho().


O tempo de vida da variável soma estende-se durante o tempo em que a função
imprimecabecalho() é executada.
O escopo da variável soma se estende da função calcula() para a função
imprimecabecalho().
O escopo e o tempo de vida da variável soma são iguais e contidos pela função
imprimecabecalho().
O escopo da variável soma é dinâmico e se estende durante toda execução do
programa.
Data Resp.: 30/01/2024 19:25:10

Explicação:

Resposta correta: o tempo de vida da variável soma estende-se durante o tempo em que a
função imprimecabecalho() é executada.

2. (NUCEPE/2015 - adaptada) A modularização é importante


para organizar melhor o código, facilitar a manutenção,
entre outras coisas.

Sobre a modularização, assinale a alternativa correta.

É um método que consiste em decompor um programa em uma série de


subprogramas individuais.
As variáveis definidas no escopo de cada função são acessíveis em todo o programa.

As variáveis locais são declaradas no escopo do programa inteiro.

A passagem de parâmetros para um subprograma pode ser somente por valor.

É um procedimento que sempre retorna um valor ao programa.


Data Resp.: 30/01/2024 19:24:08

Explicação:

A modularização consiste em decompor um programa em uma série de subprogramas


individuais. Trata-se de um método utilizado para facilitar a construção de grandes
programas, através de sua divisão em pequenas etapas.

3. Essas variáveis que são declaradas fora da sub-rotina,


podendo ser acessíveis em todos os escopos, em qualquer
lugar de um programa, disponíveis durante toda a
execução do programa.
Marque a alternativa que apresenta o tipo de variável
descrito acima.

Formais.

Local.

Paramétricas.

Única.
Global.
Data Resp.: 30/01/2024 19:23:41

Explicação:

As variáveis globais são declaradas fora da sub-rotina. São acessíveis em todos os escopos,
em qualquer ponto de um programa, mesmo em outros módulos. Podem, portanto, ser
usadas ou modificadas por qualquer sub-rotina do programa onde estão declaradas. Em
outras palavras, as variáveis globais estão disponíveis durante toda a execução do programa.

4. As sub-rotinas são procedimentos e funções da


programação modularizada. Um parâmetro passado por
valor para uma sub-rotina se comportará como uma
variável local, isto é, qualquer modificação no valor desta
variável não será visível fora da sub-rotina. Sobre a
passagem de parâmetros, analise as afirmativas abaixo.

I - Na passagem por valor ocorre uma troca de valores


entre variáveis na sub-rotina.

II - Na passagem por valor ocorre uma cópia do valor da


variável em todas as posições de memória, sendo possível
alterar o conteúdo da variável original a qualquer momento.

III - A passagem por referência nunca deve ser utilizada.

Marque a alternativa que apresenta a(s) afirmativa(s)


correta(s).

Apenas a afirmativa I está correta.

As afirmativas I, II e III estão corretas.

Apenas as afirmativas I e III estão corretas.

Apenas as afirmativas I e II estão corretas.

Apenas as afirmativas II e III estão corretas.


Data Resp.: 30/01/2024 19:25:25

Explicação:

A afirmativa II está incorreta. Na passagem por valor, é feita uma cópia do valor da variável,
mas essa cópia não é armazenada em todas as posições de memória. Alterações feitas na
cópia da variável dentro da sub-rotina não afetarão o conteúdo da variável original fora da
sub-rotina.
A afirmativa III está incorreta. A passagem por referência pode ser utilizada em determinadas
situações, quando se deseja que uma sub-rotina seja capaz de modificar diretamente o
conteúdo da variável original. Ela envolve a passagem do endereço onde se encontra a
variável usada como argumento na chamada da sub-rotina.

5. (FUNCAB/2015 - adaptada) Na linguagem C, o cabeçalho


de biblioteca stdio.h possui definições de subrotinas
relativas às operações de entrada/saída padrão. Uma das
funções tratadas na biblioteca, associada a esse
cabeçalho, é a função.

Strcpy.

Stderr.

Locatime.

Trunc.

Printf.
Data Resp.: 30/01/2024 19:23:05

Explicação:

As funções de E/S padrão são responsáveis pelas operações de entrada e saída de dados.
Quando um programa na linguagem C é executado, o sistema operacional é responsável por
abrir três arquivos: O arquivo de entrada padrão (stdin), o arquivo de saída padrão (stdout) e
o erro padrão (stderr). Invocando funções de E/S padrão printf, scanf, getchar, putchar.

6. Há duas maneiras de se passar argumentos ou parâmetros


para funções: por valor e por referência. Sobre passagem
de parâmetros, analise as seguintes afirmativas:

I. Na passagem por referência, o que é passado


como argumento no parâmetro formal é o endereço
da variável.

II. Na passagem por valor, o valor é copiado do


argumento para o parâmetro formal da função.

III. Por exemplo, quando duas variáveis inteiras i1 e


i2 são passadas por valor à função troca() chamada
pelo programa principal, elas também são alteradas
no programa principal.

IV. Na passagem por referência, dentro da função, o


argumento real utilizado na chamada é acessado
através do seu endereço, sendo assim alterado.

V. Na passagem por valor, quaisquer alterações


feitas nestes parâmetros dentro da função não irão
afetar as variáveis usadas como argumentos para
chamá-la.

Está CORRETO o que se afirma em:

I, III e V, apenas

V, apenas

I e III

I, II, IV e V, apenas

II e IV, apenas
Data Resp.: 30/01/2024 19:24:47

Explicação:

Resposta correta: I, II, IV e V, apenas

LISTAS, PILHAS E FILAS

1. Várias estruturas de dados podem ser utilizadas para


armazenar dados de um aplicação. Em relação ao assunto,
assinale a alternativa correta.

A estrutura de dados do tipo lista, utiliza a ideia do primeiro a chegar, primeiro a ser
servido para inserir elementos.
A estrutura de dados do tipo pilha, para retirar o elemento do topo da pilha, é
necessário retirar o elemento da base da pilha.
A estrutura de dados do tipo fila, sempre retira os elementos que entraram por ultimo
na fila.
A estrutura de dados do tipo fila, utiliza a ideia do primeiro a ser inserido, será o
primeiro a ser retirado.
A estrutura de dados do tipo pilha, sempre retira os elementos que fora inseridos
primeiro na estrutura.
Data Resp.: 30/01/2024 19:30:11

Explicação:

A resposta correta é: A estrutura de dados do tipo fila, utiliza a ideia do primeiro a ser
inserido, será o primeiro a ser retirado.o.

2. (FCC/ 2013) Insira os dados de entrada numa fila. Em


seguida, retire cada dado da fila e insira numa pilha. Mostre
a pilha. Depois retire os dados da pilha e insira na fila.
Mostre a fila.

Dados de entrada: 11, 12, 23, 14, 25, 50, 8, 18, 29, 10

As estruturas mostradas ficam

I. Pilha: (topo) 10 - 29 - 18 - 8 - 50 - 25 - 14 - 23 - 12 - 11

II. Fila: (começo) 11 - 12 - 23 - 14 - 25 - 50 - 8 - 18 - 29 - 10


(fim)
III. Fila: (começo) 10 - 29 - 18 - 8 - 50 - 25 - 14 - 23 - 12 - 11
(fim)

IV. Pilha: (topo) 11 - 12 - 23 - 14 - 25 - 50 - 8 - 18 - 29 - 10

V. A fila mostrada fica com os elementos em ordem


invertida dos dados de entrada

Está correto o que se afirma APENAS em:

I, II e III.

I, III e V.

III e IV.

I, IV e V.

II e IV.
Data Resp.: 30/01/2024 19:30:19

Explicação:

Ao inserir na fila temos: 10,29,18,8,50,25,14,23,12,11

Ao inserir na pilha temos:

10
29
18
8
50
25
14
23
12
11

Retirando os dados da pilha e inserindo na fila: 10,29,18,8,50,25,14,23,12,11

3. O acesso ao elemento de uma estrutura de dados tipo pilha


se restringe ao mais recente na pilha. Já o acesso a um
elemento de uma estrutura tipo fila ocorre ao dado há mais
tempo na fila. Sobre pilhas e filas, avalie as assertivas a
seguir:

I - Uma forma de evitar o desperdício de memória numa fila


em alocação sequencial é utilizar-se lista circular.

II - Em uma pilha em alocação encadeada, a complexidade


da remoção é O(n).

III - Pilhas têm a propriedade de inverter a ordem de


cadeias, enquanto as filas mantêm a ordem.

A opção que contém todas as assertivas corretas é:

II.

II e III.

I.

I e III.

I e II.
Data Resp.: 30/01/2024 19:30:32

Explicação:

A resposta correta é: I e III.

4. Sobre listas duplamente encadeadas, afirma-se:

I) Cada nó usa o dobro do número de campos


ponteiro de uma lista simplesmente encadeada.

II) A complexidade de remoção é metade da


complexidade de remoção em lista simplesmente
encadeada.

III) Não permitem a inserção de nó no meio da


lista.

É correto apenas:

II e III.

I.

II.

I e III.

III.
Data Resp.: 30/01/2024 19:30:41

Explicação:

A resposta correta é: I.
5. (IBFC/2022 - Adaptada) Assinale, das alternativas abaixo, a
única que identifica respectivamente uma Estrutura de
Dados do tipo FIFO (First In, First Out) e uma outra com a
Estrutura de dados do tipo LIFO (Last In, First Out):

lista - vetor

matriz - vetor

vetor - lista

fila - pilha

pilha - fila
Data Resp.: 30/01/2024 19:30:48

Explicação:

Filas e Pilhas são estruturas de dados lineares que permitem o armazenamento e acesso a
elementos. Ambas são utilizadas para armazenar coleções de elementos, mas possuem
diferenças importantes no que diz respeito ao princípio de acesso aos elementos.

Uma fila é uma estrutura de dados baseada no princípio First In, First Out (FIFO), ou seja, o
primeiro elemento a ser adicionado é o primeiro a ser removido. É como se fosse uma fila de
pessoas, onde a primeira pessoa a chegar é a primeira a ser atendida. As operações de
inserção e remoção são chamadas de enfileirar e desenfileirar, respectivamente.

Já uma pilha é uma estrutura de dados baseada no princípio Last In, First Out (LIFO), ou
seja, o último elemento a ser adicionado é o primeiro a ser removido. É como se fosse uma
pilha de pratos, onde o último prato colocado é o primeiro a ser retirado. O LIFO é a base
para as operações de empilhamento e desempilhamento, que permitem adicionar e remover
elementos na pilha, respectivamente.

6. (IBADE/2022) Uma estrutura de dados onde existe uma


coleção ordenada de entidades sendo a metodologia de
busca com base no deslocamento relativo ao primeiro
(cabeça) da coleção, chama-se:

fila.

árvore binária.

lista.

pilha.

árvore.
Data Resp.: 30/01/2024 19:30:55

Explicação:
O nó cabeça é um conceito comum em estruturas de dados, especialmente em listas
encadeadas. É um nó fictício que não armazena dados reais, mas serve como uma
referência para o início da lista. Ele facilita o acesso aos elementos da lista, bem como a
manipulação da lista, como inserção e remoção de elementos.

7. Uma lista ordenada alocada sequencialmente possui como


desvantagem:

Impossibilidade de remoção no meio da lista.

Complexidade O(n) para a busca.

Tamanho limitado de memória alocada para lista.

A reserva de memória em posições contíguas.

Impossibilidade de acesso direto.


Data Resp.: 30/01/2024 19:35:44

Explicação:

A resposta correta é: Tamanho limitado de memória alocada para lista.

ORDENAÇÃO

1. (FUMARC/2014 - Adaptada) Considere uma estrutura de


dados do tipo vetor de tamanho 6 (seis) inicializado com as
chaves abaixo:

Analise a ilustração dos passos intermediários de um


método de ordenação das chaves do vetor:

O método de ordenação apresentado é:

Ordenação por seleção.

Quicksort.

Shellsort.

Mestrellasort.

Ordenação por inserção.


Data Resp.: 30/01/2024 19:39:52

Explicação:
A ordenação por seleção é um algoritmo de ordenação que consiste em encontrar o menor
valor no vetor e colocá-lo na primeira posição (ou o maior valor, dependendo da ordem
desejada). Em seguida, encontra-se o segundo menor valor e o coloca na segunda posição,
e assim por diante, repetindo o processo para os (n-1) elementos restantes, até os últimos
dois elementos.

2. (UEAP/2014) Leia o seguinte trecho de código-fonte escrito


em Java.

O algoritmo de ordenação implementado nesse trecho de


código-fonte é o

Heap Sort.

Bubble Sort.

Merge Sort.

Quick Sort.

May Sort.
Data Resp.: 30/01/2024 19:40:06

Explicação:

Bubble Sort indica um algoritmo de ordenação de elementos, que é um dos algoritmos mais
simples e conhecidos para ordenar um conjunto de dados. O Bubble Sort funciona
percorrendo a lista de elementos várias vezes, comparando pares de elementos adjacentes e
trocando-os se estiverem na ordem errada. O processo é repetido até que nenhuma troca
seja necessária, o que significa que a lista está ordenada.

3. (CESGRANRIO/2014) Considere utilizar o algoritmo Bubble


Sort para ordenar, em ordem crescente, a sequência de
números

17, 43, 37, 31, 8, 77, 52, 25.

Se a sequência original for a iteração zero, qual será a


sequência de números da segunda iteração?

17, 31, 8, 25, 37, 43, 77, 52

17, 25, 37, 31, 8, 43, 52, 77

17, 31, 37, 43, 8, 77, 52, 55

17, 31, 8, 37, 43, 25, 52, 77

8, 17, 43, 37, 31, 77, 52, 25


Data Resp.: 30/01/2024 19:40:22

Explicação:
Para resolver essa questão, vamos simular a execução do algoritmo Bubble Sort na
sequência dada e acompanhar as trocas feitas na segunda iteração.

Sequência original: 17, 43, 37, 31, 8, 77, 52, 25

Primeira iteração:

17, 37, 31, 8, 43, 52, 25, 77 (comparação e troca: 43 e 37)

17, 31, 8, 37, 43, 25, 52, 77 (comparação e troca: 37 e 31)

17, 31, 8, 37, 25, 43, 52, 77 (comparação e troca: 43 e 25)

17, 31, 8, 37, 25, 43, 52, 77 (sem trocas)

Segunda iteração (a partir da sequência obtida na primeira iteração):

17, 31, 8, 37, 25, 43, 52, 77 (comparação e troca: 31 e 8)

17, 8, 31, 37, 25, 43, 52, 77 (comparação e troca: 37 e 8)

17, 8, 31, 25, 37, 43, 52, 77 (sem trocas)

17, 8, 31, 25, 37, 43, 52, 77 (sem trocas)

A sequência obtida na segunda iteração é: 17, 8, 31, 25, 37, 43, 52, 77.

4. Sobre o método da bolha é correto afirmar que:

O tempo de execução pode ser linear em relação ao tamanho da entrada


se a instância apresentada estiver ordenada em ordem reversa a
desejada.
A complexidade computacional deste algoritmo é O (n log n).
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 já estiver ordenada.
O algoritmo executa sempre no mesmo tempo para instâncias de mesmo
tamanho n.
Data Resp.: 30/01/2024 19:40:32

Explicação:

A resposta correta é: O tempo de execução pode ser linear em relação ao


tamanho da entrada se a instância apresentada já estiver ordenada.
5. Todos os algoritmos de ordenação interna devem
ter complexidade de espaço de:

O(n22)
O(n log n)

O(n33)
O(1)

O(n)
Data Resp.: 30/01/2024 19:40:40

Explicação:

A resposta correta é: O(n)

6. (MPE-BA/2023) Algoritmos de ordenação são responsáveis


por ordenar elementos de uma estrutura de dados de forma
completa ou parcial. Sobre a complexidade dos algoritmos
de ordenação, assinale, a seguir, o algoritmo de ordenação
que, no pior caso, tem complexidade igual a O(n log n).

Insertion sort.

Selection sort.

Merge sort.

Bubble sort.

Quick sort.
Data Resp.: 30/01/2024 19:40:50

Explicação:

O Merge sort é um algoritmo de divisão e conquista que divide repetidamente a lista em sublistas
menores, até que cada sublista contenha apenas um elemento. Em seguida, ele combina as
sublistas em pares, ordenando-as ao mesmo tempo, e continua mesclando-as em sublistas
maiores até que a lista esteja completamente ordenada. A complexidade do Merge sort no pior
caso é O(n log n), onde "n" é o número de elementos a serem ordenados.
ÁRVORES

1. Seja o seguinte código em Python cujo principal objetivo é


implementar uma árvore binária. Marque a alternativa
correta quanto a execução do código:
A árvore criada no código acima não é binária de busca.
A árvore criada no código é binária de busca com altura 6, isto é, com 6 níveis
distintos.
A classe NotArvore implementa regras que garantem que os nós inseridos respeitam
a ordem de inserção dos nós (maiores a direita e menores a esquerda).
Não é possível inferir a topologia da árvore com base no código.
A árvore criada no código acima é uma árvore binária de busca com todas as folhas
no último nível.
Data Resp.: 30/01/2024 19:43:39

Explicação:

Apesar de que a função NoArvore não tem regras quanto à inserção dos nós, a forma (e a
ordem) de como os nós foram inseridos (55-35-75-65-85-25-45) formam uma árvore binária
de busca.

Resultado:
2. As árvores binárias de busca são especializações das
árvores binárias que permitem uma melhor organização
dos algoritmos de busca. Sobre a inserção de uma nova
chave em uma árvore binária de busca é correto afirmar
que:

Para determinar a posição da nova chave é necessário calcular o percurso em ordem


simétrica da árvore obtida. Com este percurso, verifica-se se a sequência está
ordenada em ordem crescente. Caso esteja, a posição da nova chave está correta.
O algoritmo de inserção em árvores binárias de busca é estático, isto é, é necessário
recalcular toda árvore para inserir uma nova chave.
Todas as chaves são inseridas em folhas, a posição da folha é determinada pela
busca.
A complexidade da inserção é sempre O(n), independentemente da altura da árvore.

Toda nova chave é inserida obrigatoriamente na raiz.


Data Resp.: 30/01/2024 19:44:26

Explicação:

Todas as chaves serão inseridas em folhas, considerando que na árvore binária de busca o
objetivo é buscar pela posição correta de inserção dos dados e inserir (a esquerda ou a
direita) o nó considerado, além de que em árvores binárias de busca não existem regras que
mantenham o balanceamento da árvore.

3. Ano: 2015 Banca: NUCEPE Órgão: SEFAZ - PI Prova:


Analista - Sistemas Pleno

Árvore AVL é uma árvore de busca autobalanceada. Isso


significa que:

Cada nó da árvore possui até três descendentes.


As alturas das duas subárvores a partir de cada nó diferem no máximo em duas
unidades.
As alturas das duas subárvores a partir de cada nó diferem no máximo em uma
unidade.
Pode possuir até duas raízes.

As alturas das duas subárvores a partir de cada nó são exatamente iguais.


Data Resp.: 30/01/2024 19:44:05

Explicação:

Resposta correta: as alturas das duas subárvores a partir de cada nó diferem no máximo em
uma unidade.

4. Seja a seguinte árvore, marque a opção correta que indica


o porquê a árvore abaixo não é uma árvore binária de
busca:
Não é uma árvore binária de busca pois o nó 35 deveria estar inserido à direita do nó
20.
Não é uma árvore binária de busca pois está desbalanceada.
Não é uma árvore binária de busca pois essa árvore deve estar perfeitamente
balanceada.
Não é uma árvore binária de busca pois o nó 22 deveria estar inserido à direita do nó
20.
Não é uma árvore binária de busca pois esta árvore deve estar com os níveis de suas
folhas todas igualmente perfeitas.
Data Resp.: 30/01/2024 19:44:14

Explicação:

Uma árvore binária de busca são árvores que obedecem às seguintes propriedades:

 Dado um nó qualquer da árvore binária, todos os nós à esquerda dele são menores
ou iguais a ele.
 Dado um nó qualquer da árvore binária, todos os nós à direita dele são maiores ou
iguais a ele.

Observe que a sub-árvore 20-22 não respeita a regra básica, portanto, o nó 22 deveria estar
a direita do nó 20.

5. Seja a seguinte árvore binária de busca abaixo, marque a


sequência correta do percurso em pós-ordem:

23,24,26,29,28,27,25

23,24,25,26,27,29,28
25,24,23,27,26,28,29

23,24,29,26,28,25,27

25,24,27,23,26,29,30
Data Resp.: 30/01/2024 19:44:36

Explicação:

O percurso é definido pela recursão, percorrer recursivamente a esquerda, percorrer


recursivamente a direita da raiz considerada e, finalmente, visitar a raiz.

Disc.: ESTRUTURA DE DADOS


Aluno(a): FABIO CELESTINO GAIA DE GODOY 202306170824
Acertos: 1,0 de 1,8 15/01/2024

1a Acerto: 0,0 / 0,2


Questão /

(IADES/2018) A sigla FIFO refere-se a estruturas de dados do tipo fila. Como é o


funcionamento em uma FIFO?
Uma FIFO e uma LIFO possuem as mesmas características de entrada e
de saída dos objetos.
O primeiro objeto inserido na fila é também o primeiro a ser removido.
O último objeto inserido na fila é o primeiro a ser removido.
O primeiro objeto inserido na fila é o último a ser removido.
O programador irá definir a ordem de entrada e de saída dos objetos em
uma FIFO.
Respondido em 15/01/2024 14:25:27

Explicação:

Em uma estrutura de dados do tipo FIFO (First In, First Out), o primeiro elemento a entrar na
fila é o primeiro a sair, ou seja, o elemento que foi inserido primeiro será o primeiro a ser
removido da estrutura. Isso ocorre porque a fila segue uma ordem linear de entrada e saída de
elementos, sem possibilidade de inserção ou remoção em posições intermediárias.

2a Acerto: 0,2 / 0,2


Questão /

Observe o trecho de código abaixo, escrito na linguagem C.

void imprimecabecalho() {

...

void calcula() {
int soma;

...

imprimecabecalho();

Com base nesse código, é correto afirmar que:


O escopo da variável soma é contido pela função imprimecabecalho().
O escopo da variável soma se estende da função calcula() para a função
imprimecabecalho().
O escopo e o tempo de vida da variável soma são iguais e contidos pela
função imprimecabecalho().
O tempo de vida da variável soma estende-se durante o tempo em que a
função imprimecabecalho() é executada.
O escopo da variável soma é dinâmico e se estende durante toda execução
do programa.
Respondido em 15/01/2024 14:26:10

Explicação:

Resposta correta: o tempo de vida da variável soma estende-se durante o tempo em que a
função imprimecabecalho() é executada.

3a Acerto: 0,0 / 0,2


Questão /

Sobre estruturas de dados, assinale a alternativa CORRETA.


Filas são comumente implementadas sobre arrays ou grafos.
Pilhas são tipos de dados abstratos caracterizadas pela política "primeiro a
entrar, último a sair".
Listas duplamente ligadas são estruturas em que cada nó possui uma
referência tanto ao nó que o antecede quanto ao nó que o sucede. Além
disso, o último nó da lista também possui uma referência para o primeiro
nó da lista.
Grafos são estruturas de dados em que cada nó possui um valor e um
conjunto de relações unidirecionais com os demais nós.
Árvores de busca de binárias são estruturas nas quais nós filhos possuem
valores numericamente inferiores aos dos nós pais.
Respondido em 15/01/2024 14:27:27

Explicação:

A resposta correta é: Pilhas são tipos de dados abstratos caracterizadas pela


política "primeiro a entrar, último a sair".
4a Acerto: 0,2 / 0,2
Questão /

(NUCEPE/2015 - adaptada) A modularização é importante para organizar melhor o


código, facilitar a manutenção, entre outras coisas.

Sobre a modularização, assinale a alternativa correta.


As variáveis locais são declaradas no escopo do programa inteiro.
As variáveis definidas no escopo de cada função são acessíveis em todo o
programa.
É um método que consiste em decompor um programa em uma série de
subprogramas individuais.
É um procedimento que sempre retorna um valor ao programa.
A passagem de parâmetros para um subprograma pode ser somente por
valor.
Respondido em 15/01/2024 14:30:29

Explicação:

A modularização consiste em decompor um programa em uma série de subprogramas


individuais. Trata-se de um método utilizado para facilitar a construção de grandes programas,
através de sua divisão em pequenas etapas.

5a Acerto: 0,2 / 0,2


Questão /

(UFAM/2022) Considere o programa a seguir, elaborado na linguagem ANSI C:

#include < stdio.h >

int* pa, a;

int main() { a = 10; pa = &a; a = 8; printf("%d", a); printf(" %d", *pa); }

Assinale a alternativa correta sobre a saída (output) obtida, ao se executar o


programa:
10 10
8 10
10 8
88
9 10
Respondido em 15/01/2024 14:33:35

Explicação:
Vamos entender o que acontece em cada linha do código:

Declara-se duas variáveis: pa (um ponteiro para inteiro) e a (um inteiro).

Atribui-se o valor 10 à variável a.

Atribui-se o endereço da variável a ao ponteiro pa.

Atribui-se o valor 8 à variável a. Nesse momento, a variável pa também aponta para o valor 8.

Imprime-se o valor de a na tela. O valor de a é 8.

Imprime-se o valor apontado por pa na tela. O valor apontado por pa é 8.

Portanto, a saída do programa é "8 8".

6a Acerto: 0,2 / 0,2


Questão /

Essas variáveis que são declaradas fora da sub-rotina, podendo ser acessíveis em
todos os escopos, em qualquer lugar de um programa, disponíveis durante toda a
execução do programa.
Marque a alternativa que apresenta o tipo de variável descrito acima.
Paramétricas.
Local.
Formais.
Global.
Única.
Respondido em 15/01/2024 14:38:22

Explicação:

As variáveis globais são declaradas fora da sub-rotina. São acessíveis em todos os escopos,
em qualquer ponto de um programa, mesmo em outros módulos. Podem, portanto, ser usadas
ou modificadas por qualquer sub-rotina do programa onde estão declaradas. Em outras
palavras, as variáveis globais estão disponíveis durante toda a execução do programa.

7a Acerto: 0,0 / 0,2


Questão /

As sub-rotinas são procedimentos e funções da programação modularizada. Um


parâmetro passado por valor para uma sub-rotina se comportará como uma variável
local, isto é, qualquer modificação no valor desta variável não será visível fora da
sub-rotina. Sobre a passagem de parâmetros, analise as afirmativas abaixo.

I - Na passagem por valor ocorre uma troca de valores entre variáveis na sub-rotina.

II - Na passagem por valor ocorre uma cópia do valor da variável em todas as


posições de memória, sendo possível alterar o conteúdo da variável original a
qualquer momento.

III - A passagem por referência nunca deve ser utilizada.

Marque a alternativa que apresenta a(s) afirmativa(s) correta(s).


As afirmativas I, II e III estão corretas.
Apenas as afirmativas I e III estão corretas.
Apenas as afirmativas II e III estão corretas.
Apenas a afirmativa I está correta.
Apenas as afirmativas I e II estão corretas.
Respondido em 15/01/2024 15:02:05

Explicação:

A afirmativa II está incorreta. Na passagem por valor, é feita uma cópia do valor da variável,
mas essa cópia não é armazenada em todas as posições de memória. Alterações feitas na
cópia da variável dentro da sub-rotina não afetarão o conteúdo da variável original fora da sub-
rotina.
A afirmativa III está incorreta. A passagem por referência pode ser utilizada em determinadas
situações, quando se deseja que uma sub-rotina seja capaz de modificar diretamente o
conteúdo da variável original. Ela envolve a passagem do endereço onde se encontra a
variável usada como argumento na chamada da sub-rotina.

8a Acerto: 0,2 / 0,2


Questão /

(FUNCAB/2015 - adaptada) Na linguagem C, o cabeçalho de biblioteca stdio.h


possui definições de subrotinas relativas às operações de entrada/saída padrão.
Uma das funções tratadas na biblioteca, associada a esse cabeçalho, é a função.
Trunc.
Printf.
Stderr.
Locatime.
Strcpy.
Respondido em 15/01/2024 15:03:23

Explicação:

As funções de E/S padrão são responsáveis pelas operações de entrada e saída de dados.
Quando um programa na linguagem C é executado, o sistema operacional é responsável por
abrir três arquivos: O arquivo de entrada padrão (stdin), o arquivo de saída padrão (stdout) e o
erro padrão (stderr). Invocando funções de E/S padrão printf, scanf, getchar, putchar.

9a Acerto: 0,0 / 0,2


Questão /
Há duas maneiras de se passar argumentos ou parâmetros para funções: por valor e
por referência. Sobre passagem de parâmetros, analise as seguintes afirmativas:

I. Na passagem por referência, o que é passado como argumento no


parâmetro formal é o endereço da variável.

II. Na passagem por valor, o valor é copiado do argumento para o parâmetro


formal da função.

III. Por exemplo, quando duas variáveis inteiras i1 e i2 são passadas por valor
à função troca() chamada pelo programa principal, elas também são alteradas
no programa principal.

IV. Na passagem por referência, dentro da função, o argumento real utilizado


na chamada é acessado através do seu endereço, sendo assim alterado.

V. Na passagem por valor, quaisquer alterações feitas nestes parâmetros


dentro da função não irão afetar as variáveis usadas como argumentos para
chamá-la.

Está CORRETO o que se afirma em:


I e III
V, apenas
I, II, IV e V, apenas
I, III e V, apenas
II e IV, apenas
Respondido em 15/01/2024 15:06:24

Explicação:

Resposta correta: I, II, IV e V, apenas

Disc.: ESTRUTURA DE DADOS


Aluno(a): FABIO CELESTINO GAIA DE GODOY 202306170824
Acertos: 1,6 de 2,0 15/01/2024

1a Acerto: 0,0 / 0,2


Questão /

Várias estruturas de dados podem ser utilizadas para armazenar dados de um


aplicação. Em relação ao assunto, assinale a alternativa correta.
A estrutura de dados do tipo fila, sempre retira os elementos que entraram por
ultimo na fila.
A estrutura de dados do tipo pilha, para retirar o elemento do topo da pilha, é
necessário retirar o elemento da base da pilha.
A estrutura de dados do tipo pilha, sempre retira os elementos que fora
inseridos primeiro na estrutura.
A estrutura de dados do tipo lista, utiliza a ideia do primeiro a chegar, primeiro
a ser servido para inserir elementos.
A estrutura de dados do tipo fila, utiliza a ideia do primeiro a ser inserido, será
o primeiro a ser retirado.
Respondido em 15/01/2024 15:14:16

Explicação:

A resposta correta é: A estrutura de dados do tipo fila, utiliza a ideia do primeiro a ser inserido,
será o primeiro a ser retirado.o.

2a Acerto: 0,2 / 0,2


Questão /

(FUMARC/2014 - Adaptada) Considere uma estrutura de dados do tipo vetor de


tamanho 6 (seis) inicializado com as chaves abaixo:

Analise a ilustração dos passos intermediários de um método de ordenação das


chaves do vetor:

O método de ordenação apresentado é:


Mestrellasort.
Shellsort.
Ordenação por inserção.
Quicksort.
Ordenação por seleção.
Respondido em 15/01/2024 15:15:11

Explicação:

A ordenação por seleção é um algoritmo de ordenação que consiste em encontrar o menor


valor no vetor e colocá-lo na primeira posição (ou o maior valor, dependendo da ordem
desejada). Em seguida, encontra-se o segundo menor valor e o coloca na segunda posição, e
assim por diante, repetindo o processo para os (n-1) elementos restantes, até os últimos dois
elementos.

3a Acerto: 0,2 / 0,2


Questão /

Ano: 2015 Banca: NUCEPE Órgão: SEFAZ - PI Prova: Analista - Sistemas Pleno

Árvore AVL é uma árvore de busca autobalanceada. Isso significa que:


As alturas das duas subárvores a partir de cada nó são exatamente iguais.
As alturas das duas subárvores a partir de cada nó diferem no máximo em
duas unidades.
As alturas das duas subárvores a partir de cada nó diferem no máximo em
uma unidade.
Cada nó da árvore possui até três descendentes.
Pode possuir até duas raízes.
Respondido em 15/01/2024 15:16:51

Explicação:

Resposta correta: as alturas das duas subárvores a partir de cada nó diferem no máximo em
uma unidade.

4a Acerto: 0,2 / 0,2


Questão /

(FCC/ 2013) Insira os dados de entrada numa fila. Em seguida, retire cada dado da
fila e insira numa pilha. Mostre a pilha. Depois retire os dados da pilha e insira na fila.
Mostre a fila.

Dados de entrada: 11, 12, 23, 14, 25, 50, 8, 18, 29, 10

As estruturas mostradas ficam

I. Pilha: (topo) 10 - 29 - 18 - 8 - 50 - 25 - 14 - 23 - 12 - 11

II. Fila: (começo) 11 - 12 - 23 - 14 - 25 - 50 - 8 - 18 - 29 - 10 (fim)

III. Fila: (começo) 10 - 29 - 18 - 8 - 50 - 25 - 14 - 23 - 12 - 11 (fim)

IV. Pilha: (topo) 11 - 12 - 23 - 14 - 25 - 50 - 8 - 18 - 29 - 10

V. A fila mostrada fica com os elementos em ordem invertida dos dados de entrada

Está correto o que se afirma APENAS em:


I, III e V.
III e IV.
I, IV e V.
II e IV.
I, II e III.
Respondido em 15/01/2024 15:19:30
Explicação:

Ao inserir na fila temos: 10,29,18,8,50,25,14,23,12,11

Ao inserir na pilha temos:

10
29
18
8
50
25
14
23
12
11

Retirando os dados da pilha e inserindo na fila: 10,29,18,8,50,25,14,23,12,11

5a Acerto: 0,2 / 0,2


Questão /

(UEAP/2014) Leia o seguinte trecho de código-fonte escrito em Java.

O algoritmo de ordenação implementado nesse trecho de código-fonte é o


Heap Sort.
May Sort.
Bubble Sort.
Quick Sort.
Merge Sort.
Respondido em 15/01/2024 15:20:09

Explicação:

Bubble Sort indica um algoritmo de ordenação de elementos, que é um dos algoritmos mais
simples e conhecidos para ordenar um conjunto de dados. O Bubble Sort funciona
percorrendo a lista de elementos várias vezes, comparando pares de elementos adjacentes e
trocando-os se estiverem na ordem errada. O processo é repetido até que nenhuma troca seja
necessária, o que significa que a lista está ordenada.

6a Acerto: 0,2 / 0,2


Questão /

Seja a seguinte árvore binária de busca abaixo, marque a sequência correta do


percurso em pós-ordem:

23,24,29,26,28,25,27
23,24,25,26,27,29,28
23,24,26,29,28,27,25
25,24,27,23,26,29,30
25,24,23,27,26,28,29
Respondido em 15/01/2024 15:22:44

Explicação:

O percurso é definido pela recursão, percorrer recursivamente a esquerda, percorrer


recursivamente a direita da raiz considerada e, finalmente, visitar a raiz.

7a Acerto: 0,0 / 0,2


Questão /

O acesso ao elemento de uma estrutura de dados tipo pilha se restringe ao mais


recente na pilha. Já o acesso a um elemento de uma estrutura tipo fila ocorre ao
dado há mais tempo na fila. Sobre pilhas e filas, avalie as assertivas a seguir:

I - Uma forma de evitar o desperdício de memória numa fila em alocação sequencial


é utilizar-se lista circular.

II - Em uma pilha em alocação encadeada, a complexidade da remoção é O(n).

III - Pilhas têm a propriedade de inverter a ordem de cadeias, enquanto as filas


mantêm a ordem.

A opção que contém todas as assertivas corretas é:


I e III.
I e II.
II.
II e III.
I.
Respondido em 15/01/2024 15:24:04

Explicação:
A resposta correta é: I e III.

8a Acerto: 0,2 / 0,2


Questão /

(CESGRANRIO/2014) Considere utilizar o algoritmo Bubble Sort para ordenar, em


ordem crescente, a sequência de números

17, 43, 37, 31, 8, 77, 52, 25.

Se a sequência original for a iteração zero, qual será a sequência de números da


segunda iteração?
17, 31, 8, 25, 37, 43, 77, 52
17, 31, 37, 43, 8, 77, 52, 55
8, 17, 43, 37, 31, 77, 52, 25
17, 31, 8, 37, 43, 25, 52, 77
17, 25, 37, 31, 8, 43, 52, 77
Respondido em 15/01/2024 15:26:55

Explicação:

Para resolver essa questão, vamos simular a execução do algoritmo Bubble Sort na sequência
dada e acompanhar as trocas feitas na segunda iteração.

Sequência original: 17, 43, 37, 31, 8, 77, 52, 25

Primeira iteração:

17, 37, 31, 8, 43, 52, 25, 77 (comparação e troca: 43 e 37)

17, 31, 8, 37, 43, 25, 52, 77 (comparação e troca: 37 e 31)

17, 31, 8, 37, 25, 43, 52, 77 (comparação e troca: 43 e 25)

17, 31, 8, 37, 25, 43, 52, 77 (sem trocas)

Segunda iteração (a partir da sequência obtida na primeira iteração):

17, 31, 8, 37, 25, 43, 52, 77 (comparação e troca: 31 e 8)

17, 8, 31, 37, 25, 43, 52, 77 (comparação e troca: 37 e 8)

17, 8, 31, 25, 37, 43, 52, 77 (sem trocas)

17, 8, 31, 25, 37, 43, 52, 77 (sem trocas)


A sequência obtida na segunda iteração é: 17, 8, 31, 25, 37, 43, 52, 77.

9a Acerto: 0,2 / 0,2


Questão /

Seja a seguinte árvore, marque a opção correta que indica o porquê a árvore abaixo
não é uma árvore binária de busca:

Não é uma árvore binária de busca pois esta árvore deve estar com os níveis
de suas folhas todas igualmente perfeitas.
Não é uma árvore binária de busca pois o nó 22 deveria estar inserido à
direita do nó 20.
Não é uma árvore binária de busca pois está desbalanceada.
Não é uma árvore binária de busca pois essa árvore deve estar perfeitamente
balanceada.
Não é uma árvore binária de busca pois o nó 35 deveria estar inserido à
direita do nó 20.
Respondido em 15/01/2024 15:29:36

Explicação:

Uma árvore binária de busca são árvores que obedecem às seguintes propriedades:

 Dado um nó qualquer da árvore binária, todos os nós à esquerda dele são menores
ou iguais a ele.
 Dado um nó qualquer da árvore binária, todos os nós à direita dele são maiores ou
iguais a ele.

Observe que a sub-árvore 20-22 não respeita a regra básica, portanto, o nó 22 deveria estar a
direita do nó 20.

10a Acerto: 0,2 / 0,2


Questão /

Sobre listas duplamente encadeadas, afirma-se:

I) Cada nó usa o dobro do número de campos ponteiro de uma lista


simplesmente encadeada.
II) A complexidade de remoção é metade da complexidade de remoção em lista
simplesmente encadeada.

III) Não permitem a inserção de nó no meio da lista.

É correto apenas:
III.
II e III.
II.
I e III.
I.
Respondido em 15/01/2024 15:34:25

Explicação:

A resposta correta é: I.

Exercício - Estruturas de Dados Heterogêneas


A linguagem C é uma linguagem de programação de alto nível amplamente
utilizada em sistemas operacionais, compiladores, interpretadores, editores de
texto, entre outras aplicações. Qual das seguintes alternativas corretamente
define o conceito de ponteiro na linguagem C? Resposta correta: B
B Um ponteiro é uma variável que armazena um endereço de memória.

2 (IF-RS/2016 - Adaptada) Estrutura de dados é um conceito fundamental na


ciência da computação e na programação. Ela se refere a maneira como os
dados são organizados e armazenados em um programa ou sistema, a fim de
que possam ser acessados, manipulados e utilizados de forma eficiente.
Referente a alocação dinâmica de memória em C, é correto afirmar:

A As funções malloc e free e o operador sizeof, são essenciais para a alocação


dinâmica de memória.

Resposta correta: A

3 (UFAM/2022) Considere o programa a seguir, elaborado na linguagem ANSI


C:

#include < stdio.h >


int* pa, a;
int main() { a = 10; pa = &a; a = 8; printf("%d", a); printf(" %d", *pa); }

Assinale a alternativa correta sobre a saída (output) obtida, ao se executar o


programa:

Resposta correta: A Gabarito comentado RESPOSTA CORRETA: 8 8


4 (COTEC/2013 - Adaptada) A linguagem C permite alocar (reservar)
dinamicamente (em tempo de execução) blocos de memórias utilizando
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, faz-se uso de qual função? Free Resposta correta: D

5 (COSEAC/2009 - Adaptada) Uma escolha adequada de estrutura de dados


pode proporcionar diversas vantagens, tais como a otimização de processos de
busca, inserção e remoção de dados, redução do consumo de recursos
computacionais e aumento da escalabilidade e desempenho de sistemas.
Quando a Estrutura de dados é composta por variáveis do mesmo tipo
primitivo, têm-se por definição, estruturas compostas: C homogêneas
Resposta correta: C
6 A linguagem C permite alocar (reservar) dinamicamente (em tempo de
execução) blocos de memórias utilizando 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, faz-se uso
de qual função?D Free Resposta correta: D

7 Leia o programa abaixo, verifique o que a função func3() faz e assinale qual
das opções será impressa na saída após a execução.

#include < stdio.h >

typedef struct pessoa {

char nome[40]; int idade;


float salario;

};

void func3(struct pessoa f1, struct pessoa f2, struct pessoa f3) {

printf("%s %d %.2f\n",f1.nome, f2.idade, f3.salario); }

main() {

struct pessoa p1 = {"Maria Estrela",50,10000.00};


struct pessoa p2 = {"Alcogelson Medeiros",51,12000.00}; struct pessoa p3 =
{"Paulo Lokidown",60,12500.00}; func3(p1,p2,p3); }

Assinale a opção correta. Maria Estrela 51 12500,00

Resposta correta: E Gabarito comentado Maria Estrela 51 12500,00


8 (IADES/2018) A sigla FIFO refere-se a estruturas de dados do tipo fila. Como
é o funcionamento em uma FIFO? B

B O primeiro objeto inserido na fila é também o primeiro a ser removido.

9 Referente à alocação dinâmica de memória em C, é CORRETO afirmar:

A As funções malloc e free e o operador sizeof, são essenciais para a alocação


dinâmica de memória.

Exercício - Modularização
1 A modularização de algoritmos é importante para organizar melhor o código,
facilitar a manutenção, entre outras coisas. Sobre funções e procedimentos,
assinale a alternativa CORRETA sobre a modularização:

B A função retorna um valor ao programa.


Gabarito comentado
A alternativa correta é a letra B, que afirma que "A função retorna um valor ao
programa". Isso ocorre porque, na programação, uma função é um bloco de
código que realiza uma tarefa específica e retorna um valor após sua
execução. Diferentemente dos procedimentos, que realizam uma tarefa, mas
não retornam um valor. Portanto, a afirmação da alternativa B está correta e é
um conceito fundamental na modularização de algoritmos.

2 (FUNCAB/2015 - adaptada) Na linguagem C, o cabeçalho de biblioteca


stdio.h possui definições de subrotinas relativas às operações de entrada/saída
padrão. Uma das funções tratadas na biblioteca, associada a esse cabeçalho,
é a função.
E Printf. Gabarito comentado
As funções de E/S padrão são responsáveis pelas operações de entrada e
saída de dados. Quando um programa na linguagem C é executado, o sistema
operacional é responsável por abrir três arquivos: O arquivo de entrada padrão
(stdin), o arquivo de saída padrão (stdout) e o erro padrão (stderr). Invocando
funções de E/S padrão printf, scanf, getchar, putchar.

3 (NUCEPE/2015 - adaptada) A modularização é importante para organizar


melhor o código, facilitar a manutenção, entre outras coisas.
Sobre a modularização, assinale a alternativa correta.

E É um método que consiste em decompor um programa em uma série de


subprogramas individuais.
Gabarito comentado
A modularização consiste em decompor um programa em uma série de
subprogramas individuais. Trata-se de um método utilizado para facilitar a
construção de grandes programas, através de sua divisão em pequenas
etapas.

4 Essas variáveis que são declaradas fora da sub-rotina, podendo ser


acessíveis em todos os escopos, em qualquer lugar de um programa,
disponíveis durante toda a execução do programa.
Marque a alternativa que apresenta o tipo de variável descrito acima.
A Global. Gabarito comentado
As variáveis globais são declaradas fora da sub-rotina. São acessíveis em
todos os escopos, em qualquer ponto de um programa, mesmo em outros
módulos. Podem, portanto, ser usadas ou modificadas por qualquer sub-rotina
do programa onde estão declaradas. Em outras palavras, as variáveis globais
estão disponíveis durante toda a execução do programa.
5 Assinale a alternativa correta em relação à definição de variáveis globais e
locais.

D Uma variável global é declarada no início do algoritmo principal de um


programa, pode ser utilizada por qualquer sub-rotina subordinada ao algoritmo
principal. Gabarito comentado
A alternativa correta é a D. Uma variável global é aquela que é declarada no
início do algoritmo principal de um programa e pode ser utilizada por qualquer
sub-rotina que esteja subordinada ao algoritmo principal. Isso significa que a
variável global é acessível e pode ser modificada por qualquer parte do
programa, ao contrário das variáveis locais, que só podem ser acessadas e
modificadas dentro da rotina ou função em que foram declaradas.

6 Em relação ao uso e conceitos de procedimentos e funções em lógica de


programação, analise as seguintes afirmativas:

I. Procedimentos e funções são blocos de instruções para realizar tarefas


específicas e são considerados sub-rotinas.

II. Em um procedimento, a passagem de parâmetros é obrigatória.

III. Em uma função, a passagem de parâmetros e o retorno de um valor são


obrigatórios.

Está CORRETO o que se afirma em:

I, apenas.
Gabarito comentado
A alternativa correta é a "I, apenas". Procedimentos e funções são, de fato,
blocos de instruções que realizam tarefas específicas e são considerados sub-
rotinas. No entanto, as afirmativas II e III estão incorretas. Em um
procedimento, a passagem de parâmetros não é obrigatória, pois pode haver
procedimentos sem parâmetros. Da mesma forma, em uma função, a
passagem de parâmetros não é obrigatória, embora o retorno de um valor seja,
pois a principal característica de uma função é retornar um valor após sua
execução.

7 As sub-rotinas são procedimentos e funções da programação modularizada.


Um parâmetro passado por valor para uma sub-rotina se comportará como
uma variável local, isto é, qualquer modificação no valor desta variável não
será visível fora da sub-rotina. Sobre a passagem de parâmetros, analise as
afirmativas abaixo.

I - Na passagem por valor ocorre uma troca de valores entre variáveis na sub-
rotina.

II - Na passagem por valor ocorre uma cópia do valor da variável em todas as


posições de memória, sendo possível alterar o conteúdo da variável original a
qualquer momento.

III - A passagem por referência nunca deve ser utilizada.

Marque a alternativa que apresenta a(s) afirmativa(s) correta(s).

E Apenas a afirmativa I está correta. Gabarito comentado


A afirmativa II está incorreta. Na passagem por valor, é feita uma cópia do valor
da variável, mas essa cópia não é armazenada em todas as posições de
memória. Alterações feitas na cópia da variável dentro da sub-rotina não
afetarão o conteúdo da variável original fora da sub-rotina.
A afirmativa III está incorreta. A passagem por referência pode ser utilizada em
determinadas situações, quando se deseja que uma sub-rotina seja capaz de
modificar diretamente o conteúdo da variável original. Ela envolve a passagem
do endereço onde se encontra a variável usada como argumento na chamada
da sub-rotina.

8 Considere o código a seguir escrito na linguagem C.

#include

Int main() {

printf(¿Valor total: %.1f\n¿, 9,1415169265);

return(0);
}

Assinale a alternativa que apresenta a saída correta.

B Valor total: 9.1.


Gabarito comentadoResposta correta: Valor total: 9.1.

9 (NUCEPE/2015 - adaptada) A modularização é importante para organizar


melhor o código, facilitar a manutenção, entre outras coisas.

Sobre a modularização, assinale a alternativa correta.

E É um método que consiste em decompor um programa em uma série de


subprogramas individuais.
Resposta correta: E Gabarito comentado
A modularização consiste em decompor um programa em uma série de
subprogramas individuais. Trata-se de um método utilizado para facilitar a
construção de grandes programas, através de sua divisão em pequenas
etapas.

10 Essas variáveis que são declaradas fora da sub-rotina, podendo ser


acessíveis em todos os escopos, em qualquer lugar de um programa,
disponíveis durante toda a execução do programa.
Marque a alternativa que apresenta o tipo de variável descrito acima.
A Global. Resposta correta: A
As variáveis globais são declaradas fora da sub-rotina. São acessíveis em
todos os escopos, em qualquer ponto de um programa, mesmo em outros
módulos. Podem, portanto, ser usadas ou modificadas por qualquer sub-rotina
do programa onde estão declaradas. Em outras palavras, as variáveis globais
estão disponíveis durante toda a execução do programa.

Você também pode gostar