# Session Three: It's always time to restart | Fund. Lógica autor: Alan Oliveira Rocha Santiago turma: InfoB número: 02 [TOC] # Exercicio 1 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: - Calcular a área do retângulo baseado em sua altura e base. - Calcular o perímetro do retângulo baseado em sua altura e base. - Verificar se dois retângulos são iguais baseado em suas áreas. ```csharp= public class Trigonometria { public int AreaRetangulo(int altura, int basee) { int area = altura * basee; return area; } public int PerimetroRetangulo(int a1, int b1, int a2, int b2) { int perimetro = (a1 + a2) + (b1 + b2); return perimetro; } public bool RetangulosIguais(int altura1, int basee1, int altura2, int basee2) { int area1 = AreaRetangulo(altura1,basee2); int area2 = AreaRetangulo(altura2,basee2); bool igual = area1 == area2; return igual; } } Trigonometria trig = new Trigonometria(); int AreaR = trig.AreaRetangulo(20 , 5); int perimetroR = trig.PerimetroRetangulo(20, 5, 20, 5); bool IguaisR = trig.RetangulosIguais(20, 6, 10, 5); Console.WriteLine($"Ex1: A Area do Retangulo será de {AreaR}"); Console.WriteLine($"Ex1: O perimetro do retangulo é {perimetroR}"); Console.WriteLine($"Ex1: As areas dos retangulos são iguais? {IguaisR}"); //Ex1: A Area do Retangulo será de 100 //Ex1: O perimetro do retangulo é 50 //Ex1: As areas dos retangulos são iguais? False ``` # Exercicio 2 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: - Calcular a área do retângulo baseado em sua altura e base abstraído em um tipo composto. - Calcular a área do triângulo baseado em sua altura e base abstraído em um tipo composto. - Calcular a área do paralelogramo baseado em sua altura e base abstraído em um tipo composto. ```csharp= public class Forma2 { public double Altura{get; set;} public double Basee{get; set;} } public class Trigonometria2 { public double AreaRetangulo2(Forma2 ret) { double x = ret.Altura * ret.Basee; return x; } public double AreaTriangulo2(Forma2 trig) { double x = (trig.Altura * trig.Basee) / 2; return x; } public double AreaParalelogramo(Forma2 para) { double x = para.Altura * para.Basee; return x; } } Forma2 forma = new Forma2(); forma.Altura = 20; forma.Basee = 5; Forma2 forma2 = new Forma2(); forma2.Altura = 18; forma2.Basee = 3; Trigonometria2 trigonometria2 = new Trigonometria2(); double ar = trigonometria2.AreaRetangulo2(forma); double at = trigonometria2.AreaTriangulo2(forma2); double ap = trigonometria2.AreaParalelogramo(forma); Console.WriteLine("Ex2: a area do retangulo será de " + ar); Console.WriteLine("Ex2: a area do triangulo será de " + at); Console.WriteLine("Ex2: a area do paralelograma será de " + ap); //Ex2: a area do retangulo será de 100 //Ex2: a area do triangulo será de 27 //Ex2: a area do paralelograma será de 100 ``` # Exercicio 3 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: - Retorne o primeiro dia do mês a partir de uma data. - Retorne o último dia do mês a partir de uma data. - Verifique se o mês possui 31 dias a partir de uma data. - Verifique se uma data cai em uma sexta-feira 13 - Retorne quantas semanas faltam para chegar no aniversário de uma pessoa a partir de seu nome e data de aniversário abstraído em um tipo composto. O retorno deve seguir o template: “XXXX, faltam XXXX semanas para seu niver.” - Retorne se uma pessoa é de Libra a partir do dia em que nasceu abstraído em um tipo composto. ```csharp= public class Pessoa { public string Nome{get; set;} public DateTime Niver{get; set;} } public class Calendario { public DateTime PrimeiroDia(DateTime data) { DateTime pri = data.AddDays(-data.Day).AddDays(1); return pri; } public DateTime UltimoDia(DateTime data) { DateTime ult = data.AddMonths(1).AddDays(-data.Day); return ult; } public bool Possui31Dias(DateTime data) { DateTime dt = data.AddMonths(1).AddDays(-data.Day); bool p31 = dt.Day == 31; return p31; } public bool SextaFeira13(DateTime data) { bool dt = data.DayOfWeek == DayOfWeek.Friday; bool dt2 = data.Day == 13; bool sexta = dt == true && dt2 == true; return sexta; } public string SemanasParaNiver(Pessoa data) { DateTime hj = DateTime.Now; DateTime aniversario = new DateTime(hj.Year, data.Niver.Month , data.Niver.Day); TimeSpan x = aniversario - hj; double y = x.TotalDays / 7; double z = Math.Round(y); string text = $"{data.Nome}, faltam {z} semanas para seu niver."; return text; } public bool SouDeLibra(Pessoa pessoa) { bool a = pessoa.Niver.Month == 9 && pessoa.Niver.Day >= 23; bool b = pessoa.Niver.Month == 10 && pessoa.Niver.Day <= 21; return a == true || b == true; } } DateTime dt1 = new DateTime(2004, 9, 30); DateTime dt2 = new DateTime(1999, 12, 23); DateTime dt3 = new DateTime(2008, 12, 13); Pessoa p1 = new Pessoa(); p1.Niver = dt1; p1.Nome = "Paulo"; Calendario c1 = new Calendario(); DateTime pdia = c1.PrimeiroDia(dt2); DateTime udia = c1.UltimoDia(dt2); bool t31dia = c1.Possui31Dias(dt3); bool sf13 = c1.SextaFeira13(dt3); string sNiver = c1.SemanasParaNiver(p1); bool sdLibra = c1.SouDeLibra(p1); Console.WriteLine("Ex3 " + pdia); Console.WriteLine("Ex3 " + udia); Console.WriteLine("Ex3 " + t31dia); Console.WriteLine("Ex3 " + sf13); Console.WriteLine("Ex3 " + sNiver); Console.WriteLine("Ex3 " + sdLibra); //Ex3 01/12/1999 00:00:00 //Ex3 31/12/1999 00:00:00 //Ex3 True //Ex3 False //Ex3 Paulo, faltam 16 semanas para seu niver. //Ex3 True ``` # Exercicio 4 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: ▪ 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. - 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. - Deve-se enviar o domínio completo. ex: meudominio.com.br ```csharp= public class RegistroBRValidador { public bool ValidarEmail(string email, string senha) { bool v1 = senha.Length >= 8; bool v2 = senha.Contains("a") || senha.Contains("e") || senha.Contains("i") || senha.Contains("o") || senha.Contains("u"); bool v3 = senha.Contains("!") || senha.Contains("@") || senha.Contains("#") || senha.Contains("$") || senha.Contains("%") || senha.Contains("&") || senha.Contains("*"); bool v4 = email.Contains("@"); bool v5 = email.Substring(0,email.IndexOf("@")).Length > 2 && email.Substring(email.IndexOf("@"),0).Length > 2; bool vtotal = v1 && v2 && v3 && v4 && v5; return vtotal; } public bool ValidarDominio(string dominio) { bool v1 = dominio.EndsWith(".com.br"); bool v2 = dominio[0] != '1' && dominio[0] != '2' && dominio[0] != '3' && dominio[0] != '4' && dominio[0] != '5' && dominio[0] != '6' && dominio[0] != '7' && dominio[0] != '8' && dominio[0] != '9'; bool v3 = dominio.Substring(0,dominio.IndexOf(".com.br")).Length >= 5; return v1 && v2 && v3; } } RegistroBRValidador vl4 = new RegistroBRValidador(); bool vle = vl4.ValidarEmail("alan@hotmail.com", "#abobora1234#"); bool vld = vl4.ValidarDominio("meudominio.com.br"); Console.WriteLine("Ex4 " + vle); Console.WriteLine("Ex4 " + vld); //Ex4 False //Ex4 True ``` # Exercicio 5 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: - Calcular a área do retângulo. - Calcular o volume do cilindro. - Verificar se dois retângulos são iguais baseado em sua área. Utilize a ideia de função composta. - Verificar se é possível transferir o conteúdo do primeiro cilindro ao segundo. Utilize a ideia de função composta. ```csharp= public class Retangulo5 { public double Altura{get; set;} public double Base{get; set;} } public class Cilindro5 { public double Raio{get; set;} public double Altura{get; set;} } public class Trigonometria5 { public bool AreasIguais(Retangulo5 ret1, Retangulo5 ret2) { double rt1 = AreaRetangulo(ret1); double rt2 = AreaRetangulo(ret2); return rt1 == rt2; } public double AreaRetangulo(Retangulo5 ret) { double area = ret.Base * ret.Altura; return area; } public bool TransferenciaPossivel(Cilindro5 ci1, Cilindro5 ci2) { double volume1 = VolumeCilindro(ci1); double volume2 = VolumeCilindro(ci2); return volume1 <= volume2; } public double VolumeCilindro(Cilindro5 ci) { double pi = Math.PI; double AB = pi * Math.Pow(ci.Raio,2); double volume = AB * ci.Altura; return volume; } } // Retangulo5 rt = new Retangulo5(); rt.Altura = 10; rt.Base = 20; Retangulo5 rt1 = new Retangulo5(); rt1.Altura = 10; rt1.Base = 20; Retangulo5 rt2 = new Retangulo5(); rt2.Altura = 12; rt2.Base = 20; // Cilindro5 ci1 = new Cilindro5(); ci1.Altura = 20; ci1.Raio = 10; Cilindro5 ci2 = new Cilindro5(); ci2.Altura = 20; ci2.Raio = 10; // Trigonometria5 trig5 = new Trigonometria5(); // bool ai5 = trig5.AreasIguais(rt1,rt2); double ar5 = trig5.AreaRetangulo(rt); bool tp5 = trig5.TransferenciaPossivel(ci1,ci2); double vlc5 = trig5.VolumeCilindro(ci1); Console.WriteLine("Ex5 " + ai5); Console.WriteLine("Ex5 " + ar5); Console.WriteLine("Ex5 " + tp5); Console.WriteLine("Ex5 " + vlc5); //Ex5 200 //Ex5 True //Ex5 6283,185307179587 ``` # Exercicio 6 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: - 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: * Masculina = R$ 30,00 * Feminina = R$ 40,00 * Infantil = R$ 20,00 * Calçados = R$ 35,00 - 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= 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 { public double CalcularTotal(Compra masculino, Compra feminino, Compra infantil) { double masc = TotalMasculino(masculino); double femi = TotalFeminino(feminino); double infa = TotalInfantil(infantil); double calsados = TotalCalcados(masculino,feminino,infantil); double total = masc + femi + infa + calsados; return total; } private double TotalMasculino(Compra compra) { double x = (compra.QtdCamiseta + compra.QtdBlusa + compra.QtdCalca) * 30; return x; } private double TotalFeminino(Compra compra) { double x = (compra.QtdCamiseta + compra.QtdBlusa + compra.QtdCalca) * 40; return x; } private double TotalInfantil(Compra compra) { double x = (compra.QtdCamiseta + compra.QtdBlusa + compra.QtdCalca) * 20; return x; } private double TotalCalcados(Compra masc, Compra femi, Compra infa) { double x = (masc.QtdCalcados + femi.QtdCalcados + infa.QtdCalcados) * 35; return x; } } Compra masculino = new Compra(); masculino.QtdCalca = 1; masculino.QtdCamiseta = 1; masculino.QtdBlusa = 1; masculino.QtdCalcados = 1; Compra feminino = new Compra(); feminino.QtdCalca = 1; feminino.QtdCamiseta = 1; feminino.QtdBlusa = 1; feminino.QtdCalcados = 1; Compra infantil = new Compra(); infantil.QtdCalca = 1; infantil.QtdCamiseta = 1; infantil.QtdBlusa = 1; infantil.QtdCalcados = 1; Brecho brecho = new Brecho(); double brecho6 = brecho.CalcularTotal(masculino, feminino, infantil); Console.WriteLine("Ex6 " + brecho6); //Ex6 375 ``` # Exercicio 7 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: - Calcular o total de uma compra em uma loja de móveis seguindo as seguintes regras de negócio: - (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 * Utilize ideia de função composta. * Utilize a ideia de tipos compostos. * As funções auxiliares devem ser marcadas como private. ```csharp= 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 vlDesc = ValorDesconto(pedido.Valor, cupom); double vlGar = ValorGarantia(pedido.Valor, pedido.AnosGarantia); double vlFrete = ValorFrete(pedido.DistanciaEntregaKm); double vlJuros = ValorJuros(pedido.Valor, pedido.Parcelas); double total = vlDesc + vlGar + vlFrete + vlJuros; DateTime dt = DateTime.Now; Nota n = new Nota(); n.ValorFinal = total; n.NotaFiscal = "NF" + dt.ToString("yyyyMMddHHmm"); return n; } private double ValorDesconto(double valorCompra, double cupom) { double x = valorCompra * (cupom / 100); double y = valorCompra - x; return y; } private double ValorGarantia(double valorCompra, int anos) { double x = valorCompra * (15 / 100); double y = (anos * x) + valorCompra; return y; } private double ValorFrete(int distancia) { double x = distancia / (10 * 3); return x; } private double ValorJuros(double valor, int parcelas) { double x = valor * Math.Pow(1 + 0.03, parcelas); return x; } } Pedido ped = new Pedido(); ped.Valor = 20; ped.AnosGarantia = 3; ped.DistanciaEntregaKm = 35; ped.Parcelas = 10; LojaMoveis lm = new LojaMoveis(); double cp = 20; Nota notafical = lm.CalcularCompra(ped,cp); Console.WriteLine("Ex7 " + notafical.ValorFinal); Console.WriteLine("Ex7 " + notafical.NotaFiscal); //Ex7 63,87832758688245 //Ex7 NF202106101955 ```
{"metaMigratedAt":"2023-06-16T02:18:16.762Z","metaMigratedFrom":"Content","title":"Session Three: It's always time to restart | Fund. Lógica","breaks":true,"contributors":"[{\"id\":\"1ac86fe9-aad5-49b4-b562-fee077af4a56\",\"add\":15478,\"del\":13}]"}
Expand menu