
















Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
ESTRUTURA DE DADOS I - QUESTIONÁRIO 1 AO 8 (RESOLVIDOS) 2023
Tipologia: Exercícios
1 / 24
Esta página não é visível na pré-visualização
Não perca as partes importantes!
QUESTÃO 1 - Uma variável tem um espaço na memória reservado para armazenar dados, dependendo do tipo e da declaração esta pode armazenar tipos específicos de dados, vimos que podemos ter vários deles, mas os mais comuns são INT, FLOAT e CHAR. Com base nos estudos da disciplina, qual é a diferença entre os tipos FLOAT e INT, na linguagem C? RESPOSTA: O tipo FLOAT é destinado para armazenar números reais, já o INT para números inteiros. Feedback: O INT armazena apenas os números inteiros, enquanto o FLOAT armazena os números reais. QUESTÃO 2 - “A melhor maneira de se aprender uma linguagem de programação é na prática, ou seja, codificando um programa” (KERNINGHAN; RITCHIE, 1988). Um programa em C, ao ser elaborado, pode possuir bibliotecas básicas ou avançadas, dependendo da complexidade no programa a ser desenvolvido pode-se ter diversas bibliotecas importadas. (KERNIGHAN, B. W, 1988) Analise as afirmações referentes às bibliotecas Padrão de C e assinale a alternativa correta. I - Com a biblioteca assert.h, pode-se realizar o tratamento de caracteres, por exemplo, a conversão de maiúsculas, minúsculas. II - A biblioteca stdio.h é a responsável pelas funções de entrada/saída. III - A biblioteca stdint.h, define os padrões de tipos de dados inteiros. IV - Com a biblioteca math.h podemos efetuar a manipulação de funções matemáticas RESPOSTA: II, III e IV apenas. Feedback: A biblioteca stdio.h é a responsável pelas funções de entrada/saída; A biblioteca stdint.h, define os padrões de tipos de dados inteiros; Com a biblioteca math.h podemos efetuar a manipulação de funções matemáticas. QUESTÃO 3 - Correspondem a dois dos recursos mais utilizados em softwares e à entrada e à saída de dados, sendo permitido o recebimento dos dados digitados pelo usuário, armazenando-os em variáveis, posteriormente, podemos efetuar a saída de dados, onde mostramos os dados armazenados nas variáveis na impressão da tela do usuário. Com base no exposto e em nosso material de estudos, assinale a alternativa correta para a entrada e saída de dados dos tipos int e float. I - scanf("%d",&num1); printf("%d",num1); II - scanf("%d",num1); printf("%d",num1); III - scanf("%i",&num1); printf("%s",num1); IV - scanf("%f",&num1); printf("%f",num1); V - scanf("%c",&num1); printf("d",&num1);
RESPOSTA: I e IV, apenas. Feedback: scanf("%d",&num1); printf("%d",num1) e scanf("%f",&num1); printf("%f",num1) estão corretas. QUESTÃO 4 - Para praticar seus novos conhecimentos em linguagem C um aluno fez um pequeno programa. O objetivo deste programa é fazer uma divisão de dois números inteiros e atribuir o resultado em uma variável. Analise o código a seguir: #include <stdio.h> int main(void) { int A=174, B=2; float C; C = A / B; printf ("%d / %d = %.1f\n", A,B,C); return (0); } Após analisar o código fonte, assinale a alternativa correspondente do que será impresso na tela. RESPOSTA: O resultado impresso na tela será 174 / 2 = 87.0. Feedback: O resultado correto a ser apresentado na tela é 174 / 2 = 87.0.
QUESTÃO 1 - Segundo Forbellone e Eberspacher (2005, p.33), “uma estrutura de seleção simples permite a escolha de um grupo de ações (bloco) a ser executado quando determinadas condições, representadas por expressões lógicas ou relacionais, são ou não satisfeitas”. Com base no exposto sobre as estruturas de seleção, análise o algoritmo a seguir: #include <stdio.h> int main() { int idade; printf("Qual a sua idade? "); scanf("%d", &idade); if(idade >= 18 && idade <=70){ printf("Voce deve votar!"); }else{ if(idade <= 15){ printf("Nao pode votar"); }else{ printf("Voto facultativo"); }
Podemos concluir que: I – No código fonte apresentado, temos uma estrutura condicional composta. II – Se o usuário digitar o número 75, a resposta será: “Não pode votar”. III – Se o usuário digitar o número 16, a resposta será: “Voto facultativo”. IV – Neste algoritmo, é utilizado apenas operadores lógicos, não sendo utilizado nenhum relacional. É correto o que se afirma em: RESPOSTA: I e III apenas Feedback: No código fonte apresentado, temos uma estrutura condicional composta; Se o usuário digitar o número 16, a resposta será: “Voto facultativo”. QUESTÃO 2 - As estruturas de seleção se utilizam de expressões relacionais para validar o desvio condicional, devemos atentar para o fato de que alguns desses operadores relacionais podem ser confundidos ao serem utilizados. A partir do exposto e de nosso material de estudos, analise as alternativas e assinale qual corresponde ao desvio condicional IF, comparado se a variável N é igual ao número 0: RESPOSTA: if (n == 0) Feedback: Para fazer a comparação se N é igual a zero utilizamos o duplo sinal de = (igual). QUESTÃO 3 - Para repetir um determinado trecho do código podemos utilizar as estruturas de repetição, temos dois tipos de estruturas de repetição que se utilizam de expressões condicionais para executar ou continuar o laço de repetição, cada qual com suas particularidades. Dentre estas estruturas temos uma que a sua característica é executar pelo menos uma vez o laço de repetição, de qual estrutura estamos falando? RESPOSTA: DO WHILE
Referência: CASAVELLA, Eduardo. A biblioteca padrão da linguagem C. Disponível em: http://linguagemc.com.br/a-biblioteca-padrao-da-linguagem-c/ Acesso em: 01 fev. 2023.
QUESTÃO 1 - Existe uma forma de organizar trechos de código em blocos para que sejam utilizados diversas vezes, mas de maneira diferente de como é feito em laços de repetição. As chamadas funções isolam partes de um código e permitem uma reutilização deste bloco de instruções toda vez que a função principal "main" necessite de suas funcionalidades, por exemplo. A partir dos conceitos fundamentais de funções vistos na disciplina, analise as afirmativas a seguir, dentre as informações passadas. I - Funções podem conter instruções de desvio de fluxo de execução dentro de si própria. II - Funções podem chamar a si mesmas para realizar cálculos e outros processamentos. III - Uma função pode conter blocos de instruções de laços de repetição, vetores, entrada e saída. IV - Em uma função não são permitidos parâmetros de tipos diferentes em sua declaração. V - Funções podem manipular dados internamente e devolver dados manipulados ao código chamador. É correto o que se afirma em: RESPOSTA: I, II, III e V, apenas. Feedback: Apenas a assertiva IV está incorreta, pois em uma função são permitidos parâmetros de tipos diferentes em sua declaração. QUESTÃO 2 - Uma função é uma sub-rotina que tem como objetivo desviar a execução do programa principal para realizar uma tarefa específica. (ASCENCIO, A. F. G, 2010)
Sendo assim, é correto o que se afirma em: RESPOSTA: I e II, apenas. Feedback: Se a função for invocada de maneira que o parâmetro "n" valha 0 (zero), o algoritmo não entrará em loop infinito, portanto a assertiva III está incorreta.
RESPOSTA: A lista duplamente encadeada facilita percorrer os elementos em ambas as direções, pois possui ponteiros para o anterior e para o próximo. Feedback: Pelo fato de possuir ponteiros direcionados para o "próximo" e para o “anterior” a lista duplamente encadeada percorre os elementos em ambas as direções. QUESTÃO 4 - Uma lista encadeada pode ser representada como um elemento do tipo nó, que possui uma variável para o dado e outra que é um ponteiro para o próximo. Além disso, há uma variável que aponta para o início da lista. A respeito de listas encadeadas, assinale as afirmativas corretas: I – Uma lista dinâmica pode ter qualquer tamanho que caiba a memória, pois os elementos são adicionados dinamicamente, mas ela deve ter o mínimo de um elemento, para que o ponteiro que aponta para o início não se perca. II – O último elemento da lista deve apontar para o elemento nulo (NULL), mesmo que ele seja também o primeiro elemento da lista. III – Uma lista vazia possui o ponteiro de início apontando para o elemento nulo (NULL). IV – Uma lista é considerada cheia quando o último elemento aponta para o elemento fim
RESPOSTA: II e III Apenas. Feedback: O último elemento da lista deve apontar para o elemento nulo (NULL), mesmo que ele seja também o primeiro elemento da lista; Uma lista vazia possui o ponteiro de início apontando para o elemento nulo (NULL). Referência: ASCENCIO, A. F. G.; CAMPOS, E. A. V. Fundamentos da programação de computadores. 5. ed. São Paulo: Prentice Hall, 2010.
QUESTÃO 3 - O uso de ponteiros possibilita a criação de listas dinâmicas. A respeito do uso de ponteiros e listas, analise as afirmativas a seguir. I - As listas dinâmicas não possuem um valor máximo de elementos fixos. Podemos inserir quantos elementos forem necessários, desde que caibam na memória. II - As listas estáticas reservam o tamanho máximo que podem ocupar em memória assim que são definidas. III - Ao remover um elemento em uma lista dinâmica, se não apontarmos corretamente o elemento anterior para o próximo, podemos perder os dados de parte da lista. IV - Listas dinâmicas crescem na memória dinamicamente até o tamanho máximo definido em sua criação. V - Listas dinâmicas podem ter tamanhos maiores que listas estáticas: É correto o que se afirma em: RESPOSTA: I, II, III e V. Feedback: As Listas dinâmicas crescem na memória dinamicamente porém não tem um limite máximo definido na sua criação. QUESTÃO 4 - Considere uma lista encadeada implementada com vetores, na qual cada elemento é armazenado no vetor dados e possui um ponteiro para o próximo no vetor, conforme a seguinte estrutura: struct lista { int dados[20]; int proximos[20]; int inicio; } Os elementos podem ser incluídos e removidos a qualquer momento, sobre a manipulação de dados em listas, analise as afirmativas a seguir e selecione a correta. RESPOSTA: Para remover um elemento da lista, precisamos fazer que o elemento anterior do que será removido aponte para o elemento que o nó removido apontava. Referência: UFMG. Uma aplicação de structs: as listas simplesmente encadeadas, 1999. Disponível em: https://www.pucsp.br/~so-comp/cursoc/aulas/cb70.html. Acesso em: 03 fev. 2023.
binárias, como por exemplo a resolução de cálculos aritméticos de acordo com a precedência das operações, como ilustrado a seguir: Assinale a alternativa referente à expressão algébrica correta que originou esta árvore binária. RESPOSTA: p - ( p * ( d / 100 ) ) Feedback: A expressão algébrica correta é p - ( p * ( d / 100 ) )de acordo com a estrutura da árvore apresentada acima. QUESTÃO 4 - De maneira geral, utilizar árvores no desenvolvimento de programas é bom, pois elas provêm rápido acesso de dados (direto e sequencial), conta com fácil inserção e remoção de dados e ainda possuem boa taxa de utilização de memória. Nota-se que, para poder manipular árvores convenientemente, o desenvolvedor necessita ter em mente vários conceitos. Sobre árvores, avalie as afirmativas e assinale a alternativa correta. I – A raiz é o vértice inicial e não possui um nó pai. II – Considere que o nó V tem uma subárvore, cujo elemento é o nó W. Diz-se que V é pai de W. III – Considere que o nó V tem uma subárvore, cujo elemento é o nó W. Diz-se que W é pai de V. IV – Considere que o nó W tem uma subárvore, cujo elemento é o nó V. Diz-se que V é filho de W. RESPOSTA: I, II e IV apenas Feedback: A asserção III está incorreta pois o nó V que é pai do nó W, pois de acordo com as afirmações apresentadas o nó V está um nível acima do nó W.
Referência: UENP. Árvores - conceitos. Universidade Estadual do Norte do Paraná, 2017. Disponível em: https://estruturadedadosuenp.directorioforuns.com/t14-arvore-conceitos. Acesso em: 04 fev. 2023. ESTRUTURA DE DADOS I - QUESTIONÁRIO 6 (RESOLVIDO) 2023
QUESTÃO 4 - Com os dados armazenados em árvores podemos realizar buscas, em um elemento dentro de uma árvore, sendo também possível montar uma árvore binária para a busca através de elementos de a partir de um vetor, ordenado ou não ordenado. Conforme visto em nossas aulas um vetor é possível armazenar informações em uma única variável, guardando os dados em posições no vetor. Dada a seguinte árvore de busca: Sabendo que o nó raiz de um vetor com 4 elementos é originado da posição: (0 + 3) / 2 = 1.5 = 1, assinale a alternativa correspondente ao vetor que originou essa árvore.
Feedback: Sabendo que a posição que originou o vetor é 1,5 o vetor que originou essa árvore é [3 8 1 7]. Referência: UENP. Árvores - conceitos. Universidade Estadual do Norte do Paraná, 2017. Disponível em: https://estruturadedadosuenp.directorioforuns.com/t14-arvore-conceitos. Acesso em: 16 fev. 2023.
QUESTÃO 1 - Algumas técnicas de busca exigem que o conjunto de dados esteja ordenado, para que haja eficiência na procura por um elemento pertencente a esse conjunto. A figura abaixo representa o passo a passo da ordenação de um arranjo. Com base na ilustração abaixo, assinale a alternativa que corresponda ao algoritmo utilizado para ordenar o arranjo. RESPOSTA: O algoritmo utilizado é o InsertionSort. Feedback: O InsertionSort executa várias vezes a rotina até que o arranjo seja ordenado.