Buscar

DIVERSAS QUESTÕES ESTRUTURAS DE DADOS (185 PÁGINAS)

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 185 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 185 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 185 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Exercício: CCT0753_EX_A1_201803250976_V1 15/02/2019 
Aluno(a): 2019.1 EAD 
Disciplina: CCT0753 - ESTRUTURA DE DADOS 
 
 
 
 1a Questão 
 
 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. 
 
 
 Pilha 
 
 Fila 
 
Árvore 
 
Grafo 
 
Lista 
Respondido em 15/02/2019 22:57:04 
 
 
 
 
 2a Questão 
 
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." 
 
 
pilhas encadeadas 
 
grafos 
 
structs 
 
listas encadeadas 
 
filas encadeadas 
Respondido em 15/02/2019 22:56:50 
 
 
 
 
 3a Questão 
 
Estão entre algumas das possíveis formas de estruturas de dados: 
 
 
Listas, vetores, cin 
 
Grafos, funções, fila 
 
Árvores binárias, pilhas, algoritmos 
 
cout, Funções, vetores 
 
Árvores binárias, pilhas, vetores 
Respondido em 15/02/2019 22:57:26 
 
 
Explicação: 
 
Árvores binárias, pilhas, vetores 
Verdadeiro. 
 
Grafos, funções, fila 
Falso. Funções não são estruturas de dados. Funções são módulos dos programas. 
 
Árvores binárias, pilhas, algoritmos 
FAlso. Algoritmos não são estrutura de dados. 
 
Listas, vetores, cin 
Falso. cin não é estrutura de dados. É usado para fazer entrada de dados. 
 
cout, Funções, vetores 
Falso. Funções e cout não são estrutura de dados. 
 
 
 
 
 4a Questão 
 
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. 
 
 
Listas Encadeadas. 
 
Pilhas Encadeadas 
 
Filas Encadeadas 
 
Grafos 
 
Vetores 
Respondido em 15/02/2019 22:57:39 
 
 
 
 
 5a Questão 
 
Assinale a alternativa correta sobre tipos abstratos de dados: 
 
 
Um tipo abstrato de dados é um modo particular de armazenamento e organização de dados em 
um computador de modo que possam ser usados eficientemente. 
 
É fundamental que os tipos abstratos de dados proponham um conjunto eficiente de algoritmos 
para realização de suas operações. 
 
Um tipo abstrato de dados deve sempre ser representado por meio dos recursos específicos de 
uma linguagem de programação. 
 
Um tipo abstrato de dados é composto por um modelo de dados e um conjunto de operadores 
definidos sobre esses dados. 
 
Um tipo abstrato de dados descreve, além do que se pode fazer com os dados, como as operações 
serão efetivamente implementadas. 
Respondido em 15/02/2019 23:00:08 
 
 
Explicação: 
 
Um tipo abstrato de dados é composto por um modelo de dados e um conjunto de operadores 
definidos sobre esses dados. 
Verdadeiro. Por definição de TAD (tipo abstrato de dados). 
 
Um tipo abstrato de dados é um modo particular de armazenamento e organização de dados em 
um computador de modo que possam ser usados eficientemente. 
Falso. Quando se pensa em TAD não há vínculos com implementação. 
 
Um tipo abstrato de dados descreve, além do que se pode fazer com os dados, como as 
operações serão efetivamente implementadas. 
FAlso. Não se pensa em implementação quando se trabalha com TAD. 
 
É fundamental que os tipos abstratos de dados proponham um conjunto eficiente de algoritmos 
para realização de suas operações. 
FAlso. Não se pensa em implementação ou eficiência quando se trabalha com TAD. Se pensa na 
semântica das operações. 
 
Um tipo abstrato de dados deve sempre ser representado por meio dos recursos específicos de 
uma linguagem de programação. 
 Falso : Não se pensa em programa ou na linguagem de programação, pois o TAD não está vinculado à 
implementação. 
 
 
 
 
 6a Questão 
 
Para organizar as fotos de minha família com os ancestrais de várias gerações, minha filha usou uma estrutura de dados que é 
..... Assinale a opção certa. 
 
 
lista 
 
fila 
 
pilha 
 
grafo 
 
árvore 
Respondido em 15/02/2019 22:58:57 
 
 
Explicação: 
Conforme gabarito e aula 1. 
 
 
 
 
 7a Questão 
 
Preciso fazer uma relação de tudo o que levar em minha viagem de mochila pela Europa. A estrutura de dados mais adequada para 
armazenar tudo que preciso levar é ... 
 
 
pilha 
 
árvore 
 
fila 
 
grafo 
 
lista 
Respondido em 15/02/2019 22:59:13 
 
 
Explicação: 
Conforme gabarito e aula 1. 
 
 
 
 
 8a Questão 
 
Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do sistema de arquivos 
de um sistema operacional? 
 
 
Pilha 
 
Grafo 
 
Lista 
 
Fila 
 
Árvore 
Respondido em 15/02/2019 22:59:03 
 
 
Explicação: 
A estrutura de diretórios mostra hierarquia e um relacionamento não linear. Por isso, a resposta certa é 
árvore. 
 
Lista, pilha e fila são estruturas de dados linear. 
 
Grafo é não linear, mas não é hierárquica. 
 
 
 
 
 1a Questão 
 
 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 
 
 Lista 
 
 Árvore 
 
Fila 
 
 Pilha 
Respondido em 26/05/2019 23:16:15 
 
 
 
 
 2a Questão 
 
Preciso fazer uma relação de tudo o que levar em minha viagem de mochila pela Europa. A estrutura de dados mais adequada para 
armazenar tudo que preciso levar é ... 
 
 
grafo 
 
lista 
 
árvore 
 
pilha 
 
fila 
Respondido em 27/05/2019 00:23:09 
 
 
Explicação: 
Conforme gabarito e aula 1. 
 
 
 
 
 3a Questã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 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 alternativas III e IV estão corretas. 
 
As alternativas I e III estão corretas. 
 
As alternativas II e IV estão corretas. 
 
Todas as alternativas estão corretas. 
Respondido em 27/05/2019 00:24:14 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
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õesnuméricas, na 
recursividade e pelos compiladores, na passagem de parâmetros para as funções. 
III. Registro é uma estrutura básica que permite guardar coleções de dados de diferentes tipos, sendo 
normalmente utilizado quando um objeto tem diferentes atributos, isto é, contém campos de diferentes 
tipos. 
IV. Lista pode conter um número qualquer de elementos, expandindo-se ou contraindo-se conforme o 
elementos são inseridos ou retirados. Nesse tipo de estrutura, os acessos tanto podem ser feitos 
sequencialmente como diretamente. 
V. Fila, assim como a pilha , é uma versão especial de lista, e como tal, seus elementos são ordenados 
pelo princípio LIFO (last in first out). 
 
 
II, III, IV e V. 
 
II, IV e V. 
 
I, II e III. 
 
I, III e V. 
 
I, III, IV e V. 
Respondido em 27/05/2019 00:25:09 
 
 
Gabarito 
Coment. 
 
 
 
 
 5a Questão 
 
As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que 
possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na 
manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma 
determinada aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como 
requisitos principais o acesso aleatório aos dados e alocação destes de forma contínua na memória. 
 
 
Pilha Encadeada 
 
Fila Sequencial 
 
Pilha Sequencial 
 
Lista Encadeada 
 
Lista Sequencial 
Respondido em 27/05/2019 00:26:17 
 
 
 
 
 6a Questão 
 
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, II, III e VI são afirmativas verdadeiras 
 
I, II e V são afirmativas verdadeiras 
 
I, III, IV e VI são afirmativas verdadeiras 
 
II, IV, V e VI são afirmativas verdadeiras 
 
II, IV e V são afirmativas verdadeiras 
Respondido em 27/05/2019 00:27:07 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questã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 III estão corretas. 
 
As alternativas I e II estão corretas 
 
Todas as alternativas estão corretas. 
 
As alternativas III e IV estão corretas. 
 
As alternativas II e IV estão corretas. 
Respondido em 27/05/2019 00:29:31 
 
 
 
 
 8a Questão 
 
