# Fundamentos da Lógica Session Three ## It's always time to restart autor: Guilherme Oliveira Verissimo turma: InfoC número: 21 [toc] ### Trigonometria 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: ```csharp= public class Calendario { using System; public class Trigonometria { //▪ Calcular a área do retângulo baseado em sua altura e base. public int AreaRetangulo (int altura, int basee) { return altura * basee; } //▪ Calcular o perímetro do retângulo baseado em sua altura e base. public int PerimetroRetangulo (int altura, int basee) { return altura * 2 + basee * 2; } //▪ Verificar se dois retângulos são iguais baseado em suas áreas. public bool RetangulosIguais (int altura1, int base1, int altura2, int base2) { int area1 = AreaRetangulo (altura1, base1); int area2 = AreaRetangulo (altura2, base2); return area1 == area2; } } Trigonometria trig = new Trigonometria(); int Area = trig.AreaRetangulo (10, 5); Console.WriteLine("A area do retangulo é: " + Area); int Perimetro = trig.PerimetroRetangulo(10, 5); Console.WriteLine("O perimetro do retangulo é: " + Perimetro); bool RetanIguais = trig.RetangulosIguais(10, 5, 25, 2); Console.WriteLine("Areas iguais: " + RetanIguais); // A area do retangulo é: 50 // O perimetro do retangulo é: 30 // Areas iguais: True ``` ### Forma / Trigonometria 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: ```csharp= using System; public class Forma { public double altura { get; set; } public double basee { get; set; } } public class Trigonometria { //▪ Calcular a área do retângulo baseado em sua altura e base abstraído em um tipo composto. public double AreaRetangulo (Forma forma) { return forma.altura * forma.basee; } //▪ Calcular a área do triângulo baseado em sua altura e base abstraído em um tipo composto. public double AreaTriangulo (Forma forma) { return forma.altura * forma.basee / 2; } //▪ Calcular a área do paralelogramo baseado em sua altura e base abstraído em um tipo composto. public double AreaParalelogramo (Forma forma) { return forma.altura * forma.basee; } } Trigonometria trig = new Trigonometria(); Forma forma = new Forma(); forma.altura = 10; forma.basee = 5; double AreaRetan = trig.AreaRetangulo(forma); Console.WriteLine("A area do rentagulo é: " + AreaRetan); double AreaTrian = trig.AreaTriangulo(forma); Console.WriteLine("A area do triangulo é: " + AreaTrian); double AreaParale = trig.AreaParalelogramo(forma); Console.WriteLine("A area do Paralelogramo é: " + AreaParale); // A area do rentagulo é: 50 // A area do triangulo é: 25 // A area do Paralelogramo é: 50 ``` ### Calendário 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: ```csharp= using System; public class Pessoa { public string Nome { get; set; } public DateTime Niver { get; set; } } public class Calendario { //▪ Retorne o primeiro dia do mês a partir de uma data. public DateTime PrimeiroDia (DateTime data) { return new DateTime (data.Year, data.Month, 01); } //▪ Retorne o último dia do mês a partir de uma data. public DateTime UltimoDia (DateTime data) { int Dia = DateTime.DaysInMonth(data.Year, data.Month); return new DateTime (data.Year, data.Month, Dia); } //▪ Verifique se o mês possui 31 dias a partir de uma data. public bool Possui31Dias (DateTime data) { int Dia = DateTime.DaysInMonth(data.Year, data.Month); return Dia == 31; } //▪ Verifique se uma data cai em uma sexta-feira 13. public bool SextaFeira13 (DateTime data) { DayOfWeek Sexta = data.DayOfWeek; return Sexta == DayOfWeek.Friday; } //▪ 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. public string SemanasParaNiver (Pessoa pessoa) { DateTime Atual = DateTime.Now; DateTime Nova = new DateTime(pessoa.Niver.Year, pessoa.Niver.Month, pessoa.Niver.Day); TimeSpan Dias = Nova - Atual; double Semanas = Math.Round(Dias.TotalDays / 7, 1); return pessoa.Nome + ", faltam " + Semanas + " semanas para seu niver"; } //▪ Retorne se uma pessoa é de Libra a partir do dia em que nasceu abstraído em um tipo composto. public bool SouDeLibra (Pessoa pessoa) { DateTime Setembro = new DateTime(pessoa.Niver.Year, 09, 23); DateTime Outubro = new DateTime(pessoa.Niver.Year, 10, 22); return pessoa.Niver >= Setembro && Outubro >= pessoa.Niver; } } Calendario data = new Calendario(); DateTime dataa = new DateTime(2021, 12, 15); DateTime PrimDia = data.PrimeiroDia(dataa); Console.WriteLine("O primeiro dia do mês é: " + PrimDia); DateTime UltDia = data.UltimoDia(dataa); Console.WriteLine("O ultimo dia do mês é: " + UltDia); bool Possui31 = data.Possui31Dias(dataa); Console.WriteLine("O mês possui 31 dia: " + Possui31); bool Sexta13 = data.SextaFeira13(dataa); Console.WriteLine("O dia cai em uma sexta feira 13: " + Sexta13); Pessoa pessoa = new Pessoa(); pessoa.Niver = new DateTime(2021, 10, 11); pessoa.Nome = "Guilherme Oliveira Verissimo"; string SemanNiver = data.SemanasParaNiver(pessoa); Console.WriteLine(SemanNiver); bool SouLibra = data.SouDeLibra(pessoa); Console.WriteLine("Pertenço ao signo de libra: " + SouLibra); // O primeiro dia do mês é: 12/1/2021 12:00:00 AM // O ultimo dia do mês é: 12/31/2021 12:00:00 AM // O mês possui 31 dia: True // O dia cai em uma sexta feira 13: False // Guilherme Oliveira Verissimo, faltam 21.7 semanas para seu niver // Pertenço ao signo de libra: True ``` ### RegistroBRValidator 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: ```csharp= using System; public class RegistroBRValidator { //▪ 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. public bool ValidarCadastro (string email, string senha) { bool Contem = email.Contains("@"); int Posicao = email.IndexOf("@"); string Subs = email.Substring(0, Posicao); int Carac1 = email.Length; bool DoisAntes = Carac1 >= 2; string Subss = email.Substring(Posicao); int Carac2 = Subss.Length; bool DoisDepois = Carac2 >= 3; bool emailCorreto = Contem && DoisAntes && DoisDepois; bool Senha = senha.Contains("a") || senha.Contains("e") || senha.Contains("i") || senha.Contains("o") || senha.Contains("u"); bool senhaCarac = senha.Contains("!") || senha.Contains("@") || senha.Contains("#") || senha.Contains("$") || senha.Contains("%") || senha.Contains("&") || senha.Contains("*"); bool tamanho = senha.Length >= 8; bool senhaCorreta = Senha && senhaCarac && tamanho; return emailCorreto && senhaCorreta; } //▪ 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. public bool ValidarDominio (string Dominio) { bool FinalValido = Dominio.Contains(".com.br"); string Numero = Dominio.Substring(1); bool ContemNr = Dominio.Contains("0") || Dominio.Contains("1") || Dominio.Contains("2") || Dominio.Contains("3") || Dominio.Contains("4") || Dominio.Contains("5") || Dominio.Contains("6") || Dominio.Contains("7") || Dominio.Contains("8") || Dominio.Contains("9"); bool Neg = ! ContemNr; int Pont = Dominio.IndexOf("."); string Subs = Dominio.Substring(0, Pont); int QtdCarac = Subs.Length; bool Maior = QtdCarac >= 5; return Maior && FinalValido && Neg; } } string Email = "guilherme@gmail.com"; string Senha = "guioliveira123#"; RegistroBRValidator registro = new RegistroBRValidator(); bool validarcadas = registro.ValidarCadastro(Email, Senha); Console.WriteLine("O cadastro é válido: " + validarcadas); string Dominio = "guilherme.com.br"; bool validardomin = registro.ValidarDominio(Dominio); Console.WriteLine("O dominio é válido: " + validardomin); // O cadastro é válido: True // O dominio é válido: True ``` ### Retangulo / Cilindro / Trigonometria 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: ```csharp= using System; public class Retangulo { public double altura { get; set; } public double basee { get; set; } } public class Cilindro { public double raio { get; set; } public double altura { get; set; } } public class Trigonometria { //▪ Calcular a área do retângulo. public double AreaRetangulo (Retangulo retan) { return retan.altura * retan.basee; } //▪ Calcular o volume do cilindro. public double VolumeCilindro (Cilindro cilin) { return 3.14 * Math.Pow(cilin.raio, 2) * cilin.altura; } //▪ Verificar se dois retângulos são iguais baseado em sua área. Utilize a ideia de função composta. public bool AreasIguais (Retangulo retan1, Retangulo retan2) { double area1 = AreaRetangulo (retan1); double area2 = AreaRetangulo (retan2); return area1 == area2; } //▪ Verificar se é possível transferir o conteúdo do primeiro cilindro ao segundo. Utilize a ideia de função composta. public bool TransferenciaPossivel (Cilindro cilin1, Cilindro cilin2) { double cilindro1 = VolumeCilindro (cilin1); double cilindro2 = VolumeCilindro (cilin2); return cilindro1 <= cilindro2; } } Trigonometria trig = new Trigonometria(); Retangulo retan = new Retangulo(); retan.altura = 10; retan.basee = 5; double AreaRetan = trig.AreaRetangulo(retan); Console.WriteLine("A area do retangulo é: " + AreaRetan); Cilindro cilin = new Cilindro(); cilin.raio = 5; cilin.altura = 15; double VolumeCilin = trig.VolumeCilindro(cilin); Console.WriteLine("O volume do cilindro é: " + VolumeCilin); Retangulo retan1 = new Retangulo(); retan1.altura = 20; retan1.basee = 2; Retangulo retan2 = new Retangulo(); retan2.altura = 40; retan2.basee = 1; bool AreasIgua = trig.AreasIguais(retan1, retan2); Console.WriteLine("A area dos retangulos são iguais: " + AreasIgua); Cilindro cilin1 = new Cilindro(); cilin1.raio = 3; cilin1.altura = 7; Cilindro cilin2 = new Cilindro(); cilin2.raio = 4; cilin2.altura = 8; bool TransfePossivel = trig.TransferenciaPossivel(cilin1, cilin2); Console.WriteLine("A tranferência será possível: " + TransfePossivel); // A area do retangulo é: 50 // O volume do cilindro é: 1177.5 // A area dos retangulos são iguais: True // A tranferência será possível: True ``` ### Compra / Brecho ▪ 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 ```csharp= using System; 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 compra) { double calca = compra.QtdCalca * 30; double camiseta = compra.QtdCamiseta * 30; double blusa = compra.QtdBlusa * 30; return calca + camiseta + blusa; } private double TotalFeminino (Compra compra) { double calca = compra.QtdCalca * 40; double camiseta = compra.QtdCamiseta * 40; double blusa = compra.QtdBlusa * 40; return calca + camiseta + blusa; } private double TotalInfantil (Compra compra) { double calca = compra.QtdCalca * 20; double camiseta = compra.QtdCamiseta * 20; double blusa = compra.QtdBlusa * 20; return calca + camiseta + blusa; } private double TotalCalcados (int qtdCalcadoMasculino, int qtdCalcadoFeminino, int qtdCalcadoInfantil) { int qtdMasculino = qtdCalcadoMasculino * 35; int qtdFeminino = qtdCalcadoFeminino * 35; int qtdInfantil = qtdCalcadoInfantil * 35; return qtdMasculino + qtdFeminino + qtdInfantil; } public double CalcularTotal (Compra masculino, Compra feminino, Compra infantil) { double totalMasc = TotalMasculino(masculino); double totalFemi = TotalFeminino(feminino); double totalInfan = TotalInfantil(infantil); double totalcalcados = TotalCalcados(masculino.Qtdcalcados, feminino.Qtdcalcados, infantil.Qtdcalcados); return totalMasc + totalFemi + totalInfan + totalcalcados; } } Compra masculino = new Compra(); masculino.QtdCalca = 6; masculino.QtdCamiseta = 9; masculino.QtdBlusa = 5; masculino.Qtdcalcados = 7; 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 CalcTotal = brecho.CalcularTotal(masculino, feminino, infantil); Console.WriteLine("O total referente à compras no brecho foi: " + CalcTotal); // O total referente à compras no brecho foi: 2990 ``` ### Pedido / Nota / LojaMoveis 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 ```csharp= using System; 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 { private double ValorDesconto (double valorcompra, double cupomdesconto) { double desconto = (valorcompra / 100) * cupomdesconto; return desconto + valorcompra; } private double Garantia (double valorcompra, int anosgarantia) { return (valorcompra / 100) * 15 * anosgarantia; } private double ValorFrete (int distancia) { return distancia / 10 * 3; } private double ValorJuros (double valorcompra, int parcelas) { double porcen = (valorcompra / 100) * 3; return porcen * parcelas; } public Nota CalcularCompra (Pedido pedido, double cupom) { double desconto = ValorDesconto(pedido.Valor, cupom); double garantia = Garantia(pedido.Valor, pedido.AnosGarantia); double distancia = ValorFrete(pedido.DistanciaEntregaKm); double semiTotal = desconto + garantia + distancia; double valorjuros = ValorJuros(semiTotal, pedido.Parcelas); double Total = semiTotal + valorjuros; DateTime data = DateTime.Now; Nota nota = new Nota(); nota.ValorFinal = Total; nota.NotaFiscal = "NF" + data.Year + data.Month + data.Day + data.Hour + data.Minute; return nota; } } Pedido pedido = new Pedido(); pedido.Valor = 100; pedido.AnosGarantia = 1; pedido.DistanciaEntregaKm = 30; pedido.Parcelas = 12; double Cupom = 10; LojaMoveis compra = new LojaMoveis(); Nota TotalCompra = compra.CalcularCompra(pedido, Cupom); Console.WriteLine(TotalCompra.NotaFiscal); Console.WriteLine(TotalCompra.ValorFinal); // NF20215141710 // 182.24 ```
{"metaMigratedAt":"2023-06-16T00:15:56.467Z","metaMigratedFrom":"Content","title":"Fundamentos da Lógica Session Three","breaks":true,"contributors":"[{\"id\":\"31e7052c-d777-4fb0-b189-63fab945e035\",\"add\":21521,\"del\":5708}]"}
Expand menu