# Session Three: It's always time to restart Fund.Lógica **Autor**: Elias de Freitas Cavalcante **Número**: 12 **Turma**: INFO C ## Exercícios [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.** ```charp= public class Trigonometria { public bool RetanguloIguais(int altura1, int base1, int altura2, int base2) { return AreaRetangulo(altura1, base1) == AreaRetangulo(altura2, base2); } private double AreaRetangulo(int a, int b) { double area = a * b; return area; } public double PerimetroRetangulo(int a, int b) { double per = a + a + b + b; return per; } } Trigonometria trig = new Trigonometria(); bool x3 = trig.RetanguloIguais(4,2,2,4); Console.WriteLine("As areas dos retangulos são verdadeiras ? :" +x3); double x1 = trig.PerimetroRetangulo(10, 5); Console.WriteLine("O perimetro do retangulo é:" + x1); // As areas dos retangulos são verdadeiras ?: True O perimetro do retangulo é:30 ``` ### 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.** ```charp= public class Forma { public double altura {get;set;} public double basse {get;set;} } public class Trigonometria { public bool RetanguloIguais(Forma ret1, Forma ret2) { return AreaRetangulo(ret1.altura, ret1.basse) == AreaRetangulo(ret2.altura, ret2.basse); } private 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 trig = new Trigonometria(); double x1 = trig.PerimetroRetangulo(10, 5); Console.WriteLine("O perimetro do retangulo é:" + x1); Forma r1 = new Forma(); r1.altura = 10; r1.basse = 5; Forma r2 = new Forma(); r2.altura = 25; r2.basse = 2; bool x3 = trig.RetanguloIguais(r1, r2); Console.WriteLine("As areas dos retangulos são verdadeiras ? :" + x3); // As areas dos retangulos são verdadeiras ?: True O perimetro do retangulo é:30 ``` ### 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.** ```charp= public class Pessoa { public string Nome { get; set; } public DateTime Niver { get; set; } } public class Calendario { public DateTime PrimeiroDia (DateTime data) { return data.AddDays(1 - data.Day); } public DateTime UltimoDia (DateTime data) { return data.AddMonths(1).AddDays(- data.Day); } 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 o = DateTime.Now; DateTime s = new DateTime(o.Year, pessoa.Niver.Month, pessoa.Niver.Day); TimeSpan a = s - o; double f = a.TotalDays/7; double h = Math.Round(f); string k = pessoa.Nome + ", faltam " + h + " semanas para seu niver!"; return k; } public bool SouDeLibra (Pessoa pessoa) { DateTime u = new DateTime(pessoa.Niver.Year,09,23); DateTime k = new DateTime(pessoa.Niver.Year,10,22); return pessoa.Niver >= u && pessoa.Niver <= k; } } Pessoa k = new Pessoa (); k.Nome = "Elias Cavalcante"; k.Niver = new DateTime(2004,09,29); Calendario c = new Calendario (); DateTime a = c.PrimeiroDia(k.Niver); DateTime b = c.UltimoDia(k.Niver); bool d = c.Possui31Dias(k.Niver); bool e = c.SextaFeira13(k.Niver); string f = c.SemanasParaNiver(k); bool g = c.SouDeLibra(k); Console.WriteLine("Primeiro dia do mês: " + a); Console.WriteLine("Último dia do mês: " + b); Console.WriteLine("O mês possui 31 dias?: " + d); Console.WriteLine("A data cai em ua sexta-feira 13?: " + e); Console.WriteLine(f); Console.WriteLine("Sou de Libra?: " + g); // Primeiro dia do mês: 9/1/2004 12:00:00 AM Último dia do mês: 9/30/2004 12:00:00 AM O mês possui 31 dias?: False A data cai em ua sexta-feira 13?: False Elias Cavalcante, faltam 20 semanas para seu niver! Sou de Libra?: True ``` ### 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** ```charp= public class RegistroBRValidor{ public bool validarCadastro( string email) { bool validarE = email.Contains("@"); return validarE; } public bool validarSenha(string senha) { bool validarE = senha.Contains("a"); return validarE; } public string validarDominio( string dominio) { string validarD = dominio.Substring(2,10); return validarD; } } RegistroBRValidor val = new RegistroBRValidor(); bool em = val.validarCadastro("elias@gmail"); Console.WriteLine("Esse e-mail tem o @ ?" +em); bool se = val.validarSenha("Marco2005"); Console.WriteLine("A senha possui uma vogal?" + se); string domi = val.validarDominio("El@gmail.com"); Console.WriteLine("Dominio do e-mail : " + domi); // Esse e-mail tem o @ ? True A senha possui uma vogal ? True Dominio do e-mail : @gmail.com ``` ### 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.** ```charp= ``` ### 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 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.** ```charp= ``` ### 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.** ```charp= 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 = 1000; p.AnosGarantia = 2; p.DistanciaEntregaKm = 50; p.Parcelas = 18; 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 é: 2068.46 Nota Fiscal é: NF20210514193741 ```
{"metaMigratedAt":"2023-06-16T00:15:04.004Z","metaMigratedFrom":"Content","title":"Session Three: It's always time to restart Fund.Lógica","breaks":true,"contributors":"[{\"id\":\"330b3204-61c5-4231-8ab3-e59d5589a829\",\"add\":11106,\"del\":624}]"}
Expand menu