Estão entre algumas das possíveis formas de estruturas de dados: 
 
 
Listas, vetores, cin 
 
cout, Funções, vetores 
 
Árvores binárias, pilhas, algoritmos 
 
Grafos, funções, fila 
 
Árvores binárias, pilhas, vetores 
Respondido em 27/05/2019 00:27:58 
 
 
Explicação: 
 
Árvores binárias, pilhas, vetores 
Verdadeiro. 
 
Grafos, funções, fila 
Falso. Funções não são estruturas de dados. Funções são módulos dos programas. 
 
Árvores binárias, pilhas, algoritmos 
FAlso. Algoritmos não são estrutura de dados. 
 
Listas, vetores, cin 
Falso. cin não é estrutura de dados. É usado para fazer entrada de dados. 
 
cout, Funções, vetores 
Falso. Funções e cout não são estrutura de dados. 
 
 
 
 1a Questão 
 
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. 
 
 
Vetores 
 
Listas Encadeadas. 
 
Grafos 
 
Pilhas Encadeadas 
 
Filas Encadeadas 
Respondido em 27/05/2019 00:29:57 
 
 
 
 
 2a Questão 
 
É um exemplo de TAD Não Linear: 
 
 
Grafos 
 
Filas 
 
Pilhas 
 
Filas de Prioridade 
 
Listas 
Respondido em 27/05/2019 00:30:07 
 
 
Explicação: Um grafo é um tipo de dados abstrato não linear 
 
 
 
 
 3a Questão 
 
Das estruturas de dados a seguir aquela que NÃO é uma estrutura linear é : 
 
 
Fila. 
 
Vetor. 
 
Pilha. 
 
Grafo. 
 
Lista. 
Respondido em 27/05/2019 00:30:19 
 
 
Explicação: 
Lineares : lista, pilha, fila, deque. Com ou sem vetor, que é linear. 
Não lineares : árvore e grafo. 
 
 
 
 
 
 4a Questão 
 
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 ? 
 
 
fila 
 
lista 
 
árvore 
 
pilha 
 
grafo 
Respondido em 27/05/2019 00:30:34 
 
 
Gabarito 
Coment. 
 
 
 
 
 5a Questão 
 
O que é estrutura de dados? 
 
 
É um conjunto de técnicas de programação. 
 
É uma forma determinada de armazenamento de dados em um banco de dados. 
 
É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo 
ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma 
quantidade de esforço finita. 
 
É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo 
principal, retornando um determinado valor no seu próprio nome. 
 
É um modo particular de armazenamento e organização de dados em um computador de modo que 
possam ser usados eficientemente. 
Respondido em 27/05/2019 00:30:51 
 
 
Explicação: 
Estrutura de dados não é banco de dados . Estrutura de dados não é Tipo de dados. 
Estrutura de dados não é ¿ É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, 
retornando um determinado valor no seu próprio nome¿ que no caso, fala de função. 
 
Estrutura de dados não é ¿ É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser 
executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita.¿ Esta definição é de 
algoritmo. 
 
Portanto, Estrutura de Dados é ¿ É um modo particular de armazenamento e organização de dados em um computador de modo que 
possam ser usados eficientemente.¿ 
 
Na Aula 1 do conteúdo online há elementos para tal questão. 
 
 
 
 
 6a Questão 
 
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 modode distribuição e organização de dados em uma rede de computador de modo que 
possam ser usados de modo eficiente. 
 
É um modo de deleção de dados em um computador. 
 
É um modo particular de armazenamento e organização de dados em um computador de modo 
que possam ser usados de modo eficiente. 
 
São os nomes dados as variáveis na montagem de uma rotina. 
 
É um modo de utilização de dados nos programas de computador. 
Respondido em 27/05/2019 00:31:04 
 
 
Explicação: 
Analisando cada item : 
 
É um modo particular de armazenamento e organização de dados em um computador de modo 
que possam ser usados de modo eficiente. 
Correta. 
 
É um modo de distribuição e organização de dados em uma rede de computador de modo que 
possam ser usados de modo eficiente. 
FAlso. Não há distribuição de dados ou organização de dados em uma rede via estrutura de dados. 
 
É um modo de utilização de dados nos programas de computador. 
FAlso. Não se diz como se utiliza dados. Variáveis armazenam dados, por exemplo e em atribuições 
ou em expressões também utilizamos dados. 
 
São os nomes dados as variáveis na montagem de uma rotina. 
FAlso. Nomes de variáveis são identificadores. 
 
É um modo de deleção de dados em um computador. 
Falso. Para "deletar" um dado não temos que usar estrutura de dados. 
 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
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. 
 
Após a impressão dos valores pela ordem teremos duas pilhas. 
 
Após a impressão dos valores pela ordem teremos uma fila e um grafo. 
 
Após a impressão dos valores pela ordem teremos uma pilha e uma fila. 
 
Após a impressão dos valores pela ordem teremos duas filas. 
Respondido em 27/05/2019 00:31:34 
 
 
 
 
 8a Questão 
 
 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 ? 
 
 
Fila 
 
 Pilha 
 
 Lista 
 
 Árvore 
 
Grafo 
Respondido em 27/05/2019 00:31:41 
 
 
 
 1a Questão 
 
Em relação a estruturas de dados, avalie a correspondência existente entre as estruturas de 
dados Lineares e Não Lineares com suas respectivas coleções de dados. 
 
 
A correta associação entre os elementos das duas tabelas é: 
 
 
 
 
 
 
 
 
 
 
 
 
a1, b1, c2, d1 
 
a1, b1, c2, d2. 
 
a2, b2, c1, d2. 
 
a2, b1, c2, d1. 
 
a1, b2, c1, d1. 
Respondido em 27/05/2019 10:51:19 
 
 
Explicação: 
Por definição : pilha, fila, lista, vetor são estruturas lineares. Já árvore e grafos são estruturas de dados 
não lineares. 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
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. 
 
 
Vetores 
 
Filas Encadeadas 
 
Pilhas Encadeadas 
 
Grafos 
 
Listas Encadeadas. 
Respondido em 27/05/2019 10:51:30 
 
 
 
 
 3a Questão 
 
Diferentes tipos de estrutura de dados são adequadas a diferentes tipos de aplicação e algumas são 
altamente especializadas, destinando-se a algumas tarefas específicas. Dessa forma a definição de 
Estrutura de Dados está expressa na alternativa: 
 
 
É um modo de distribuição e organização de dados em uma rede de computador de modo que 
possam ser usados de modo eficiente. 
 
É um modo de deleção de dados em um computador. 
 
É um modo de utilização de dados nos programas de computador. 
 
É um modo particular de armazenamento e organização de dados em um computador de modo 
que possam ser usados de modo eficiente. 
 
São os nomes dados as variáveis na montagem de uma rotina. 
Respondido em 27/05/2019 10:55:13 
 
 
Explicação: 
Analisando cada item : 
 
É um modo particular de armazenamento e organização de dados em um computador de modo 
que possam ser usados de modo eficiente. 
Correta. 
 
É um modo de distribuição e organização de dados em uma rede de computador de modo que 
possam ser usados de modo eficiente. 
FAlso. Não há distribuição de dados ou organização de dados em uma rede via estrutura de dados. 
 
É um modo de utilização de dados nos programas de computador. 
FAlso. Não se diz como se utiliza dados. Variáveis armazenam dados, por exemplo e em atribuições 
ou em expressões também utilizamos dados. 
 
São os nomes dados as variáveis na montagem de uma rotina. 
FAlso. Nomes de variáveis são identificadores. 
 
É um modo de deleção de dados em um computador. 
Falso. Para "deletar" um dado não temos que usar estrutura de dados. 
 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
O que é estrutura de dados? 
 
 
É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo 
ser executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma 
quantidade de esforço finita. 
 
É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo 
principal, retornando um determinado valor no seu próprio nome. 
 
É uma forma determinada de armazenamento de dados em um banco de dados. 
 
É um conjunto de técnicas de programação. 
 
