Baixe o app para aproveitar ainda mais
Prévia do material em texto
PONTIFÍCIA UNIVERSIDADE CATÓLICA DE MINAS GERAIS Instituto de Ciências Exatas e Informática - Campus Betim Disciplina Técnicas Avançadas de Programação Curso Sistemas de Informação Turno Noite Período 5◦ Professor Fábio Leandro Rodrigues Cordeiro fabio@pucminas.br Valor XP Aluno Felipe Carvalho de Avelar Lista Revisão 2 1. Associe a coluna de Técnicas com a descrição ao lado: a) Divisão e Conquista ( ) Quebra o problema em sub-problemas menores; b) Programação Dinâmica ( ) O nome tem origem no método de solução por tabelas; c) Método Guloso ( ) Resolve todos os sub-problemas menores e reusa as soluções ótimas; ( ) Uma vez realizado uma escolha ela nunca é revista; ( ) Uma função de seleção indica quais dos candidatos restantes é o melhor. 2. São características da Técnica de Projeto de Algoritmos Gulosos, exceto: a) Sempre escolhem a alternativa que a priori mostram-se mais promissoras naquele instante; b) Uma vez tomada uma decisão, não a reconsideram em hipótese alguma; c) O Critério guloso consiste em realizar uma decisão local ótima; d) Cada instância do problema é resolvida a partir de sub-instâncias da instância original; e) Nunca examina um elemento mais de uma vez, ou faz parte da solução ou não faz. 3. (INEP - 2017 - ENADE) Um país utiliza moedas de 1, 5, 10, 25 e 50 centavos. Um programador desenvolveu o método a seguir, que implementa a estratégia gulosa para o problema do troco mínimo. Esse método recebe como parâmetro um valor inteiro, em centavos, e retorna um array no qual cada posição indica a quantidade de moedas de cada valor. public static int[ ] troco(int valor){ int [ ] moedas = new int[5]; moedas[4] = valor / 50; valor = valor % 50; moedas[3] = valor / 25; valor = valor % 25; moedas[2] = valor / 10; valor = valor % 10; moedas[1] = valor / 5; valor = valor % 5; moedas[0] = valor; return(moedas); } Considerando o método apresentado, avalie as asserções a seguir e a relação proposta entre elas. I. O método guloso encontra o menor número de moedas para o valor de entrada, considerando as moedas do país. PORQUE II. Métodos gulosos sempre encontram a solução global ótima. A respeito dessas asserções, assinale a opção correta. a) As asserções I e II são proposições verdadeiras, e a II é uma justi cativa correta da I. b) As asserções I e II são proposições verdadeiras, mas a II não é uma justi cativa correta da I. c) A asserção I é uma proposição verdadeira, e a II é uma pro- posição falsa. d) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira. e) As asserções I e II são proposições falsas. 4. Julgue os itens a seguir em V ou F sob as perspectivas das Técnicas de Programação Dinâmica e Método Guloso ( F ) Tanto a Programação Dinâmica quanto o Método Guloso trabalham de forma top-down; ( V ) A Programação Dinâmica faz uma escolha a cada passo, das quais dependem das soluções dos sub-problemas de forma botton-up; ( F ) A Técnica Gulosa quando funciona corretamente, a primeira solução encontrada é sempre ótima. ( V ) Na Técnica de Programação Dinâmica um candidato excluído do conjunto de solução não é mais considerado. ( V ) Sempre escolhem a alternativa que a priori mostram-se mais promissoras naquele instante; 5. O algoritmo de cálculo da sequência de Fibonacci abaixo descreve uma das Técnicas de Projeto de Algoritmos estudada. De na e explique o funcionamento dela, e o porquê desta classi cação para este problema em especí co? int Fibonacci(int n) { int[ ] memory = new int[n + 1]; memory[1] = 1; memory[2] = 1; for (int i = 3; i <= n; i++) { memory[i] = memory[i - 1] + memory[i - 2]; } return memory[n]; } 6. Levando em consideração a implementação do Problema da Mochila abaixo em Programação dinâ- mica, identi que qual o tipo da implementação (Com ou Sem Repetição) e execute o algoritmo passo a passo, conforme visto em sala: 7. Sobre os Paradigmas de Programação é correto a rmar que: a) Os paradigmas determinam as estruturas dos elementos que compõem um programa e coordenam suas interações entre si e agentes externos. b) O paradigma de programação orientada por objetos se caracteriza por ser baseado em módulos ou subprogramas. c) O paradigma de POO é de nido pela utilização da lógica funcional. d) Na programação por lógica funcional os dados são acessados de forma modular, de acordo com o tipo de dado e do tipo de método que possui acesso a eles. e) Podemos citar a limitação humana para compreender um sistema complexo como um todo, como motivação principal para mudança da programação funcional para a POO. 8. Sobre os Padrões de Projeto e Modelos Arquiteturais de Programação, associe: (a) DAL (b) DAO (c) CRUD (d) XML (e) Singleton (f) Strategy ( DAO ) É um padrão que abstrai e encapsula os mecanismos de acesso a dados, deixando transparente a maneira como esses dados são acessados do resto da aplicação. ( DAO ) A partir deste conceito é possível criar classes de dados que são independentes da fonte de dados ser um Banco de Dados, um arquivo de texto ou XML. ( XML ) É um padrão que especi ca um formato largamente utilizado para representação, armazena- mento e transferência de dados. ( XML ) é suportado por diversas linguagens da atualidade, inclusive o C#, e facilita a interoperabilidade entre sistemas distintos ( CRUD ) Acrônico das palavras Create, Read, Update e Delete. ( CRUD ) É utilizado quando se refere as operações básicas para manutenção de um dado. ( DAL ) Camada de Acesso a Dados, que de ne uma interface de acesso aos dados. ( Singleton ) É considerado um dos padrões de projeto mais utilizadas, e tem por nalidade a garantia de apenas uma instância de uma instância através de um ponto global de acesso. ( Strategy ) Este padrão de ne uma família de algoritmos e é capaz de intercambiar, de forma encapsulada, separando assim o comportamento que variam em interfaces. 9. De na e Explique cada um dos polimor smo, descreva um exemplo de uso para cada um: a) Polimor smo/AdHoc/Sobrecarga: b) Polimor smo/AdHoc/Coerção: c) Polimor smo/Universal/Paramétrico: d) Polimor smo/Universal/Inclusão: 10. Sobre os tipos de Polimor smo julgue as assertivas: I) O AD HOC é considerado uma forma limitada de polimor smo e é dividida em duas formas: coerção e sobrecarga. v II) Se o método Soma é de nido com tendo dois parâmetros reais, e são passados para ele, um valor inteiro e um valor real, dizemos então que temos um polimor smo paramétrico por coerção (casting). III) Polimor smo por sobrecarga é aquele em que é permitida a utilização do mesmo nome de função com diferentes tipos de parâmetros. v IV) Um exemplo de polimor smo universal por inclusão é aquele que o tipo não existe sozinho, sendo necessário que sejam incluídos por parâmetro algum tipo de dado. V) O polimor smo universal por inclusão caracteriza-se por uma função que foi de nida em um determinado tipo pode manipular todos os subtipos nas classes derivadas. a) V; F; V; F, V b) V; F; V; F, F c) F; V; V; V; F d) F; F; F; V; V e) V; V; V; F; V 11. Julgue as alternativas abaixo em Certo e Errado. a) Callback Function são chamadas de funções feitas em c/c++ onde são feitas chamadas de função através de ponteiro. Comportamento parecido tem-se utilizando a técnica de Delegates em C#, porem com ponteiros não seguros. ( ) certo ( ) errado b) O fragmento de código abaixo mostra a declaração de um delegate de forma correta: Delegate string MeuDelegate(string p1, string p2); ( ) certo ( ) errado c) Os delegates permitem que uma classe chame métodos em outras sem exigir que esta outra classe seja derivada de um ancestral conhecido. ( ) certo ( ) errado d) Eventos (Events), é uma técnica utilizada para o funcionamento do ambiente de desenvolvimento grá co do C#, e são fundamentados em delegates. ( ) certo ( ) errado e) Um delegate é criado de forma similar à de um método concreto, onde sua assinatura é composta por: Nome do delegate; argumentos de entrada e tipo de retorno. ( ) certo ( ) errado 12. (UPENET/IAUPE - 2017) Sobre o uso de delegates na linguagem C# .NET, assinalea alternativa INCORRETA. a) Uma vantagem da utilização de delegates é a sua aplicabilidade no modelo de eventos do .NET. b) Um delegate com tipo de retorno void é automaticamente um System.MulticastDelegate. c) Não podemos derivar de MulticastDelegate diretamente. d) A common language runtime provê os métodos adicionais BeginInvoke e EndInvoke além dos herdados de MulticastDelegate. e) O delegate genérico Action <T> encapsula um método que retorna um inteiro de código de erro. 13. De na e explique os delegates Action e Func do C#, e onde o seus respectivos usos são recomendáveis:
Compartilhar