Baixe o app para aproveitar ainda mais
Prévia do material em texto
desligamento do quadro de alunos do Centro Universitário, bem como responder ações judiciais no âmbito cível e criminal. Questão 1/5 - Estrutura de Dados A recursividade é um recurso de programação bastante empregado, e consiste no ato de uma função em um código realizar chamadas de si mesmo, abrindo diferentes instâncias de uma mesma função na memória do programa. Acerca de recursividade e algoritmos recursivos, assinale a alternativa INCORRETA: Nota: 20.0 A Diversos problemas computacionais que poderiam ser resolvidos utilizando algoritmos iterativos, ou seja, laços de repetição, podem também ser resolvidos usando recursividade. B Um algoritmo recursivo terá uma complexidade logarítmica, apresentando um desempenho inferior em tempo de execução superior a um algoritmo construído de forma iterativa. Você acertou! AULA 1 – TEMA 4. O desempenho em tempo de execução é superior. C Uma possível desvantagem de um algoritmo recursivo é o seu uso de memória mais elevado, uma vez que diversas instâncias de uma mesma função precisam ser alocadas na memória. D Um algoritmo que executa uma função denominada de soma, e que realiza a chamada de uma função denominada compara, não pode ser considerado um algoritmo recursivo, uma vez que não realizada chamadas de si mesma. E Um algoritmo recursivo comumente serve para resolver problemas do tipo “dividir para conquistar”, onde dividimos um problema em partes menores e mais fáceis de solucionar, para posteriormente agregar as pequenas soluções em uma maior. Questão 2/5 - Estrutura de Dados O segundo assunto de nossa disciplina diz respeito a algoritmos de ordenação de dados. Acerca deste assunto, assinale a alternativa INCORRETA: Nota: 20.0 A Algoritmos de ordenação são empregados com o objetivo de ordenar conjuntos de dados a partir de uma determinada métrica, como por exemplo, ordenar nomes de pessoas em ordem alfabética crescente. B Existem os mais diversos algoritmos de ordenação, sendo que cada um deles apresentará uma complexidade distinta em tempo de execução e de uso de memória e, portanto, devem ser minuciosamente escolhidos de acordo com a aplicação. AVA UNIVIRTUS file:///home/t-sec/Downloads/AVA UNIVIRTUS.html 2 of 7 14/04/2019 14:16 C A permuta de grandes quantidades de dados para ordenação tende a ser custoso computacionalmente. O uso de variáveis ponteiros servem para auxiliar e otimizar este processo ordenando somente os endereços ao invés de todo o conjunto de dados. D Um algoritmo de ordenação é um método que descreve como é possível colocar, em uma ordem específica, um conjunto de dados qualquer. E A lógica algorítmica de cada método de ordenação difere para cada tipo de estrutura de dados que se deseja manipular. Você acertou! AULA 2 – TEMA 1. A estrutura de dados não muda a lógica de funcionamento do algoritmo de ordenação, só muda a estrutura a ser manipulada. Questão 3/5 - Estrutura de Dados Uma implementação do algoritmo de ordenação do tipo bubble sort pode ser visto abaixo. As partes que envolvem impressão de dados na tela e leitura de dados foram omitidas para um melhor entendimento do que é necessário na questão. X[TAMANHOVETOR], i, j, aux: inteiro para i de 1 até TAMANHOVETOR faça para j de 0 até (TAMANHOVETOR - 2) faça se (X[j] > X[j + 1]) então aux <- X[j] X[j] <- X[j + 1] X[j + 1] <- aux fimse fimpara fimpara Acerca deste algoritmo, assinale a alternativa CORRETA: Nota: 20.0 A O algoritmo apresentado no exercício realizado a ordenação de dados numéricos, inteiros, em ordem decrescente. Ordenação é crescente. B As linhas de código que correspondem a troca dos valores usando uma variável auxiliar poderiam ser também escritas da seguinte maneira: aux <- X[j+1] X[j+1] <- X[j] X[j] <- aux Você acertou! AULA 2 – TEMA 2. CORRETO. AVA UNIVIRTUS file:///home/t-sec/Downloads/AVA UNIVIRTUS.html 3 of 7 14/04/2019 14:16 C Se precisarmos ordenar dados não numéricos, como caracteres, precisaremos repensar em toda a lógica do bubble sort, não sendo possível adaptar o código facilmente. Basta adaptarmos a linha da condicional para funcionar com outro tipo de dado. D Não é possível implementar o bubble sort com laços de repetição do tipo enquanto. É possível implementar com qualquer tipo de laço, para, enquanto ou repita. E A complexidade deste algoritmo, para o pior caso, é O(logn).Complexidade O(n²). Questão 4/5 - Estrutura de Dados O algoritmo abaixo foi desenvolvido empregando uma lógica iterativa: Função Calcula (n: inteiro, x: inteiro): inteiro y: inteiro para i de 0 até n faça se (x < 0) então para i de 0 até n faça y = y + 1 fimpara senão para i de 0 até x faça y = y + 1 fimpara fimse fimpara retorne y Fimfunção Acerca ao algoritmo acima, e trabalhando com os conceitos de complexidade assintótica e recursividade, assinale a alternativa CORRETA: Nota: 0.0 A A função contém três laços de repetição, sendo que todos os três laços podem acabar sendo executados cada vez que esta função por chamada. Como o valor de x recebido como parâmetro nunca muda dentro da mesma chamada da função, teremos somente 2 laços sendo executados por vez devido a condicional composta. B A complexidade da função, para o pior caso será O(n³).Como temos somente 2 laços aninhados, a complexidade será O(n²). C A função não realiza chamadas de si mesma, portanto pode ser considerada uma função recursiva. Uma função recursiva é a que realizada chamadas de si mesma. D Caso exista a possibilidade de implementação deste algoritmo usando uma função recursiva, e sem uso de laços de repetição, a complexidade em tempo de execução da implementação irá melhorar. AULA 1 – TEMA 3, 4 E 5. Sim, pois implementando com recursividade AVA UNIVIRTUS file:///home/t-sec/Downloads/AVA UNIVIRTUS.html 4 of 7 14/04/2019 14:16 teremos uma complexidade atrelada a um crescimento logarítmico. E Caso substituíssemos todos os laços de repetição do tipo para, por laços do tipo enquanto, o desempenho do algoritmo em tempo de execução irá melhorar significativamente, uma vez que o laço enquanto tem um custo inferior ao do para. O custo de todos os três tipos de laços de repetição é o mesmo na análise de complexidade e, virtualmente não faz diferença qual você utiliza. Questão 5/5 - Estrutura de Dados O algoritmo de ordenação rápida, também conhecido como quick sort, é um dos algoritmos estudados na AULA 2. Acerca deste algoritmo, assinale a alternativa CORRETA. Nota: 20.0 A A complexidade do quick sort é O(n²). Isso significa que ele sempre terá a mesma eficiência de um bubble sort. Somente o pior caso do bubble e do quick são iguais. Se considerarmos cenários melhores o quick sort se sai bem melhor que o bubble sort. Veja o experimento feito na AULA PRÁTICA 1 para mais detalhes. B O quick sort trabalha com o conceito de pivô, que é o elemento usado nas comparações, comparando sempre o seu valor com todos os valores do lado direito do pivô, enquanto que o lado esquerdo permanece já ordenado. Ambos os lados são comparados, esquerdo e direito. C O quick sort trabalha com o conceito de pivô, que é o elemento usado nas comparações, comparando sempre o seu valor com todos os valores do lado esquerdo do pivô, enquanto que o lado direito permanece já ordenado. Ambos os lados são comparados, esquerdo e direito. D O quick sort trabalha com uma troca de valores utilizando uma variável auxiliar, da mesma maneira feita no bubble sort. Você acertou! AULA 2 – TEMA 4 – CORRETO. E O quick sort só pode ser executado para um tamanho de conjunto de dados máximo igual a 1000, pois mais do que isso o uso de memória pelo algoritmo é muito grande.O limite máximo dependerá da memória disponível, não sendo limitado ao valor de 1000. Orientações para realização da avaliação. AVA UNIVIRTUS file:///home/t-sec/Downloads/AVA UNIVIRTUS.html 5 of 7 14/04/2019 14:16
Compartilhar