É um modo particular de armazenamento e organização de dados em um computador de modo 
que possam ser usados eficientemente. 
Respondido em 27/05/2019 10:55:22 
 
 
Explicação: 
Estrutura de dados não é banco de dados . Estrutura de dados não é Tipo de dados. 
Estrutura de dados não é ¿ É um conjunto de comandos para uma tarefa específica referenciada por um nome no algoritmo principal, 
retornando um determinado valor no seu próprio nome¿ que no caso, fala de função. 
 
Estrutura de dados não é ¿ É uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais devendo ser 
executadas mecânica ou eletronicamente em um intervalo de tempo finito e com uma quantidade de esforço finita.¿ Esta definição é de 
algoritmo. 
 
Portanto, Estrutura de Dados é ¿ É um modo particular de armazenamento e organização de dados em um computador de modo que 
possam ser usados eficientemente.¿ 
 
Na Aula 1 do conteúdo online há elementos para tal questão. 
 
 
 
 
 5a Questão 
 
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 ? 
 
 
pilha 
 
grafo 
 
árvore 
 
lista 
 
fila 
Respondido em 27/05/2019 10:55:36 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
É um exemplo de TAD Não Linear: 
 
 
Filas 
 
Listas 
 
Grafos 
 
Pilhas 
 
Filas de Prioridade 
Respondido em 27/05/2019 10:55:42 
 
 
Explicação: Um grafo é um tipo de dados abstrato não linear 
 
 
 
 
 7a Questão 
 
 Os irmãos Silva irãoviajar 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 ? 
 
 
Fila 
 
 Árvore 
 
Grafo 
 
 Pilha 
 
 Lista 
Respondido em 27/05/2019 10:55:54 
 
 
 
 
 8a Questão 
 
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 Árvore 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 , II e IV são verdadeiras 
 
II E IV são verdadeiras 
 
II e V são verdadeiras 
 
III e V são verdadeiras 
 
I e V são verdadeiras 
 
 
 
 1a Questão 
 
 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 
 
 Pilha 
 
Árvore 
 
 Fila 
 
Grafo 
Respondido em 27/05/2019 11:00:28 
 
 
 
 
 2a Questão 
 
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, II e V são afirmativas verdadeiras 
 
I, II, III e VI são afirmativas verdadeiras 
 
I, III, IV e VI são afirmativas verdadeiras 
 
II, IV, V e VI são afirmativas verdadeiras 
 
II, IV e V são afirmativas verdadeiras 
Respondido em 27/05/2019 11:01:24 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
As estruturas de dados são utilizadas para manter dados ou informações organizados na memória, o que 
possibilita a otimização do uso destes dados. Porém, as estruturas guardam características especiais na 
manipulação destes dados, assim deve-se escolher a estrutura certa ou mais adequada para uma 
determinada aplicação. Portanto marque a opção que representa a melhor estrutura, quando se tem como 
requisitos principais o acesso aleatório aos dados e alocação destes de forma contínua na memória. 
 
 
Lista Encadeada 
 
Pilha Encadeada 
 
Fila Sequencial 
 
Pilha Sequencial 
 
Lista Sequencial 
Respondido em 27/05/2019 11:02:05 
 
 
 
 
 4a Questão 
 
Preciso fazer uma relação de tudo o que levar em minha viagem de mochila pela Europa. A estrutura de dados mais adequada para 
armazenar tudo que preciso levar é ... 
 
 
pilha 
 
grafo 
 
árvore 
 
lista 
 
fila 
Respondido em 27/05/2019 11:02:19 
 
 
Explicação: 
Conforme gabarito e aula 1. 
 
 
 
 
 5a Questã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 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 II e IV estão corretas. 
 
As alternativas I e II estão corretas 
 
Todas as alternativas estão corretas. 
 
As alternativas I e III estão corretas. 
 
As alternativas III e IV estão corretas. 
Respondido em 28/05/2019 21:23:22 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
Qual estrutura de dados é mais adequada para armazenar a estrutura do diretório do sistema de arquivos 
de um sistema operacional? 
 
 
Lista 
 
Grafo 
 
Pilha 
 
Árvore 
 
Fila 
Respondido em 28/05/2019 21:23:38 
 
 
Explicação: 
A estrutura de diretórios mostra hierarquia e um relacionamento não linear. Por isso, a resposta certa é 
árvore. 
 
Lista, pilha e fila são estruturas de dados linear. 
 
Grafo é não linear, mas não é hierárquica. 
 
 
 
 
 7a Questã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 II e IV estão corretas. 
 
As alternativas III e IV estão corretas. 
 
As alternativas I e III estão corretas. 
 
As alternativas I e II estão corretas 
 
Todas as alternativas estão corretas. 
Respondido em 27/05/2019 11:05:53 
 
 
 
 
 8a Questão 
 
Sobre estrutura de dados, identifique o que está correto afirmar. 
I. Pilha é uma estrutura de dados com acesso restrito aos seus elementos, uma vez que eles são colocados 
e retirados por um único lado e são ordenados pelo princípio LIFO (last in first out). Assim, sempre que 
um elemento é adicionado ou retirado seu topo é alterado. 
II. Pilha é o tipo de estrutura usada, por exemplo, na avaliação de expressões numéricas, na 
recursividade e pelos compiladores, na passagem de parâmetros para as funções. 
III. Registro é uma estrutura básica que permite guardar coleções de dados de diferentes tipos, sendo 
normalmente utilizado quando um objeto tem diferentes atributos, isto é, contém campos de diferentes 
tipos. 
IV. Lista pode conter um número qualquer de elementos, expandindo-se ou contraindo-se conforme o 
elementos são inseridos ou retirados. Nesse tipo de estrutura, os acessos tanto podem ser feitos 
sequencialmente como diretamente. 
V. Fila, assim como a pilha , é uma versão especial de lista, e como tal, seus elementos são ordenados 
pelo princípio LIFO (last in first out). 
 
 
II, III, IV e V. 
 
II, IV e V. 
 
I, III e V. 
 
I, III, IV e V. 
 
I, II e III. 
 
 
 
 1a Questão 
 
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 pilha / área de registro 
 
( ) área de dados globais / área de pilha 
 
( ) área de registro / área de pilha 
 
( ) área de registro / área de dados globais 
 
( ) área de dados globais / área de registro 
Respondido em 2/26/2019 9:02:47 PM 
 
 
Explicação: 
Como y e r são variáveis, ficarão armazenadas em na área de dados globais / área de pilha 
 
 
 
 
 2a Questã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 compila normalmente e apresenta como resultado o valor 7.0 
 
O código não compila, pois a função float media(float x, float y) retorna um valor que seria ser 
armazenado em uma variável do tipo float e só então poderia ser usado o comando cout para 
exibir o resultado. 
 
O código não compila, pois há 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. 
 
O código compila normalmente, pois como a descrição da função float media(float x, float y)está 
posicionada após a função int main ( ), não há necessidade do uso de protótipos. 
 
O código não compila, pois os parâmetros usados na chamada da função deveriam ser "x" e "y"; 
porém a chamada se deu com identificadores "a" e "b". 
Respondido em 2/26/2019 8:59:34 PM 
 
 
Explicação: 
Quando uma função é posicionada depois da função main(), o protótipo dela precisa estar presente antes 
da função main(). 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
Considere os trechos abaixo: 
int valor = 100; 
void eureka (int &z) { 
 int temp = 25; 
 z--; 
 temp = temp - 10; 
 valor = valor - temp; 
 cout << "Auxiliar = " << temp << endl; 
} 
int main() { 
 int R = 1000; 
 eureka(R); 
 cout << "Result = " << R << " Valor = " << valor << endl; 
} 
Assinale a opção correta. 
 
 
Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 85 
sendo que z é um parâmetro passado por referência 
 
Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 100 
sendo que z é um parâmetro passado por referência 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 999 Valor = 85 
sendo que z é um parâmetro passado por referência 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 85 
sendo que z é um parâmetro passado por valor 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 999 Valor = 85 
sendo que z é um parâmetro passado por valor 
 
 
Respondido em 2/26/2019 8:53:31 PM 
 
 
Explicação: 
Questão objetiva. Só é possível ser marcada a opção indicada no gabarito. 
Vejamos a análise passo a passo do trecho de código.... 
int valor = 100; 
void eureka (int &z) { 
 int temp = 25; 
 z--; 
 temp = temp - 10; 
 valor = valor - temp; 
 cout << "Auxiliar = " << temp << endl; 
} 
int main() { 
 int R = 1000; 
 eureka(R); 
 cout << "Result = " << R << " Valor = " << valor << endl; 
} 
Passo a passo .... 
Temos que valor recebeu 100 e valor é uma variável global. 
Começando a execução pela main, temos que eureka é chamada e o valor 1000 é passado. 
Iniciando a execução de eureka temos que : 
 temp (local à eureka) recebe o valor 25, depois o valor 1000 passado é decrementado para 999, temp 
