# Session Three: It's always time to restart | Csharp autor : Isabela Silva Sousa [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= using System; public class CalcularRetangulo { public double Basee {get; set;} public double Altura {get; set;} } public class CalculoTrigonometria { public bool RetanguloIguais(CalcularRetangulo ret1, CalcularRetangulo 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; } } CalculoTrigonometria a = new CalculoTrigonometria(); CalcularRetangulo r1 = new CalcularRetangulo(); r1.Basee = 2; r1.Altura = 22; CalcularRetangulo r2 = new CalcularRetangulo(); r2.Basee = 4; r2.Altura = 24; double b = a.PerimetroRetangulo(44, 96); Console.WriteLine(b); bool c = a.RetanguloIguais(r1, r2); Console.WriteLine(c); ``` ## 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 CalculoForma { public double Basee {get; set;} public double Altura {get; set;} } public class CalculoTrigonometria { public double retangulo(CalculoForma d) { double area1 = d.Basee * d.Altura; return area1; } public double triangulo(CalculoForma d) { double area2 = d.Basee * d.Altura; return area2; } public double paralelogramo(CalculoForma d) { double area3 = d.Basee * d.Altura; return area3; } } CalculoForma tri = new CalculoForma(); tri.Basee = 2; tri.Altura = 18; CalculoForma ret = new CalculoForma(); ret.Basee = 7; ret.Altura = 21; CalculoForma para = new CalculoForma(); para.Basee = 8; para.Altura = 42; CalculoTrigonometria e = new CalculoTrigonometria(); 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); ``` ## 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 == 30; } 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 aniversario!"; return f; } public bool SouDeLibra (Pessoa pessoa) { DateTime g = new DateTime(pessoa.niver.Year,05,05); DateTime f = new DateTime(pessoa.niver.Year,07,01); return pessoa.niver >= g && pessoa.niver <= f; } } Pessoa f = new Pessoa(); f.nome = "Isabela Silva Sousa"; f.niver = new DateTime(2004,05,05); 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 Touro?: " + m); ``` ## 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= 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("isayogue2015@gmail.com", "969"); Console.WriteLine("Cadrastro ok?: " + a); ``` # 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 CalcularRetangulo { public double Altura {get; set;} public double Basee {get; set;} } public class CalcularCilindro { public double Raio {get; set;} public double Altura {get; set;} } public class CalcularTrigonometria { public double AreaRetangulo(CalcularRetangulo d) { double area = d.Altura * d.Basee; return area; } public bool RetanguloIguais(CalcularRetangulo rt1, CalcularRetangulo rt2) { double ret1 = AreaRetangulo(rt1); double ret2 = AreaRetangulo(rt2); return ret1 == ret2; } public double VolumeCilindro(CalcularCilindro cl) { double total = cl.Altura * cl.Raio; return total; } public bool TransferenciaValida(CalcularCilindro cl1, CalcularCilindro cl2) { double ci1 = VolumeCilindro(cl1); double ci2 = VolumeCilindro(cl2); return ci1 == ci2; } } CalcularTrigonometria a = new CalcularTrigonometria(); CalcularRetangulo ret1 = new CalcularRetangulo(); ret1.Basee = 8; ret1.Altura = 42; CalcularRetangulo ret2 = new CalcularRetangulo(); ret2.Basee = 7; ret2.Altura = 21; CalcularCilindro cl1 = new CalcularCilindro(); cl1.Altura = 9; cl1.Raio = 3; CalcularCilindro cl2 = new CalcularCilindro(); cl2.Altura = 10; 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); ``` # 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 = 1; cp.QtdCalcados = 1; cp.QtdCamiseta = 5; double e = bc.TotalCompra(cp, cp ,cp); Console.WriteLine(e); ``` # 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("YYYYMMDDHHmm"); 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); ```
{"metaMigratedAt":"2023-06-16T03:58:37.344Z","metaMigratedFrom":"Content","title":"Session Three: It's always time to restart | Csharp","breaks":true,"contributors":"[{\"id\":\"efa8ac71-fa69-4ab5-8a89-20016d037e45\",\"add\":13824,\"del\":178}]"}
Expand menu