# Session Three: It's always time to restart | Fund. Lógica >[color=pink]**Autor:** Letícia Rodrigues da Silva **Turma:** IndoD **Número:** 25 [TOC] ## 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= public class Trigonometria { public int AreaRetangulo(int basee, int altura) { int area = basee * altura; return area; } public int PerimetroRetangulo(int basee, int altura) { int perimetro = basee + basee + altura + altura; return perimetro; } public bool RetanguloIguais(int a1, int b1, int a2, int b2) { double area1 = a1 * b1; double area2 = a2 * b2; bool verificar = area1 == area2; return verificar; } } Trigonometria t = new Trigonometria(); double r = t.AreaRetangulo(15, 5); Console.WriteLine(r); Console.WriteLine(); double p = t.PerimetroRetangulo(3, 8); Console.WriteLine(p); Console.WriteLine(); bool v = t.RetanguloIguais(12, 4, 8, 6); Console.WriteLine(v); // 75 // 22 // True ``` ## 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= public class Forma { public double basee {get; set;} public double altura {get; set;} } public class Trigonometria { public double AreaRetangulo(Forma f) { double area = f.basee * f.altura; return area; } public double AreaTriangulo(Forma f) { double area = (f.basee * f.altura) / 2; return area; } public double AreaParalelogramo(Forma f) { double area = f.basee * f.altura; return area; } } Trigonometria t = new Trigonometria(); Forma tri = new Forma(); tri.altura = 10; tri.basee = 4; double x = t.AreaRetangulo(tri); Console.WriteLine(x); Console.WriteLine(); double y = t.AreaTriangulo(tri); Console.WriteLine(y); Console.WriteLine(); double z = t.AreaParalelogramo(tri); Console.WriteLine(z); // 40 // 20 // 40 ``` ## 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; public DateTime Niver; } public class Calendario { public DateTime PrimeiroDia(DateTime data) { DateTime primeiroDia = new DateTime(data.Year, data.Month, 1); return primeiroDia; } public DateTime UltimoDia(DateTime data) { DateTime dia = new DateTime(2021, 05, 10); DateTime proxMes = new DateTime(data.Year, data.Month, 1); DateTime p = proxMes.AddMonths(1); DateTime ultimoDia = p.AddDays(-1); return ultimoDia; } public bool Possui31Dias(DateTime data) { bool possui = DateTime.DaysInMonth(data.Day, data.Month) == 31; return possui; } public bool SextaFeira13(DateTime data) { bool sexta = data.DayOfWeek == DayOfWeek.Friday; bool sexta13 = data.Day == 13; return sexta13 && sexta; } public string SemanaParaNiver(Pessoa pessoa) { DateTime dia = DateTime.Now; DateTime d = new DateTime(2021, 08, 31); int totalDias = (d - dia).Days / 7; string mensagem = pessoa.Nome + ", faltam " + totalDias + " semanas para seu niver."; return mensagem; } public bool SouLibra (Pessoa pessoa) { bool mes = pessoa.Niver.Month == 9 && pessoa.Niver.Day > 22; bool mes1 = pessoa.Niver.Month == 10 && pessoa.Niver.Day <23; bool libra = mes == true || mes1 == true; return libra; } } Calendario c = new Calendario(); Pessoa p = new Pessoa(); p.Niver = new DateTime(2003, 08, 31); p.Nome = "Letícia"; DateTime pri = new DateTime(2021, 04, 01); Console.WriteLine(c.PrimeiroDia(pri)); Console.WriteLine(); DateTime ult = new DateTime(2021, 08, 20); Console.WriteLine(c.UltimoDia(ult)); Console.WriteLine(); DateTime possui = new DateTime(2021, 08, 10); Console.WriteLine(c.Possui31Dias(possui)); Console.WriteLine(); DateTime dias = new DateTime(2021, 08, 13); Console.WriteLine(c.SextaFeira13(dias)); Console.WriteLine(); string niver = c.SemanaParaNiver(p); Console.WriteLine(niver); Console.WriteLine(); bool signo = c.SouLibra(p); Console.WriteLine(signo); // 4/1/2021 // 8/31/2021 // True // True // Letícia, faltam 15 semanas para seu niver. // 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.* Deve-se enviar o domínio completo. ex: meudominio.com.br** ```csharp= public class RegistroBrValidator { public bool ValidarCadastro(string email, string senha) { bool validar = email.Length >= 8; bool validar1 = email.Contains("@"); bool vogal = senha.Contains("a") || senha.Contains("e") || senha.Contains("a") || senha.Contains("a") || senha.Contains("a"); bool caracters = senha.Contains("!") || senha.Contains("@") || senha.Contains("@") || senha.Contains("@") || senha.Contains("@") || senha.Contains("@") || senha.Contains("@") || senha.Contains("@"); bool validarSenha = vogal && caracters; int qsenha = senha.Length; bool result = caracters == validarSenha == qsenha >= 8; return result && validar && validar1 && validarSenha; } public bool ValidarDominio(string dominio) { bool v = dominio.EndsWith(".com.br"); bool caracter = dominio.Length >= 5; return v && caracter; } } RegistroBrValidator r = new RegistroBrValidator(); bool v = r.ValidarCadastro("le23@gmail.com", "le0!rodrig"); Console.WriteLine(v); Console.WriteLine(); bool d = r.ValidarDominio("www.instagram.com.br"); Console.WriteLine(d); // True // 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 bool AreasIguais(Retangulo ret1, Retangulo ret2) { double area1 = AreaRetangulo(ret1); double area2 = AreaRetangulo(ret2); bool igual = area1 == area2; return igual; } public double AreaRetangulo(Retangulo ret) { double area = ret.basee * ret.altura; return area; } public bool TransferenciaPossivel(Cilindro c1, Cilindro c2) { double cili = VolumeCilindro(c1); double cili2 = VolumeCilindro(c2); return cili == cili2; } public double VolumeCilindro(Cilindro cilindro) { double volume = Math.PI * (cilindro.Raio * cilindro.Raio) * cilindro.altura; double arredondar = Math.Round(volume, 2); return arredondar; } } Trigonometria tri = new Trigonometria(); Retangulo ret1 = new Retangulo(); ret1.basee = 12; ret1.altura = 5; Retangulo ret2 = new Retangulo(); ret2.basee = 10; ret2.altura = 3; Cilindro cili = new Cilindro(); cili.altura = 8; cili.Raio = 3.8; Cilindro cili2 = new Cilindro(); cili2.altura = 20; cili2.Raio = 8; double a = tri.AreaRetangulo(ret1); Console.WriteLine("Area do Retangulo é ret1: " + a); Console.WriteLine(); double b = tri.AreaRetangulo(ret2); Console.WriteLine("Area do Retangulo é ret2: " + b); Console.WriteLine(); bool c = tri.AreasIguais(ret1, ret2); Console.WriteLine("Os retangulos são iguais? " + c); Console.WriteLine(); double d = tri.VolumeCilindro(cili); Console.WriteLine("O volume do cilindro é: " + d); Console.WriteLine(); bool e = tri.TransferenciaPossivel(cili, cili2); Console.WriteLine("Transferencia é possível? " + e); // Area do Retangulo é ret1: 60 // Area do Retangulo é ret2: 30 // Os retangulos são iguais? False // O volume do cilindro é: 362.92 // Transferencia é possível? 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 { public double TotalMasculino(Compra compra) { double masc = (compra.QtdBlusa * 30.00) + (compra.QtdCalca * 30.00) + (compra.QtdCamiseta * 30.00); return masc; } public double TotalFeminino(Compra compra) { double fem = (compra.QtdBlusa * 40.00) + (compra.QtdCalca * 40.00) + (compra.QtdCamiseta * 40.00); return fem; } public double TotalInfantil(Compra compra) { double inf = (compra.QtdBlusa * 20.00) + (compra.QtdCalca * 20.00) + (compra.QtdCamiseta * 20.00); return inf; } public double CalcularTotal(Compra masculino, Compra feminino, Compra infantil) { double m = TotalMasculino(masculino); double f = TotalFeminino(feminino); double i = TotalInfantil(infantil); double c = TotalCalcados(masculino.QtdCalcados, feminino.QtdCalcados, infantil.QtdCalcados); double total = m + f + i + c; return total; } public double TotalCalcados(int qtdCalcadoMasculino, int qtdCalcadoFeminino, int qtdCalcadoInfantil) { double t = (qtdCalcadoMasculino + qtdCalcadoFeminino + qtdCalcadoInfantil) * 35.00; return t; } } Brecho b = new Brecho(); Compra co = new Compra(); co.QtdBlusa = 3; co.QtdCalca = 2; co.QtdCalcados = 5; co.QtdCamiseta = 4; double tt = b.CalcularTotal(co, co, co); Console.WriteLine("O valor total da compra é: " + tt); // O valor total da compra é: 1335 ``` ## 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 DistanciaEntreKm { get; set; } public int Parcelas { get; set; } } public class Nota { public double ValorFinal; public string NotaFiscal; } public class LojaMoveis { public double ValorDesconto(double Compra, double cupom) { return Compra * (cupom/100); } public double ValorGarantia(double valorCompra, int Anos) { return valorCompra * (15 / 100) * Anos; } public double ValorFrete(int distancia) { return distancia / 10 * 3; } public double ValorJuros(double valor, int parcelas) { return valor * Math.Pow(1 + 0.3, parcelas); } public Nota CalcularCompra(Pedido pedido, double cupom) { double desconto = ValorDesconto(pedido.valor, cupom); double garantia = ValorGarantia(pedido.valor, pedido.AnosGarantia); double frete = ValorFrete(pedido.DistanciaEntreKm); 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; } } Pedido p = new Pedido(); p.valor = 580; p.AnosGarantia = 2; p.DistanciaEntreKm = 30; p.Parcelas = 10; double cupom = 8; LojaMoveis loja = new LojaMoveis(); Nota n = loja.CalcularCompra(p, cupom); Console.WriteLine("O valor final é: " + n.ValorFinal); Console.WriteLine(); Console.WriteLine("Nota Fiscal é: " + n.NotaFiscal); // O valor final é: 7480.2 // Nota Fiscal é: NF20210515030057 ```
{"metaMigratedAt":"2023-06-16T00:13:13.676Z","metaMigratedFrom":"Content","title":"Session Three: It's always time to restart | Fund. Lógica","breaks":true,"contributors":"[{\"id\":\"f2f98191-1ff5-4afd-8e66-66ff77c4c5b1\",\"add\":14896,\"del\":719}]"}
Expand menu