***NOME*** João Gabriel Camargo Ramos ***TURMA*** INFO C ***NUMERO*** 23 # FUNDAMENTOS LOGÌCOS ## Exercício 01 *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 Trigonometria { public int AreaRetangulo (int altura, int basee) { return altura * basee; } public int PerimetroRetangulo (int altura, int basee) { return (altura + basee) + (altura + basee); } public bool RetangulosIguais (int a1, int b1, int a2, int b2) { return AreaRetangulo(a1,b1) == AreaRetangulo(a2,b2); } } Trigonometria g = new Trigonometria (); int a = g.AreaRetangulo(10,2); int b = g.PerimetroRetangulo(10,2); bool c = g.RetangulosIguais(10,2,4,5); Console.WriteLine("Área Retângulo: " + a); Console.WriteLine("Perímetro Retângulo: " + b); Console.WriteLine("Retângulos Iguais?: " + c); //Área Retângulo: 20 //Perímetro Retângulo: 24 //Retângulos Iguais?: True ``` ## Exercício 02 *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 Base {get; set;} public double Altura {get; set;} } public class Trigonometria { public double AreaRetangulo (Forma retangulo) { return retangulo.Altura * retangulo.Base; } public double AreaTriangulo (Forma triangulo) { return (triangulo.Altura * triangulo.Base)/2; } public double AreaParalelogramo (Forma retangulo) { return retangulo.Altura * retangulo.Base; } } Forma fret = new Forma (); fret.Altura = 10; fret.Base = 8; Forma ftri = new Forma (); ftri.Altura = 10; ftri.Base = 10; Forma fpar = new Forma (); fpar.Altura = 10; fpar.Base = 6; Trigonometria oi = new Trigonometria (); double a = oi.AreaRetangulo(fret); double b = oi.AreaTriangulo(ftri); double c = oi.AreaParalelogramo(fpar); Console.WriteLine("Área Retângulo: " + a); Console.WriteLine("Área Triângulo: " + b); Console.WriteLine("Área Paralelogramo: " + c); //Área Retângulo: 80 //Área Triângulo: 50 //Área Paralelogramo: 60 ``` ## Exercício 03 *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) { int a = data.Day; DateTime b = data.AddDays(1 - a); return b; } public DateTime UltimoDia (DateTime data) { DateTime final = data.AddMonths(1); int s = data.Day; DateTime d = final.AddDays(-s); return d; } public bool Possui31Dias (DateTime data) { return UltimoDia(data).Day == 31; } public bool SextaFeira13 (DateTime data) { bool a = data.DayOfWeek == DayOfWeek.Friday; bool s = data.Day == 13; return a && s; } 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 = "Laura Oliveira Rocha"; 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 //Laura Oliveira Rocha, faltam 20 semanas para seu niver! //Sou de Libra?: True ``` ## Exercício 04 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) { int a = email.IndexOf("@"); int b = email.Length; bool s = email.Substring(0,a).Length >= 2 && email.Substring(a,(b-a)).Length >= 2; int c = senha.Length; bool g = 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") && senha.Contains("!") || senha.Contains("@") || senha.Contains("#") || senha.Contains("$") || senha.Contains("%") || senha.Contains("&") || senha.Contains("*"); return c == 8 && s && g; } public bool ValidarDominio (string dominio) { int a = dominio.Length; int b = dominio.IndexOf("."); string c = dominio.Substring((b-1),(a-b)); string d = dominio.Substring(b,1); bool e = d != "1" || d != "2" || d != "3" || d != "4" || d != "5" || d != "6" || d != "7" || d != "8" || d != "9" || d != "0" ; bool f = c == ".com.br"; bool g = c.Length >= 5; return e && g || f; } } string a = "fofinanet0@gmail.com"; string b = "iamyue22"; string c = "meudominio.com.br"; RegistroBRValidator k = new RegistroBRValidator (); bool d = k.ValidarCadastro(a,b); bool z = k.ValidarDominio(c); Console.WriteLine("Cadastro Válido?: " + d); Console.WriteLine("Domínio Válido?: " + z); //Cadastro Válido?: True //Domínio Válido?: True ``` ## Exercício 05 *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 AreasIguais (Retangulo ret1, Retangulo ret2) { return AreaRetangulo(ret1) == AreaRetangulo(ret2); } public double AreaRetangulo (Retangulo ret) { return ret.Altura * ret.Base; } public bool TransferenciaPossivel (Cilindro ci1, Cilindro ci2) { return VolumeCilindro(ci1) <= VolumeCilindro(ci2); } public double VolumeCilindro (Cilindro cilindro) { return 3.14 * Math.Pow(cilindro.Raio,2) * cilindro.Altura; } } Cilindro a = new Cilindro (); a.Altura = 10; a.Raio = 5; Cilindro b = new Cilindro (); b.Altura = 8; b.Raio = 7; Retangulo c = new Retangulo (); c.Altura = 5; c.Base = 3; Retangulo d = new Retangulo (); d.Altura = 10; d.Base = 3; Trigonometria e = new Trigonometria (); double f = e.AreaRetangulo(c); bool g = e.AreasIguais(c,d); double h = e.VolumeCilindro(a); bool i = e.TransferenciaPossivel(a,b); Console.WriteLine("Área do Retângulo: " + f); Console.WriteLine("Os retângulos possuem áreas iguais?: " + g); Console.WriteLine("Volume do cilindro: " + h); Console.WriteLine("É possível transferir do cilindro 1 para o cilindro 2?: " + i); //Área do Retângulo: 15 //Os retângulos possuem áreas iguais?: False //Volume do cilindro: 84.78 //É possível transferir do cilindro 1 para o cilindro 2?: True ``` ## Exercício 06 *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 compra) { double a = (compra.QtdBlusa + compra.QtdCalca + compra.QtdCamiseta) * 30; double b = compra.QtdCalcados * 35; return a + b; } private double TotalFeminino (Compra compra) { double a = (compra.QtdBlusa + compra.QtdCalca + compra.QtdCamiseta) * 40; double b = compra.QtdCalcados * 35; return a + b; } private double TotalInfantil (Compra compra) { double a = (compra.QtdBlusa + compra.QtdCalca + compra.QtdCamiseta) * 20; double b = compra.QtdCalcados * 35; return a + b; } public double CalcularTotal (Compra masculino, Compra feminino, Compra infantil) { return TotalMasculino(masculino) + TotalFeminino(feminino) + TotalInfantil(infantil); } } Compra cm = new Compra (); cm.QtdBlusa = 2; cm.QtdCalca = 3; cm.QtdCamiseta = 1; cm.QtdCalcados = 4; Compra cf = new Compra (); cf.QtdBlusa = 1; cf.QtdCalca = 1; cf.QtdCalcados = 2; cf.QtdCamiseta = 1; Compra ci = new Compra (); ci.QtdBlusa = 4; ci.QtdCalca = 2; ci.QtdCamiseta = 1; ci.QtdCalcados = 1; Brecho iupi = new Brecho (); double y = iupi.CalcularTotal(cm,cf,ci); Console.WriteLine("O valor total da sua compra foi de R$" + y); //O valor total da sua compra foi de R$685 ``` ## Exercício 07 *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 { private double ValorDesconto (double valorCompra, double cupom) { return (valorCompra * (cupom/100)); } private double ValorGarantia (double valorCompra, int anos) { return (valorCompra * 0.15 * anos); } private double ValorFrete (int distancia) { return (distancia/10) * 3; } private double ValorJuros (double valor, int parcelas) { return valor * (1 + Math.Pow(0.03,parcelas)); } public Nota CalcularCompra (Pedido pedido, double cupom) { double a = pedido.Valor - ValorDesconto(pedido.Valor,cupom); double b = ValorGarantia(a,pedido.AnosGarantia); double c = ValorFrete(pedido.DistanciaEntregaKm); double d = a + b + c; double e = ValorJuros(d,pedido.Parcelas); DateTime m = DateTime.Now; string f = m.Year.ToString(); string g = m.Month.ToString(); string h = m.Day.ToString(); string i = m.Hour.ToString(); string j = m.Minute.ToString(); Nota k = new Nota (); k.ValorFinal = e; k.NotaFiscal = "NF" + f + g + h + i + j; return k; } } Pedido p = new Pedido (); p.Valor = 1000; p.AnosGarantia = 2; p.DistanciaEntregaKm = 20; p.Parcelas = 12; LojaMoveis n = new LojaMoveis (); Nota d = n.CalcularCompra(p,10); Console.WriteLine(d.NotaFiscal + ": R$" + d.ValorFinal); //NF20215122259: R$1176 ```
{"metaMigratedAt":"2023-06-16T03:27:16.396Z","metaMigratedFrom":"Content","title":"FUNDAMENTOS LOGÌCOS","breaks":true,"contributors":"[{\"id\":\"b186730d-b9e4-4a77-8f97-f67305b05247\",\"add\":13900,\"del\":0}]"}
Expand menu