# SESSION THREE | Fundamentos de Lógica > **Aluna:** Patricia Oliveira Paulino > **Número:** 37 > **Turma:** Info D ## Exercício 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= using System; public class Retangulo { public double Basee {get; set;} public double Altura {get; set;} } public class Trigonometria { public bool RetanguloIguais(Retangulo ret1, Retangulo ret2) { return AreaRetangulo(ret1.Basee, ret1.Altura) == AreaRetangulo(ret2.Basee, ret2.Altura); } public double AreaRetangulo(double a, double b) { double area = a * b; return area; } public double PerimetroRetangulo(double a, double b) { double per = a + a + b + b; return per; } } Trigonometria a = new Trigonometria(); Retangulo r1 = new Retangulo(); r1.Basee = 10; r1.Altura = 20; Retangulo r2 = new Retangulo(); r2.Basee = 2; r2.Altura = 25; double b = a.PerimetroRetangulo(40, 20); Console.WriteLine(b); bool c = a.RetanguloIguais(r1, r2); Console.WriteLine(c); // 120 // False ``` ## Exercício 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= using System; public class Forma { public double Basee {get; set;} public double Altura {get; set;} } public class Trigonometria { public double retangulo(Forma d) { double area1 = d.Basee * d.Altura; return area1; } public double triangulo(Forma d) { double area2 = d.Basee * d.Altura; return area2; } public double paralelogramo(Forma d) { double area3 = d.Basee * d.Altura; return area3; } } Forma tri = new Forma(); tri.Basee = 2; tri.Altura = 10; Forma ret = new Forma(); ret.Basee = 30; ret.Altura = 10; Forma para = new Forma(); para.Basee = 20; para.Altura = 5; Trigonometria e = new Trigonometria(); double a = e.retangulo(ret); Console.WriteLine("A área do retangulo é: " + a); double b = e.triangulo(tri); Console.WriteLine("A área do triangulo é: " + b); double c = e.paralelogramo(para); Console.WriteLine("A área do paralelogramo é: " + c); // A área do retangulo é: 300. // A área do triangulo é: 20. // A área do paralelogramo é: 100. ``` ## Exercício 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= using System; public class Pessoa { public string nome {get; set;} public DateTime niver {get; set;} } public class Calendario { public DateTime PrimeiroDia(DateTime data) { DateTime primeiroDiaDoMes = data.AddDays(1 - data.Day); return primeiroDiaDoMes; } public DateTime UltimoDia(DateTime data) { DateTime ultimoDiaDoMes = data.AddMonths(1).AddDays(- data.Day); return ultimoDiaDoMes; } 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 a = DateTime.Now; DateTime b = new DateTime(a.Year, pessoa.niver.Month, pessoa.niver.Day); TimeSpan c = b - a; double d = c.TotalDays/7; double e = Math.Round(d); string f = pessoa.nome + ", faltam " + e + " semanas para seu niver!"; return f; } public bool SouDeLibra (Pessoa pessoa) { DateTime g = new DateTime(pessoa.niver.Year,09,23); DateTime f = new DateTime(pessoa.niver.Year,10,22); return pessoa.niver >= g && pessoa.niver <= f; } } Pessoa f = new Pessoa(); f.nome = "Barbara Barbosa dos Santos"; f.niver = new DateTime(2004,03,17); Calendario h = new Calendario(); DateTime b = h.PrimeiroDia(f.niver); DateTime i = h.UltimoDia(f.niver); bool j = h.Possui31Dias(f.niver); bool k = h.SextaFeira13(f.niver); string l = h.SemanasParaNiver(f); bool m = h.SouDeLibra(f); Console.WriteLine("Primeiro dia do mês " + b); Console.WriteLine("Último dia do mês " + i); Console.WriteLine("O mês possui 31 dias?: " + j); Console.WriteLine("A data cai em uma sexta-feira 13?: " + k); Console.WriteLine(l); Console.WriteLine("Sou de Libra?: " + m); // Primeiro dia do mês 3/1/2004 12:00:00 AM // Último dia do mês 3/31/2004 12:00:00 AM // O mês possui 31 dias?: True // A data cai em uma sexta-feira 13?: False // Barbara Barbosa dos Santos, faltam -8 semanas para seu niver! // Sou de Libra?: False ``` ## Exercício 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. ```csharp= using System; public class RegistroBRValidator { public bool ValidarCadastro(string email, string senha) { bool v1 = email.Length >= 8; bool v2 = email.Contains("!") || email.Contains("@") || email.Contains("#") || email.Contains("%"); bool v3 = email.Contains("a") || email.Contains("e") || email.Contains("i") || email.Contains("o") || email.Contains("u"); bool v4 = email.Contains("@"); bool v5 = email.Contains("@") && email.Substring(0, email.IndexOf("@")).Length > 2 && email.Substring(email.IndexOf("@")).Length > 2; return v1 && v2 && v3 && v4 && v5; } 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' && dominio[0] != '0'; bool v3 = dominio.Substring(0, dominio.IndexOf(".com.br")).Length >= 5; return v1 && v2 && v3; } } RegistroBRValidator registroBR = new RegistroBRValidator(); bool a = registroBR.ValidarCadastro("barbarabs1703@gmail.com", "831"); Console.WriteLine("Cadrastro ok?: " + a); // Cadrastro ok?: True. ``` ## Exercício 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= 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 { public double AreaRetangulo(Retangulo d) { double area = d.Altura * d.Basee; return area; } public bool RetanguloIguais(Retangulo rt1, Retangulo rt2) { double ret1 = AreaRetangulo(rt1); double ret2 = AreaRetangulo(rt2); return ret1 == ret2; } public double VolumeCilindro(Cilindro cl) { double total = cl.Altura * cl.Raio; return total; } public bool TransferenciaValida(Cilindro cl1, Cilindro cl2) { double ci1 = VolumeCilindro(cl1); double ci2 = VolumeCilindro(cl2); return ci1 == ci2; } } Trigonometria a = new Trigonometria(); Retangulo ret1 = new Retangulo(); ret1.Basee = 2; ret1.Altura = 10; Retangulo ret2 = new Retangulo(); ret2.Basee = 5; ret2.Altura = 4; Cilindro cl1 = new Cilindro(); cl1.Altura = 10; cl1.Raio = 2; Cilindro cl2 = new Cilindro(); cl2.Altura = 5; cl2.Raio = 5; double b = a.AreaRetangulo(ret1); Console.WriteLine(b); double c = a.VolumeCilindro(cl1); Console.WriteLine(c); bool d = a.RetanguloIguais(ret1, ret2); Console.WriteLine(d); bool e = a.TransferenciaValida(cl1, cl2); Console.WriteLine(e); // 20 // 20 // True // False ``` ## Exercício 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= 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 cp) { double compra = (cp.QtdCalca * 30.00) + (cp.QtdCamiseta * 30.00) + (cp.QtdBlusa * 30.00); return compra; } private double TotalFeminino (Compra cp) { double compra = (cp.QtdCalca * 40.00) + (cp.QtdCamiseta * 40.00) + (cp.QtdBlusa * 40.00); return compra; } private double TotalInfantil (Compra cp) { double compra = (cp.QtdCalca * 20.00) + (cp.QtdCamiseta * 20.00) + (cp.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 a = TotalMasculino(masculino); double b = TotalFeminino(feminino); double c = TotalInfantil(infantil); double d = TotalCalcados(masculino.QtdCalcados, feminino.QtdCalcados, infantil.QtdCalcados); double total = a + b + c + d; return total; } } Brecho bc = new Brecho(); Compra cp = new Compra(); cp.QtdBlusa = 2; cp.QtdCalca = 2; cp.QtdCalcados = 1; cp.QtdCamiseta = 3; double e = bc.TotalCompra(cp, cp ,cp); Console.WriteLine(e); // 735. ``` ## Exercício 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= 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 { public Nota CalcularCompra (Pedido pedido, double cupom) { double desconto = ValorDesconto(pedido.Valor, cupom); double garantia = ValorGarantia(pedido.Valor, pedido.AnosGarantia); double frete = ValorFrete(pedido.DistanciaEntregaKm); double valor = pedido.Valor - desconto + garantia + frete; double valorFinal = ValorJuros(valor, 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 a = new Pedido(); a.Valor = 1000; a.AnosGarantia = 2; a.DistanciaEntregaKm = 50; a.Parcelas = 18; double cupom = 10; LojaMoveis loja = new LojaMoveis(); Nota b = loja.CalcularCompra(a, cupom); Console.WriteLine("Valor final é: " + b.ValorFinal); Console.WriteLine("Nota fiscal é: " + b.NotaFiscal); // Valor final é: 2068.46 // Nota fiscal é: NF20210514215030 ```
{"metaMigratedAt":"2023-06-16T00:58:12.804Z","metaMigratedFrom":"Content","title":"SESSION THREE | Fundamentos de Lógica","breaks":true,"contributors":"[{\"id\":\"8f7566f7-64b5-4753-b866-2bb258422309\",\"add\":13707,\"del\":32}]"}
Expand menu