recebe 15, valor recebe 100-15, que dá 85. Daí, o valor de temp é impresso, sendo mostrado na tela 
: Auxiliar = 15. DAí, a função termina e volta-se para a main. Lá na main, após a chamada da 
eureka, temos a seguinte impressão : 
 Result = 999 Valor = 85 
Note que para R valer 999 só foi possível porque z é um parâmetro passado por referência. 
 
 
 
 
 4a Questão 
 
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); 
 
int func (&int, int); 
 
int func (int a, int &b); 
 
void func (int a, int &b); 
 
void func (int &a, int &b); 
Respondido em 2/26/2019 8:49:09 PM 
 
 
Gabarito 
Coment. 
 
 
 
 
 5a Questão 
 
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: 
 
 
Real 
 
Local 
 
Constante 
 
Global 
 
Inteiro 
Respondido em 2/26/2019 8:48:18 PM 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
Considere o trecho de um programa escrito em C++. 
 int func1 (int n1, int n2) { 
 int aux = n1 % n2; 
 while ( aux != 0) { 
 n1 = n2; 
 n2 = aux; 
 aux = n1 % n2; 
 } 
 return n2; 
} 
int main() { 
 cout << func1 (27, 18); 
} 
Marque a opção correta que mostra o que é impresso na tela. 
 
 
6 
 
27 
 
9 
 
3 
 
18 
Respondido em 2/26/2019 8:46:55 PM 
 
 
Explicação: 
Fazendo um teste de mesa, temos que o valor 9 retornado e impresso na main. 
Iniciando um teste de mesa.... 
n1 n2 aux 
27 18 9 
18 9 0 
continua... continua... continua.. 
 
 
 
 
 
 7a Questão 
 
Na passagem por ____________________ , o endereço da variável da função chamadora é passado para 
a função chamada e, dessa forma, o valor poderá ser alterado, ou não. 
 
 
void 
 
valor 
 
número 
 
caracter 
 
referência 
Respondido em 2/26/2019 8:46:06 PM 
 
 
Explicação: 
Esse é o conceito de passagem por referência. 
 
 
 
 8a Questão 
 
Considere a seguinte função: void dobro(int x) { x = 2 * x; } Qual valor será impresso na tela quando o 
seguinte programa principal for executado? int main() { int n; n = 5; dobro(n); cout << n; return 0; } 
 
 
10 
 
20 
 
0 
 
Haverá um erro de compilação 
 
5 
Respondido em 2/26/2019 8:49:21 PM 
 
 
 
 1a Questão 
 
Considere a função abaixo: 
int func (int a, int& b){ 
 a = b - a; 
 b = a * 2; 
 a = b * 2; 
 return a; 
} 
Considere o seguinte código na função main: 
 int x = 2, y = 3, z; 
 z = func (x, y); 
 cout << x << "; " << y << "; " << z; 
O que será impresso? 
 
 
4; 2; 4 
 
2; 2; 4 
 
2; 2; 1 
 
1; 3; 1 
 
1; 2; 4 
Respondido em 5/27/2019 11:17:50 AM 
 
 
Explicação: 
a recebeu o valor de x que era 2 
b recebeu 3, a partir de y, que foi passado por referência. 
 
Executando a função, passo a passo, tem-se : 
a recebeu 1 
b recebeu 2 
a recebeu um novo valor, que é 4. 
Daí a função retorna o valor de a, que é 4. 
Voltando para a main temos quez recebeu o retorno da função que é 4, x não se alterou, valendo 2 e y 
recebeu 4, devido a alteração na função no parâmetro b, passado por referência. 
 Daí, na tela será impresso : 2; 2; 4 
 
 
 
 
 2a Questão 
 
Considere a função abaixo: 
void func (int a, int &b) { 
 a++; 
 b = a*2; 
} 
e o seguinte trecho de código na função main : 
int x=2, y=3; 
func (x,y); 
func (y,x); 
cout << x << " ; " << y; 
Após a execução do cout o que será impresso ? 
 
 
2; 12 
 
14; 6 
 
6; 14 
 
4; 12 
 
2; 6 
Respondido em 5/27/2019 11:18:09 AM 
 
 
Explicação: 
 Fazendo um teste de mesa, chegaremos na opção correta. Iniciando a 
execução pela main, temos que x recebe 2 e y recebe 3. 
Em seguida, na 1ª. chamada de func, os valores de x e de y, respectivamente, 
2 e 3, são passados para a função. 
Executando a função func, que possui o parâmetro a passado por valor e o 
parâmetro b passado por referência (usa &) ... 
void func (int a, int &b) { 
a++; 
b = a*2; 
} 
Temos que a recebeu 2 e b recebeu 3. Daí, a ficará 3 e b receberá 6. 
Assim, ao terminar a função func e retornarmos para a main teremos x sem 
alteração igual a 2 e y com alteração igual a 6. 
Após voltarmos para a main, temos uma nova chamada de func que recebe os 
valores de y e de x, respectivamente, que são 6 e 2. Na 2ª. chamada de func 
para esses valores, teremos que a recebe 6 e y recebe 2. Dentro da função, 
temos que a é incrementado para 7 e que b recebe 7 * 2 que dá 14. Ao 
terminarmos a execução da função, temos que y não sofreu mudança, ficando 
com o valor 6 e que x mudou para 14. Logo, será impresso 14;6 
Logo, as demais opções são incorretas. 
 
 
 
 
 
 3a Questão 
 
Diga, para o trecho do programa abaixo, qual a opção que representa a saída em tela. Considere que o 
programa será compilado sem erros e irá executar também sem problemas . 
void troca (int x, int y){ 
 int tmp; 
 tmp = y; 
 y = x; 
 x = tmp; 
} 
int main( ) { 
 int a = 13, b = 10; 
 troca( a, b ); 
 cout<<"Valores: "<< a<<"\t"<< b<<< endl; 
 system("pause"); 
} 
 
 
Valores: 10 10 
 
Valores: 31 01 
 
Valores: 13 10 
 
Valores: 10 13 
 
Valores: 13 13 
Respondido em 5/27/2019 11:18:34 AM 
 
 
Explicação: 
Acompanhando passo a passo a execução do trecho dado temos : 
void troca (int x, int y){ 
 int tmp; 
 tmp = y; 
 y = x; 
 x = tmp; 
} 
int main( ) { 
 int a = 13, b = 10; 
 troca( a, b ); 
 cout<<"Valores: "<< a<<"\t"<< b<<< endl; 
 system("pause"); 
} 
A execução começa pela main e os valores 13 e 10 são passados para a função na chamada em 
troca(a,b); 
Ao iniciar a execução em troca, temos que x recebe 13 e y recebe 10. Mas x e y são parâmetros passados 
por valor então, nada ocorrerá com a e b na main. ASsim, após a função terminar sua execução e 
voltarmos para a main temos a seguinte impressão na tela : 
Valores : 13 10 
 
 
 
 
 4a Questão 
 
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: 
 
 
void func (int &a, int &b); 
 
int func (int a, int &b); 
 
void func (int a, int &b); 
 
int func (int &a, int b); 
 
int func (&int, int); 
Respondido em 5/27/2019 11:25:40 AM 
 
 
Gabarito 
Coment. 
 
 
 
 
 5a Questão 
 
