# Funções Packages | Fund. Lógica **Author:** Matheus Rafael Morato Rocha **Turma:** InfoC **Número:** 40 [TOC] ## Nível 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 RetangulosIguais (int altura1,int basee1,int altura2, int basee2) { double area1 = AreaRetangulo(basee1, altura1); double area2 = AreaRetangulo(basee2, altura2); bool iguais = area1 == area2; return iguais; } } trigonometria trig = new trigonometria(); int a = trig.AreaRetangulo(4,2); System.Console.WriteLine("Area do retangulo: " + a); int x = trig.PerimetroRetangulo (4,2); System.Console.WriteLine("Perimetro do retangulo: " + x); bool z = trig.RetangulosIguais(4,2,3,5); System.Console.WriteLine("Retangulos Iguais: " + z); //Area do retangulo: 8 //Perimetro do retangulo: 12 //Retangulos Iguais: False ``` ## Nível 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 retangulo) { double Area = retangulo.basee * retangulo.altura; return Area; } public double AreaTriangulo (Forma triangulo) { double AreaTri = (triangulo.basee * triangulo.altura) /2; return AreaTri; } public double AreaParalelogramo(Forma retangulo) { double AreaPara = retangulo.basee * retangulo.altura; return AreaPara; } } Forma form = new Forma(); form.basee = 4; form.altura = 2; trigonometria trig = new trigonometria(); double a = trig.AreaRetangulo(form); double b = trig.AreaTriangulo(form); double c = trig.AreaParalelogramo(form); System.Console.WriteLine("Area do retangulo: " + a); System.Console.WriteLine("Area do Triangulo: " + b); System.Console.WriteLine("Area Paralelogramo: " + c); //Area do retangulo: 8 //Area do Triangulo: 4 //Area Paralelogramo: 8 ``` ## Nível 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 mes = new DateTime(data.Year,data.Month,1); DateTime proximo = mes.AddMonths(1); return proximo; } public DateTime UltimoDia (DateTime data) { DateTime a = data.AddMonths(1); int b = data.Day; DateTime d = a.AddDays(-b); return d; } public bool Possui31Dias (DateTime data) { bool a = data.Day == 31; return a; } public bool SextaFeira13 (DateTime data) { bool a = data.Day == 13; bool z = data.DayOfWeek == DayOfWeek.Friday; bool x = a && z; return x; } public string SemanasParaNiver (Pessoa Aniversario) { int ano = DateTime.Now.Year; DateTime Niver = new DateTime(ano, Aniversario.Niver.Month,Aniversario.Niver.Day); TimeSpan Dias = DateTime.Now - Niver; double Semanas = Dias.TotalDays / 7; double SemanasTotal = Math.Ceiling(Semanas); double SemandaPositivo = Math.Abs(SemanasTotal); string Mensagem = Aniversario.nome + ",faltam " + SemandaPositivo + " semanas para seu niver."; return Mensagem; } public bool SouDeLibra (Pessoa Signo) { bool op = Signo.Niver.Month == 9 && Signo.Niver.Day > 22; bool op2 = Signo.Niver.Month == 10 && Signo.Niver.Day < 23; bool Libra = op == true || op2 == true; return Libra; } } Pessoa Humano = new Pessoa(); Humano.Niver = new DateTime (2004, 09, 10); Humano.nome = "Matheus Rafael"; DateTime data = new DateTime (2021, 08, 13); Calendario datas = new Calendario(); DateTime a = datas.PrimeiroDia(data); DateTime b = datas.UltimoDia(data); bool c = datas.Possui31Dias(data); bool d = datas.SextaFeira13(data); string e = datas.SemanasParaNiver(Humano); bool f = datas.SouDeLibra(Humano); Console.WriteLine("Primeiro dia do més: " + a); Console.WriteLine("Ùltimo dia do més: " + b); Console.WriteLine("O més possui 31 dias: " + c); Console.WriteLine("Esse dia e sexta-feira 13" + d); Console.WriteLine(e); Console.WriteLine("Sou de libra?: " + f); //Primeiro dia do més: 9/1/2021 12:00:00 AM //Ùltimo dia do més: 8/31/2021 12:00:00 AM //O més possui 31 dias: False //Esse dia e sexta-feira 13True //Matheus Rafael,faltam 17 semanas para seu niver. //Sou de libra?: False ``` ## Nível 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= using System; public class RegistroBRValidator { public bool ValidarCadastro (string email,string senha) { bool arrouba = email.Contains("@"); int possui = email.IndexOf("@"); string b = email.Substring(possui,2); int a = possui -2; string x = email.Substring(a,2); int s = email.IndexOf(x); int f = email.IndexOf(b); bool r = s == 2; bool e = f == 2; bool Verificar = e == r; bool password1 = senha.Contains("a") || senha.Contains("e") || senha.Contains("i") || senha.Contains("o") || senha.Contains("u") || senha.Contains("A") || senha.Contains("E") || senha.Contains("I") || senha.Contains("O") || senha.Contains("U"); bool password2 = senha.Contains("!") || senha.Contains("@") || senha.Contains("#") || senha.Contains("$") || senha.Contains("%") || senha.Contains("¨") || senha.Contains("&") || senha.Contains("*") || senha.Contains("(") || senha.Contains(")"); bool tamanho = senha.Length == 8; return arrouba && password1 && password2 && tamanho && Verificar; } public bool ValidarDominio (string dominio) { int a = dominio.IndexOf("."); string b = dominio.Substring(a,7); bool r = b.Contains(".com.br"); bool z = 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"); int s = dominio.LastIndexOf("@"); string g = dominio.Substring(s,5); bool v = g.Length == 5; return z && v && r; } } RegistroBRValidator email = new RegistroBRValidator(); bool a = email.ValidarCadastro("matheusrafa12@gmail.com.br","a25#%#55"); bool b = email.ValidarDominio("matheusrafa12.com.br"); Console.WriteLine(a); Console.WriteLine(b); // True // True ``` ## Nível 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 Base {get;set;} } public class Cilindro { public double Raio {get;set;} public double Altura {get;set;} } public class Trigonometria { public bool AreaIguais (Retangulo ret1,Retangulo ret2) { double area1 = AreasRetangulo(ret1); double area2 = AreasRetangulo(ret2); bool a = area1 == area2; return a; } public double AreasRetangulo(Retangulo ret) { double area = ret.Base * ret.Altura; return area; } public double VolumeCilindro (Cilindro cilindro) { double a = 3.14 * Math.Pow(cilindro.Raio,2) * cilindro.Altura; return a; } public bool TransferenciaPossivel (Cilindro ci1,Cilindro ci2) { double Volume1 = VolumeCilindro(ci1); double Volume2 = VolumeCilindro(ci2); bool a = Volume1 == Volume2; return a; } } Retangulo Ret = new Retangulo(); Ret.Altura = 4; Ret.Base = 2; Cilindro ci = new Cilindro(); ci.Altura = 5; ci.Raio = 10; Trigonometria trig = new Trigonometria(); double a = trig.AreasRetangulo(Ret); bool b = trig.AreaIguais(Ret, Ret); bool c = trig.TransferenciaPossivel(ci,ci); double d = trig.VolumeCilindro(ci); Console.WriteLine("Area do Retangulo " + a); Console.WriteLine("Areas Iguais " + b); Console.WriteLine("Transferencia Possivel " +c); Console.WriteLine("Volume Cilindro " + d); //8 //True //True //1570 ``` ## Nível 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;} } Compra a = new Compra(); a.QtdCalca = 1; a.QtdCamiseta = 2; a.QtdBlusa = 3; a.QtdCalcados = 3; Compra b = new Compra(); b.QtdCalca = 1; b.QtdCamiseta = 2; b.QtdBlusa = 3; b.QtdCalcados = 3; Compra c = new Compra(); c.QtdCalca = 1; c.QtdCamiseta = 2; c.QtdBlusa = 3; c.QtdCalcados = 3; public class Brecho { public double CalcularTotal (Compra masculino,Compra feminino,Compra infantil) { double TotalFinal = TotalMasculino(masculino) + TotalFeminino(feminino) + TotalInfantil(infantil) + TotalCalcados(masculino.QtdCalcados, feminino.QtdCalcados, infantil.QtdCalcados); return TotalFinal; } private double TotalMasculino (Compra compra) { double total = compra.QtdCalca + compra.QtdCamiseta + compra.QtdBlusa * 40; return total; } private double TotalFeminino (Compra compra) { double total = compra.QtdCalca + compra.QtdCamiseta + compra.QtdBlusa * 20; return total; } private double TotalInfantil (Compra compra) { double total = compra.QtdCalca + compra.QtdCamiseta + compra.QtdBlusa * 20; return total; } private double TotalCalcados (int qtdCalcadoMasculino, int qtdCalcadoFeminino, int qtdCalcadoInfantil) { double total = qtdCalcadoMasculino + qtdCalcadoFeminino + qtdCalcadoInfantil * 35; return total; } } Brecho venda = new Brecho(); double total = venda.CalcularTotal(a,b,c); Console.WriteLine(total); // 360 ``` ## Nível 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 p = new Pedido(); p.Valor = 5014; p.AnosGarantia = 5; p.DistanciaEntregaKm = 30; p.Parcelas = 20; double cupom = 10; LojaMoveis loja = new LojaMoveis(); Nota n = loja.CalcularCompra(p, cupom); Console.WriteLine("Valor final é: " + n.ValorFinal); Console.WriteLine("Nota Fiscal é: " + n.NotaFiscal); //Valor final é: 14958.39 //Nota Fiscal é: NF20210515001250 ```
{"metaMigratedAt":"2023-06-16T00:15:47.474Z","metaMigratedFrom":"Content","title":"Funções Packages | Fund. Lógica","breaks":true,"contributors":"[{\"id\":\"0ba297e4-eafa-413a-9b17-c3ef1702e693\",\"add\":22387,\"del\":7295}]"}
Expand menu