Prévia do material em texto
Pontifícia Universidade Católica de Minas Gerais Curso de Sistemas de Informação Exercício I Crie uma classe abstrata de nome “Análise Combinatória”, responsável por especificar, além do cálculo do fatorial de um número, os métodos devidos para cálculo de Permutações, Arranjos e Combinação de elementos. Crie outras três classes herdeiras da classe abstrata definida anteriormente, de nomes “Permutação”, “Arranjo” e “Combinação”, que programe os métodos para os cálculos especificados. As fórmulas para os cálculos são as seguintes: Fatorial de um Número: 𝑛! = 𝑛 . (𝑛 − 1). (𝑛 − 2). (… ). 1 Permutação: 𝑃( ) = 𝑛! Arranjo: 𝐴( , ) = 𝑛! (𝑛 − 𝑝)! Combinação: 𝐶( , ) = 𝑛! 𝑝! (𝑛 − 𝑝)! Sendo 𝑛 o total de elementos e 𝑝 o número de agrupamentos. No programa principal o usuário deverá fornecer o valor de 𝑛 e 𝑝 e receber o resultado dos três cálculos. Exercício II Estude os trechos dos módulos do programa a seguir: interface IForma { double CalcÁrea(double x); double CalcPerímetro(double x); } class Círculo:IForma { public double CalcÁrea(double Raio) { return Math.PI * Math.Pow(Raio, 2); } public double CalcPerímetro(double Raio) { return 2 * Math.PI * Raio; } } class Quadrado:IForma { public double CalcÁrea(double Lado) { return Math.Pow(Lado, 2); } public double CalcPerímetro(double Lado) { return 4 * Lado; } } class Operações { private IForma Forma; public Operações(IForma TipoForma) { Forma = TipoForma; } public double ExecutaCalcÁrea(double x) { return Forma.CalcÁrea(x); } public double ExecutaCalcPerímetro(double x) { return Forma.CalcPerímetro(x); } } class Program { static void Main(string[] args) { double Lado; double Raio; Operações OP; Console.Write("Lado do Quadrado...: "); Lado = double.Parse(Console.ReadLine()); Console.Write("Raio do Círculo....: "); Raio = double.Parse(Console.ReadLine()); Console.WriteLine(); OP = new Operações(new Quadrado()); Console.WriteLine("Área do Quadrado.......: {0:F2}", OP.ExecutaCalcÁrea(Lado)); Console.WriteLine("Perímetro do Quadrado..: {0:F2}", OP.ExecutaCalcPerímetro(Lado)); Console.WriteLine(); OP = new Operações(new Círculo()); Console.WriteLine("Área do Círculo........: {0:F2}", OP.ExecutaCalcÁrea(Raio)); Console.WriteLine("Perímetro do Círculo...: {0:F2}", OP.ExecutaCalcPerímetro(Raio)); Console.ReadKey(); } } Crie uma Interface de nome “IAnáliseCombinatória”, com os três métodos descritos no Exercício I para o cálculo de Permutações, Arranjos e Combinações. Crie outras três classes de nomes “Permutação”, “Arranjo” e “Combinação”, herdeiras de IAnáliseCombinatória, que implementem os métodos definidos. Crie uma classe chamada “Cálculo”, que possua um construtor que receba uma instância de IAnáliseCombinatória e contenha o método “ExecutaCálculo”, capaz de chamar os métodos definidos nas classes “Permutação”, “Arranjo” e “Combinação”. No programa principal instancie um objeto do tipo “Cálculo” e execute exemplos para os cálculos definidos Exercício III Crie um programa que contenha uma classe abstrata chamada Funcionário e outras duas classes, Administrativo e Vendedor, herdeiras de Funcionário. O programa deverá cadastrar o Nome, Matrícula, e salário de todos os funcionários da empresa. No caso dele ser Administrativo deverá também cadastrar o Nome do Setor em que ele trabalha. Se ele for Vendedor deverá cadastrar o Percentual de Comissão que ele ganha sobre as vendas dele. Implemente métodos exclusivos para Leitura de Dados e Listagem dos dois tipos de funcionários da empresa. Utilize-se de Métodos Abstratos e Virtuais.