Em programação podemos utilizar um recurso que modulariza o programa chamado função. As funções 
precisam ser ativadas para que possam ser executadas. Para isso, é necessário chamar a função pelo seu 
nome e enviar, quando necessário, os valores respectivos para os parâmetros de entrada. Ao enviar os 
valores para os parâmetros de entrada, o programa pode fazer uma cópia deste valor ou trabalhar em um 
endereço enviado. Quando se envia o endereço estamos ativando a função por meio de: 
 
 
Envio de valor. 
 
Registro. 
 
Passagem por valor. 
 
Ponteiros. 
 
Envio de inteiro. 
Respondido em 5/27/2019 11:35:47 AM 
 
 
Explicação: 
Falso. Quando se tem endereço não é passagem por valor 
Passagem por 
valor. 
 
FAlso. Fala-se em endereço do valor Envio de inteiro. 
 
 Verdadeiro. Ponteiro armazena o endereço de memória de uma variável Ponteiros. 
 
Falso. Como é esse envio ? Envio de valor. 
 
FAlso. Sem sentido. Resgistro (struct em C++) agrega dados de tipos 
diferentes. 
Registro. 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
Considere o trecho de um programa escrito em C++ : 
int func1 (long num) { 
 int n, na=1; 
 while (num / 10 != 0){ 
 na += 1; 
 num /= 10; 
 } 
 return na; 
} 
main() { 
 cout << func1 (132041); 
} 
Marque a opção correta que mostra o que é impresso na tela. 
 
 
6 
 
3 
 
1 
 
4 
 
2 
Respondido em 5/27/2019 11:36:05 AM 
 
 
Explicação: 
Fazendo passo a passo : 
int func1 (long num) { 
 int n, na=1; 
 while (num / 10 != 0){ 
 na += 1; 
 num /= 10; 
 } 
 return na; 
} 
main() { 
 cout << func1 (132041); 
} 
Passos : 
1) Chamada da função passando o valor 132041 
2) Começa a função com num recebendo o valor 132041 
3) na recebe 1 
4) enquanto num/10 é diferente de zero faça ... Vejamos : 132041/10 é diferente de zero então 
 na recebe 2 e num recebe 13204 
5) Volta no teste do loop... 13204 /10 é diferente de zero ? Sim. Então, na recebe 3 e num recebe 1320 
6) Volta no teste do loop... 1320 /10 é diferente de zero ? Sim. Então, na recebe 4 e num recebe 132 
7) Volta no teste do loop... 132 /10 é diferente de zero ? Sim. Então, na recebe 5 e num recebe 13 
8) Volta no teste do loop... 13 /10 é diferente de zero ? Sim. Então, na recebe 6 e num recebe 1 
9) Volta no teste do loop... 1 /10 é diferente de zero ? Não. 
Então, retorna o valor e na que é 6. 
 
 
 
 
 7a Questão 
 
Considera a FUNÇÃO abaixo: 
 
void inverte(int &x, int &y) 
{ int aux = x; 
x = y; 
y = aux; } 
Quais valores serão impressos na tela quando o seguinte programa principal for executado? 
int main() 
{ int a = 18, b = 28; 
inverte(a, b); 
cout << a <<" e "<< b; 
return 0; } 
 
 
28 e 18 
 
08 e 18 
 
18 e 28 
 
28 e 08 
 
18 e 18 
Respondido em 5/27/2019 11:36:20 AM 
 
 
Explicação: 
Teste de Mesa 
a b x y aux 
18 28 //Na main() 
18 28 18 28 //Quando a função é chamada x, recebe o endereço de a e y, o de b. Logo 
acessam os mesmos endereços 
18 28 18 28 18 //Na função, aux é declarada e inicializada com o valor de x 
18 28 28 28 18 //Na função x = y; Deixará x com valor 28 
18 28 28 18 18 //Na função y = aux; Deixará y com valor 18 
 
Como a função é void, nada retorna e nem precisa porque os valores foram trocados pela função 
misterio(...) que recebeu por passagem por referência. 
 
 
 
 8a Questão 
 
Considere os trechos abaixo: 
int valor = 100; 
void eureka (int &z) { 
 int temp = 25; 
 z--; 
 temp = temp - 10; 
 valor = valor - temp; 
 cout << "Auxiliar = " << temp << endl; 
} 
int main() { 
 int R = 1000; 
 eureka(R); 
 cout << "Result = " << R << " Valor = " << valor << endl;} 
Assinale a opção correta. 
 
 
Será impresso 
Auxiliar = 15 
Result = 999 Valor = 85 
sendo que z é um parâmetro passado por valor 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 85 
sendo que z é um parâmetro passado por valor 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 999 Valor = 85 
sendo que z é um parâmetro passado por referência 
 
 
 
Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 85 
sendo que z é um parâmetro passado por referência 
 
Será impresso 
Auxiliar = 15 
Result = 1000 Valor = 100 
sendo que z é um parâmetro passado por referência 
 
 
Respondido em 5/27/2019 11:36:41 AM 
 
 
Explicação: 
Questão objetiva. Só é possível ser marcada a opção indicada no gabarito. 
Vejamos a análise passo a passo do trecho de código.... 
int valor = 100; 
void eureka (int &z) { 
 int temp = 25; 
 z--; 
 temp = temp - 10; 
 valor = valor - temp; 
 cout << "Auxiliar = " << temp << endl; 
} 
int main() { 
 int R = 1000; 
 eureka(R); 
 cout << "Result = " << R << " Valor = " << valor << endl; 
} 
Passo a passo .... 
Temos que valor recebeu 100 e valor é uma variável global. 
Começando a execução pela main, temos que eureka é chamada e o valor 1000 é passado. 
Iniciando a execução de eureka temos que : 
 temp (local à eureka) recebe o valor 25, depois o valor 1000 passado é decrementado para 999, temp 
recebe 15, valor recebe 100-15, que dá 85. Daí, o valor de temp é impresso, sendo mostrado na tela 
: Auxiliar = 15. DAí, a função termina e volta-se para a main. Lá na main, após a chamada da 
eureka, temos a seguinte impressão : 
 Result = 999 Valor = 85 
Note que para R valer 999 só foi possível porque z é um parâmetro passado por referência. 
 
 
 
 1a Questão 
 
Considere as seguintes afirmativas : 
I) Os vetores em C++, quando passados como parâmetros de funções, são obrigatoriamente passados 
"por valor" e não "por referência". 
II) Variáveis globais são um recurso adequado para troca de informações entre funções distintas. 
III) Caso uma função necessite retornar mais de um valor ao programa que a chamou, deve fazê-lo 
usando parâmetros passados "por valor". 
As afirmativas corretas são: 
 
 
Apenas III 
 
Apenas I e II 
 
Apenas I 
 
Nenhuma está correta 
 
Apenas II 
Respondido em 5/27/2019 11:38:52 AM 
 
 
Explicação: 
Analisando cada afirmativa ... 
I . Falso. Em C++ os vetores passados como parâmetros são sempre passados por referência. 
II. FAlso. Variáveis globais são uma péssima forma de usar recursos, comprometendo principalmente a 
manutenção do programa. 
III. FAlso. A função poderá retornar explicitamente um valor com return, mas terá que passar o outro 
parâmetro por referência e não por valor. Outra forma, será passar todos os parâmetros por referência. 
Portanto, não opção correta. 
 
 
 
 
 2a Questão 
 
Diga, para o trecho do programa abaixo, qual a opção que representa a saída em tela. Considere que o 
programa será compilado sem erros, e irá executar também sem problemas. 
void troca (int x, int *y){ 
 int tmp; 
 tmp = *y; 
 *y = x; 
 x = tmp; 
} 
int main() { 
 int a = 13, b = 10; 
 troca( a, &b ); 
 cout<<"Valores: "<< a<<"\t"<< b<< endl; 
 system("pause"); 
} 
 
 
Valores: 13 10 
 
Valores: 10 13 
 
Valores: 13 13 
 
Valores: 10 10 
 
Valores: 31 01 
Respondido em 5/27/2019 11:39:11 AM 
 
 
Explicação: 
 
