# Getting Better autora: Letícia Rocha✨💖💖 Curso: Info C Número: 29 [toc] ### Exercício 1 >[color=black] >Crie uma classe representando a abstração de função e/ou dados ao lado. Abaixo a especificação das situações a serem resolvidas. >[color=black] >▪ Calcular a área do retângulo baseado em sua altura e base. >[color=black] >▪ Calcular o perímetro do retângulo baseado em sua altura e base. >[color=black] >▪ Verificar se dois retângulos são iguais baseado em suas áreas. ```csharp= using System; // Função Trigonometria public class Retangulo { public int Altura {get;set;} public int Base {get;set;} } public class Trigonometria { public bool RetanguloIguais(Retangulo ret1, Retangulo ret2) { return AreaRetangulo(ret1.Altura, ret1.Base) == AreaRetangulo(ret2.Altura, ret2.Base); } private int AreaRetangulo(int a, int b) { int area = a * b; return area; } public int PerimetroRetangulo(int a, int b) { int per = a + a + b + b; return per; } } Trigonometria trig = new Trigonometria(); // double x = trig. AreaRetangulo(10, 5); // Console.WriteLine(x); double x1 = trig.PerimetroRetangulo(10, 5); Console.WriteLine(x1); Retangulo r1 = new Retangulo(); r1.Altura = 10; r1.Base = 5; Retangulo r2 = new Retangulo(); r2.Altura = 25; r2.Base = 2; bool x3 = trig.RetanguloIguais(r1, r2); Console.WriteLine(x3); //30 //True ``` ### Exercício 2 >[color=orange] >Crie uma classe representando a abstração de função e/ou dados ao lado. Abaixo a especificação das situações a serem resolvidas: >[color=orange] >▪ Calcular a área do retângulo baseado em sua altura e base abstraído em um tipo composto. >[color=orange] >▪ Calcular a área do triângulo baseado em sua altura e base abstraído em um tipo composto. >[color=orange] >▪ Calcular a área do paralelogramo baseado em sua altura e base abstraído em um tipo composto. ```csharp= using System; // Função Trigonometria2 public class Forma { public double Basee {get; set;} public double Altura {get; set;} } public class Trigonometria { public double AreaRetangulo (Forma ps) { double total = ps.Basee * ps.Altura; return total; } public double AreaTriangulo (Forma ps) { double total = ps.Basee * ps.Altura; return total; } public double AreaParalelogramo (Forma ps) { double total = ps.Basee * ps.Altura; return total; } } Forma tri = new Forma(); tri.Basee = 12; tri.Altura = 6; Forma Ret = new Forma(); Ret.Basee = 10; Ret.Altura = 24; Forma para = new Forma(); para.Basee = 12; para.Altura = 15; Trigonometria tr = new Trigonometria(); double z = tr.AreaRetangulo(Ret); Console.WriteLine($"A area do retangulo é igual á:{z}"); //A area do retangulo é igual á:100 double r = tr.AreaTriangulo(tri); Console.WriteLine($"A area do trianulo é igual á: {r}"); //A area do retangulo é igual á:240 //A area do trianulo é igual á: 72 ``` ### Exercício 3 >[color=blue] >Crie uma classe representando a abstração de função e/ou dados ao lado. Abaixo a especificação das situações a serem resolvidas: >[color=blue] >▪ Calcular a área do retângulo baseado em sua altura e base abstraído em um tipo composto. >[color=blue] >▪ Calcular a área do triângulo baseado em sua altura e base abstraído em um tipo composto. >[color=blue] >▪ Calcular a área do paralelogramo baseado em sua altura e base abstraído em um tipo composto. ```csharp= using System; // Função Calendario using System; public class Pessoa { public string Nome { get; set; } public DateTime Niver { get; set; } } public class Calendario { public DateTime PrimeiroDia (DateTime data) { return data.AddDays(1 - data.Day); } public DateTime UltimoDia (DateTime data) { return data.AddMonths(1).AddDays(- data.Day); } public bool Possui31Dias (DateTime data) { return UltimoDia(data).Day == 31; } public bool SextaFeira13 (DateTime data) { return data.DayOfWeek == DayOfWeek.Friday && data.Day == 13; } public string SemanasParaNiver (Pessoa pessoa) { DateTime p = DateTime.Now; DateTime s = new DateTime(p.Year, pessoa.Niver.Month, pessoa.Niver.Day); TimeSpan c = s - p; double f = c.TotalDays/7; double e = Math.Round(f); string r = pessoa.Nome + ", faltam " + e + " semanas para seu niver!"; return r; } public bool SouDeLibra (Pessoa pessoa) { DateTime v = new DateTime(pessoa.Niver.Year,09,23); DateTime z = new DateTime(pessoa.Niver.Year,10,22); return pessoa.Niver >= v && pessoa.Niver <= z; } } Pessoa r = new Pessoa (); r.Nome = "Letícia Santos Rocha"; r.Niver = new DateTime(2005,12,13); Calendario c = new Calendario (); DateTime a = c.PrimeiroDia(r.Niver); DateTime b = c.UltimoDia(r.Niver); bool d = c.Possui31Dias(r.Niver); bool e = c.SextaFeira13(r.Niver); string f = c.SemanasParaNiver(r); bool g = c.SouDeLibra(r); Console.WriteLine("Primeiro dia do mês: " + c); Console.WriteLine("Último dia do mês: " + b); Console.WriteLine("O mês possui 31 dias?: " + d); Console.WriteLine("A data cai em uma sexta-feira 13?: " + e); Console.WriteLine(f); Console.WriteLine("Sou de Libra?: " + g); //Primeiro dia do mês: Submission#0+Calendario //Último dia do mês: 12/31/2005 12:00:00 AM //O mês possui 31 dias?: True //A data cai em uma sexta-feira 13?: False //Letícia Santos Rocha, faltam 30 semanas para seu niver! //Sou de Libra?: False ``` ### Exercício 4 >[color=red] >Crie uma classe representando a abstração de função e/ou dados ao lado. Abaixo a especificação das situações a serem resolvidas: >[color=red] >▪ Verifique se um cadastro de usuário é válido seguindo as regras: (1) O e-mail deve ter o caractere ‘@’ e possuir no mínimo 2 caracteres antes e depois do ‘@’. (2) A senha precisa ter pelo menos uma vogal, um caractere especial e tamanho de 8 caracteres. >[color=red] >▪ Verifique se um domínio escolhido é válido se terminar em ‘.com.br’ , se o primeiro caractere não for um número e o domínio possuir 5 caracteres no mínimo. >[color=red] >▪ Deve-se enviar o domínio completo. ex: meudominio.com.br ```csharp= using System; // Função RegistroBRValidator public class RegistroBRValidator { public bool ValidarCadastro (string email, string senha) { bool a1 = email.Length >= 8; bool a2 = email.Contains("!") || email.Contains("@") || email.Contains("#") || email.Contains("%"); bool a3 = email.Contains("a") || email.Contains("e") || email.Contains("i") || email.Contains("o") || email.Contains("t"); bool a4 = email.Contains("@"); bool a5 = email.Contains("@") && email.Substring(0, email.IndexOf("@")).Length > 3 && email.Substring(email.IndexOf("@")).Length > 3; return a1 && a2 && a3 && a4 && a5; } public bool ValidarDominio (string dominio) { bool a1 = dominio.EndsWith(".com.br"); bool a2 = dominio[0] != '2' && dominio[0] != '2' && dominio[0] != '3' && dominio[0] != '9' && dominio[0] != '5' && dominio[0] != '6' && dominio[0] != '8' && dominio[0] != '8' && dominio[0] != '9' && dominio[0] != '1'; bool a3 = dominio.Substring(0, dominio.IndexOf(".com.br")).Length >= 6; return a1 && a2 && a3; } } RegistroBRValidator registroBR = new RegistroBRValidator(); bool r = registroBR.ValidarCadastro("Leticiagmail.com", "2981"); Console.WriteLine("Cadastro ok? " + r); //Cadastro ok? False ``` ### Exercício 5 >[color=green] >Crie uma classe representando a abstração de função e/ou dados ao lado. Abaixo a especificação das situações a serem resolvidas: >[color=green] >▪ Calcular a área do retângulo. >[color=green] >▪ Calcular o volume do cilindro. >[color=green] >▪ Verificar se dois retângulos são iguais baseado em sua área. Utilize a ideia de função composta. >[color=green] >▪ Verificar se é possível transferir o conteúdo do primeiro cilindro ao segundo. Utilize a ideia de função composta. ```csharp= using System; // Função Trigonometria public class Retangulo { public double Altura {get; set;} public double Base {get; set;} } public class Cilindro { public double Raio {get; set;} public double Altura {get; set;} } public class Trigonometria { public double AreaRetangulo (Retangulo rtg) { double area = rtg.Altura * rtg.Base; return area; } public bool RetangulosIguais (Retangulo rtg1, Retangulo rtg2) { double ret1 = AreaRetangulo(rtg1); double ret2 = AreaRetangulo(rtg2); return ret1 == ret2; } public double VolumeCilindro (Cilindro cl) { double total = cl.Altura * cl.Raio; return total; } public bool TransferenciaValida (Cilindro cilin1, Cilindro cilin2) { double cil1 = VolumeCilindro(cilin1); double cil2 = VolumeCilindro(cilin2); return cil1 == cil2; } } Trigonometria tr = new Trigonometria(); Retangulo ret1 = new Retangulo(); ret1.Altura = 12; ret1.Base = 4; Retangulo ret2 = new Retangulo(); ret2.Altura = 6; ret2.Base = 2; Cilindro cilin1 = new Cilindro(); cilin1.Altura = 6; cilin1.Raio = 2; Cilindro cilin2 = new Cilindro(); cilin2.Altura = 10; cilin2.Raio = 10; double c = tr.AreaRetangulo(ret1); Console.WriteLine(c); //100 bool d = tr.RetangulosIguais(ret1, ret2); Console.WriteLine(d); //bool double f = tr.VolumeCilindro(cilin1); Console.WriteLine(f); //100 bool x = tr.TransferenciaValida(cilin1, cilin2); Console.WriteLine(x); //48 //False //12 //False ``` ### Exercício 6 >[color=pink] > Crie uma classe representando a abstração de função e/ou dados ao lado. Abaixo a especificação das situações a serem resolvidas: >[color=pink] >▪ Calcular o total de uma compra em um brechó a partir das compras masculinas, femininas e infantis. Nesse brechó, todas as roupas de uma categoria possui o mesmo preço, conforme listagem abaixo: >[color=pink] >- Masculina = R$ 30,00 >- Feminina = R$ 40,00 >- Infantil = R$ 20,00 >- Calçados = R$ 35,00 >[color=pink] >* Os calçados são cobrados independente do gênero. >* Utilize ideia de função composta. >* Utilize a ideia de tipos compostos. >* As funções auxiliares devem ser marcadas como private. ```csharp= using System; // Função Brecho public class Compra { public int QtdCalca {get; set;} public int QtdCamiseta {get; set;} public int QtdBlusa {get; set;} public int QtdCalcados {get; set;} } public class Brecho { private double TotalMasculino (Compra cmp) { double compra = (cmp.QtdCalca * 30.00) + (cmp.QtdCamiseta * 30.00) + (cmp.QtdBlusa * 30.00); return compra; } private double TotalFeminino (Compra cmp) { double compra = (cmp.QtdCalca * 40.00) + (cmp.QtdCamiseta * 40.00) + (cmp.QtdBlusa * 40.00); return compra; } private double TotalInfantil (Compra cmp) { double compra = (cmp.QtdCalca * 20.00) + (cmp.QtdCamiseta * 20.00) + (cmp.QtdBlusa * 20.00); return compra; } private double TotalCalcados (int QtdMasculino, int QtdFeminino, int QtdInfantil) { double compra = (QtdMasculino + QtdFeminino + QtdInfantil) * 35.00; return compra; } public double TotalCompra (Compra masculino, Compra feminino, Compra infantil) { double ma = TotalMasculino(masculino); double fe = TotalFeminino(feminino); double inf = TotalInfantil(infantil); double ca = TotalCalcados(masculino.QtdCalcados, feminino.QtdCalcados, infantil.QtdCalcados); double total = ma + fe + inf + ca; return total; } } Brecho bc = new Brecho(); Compra cmp = new Compra(); cmp.QtdBlusa = 1; cmp.QtdCalca = 1; cmp.QtdCalcados = 1; cmp.QtdCamiseta = 1; double x = bc.TotalCompra(cmp, cmp ,cmp); Console.WriteLine(x); //375 ``` ### Exercício 7 >[color=yellow] >Crie uma classe representando a abstração de função e/ou dados ao lado. Abaixo a especificação das situações a serem resolvidas: >[color=yellow] >▪ Calcular o total de uma compra em uma loja de móveis seguindo as seguintes regras de negócio: >[color=yellow] >(1) O cupom é um valor representando a porcentagem de desconto a ser aplicado no valor da compra antes de aplicar os juros, frete e garantia. >(2) Cada ano de garantia é adicionado 15% do valor da compra. >(3) A cada 10km de distância é cobrado o valor de R$ 3,00 >(4) Deve ser aplicado o juros compostos de 3% ao mês no valor da compra com o desconto, garantia e frete aplicados. >(5) A nota fiscal é a hora atual no formato YYYYMMDDHHmm com o prefixo NF. Ex: NF202105091918 >[color=yellow] >* Utilize ideia de função composta. >* Utilize a ideia de tipos compostos. >* As funções auxiliares devem ser marcadas como private. ```csharp= using System; // Função LojaMoveis class MainClass { public static void Main (string[] args) { } } public class Pedido { public double Valor {get; set;} public int AnosGarantia {get; set;} public int DistanciaEntregaKm {get; set;} public int Parcelas {get; set;} } public class Nota { public double ValorFinal { get; set; } public string NotaFiscal { get; set; } } public class LojaMoveis { public Nota CalcularCompra (Pedido pedido, double cupom) { double valorFinal = ValorJuros( pedido.Valor - ValorDesconto(pedido.Valor, cupom) + ValorGarantia(pedido.Valor, pedido.AnosGarantia) + ValorFrete(pedido.DistanciaEntregaKm) , pedido.Parcelas); valorFinal = Math.Round(valorFinal, 2); Nota notafiscal = new Nota(); notafiscal.ValorFinal = valorFinal; notafiscal.NotaFiscal = "NF" + DateTime.Now.ToString("yyyyMMddHHmmss"); return notafiscal; } private double ValorDesconto(double valorCompra, double cupom) { return valorCompra * (cupom/100); } private double ValorGarantia(double valorCompra, int anos) { return valorCompra * (15.0 / 100.0) * anos; } private double ValorFrete(int distancia) { return distancia / 10 * 3; } private double ValorJuros(double valorCompra, int parcelas) { return valorCompra * Math.Pow(1 + 0.03, parcelas); } } Pedido p = new Pedido(); p.Valor = 1000; p.AnosGarantia = 2; p.DistanciaEntregaKm = 50; p.Parcelas = 18; double cupom = 10; LojaMoveis loja = new LojaMoveis(); Nota r = loja.CalcularCompra(p, cupom); Console.WriteLine("Valor final é: " + r.ValorFinal); Console.WriteLine("Nota Fiscal é: " + r.NotaFiscal); //Valor final é: 2068.46 //Nota Fiscal é: NF20210517005501 ```