A execução começa pela main. São passados o valor de a, que é 13 e o endereço de b, que vale 10. Em 
seguida, é chamada a função troca e são passados o valor de a e o endereço de b. 
Executando a função troca, x recebe 13 e *y recebe 10. Mas ocorre a troca, usando tmp como auxiliar. 
Então x recebe 10 e *y recebe 13. Ao terminar a execução da função, voltamos para a main e temos a 
sem mudanças e b com a mudança ocorrida na função. Note que x é um parâmetro passado por 
valor e y é um parÂmetro passado por referência. 
Portanto, a ficou 13 e b ficou 13. 
Logo, será impresso : Valores: 13 13 
 
 
 
 
 3a Questão 
 
 Assinale a opção CORRETA. O protótipo da função que permitirá calcular o volume de um 
paralelepípedo com medidas a, b e c de acordo com o trecho da chamada : cout << 
"Volume = " << volume(a,b,c); 
 
 
void volume (float , float); 
 
float volume (float ; float ; float); 
 
float volume (float, float); 
 
void volume (float, float, float &); 
 
float volume (float, float, float); 
Respondido em 5/27/2019 11:39:45 AM 
 
 
Explicação: 
Resposta única. 
Pela chamada da função 
cout << "Volume = " << volume(a,b,c); 
temos que a função retorna um valor, que pelo enunciado, vemos que é do tipo float. Há ainda os valores 
de a, b e c que são medidas de uma figura geométrica. Logo, a, b e c são do tipo float. 
Como protótipo é uma declaração temos : 
tipo de retorno da função seguido do seu nome seguido de parênteses e dentro dos parênteses, temos 
os tipos das variáveis que estavam na chamada da função. 
Logo : float volume(float, float, float); 
Note a vírgula para separar os tipos e o ponto e vírgula ao final. 
 
 
 
 
 
 4a Questão 
 
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 tem como principal elemento: 
 
 
As Estruturas de Dados 
 
As funções 
 
Os Vetores 
 
As Filas 
 
Os Grafos 
Respondido em 5/27/2019 11:44:15 AM 
 
 
 
 
 5a Questão 
 
A declaração de variáveis na programação é o ato de reservar um espaço na memória para poder 
armazenar valores de um determinado tipo. Essas variáveis podem ser classificadas como variáveis 
locais e globais. Sendo assim, qual das situações abaixo representa melhor o conceito das variáveis 
globais. 
 
 
Em uma função "resul" tem-se uma variável ali declarada por 'T' que recebe o valor inteiro 5. Ao 
tentar chamar esta variável em outra função é mencionado um warning. 
 
Em duas funções diferentes temos duas variáveis também diferentes com o mesmo nome 
apresentando o mesmo valor. 
 
Se modificarmos o valor da variável 'Y' na função "soma", e depois imprimirmos na tela esta 
variável em outra função, onde tambem está declarada a variável 'Y', será acusado um erro de 
compilação. 
 
Se dentro de uma função "mostra" declararmos uma variável 'R' com um determinado valor 
poderemos imprimir esta variável em qualquer outra função do programa mostrando o valor 
atribuído na função "mostra". 
 
Ao modificar o valor da variável 'X' na função "modifica" seu valor modificado poderá ser 
apresentado em qualquer outra função do programa. 
Respondido em 5/27/2019 11:46:38 AM 
 
 
Explicação: 
Uma variável é classificada com Global quando for declarada fora de todas as funções, significando que 
poderá ser alterada em qualquer uma delas. 
A resposta correta é : 
Ao modificar o valor da variável 'X' na função "modifica" seu valor modificado poderá ser apresentado 
em qualquer outra função do programa. 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
Nas linguagens C e C++, ao se declarar qualquer função, a especificação de tipo de dados que antecede 
o nome desta função define 
 
 
o protótipo da função. 
 
o escopo das variáveis doprograma. 
 
o tipo dos dados dos parâmetros que são passados à função quando da sua chamada. 
 
o tipo do dado do valor retornado da função para quem a chamou. 
 
o tipo das variáveis que serão utilizadas dentro da função. 
Respondido em 5/27/2019 11:47:25 AM 
 
 
Explicação: 
Por definição, antes do nome da função colocamos o tipo de dados retornado. Por exemplo, int, double, 
char ... Quando a função nada retorna colocamos void. 
 
 
 
 
 7a Questão 
 
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 pilha / área de registro 
 
( ) área de registro / área de pilha 
 
( ) área de dados globais / área de registro 
 
( ) área de registro / área de dados globais 
 
( ) área de dados globais / área de pilha 
Respondido em 5/27/2019 11:48:38 AM 
 
 
Explicação: 
Como y e r são variáveis, ficarão armazenadas em na área de dados globais / área de pilha 
 
 
 
 
 8a Questã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 compila normalmente, pois como a descrição da função float media(float x, float y)está 
posicionada após a função int main ( ), não há necessidade do uso de protótipos. 
 
O código não compila, pois a função float media(float x, float y) retorna um valor que seria ser 
armazenado em uma variável do tipo float e só então poderia ser usado o comando cout para 
exibir o resultado. 
 
O código compila normalmente e apresenta como resultado o valor 7.0 
 
O código não compila, pois há 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. 
 
O código não compila, pois os parâmetros usados na chamada da função deveriam ser "x" e "y"; 
porém a chamada se deu com identificadores "a" e "b". 
Respondido em 5/27/2019 11:49:06 AM 
 
 
Explicação: 
Quando uma função é posicionada depois da função main(), o protótipo dela precisa estar presente antes 
da função main(). 
 
 
 
 1a Questão 
 
Blocos únicos de códigos que realizam diversas tarefas distitintas são de dificil manutenção. Portanto, 
utiliza-se a tecnica 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 Estruturas de Dados 
 
As Filas 
 
Os Vetores 
 
As funções 
 
Os Grafos 
Respondido em 5/27/2019 11:55:11 AM 
 
 
 
 
 2a Questão 
 
 
 
 
O programa não executa corretamente, pois os protótipos estão fora da ordem 
em que as funções são descritas. 
 
O programa não executa corretamente pois as funções devem ser descritas 
antes da função main(), para que o compilador consiga reconhecê-las. 
 
O programa não executa corretamente, pois o protótipo da função media( ) não 
apresenta a identificação dos parâmetros, mas apenas os tipos dos mesmos. 
 
O programa executa perfeitamente, mas não mostra o valor da media já que esta 
função não foi chamada na função main( ). 
 
O programa executa perfeitamente independente da ordem das funções já que 
existem os seus protótipos. 
Respondido em 5/27/2019 11:56:59 AM 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
Considere o trecho de um programa escrito em C++. 
void func1 (bool x, int ini, int fim) { 
 for ( int y=ini; y != fim ; y++) { 
 x = !x; 
 if (x) 
 cout << y << endl; 
 else 
 cout << -y << endl; 
 } 
} 
int main() { 
 func1(false, 1, 7); 
} 
Marque a opção correta que mostra o que é impresso na tela. 
 
 
1, -2, 3, -4, 5, -6 
 
1, -2, -3, -4, -5, -6 
 
-1, 2, -3, 4, -5, 6 
 
-1, -2, -3, -4, -5, -6 
 
1, 2, 3, 4, 5, 6 
Respondido em 5/27/2019 11:57:15 AM 
 
 
Explicação: 
Fazendo um teste de mesa temos que será impresso a seguinte sequência : 1 -2 3 -4 5 -6, um 
embaixo do outro. 
Parte de um teste de mesa : 
 
x ini fim y 
false 1 7 1 
true 2 
false 
E continua x, ini, fim e y recebendo valores 
Tela : 
1 
-2 
3 
-4 
5 
-6 
 
 
 
 
 
 
 
 4a Questão 
 
Considere a seguinte função: void dobro(int x) { x = 2 * x; } Qual valor será impresso na tela quando o 
seguinte programa principal for executado? int main() { int n; n = 5; dobro(n); cout << n; return 0; } 
 
 
5 
 
20 
 
Haverá um erro de compilação 
 
0 
 
10 
Respondido em 5/27/2019 11:58:34 AM 
 
 
 
 
 5a Questão 
 
Sobre funções, é correto afirmar: 
 
 
Não devem conter variáveis locais em seu código. 
 
Não podem ser chamadas dentro de outras funções. 
 
Obrigatoriamente devem retornam algum valor. 
 
São blocos de instruções que são executados quando são chamadas em alguma parte do 
programa. 
 
Obrigatoriamente devem possuir parâmetros. 
Respondido em 5/27/2019 12:02:09 PM 
 
 
Explicação: 
Uma função é um bloco de instruções que pode ser chamada a partir de outra função, que pode ter ou 
não parâmetros, que pode ou não retornar valor, que pode ter ou não variáveis locais. 
 
 
 
 
 6a Questão 
 
 
 
 
Auxiliar = 100 Numero1 = 900 Numero2 = 80 
 
Auxiliar = 100 Numero1 = 900 Numero2 = 20 
 
Auxiliar = 101 Numero1 = 900 Numero2 = 20 
 
Auxiliar = 111 Numero1 = 1000 Numero2 = 80 
 
Auxiliar = 100 Numero1 = 1000 Numero2 = 20 
Respondido em 5/27/2019 12:03:33 PM 
 
 
Explicação: 
Acompanhando a execução 
Na função main() é declarada a variável valor e inicializada com 1000. 
Quando na main(), a função mistério é chamada, é passado o endereço da variável valor. Logo, de forma 
bem simples, v seria o nome da variável valor para a função misterio(...) 
Dentro da função misterio(...), foi declarada uma variável local aux com conteúdo 11 
Sendo assim, 
aux = aux - 11; Deixará aux com 100 
v = v - aux ; Deixará v com 900(1000 - 100) 
Como a variável numero foi declarada globalmente, todas as funções poderão acessá-la e, com isso, alterar 
seu valor, 
numero = aux - numero; Deixará numero com 80(100 - 20) 
Dentro da função misterio(...) será exibido Auxiliar = 100 e quando retornar à função main(), serão exibidos 
Numero1 = 900 Numero2 = 80 
Resposta correta: Auxiliar = 100 Numero1 = 900 Numero2 = 80 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
#include < iostream > 
 using namespace std; 
void SOMA(float a, int b) { 
 float result = a+b; 
 cout << "A soma de " << a << " com " << b << " é: " << result; 
} 
int main() 
{ 
int a; 
float b; 
a = 10; b = 12.3; 
SOMA(b,a); 
} 
A funçãoSOMA acima possui as seguintes características : 
 
 
Não retorna valor e possui parâmetros. 
 
Retorna valor e possui parâmetros. 
 
Retorna valor. 
 
Não retorna valor e não possui parâmetros. 
 
Retorna valor e não possui parâmetros. 
Respondido em 5/27/2019 12:03:55 PM 
 
 
Explicação: 
A função 
void SOMA(float a, int b) { 
 float result = a+b; 
 cout << "A soma de " << a << " com " << b << " é: " << result; 
} 
tem o tipo de retorno void, o que significa que nenhum valor é retornado. Além disso, a função possui 2 
parâmetros, que são a e b. 
Logo, a resposta certa é Não retorna valor e possui parâmetros. 
 
 
 
 
 8a Questão 
 
Considere a função a seguir e a chamada da mesma efetuada no programa principal abaixo. Indique a 
opção que contem o que será impresso. 
int executar (int x, int &y) { 
 x = y * 2; 
 y = ++x; 
 return x + y; 
} 
int main () { 
int a=2, b=2, c=2; 
c = executar (a, b); 
cout << a << ", " << b << ", " << c; 
} 
 
 
4, 5, 9 
 
3, 2, 8 
 
2, 5, 10 
 
3, 5, 8 
 
2, 2, 9 
Respondido em 5/27/2019 12:04:16 PM 
 
 
Explicação: 
Fazendo um teste de mesa, temos o seguinte : 
A execução começa pela main. 
As variáveis a, b e c são iniciadas com 2. 
Chama-se a função executar e são passados os valores de a e b, ou seja, 2 e 2. 
Ao iniciar a execução da função executar temos que x é passado por valor e y por referência. Iniciando a função temos : 
Em x = y * 2; Daí : x recebe 2 * 2, que dá 4 
Em y = ++x; Daí : x é incrementado para 5 e depois y recebe 5. 
Então, a soma de x + y é retornado. Ou seja, 10 é retornado. 
Mas como y é passado por referência, a variável b na chamada da função foi alterada para 5. Nada, no entanto, ocorreu com 
a na chamada da função, pois x foi passado por valor. 
Ao voltar para main, será impresso 2, 5, 10 
Portanto, qualquer outra opção é totalmente inviável. 
 
 
 1a Questão 
 
Dadas as afirmativas abaixo, identifique as corretas e marque a alternativa verdadeira. 
I- Vetores e matrizes servem apenas para construir agregados de dados heterogêneos. 
II- Registros em C++ são tipos de dados compostos formados por mais de um tipo de dados. 
III- Na Linguagem C++, "struct" é uma palavra reservada que serve para definir registros. 
IV- Registros são tipos de dados heterogêneos. 
 
 
estão corretas apenas as afirmativas I, III e IV. 
 
estão corretas apenas as afirmativas II, III e IV. 
 
estão corretas apenas as afirmativas I, II e IV. 
 
estão corretas apenas as afirmativas I, II e III. 
 
todas as afirmativas estão corretas. 
Respondido em 3/19/2019 6:51:39 PM 
 
 
Explicação: 
Analisando as afirmativas, temos : 
Afirmativa I : Falso. Vetores e matrizes são agregados homogêneos. 
Afirmativas II, III e IV : Estão corretas. Basicamente, structs são agregados heterogêneos. 
Logo, a opção correta é estão corretas apenas as afirmativas II, III e IV. 
 
 
 
 
 2a Questão 
 
Com relação à struct, é correto afirmar que : 
 
 
Cada elemento da struct é chamado componente. 
 
A struct é sempre definida dentro da main. 
 
Não é possível criar um vetor de structs, pois o vetor trabalha apenas com dados do 
mesmo tipo. 
 
Cada elemento da struct é denominado membro ou campo, sendo que a struct pode 
armazenar elementos de tipos diferentes ou não. 
 
Cada elemento da struct é chamado campo e cada campo deve ser, obrigatoriamente, de 
um tipo de dados distinto de outro campo. 
Respondido em 3/19/2019 6:52:10 PM 
 
 
Gabarito 
Coment. 
 
 
 
 
 3a Questão 
 
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 primeiro 
elemento deste vetor. 
 
 
vet[10]=aluno.5.7; 
 
vet[10].nota=5.7; 
 
aluno.vet[10]=5.7; 
 
aluno.vet[10].nota=5.7; 
 
vet[10].aluno.nota=5.7 ; 
Respondido em 3/19/2019 7:06:39 PM 
 
 
 
 
 4a Questão 
 
o programa de computador necessita preencher uma lista de alunos (nome e nota) até que a lista esteja 
cheia. Sabe-se que a lista tem capacidade para 25 alunos. Utilizando agregados heterogêneos, qual o 
trecho de código que exibe a melhor forma de solucionar este problema? 
 
 
for (int i = 0; i < 25; i++) { cin >> lista[i]->nome; cin >> lista[i]->nota; } 
 
for (int i = 0; i < 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
 
for (int i = 0; i <= 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
 
for (int i = 0; i < 25; i++) { cin >> lista->nome; cin >> lista->nota; } 
 
int i = 0; while( i < 25) { cin >> lista[i].nome; cin >> lista[i].cargo; i ++; } 
Respondido em 3/19/2019 7:10:05 PM 
 
 
Explicação: 
Analisando cada item : 
for (int i = 0; i <= 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
>> Falso. Veja que se há 25 itens, os índices começarão de 0 e irao até 24 e não 25. 
 
for (int i = 0; i < 25; i++) { cin >> lista[i]->nome; cin >> lista[i]->nota; } 
>> Falso. Para acessar o campo de struct é ponto e não seta. lista[i] é uma struct e não um ponteiro. 
 
for (int i = 0; i < 25; i++) { cin >> lista->nome; cin >> lista->nota; } 
 >> Falso. Para acessar o campo de struct é ponto e não seta. lista é um vetor e lista[i] é um 
componente de lista. Usamos o operador seta quando temos ponteiro para struct. 
 
for (int i = 0; i < 25; i++) { cin >> lista[i].nome; cin >> lista[i].nota; } 
 
>> Verdadeiro. 
 
int i = 0; while( i < 25) { cin >> lista[i].nome; cin >> lista[i].cargo; i ++; } 
 
>> Falso, porque foi pedido nome e nota e não cargo. 
 
 
 
 
 
 
 
 5a Questão 
 
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 media; }; Suponha ainda que exista um vetor desta estrutura, definido como: aluno vet [ 10]; 
Marque a alternativa em que é atribuída de forma correta a media 6.0 para o quarto elemento deste vetor. 
 
 
vet[3].aluno=6.0; 
 
aluno[3].media=6.0; 
 
aluno[3].10=6.0; 
 
vet[3].media=6.0; 
 
aluno[10]=6.0; 
Respondido em 3/19/2019 7:11:31 PM 
 
 
 
 
 6a Questão 
 
Marque a opção correta, considerando 
 
struct Livro { 
int codigo; 
float preco; 
} liv; 
 
 
liv.preco = 30.70; 
 
Livro.liv.codigo = 12345; 
 
Livro->liv.codigo = 12345; 
 
liv->preco = 30.70; 
 
Livro.codigo = 12345; 
Respondido em 3/19/2019 7:13:39 PM 
 
 
 
 
 7a Questão 
 
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 primeiro elemento 
deste vetor. 
 
 
vet[10]=aluno.5.7; 
 
aluno.vet[10]=5.7; 
 
vet[10].aluno.nota=5.7 ; 
 
vet[10].nota=5.7; 
 
aluno.vet[10].nota=5.7; 
Respondido em 3/19/2019 7:14:43 PM 
 
 
 
 
 8a Questão 
 
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; 
 } 
 } 
} 
} 
 
int ordena(float v[], float valor, int n){ 
 for (int i = 0; i < n; i++) 
 if (v[i] == valor) 
 return i; 
 return -1; 
} 
 
void ordena (int v[], int n){ 
 int i, j, aux; 
 for (j = 1; j < n; j++) 
 for (i=j; i > 0 && v[i-1]> v[i]; i--){ 
 aux = v[i-1]; 
 v[i-1] = v[i]; 
 v[i] = aux; 
 } 
} 
 
int ordena(float v[], float valor, int n) { 
 int ini = 0, fim = n-1, meio; 
 while (ini >= fim){ 
 meio = ini/2; 
 if (v[meio] == valor) 
 return meio; 
 if (valor < v[meio]) 
 fim = meio -1; 
 else 
 ini = meio+1; 
} 
 
int ordena(float v[], float valor, int n) { 
 int ini = 0, fim = n -1, meio; 
 while (ini <= fim){ 
 meio = (ini + fim)/2; 
 if (v[meio] == valor) 
 return meio; 
 if (valor < v[meio]) 
 fim = meio -1; 
 else 
 ini = meio+1; 
 } 
 return -1; 
} 
Respondido em 3/19/2019 7:17:28 PM 
 
 
Explicação: 
Na ordenação por seleção, a idéia é sempre procurar o menor elemento do vetor e inseri-lo no início do 
vetor. Procuramos o menor valor do vetor e colocamos ele em vetor. 
Procuramos o menor valor do vetor excluindo o já colocado e colocamos ele em vetor. E assim vamos 
indo até termos todo o vetor ordenado. 
Partindo sempre a partir do último elemento reordenado (a partir do i), o programa procura o menor 
elemento no vetor e o substitue pelo elemento i atual. 
É o que está ocorrendo na primeira opção! 
 
 
 1a Questão 
 
Qual papel do for mais interno na função ordena abaixo ? 
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; 
 } 
} 
 
 
Encontrar o valor de v[j] deve em v[0..j-1]. 
 
Encontrar o menor valor v[j] que deve ser inserido em v[0..j-1]. 
 
Encontrar o elmento a ser eliminado do vetor 
 
Encontrar o ponto onde v[j] deve ser inserido em v[0..j-1]. 
 
Encontrar o maior valor de x que deve ser inserido em v[0..j-1]. 
Respondido em 5/27/2019 6:21:43 PM 
 
 
Gabarito 
Coment. 
 
 
 
 
 2a Questão 
 
Considere a seguinte função busca escrita em linguagem C++ : 
bool busca(int vetor[ ], int n, int tam) 
{ 
 int ini=0, mid; 
 while (ini <= tam) 
 { 
 cout << " x "; 
 mid = (ini + tam)/2; 
 if (vetor[mid] == n) 
 return true; 
 else if (n > vetor[mid]) 
 ini = mid+1; 
 else 
 tam = mid-1; 
 } 
 return false; 
} 
Qual a quantidade total de impressões da letra x nas buscas pelos números n = 4, n = 2 e n = 0 no vetor 
[1,2,3,4,5,6,7,8], sendo tam = 7 ? 
int vetor[] = {1,2,3,4,5,6,7,8}; 
busca(vetor, 4, 7); 
busca(vetor, 2, 7); 
busca(vetor, 0, 7); 
 
 
9 
 
8 
 
4 
 
5 
 
6 
Respondido em 5/27/2019 6:22:39 PM 
 
 
Explicação: 
Na 1a. execução da busca... para n = 4 temos impresso : x 
Na 2a. execução da busca ... para n = 2 temos impresso : x x 
Na 3a. execução da busca ... para n = 0 temos impresso : x x x 
Total de impressões da letra x : 6 
 
 
 
 
 3a Questão 
 
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 
 
Quicksort 
 
Heapsort 
 
Bolha 
 
Seleção 
Respondido em 5/27/2019 6:34:21 PM 
 
 
Gabarito 
Coment. 
 
 
 
 
 4a Questão 
 
Marque a afirmativa correta para a "inserção incremental". 
 
 
É um tipo de sequenciação por intercalação. 
 
Os pivôs são escolhidos aleatoriamente. 
 
Consiste em adicionar um valor no vetor, mantendo a ordem existente e ajustando o total de 
elementos. 
 
É um tipo de ordenação por intercalação 
 
A técnica é boa quando os dados ficam uniformemente distribuídos entre os seus compartimentos. 
Respondido em 5/27/2019 6:34:39 PM 
 
 
Gabarito 
Coment. 
 
 
 
 
 5a Questão 
 
O seguinte trecho de programa abaixo representa qual tipo de estrutura de ordenação? 
void ordenar(float v[], int n) // n é o no. de elementos em v 
{ 
 int i , // índice 
 aux, // auxiliar para troca 
trocou = true, 
fim = n - 1; 
while (trocou) 
{ 
 trocou = false; // sinaliza que é falso que trocou 
 for (i = 0; i < fim; i++) 
 { 
 if (v[i] > v[i+1]) 
 { 
 aux = v[i]; 
 v[i] = v[i+1]; 
 v[i+1] = aux; 
 // sinaliza que é verdadeiro que trocou 
 trocou = true; 
 } // fim if 
 } // fim for 
 fim--; // decrementa o fim 
} // fim while 
} // fim da função 
 
 
Mergesort 
 
Heapsort 
 
Bublesort 
 
Shellsort 
 
Quicksort 
Respondido em 5/27/2019 6:35:10 PM 
 
 
Gabarito 
Coment. 
 
 
 
 
 6a Questão 
 
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 -1 se o valor de vl estiver dentro de v. 
 
Resulta em erro, se o valor de vl não estiver dentro de v. 
 
Retorna o valor de vl se o valor n foi encontrado. 
 
Retorna -1 se o valor de n foi encontrado. 
 
Retorna a posição de v se o valor vl foi encontrado. 
Respondido em 5/27/2019 6:35:49 PM 
 
 
Explicação: 
A função apresentada é a busca sequencial. Note que ela retorna o índice do elemento vl, quando o 
valor vl é encontrado e ela retorna -1 caso o valor vl não for encontrado. 
 
 
Gabarito 
Coment. 
 
 
 
 
 7a Questão 
 
Sobre o funcionamento da busca binária, é correto afirmar que dividindo seu vetor em duas metades. 
 
 
Se o item for maior que o item que está na metade do vetor procure na primeira metade, ou 
seja, a da direita. 
 
Se

Continue navegando