# Session five | Fundamentos da Lógica autora: Isabela Silva Sousa [toc] ## Exercício 1 > Crie a(s) classe(s) representando a abstração de função e/ou dados ao lado. Abaixo a > especificação das situações a serem resolvidas: > ▪ Realize a lógica para implementar uma Calculadora, a partir de dois valores e a operação > que deve ser realizada (soma, subtração, multiplicação, divisão ou potência). > ▪ Realize a lógica para implementar uma função que informe se uma pessoa está com febre, > febre alta, hiportemia ou normal. > ▪ Realize a lógica para implementar uma função que a partir dos lucros e prejuízos de uma > empresa, informe se ela ficou positiva ou negativa no fim do mês. Caso ela fique negativa, > você não deve exibir o sinal de menos (-) na resposta. > “Muito bem, você está R$ XXX positivo” > “Poxa, você ficou R$ XXX negativo.” > ▪ Realize a lógica para implementar uma função que arredone uma nota de meio em meio. Se a > nota for entre (a) .00 e .25 arredondar para 0.0, (b) entre .26 e .74 arredondar para 0.5, > e (c) .75 e .99 arredondar para cima. > ▪ Realize a lógica para implementar uma função que verifique se um aluno passou ou está de > recuperação, se a nota for maior que 5. > ▪ Realize a lógica para implementar uma função que verifique se um aluno passou ou está de > recuperação, se a nota for maior que 5 e a quantidade de falta for menor que 25. Se ele > ficar de recuperação retorne o motivo: “Recuperação por Falta”, “Recuperação por Nota” ou > “Recuperação por Nota e Falta”. > ▪ Realize a lógica para implementar uma função que descubra o tipo de um triângulo: > Equilátero, Isósceles ou Escaleno. > ▪ Realize a lógica para implementar uma função que retorne o Índice de Massa > Corporal (IMC) de uma pessoa: Abaixo do Peso, Peso Normal ou Sobrepeso, no seguinte > formato: “XXXX você está XXXX” ```csharp= using System; public class Calculo { public double Valor1 {get; set;} public double Valor2 {get; set;} public string Operacao {get; set;} } public class Triangulo { public double LadoA {get; set;} public double LadoB {get; set;} public double LadoC {get; set;} } public class Notas { public double Nota1 {get; set;} public double Nota2 {get; set;} public double Nota3 {get; set;} } public class Pessoa { public string Nome {get; set;} public double Altura {get; set;} public double Peso {get; set;} } public class TreinoFocadoA { public double Calculadora(Calculo calculo) { calculo.Operacao = calculo.Operacao.ToLower(); double resultado = 0; if (calculo.Operacao == "soma") { resultado = calculo.Valor1 + calculo.Valor2; } else if (calculo.Operacao == "subtração") { resultado = calculo.Valor1 - calculo.Valor2; } else if (calculo.Operacao == "multiplicação") { resultado = calculo.Valor1 * calculo.Valor2; } else if (calculo.Operacao == "divisão") { resultado = calculo.Valor1 / calculo.Valor2; } else if (calculo.Operacao == "potência") { resultado = Math.Pow(calculo.Valor1, calculo.Valor2); } return resultado; } public string Termometro (double grau) { string estado = string.Empty; if(grau >= 37.8 && grau <= 39.5) { estado = "Você está com febre"; } else if (grau >39.6) { estado = "Você está com febre alta"; } else if (grau < 35) { estado = "Você está com hiportemia"; } else if (grau >= 35.1 && grau <= 37.7) { estado = "Você está com temperatura normal"; } return estado; } public string LucroOuPrejuizo (double lucro, double gastos) { double saldo = lucro - gastos; string mensagem = string.Empty; if(saldo > 0) { mensagem = $"Muito bem, você está R$ {saldo} positivo."; } else { mensagem = $"Poxa, você ficou R$ {Math.Abs(saldo)} negativo."; } return mensagem; } public double ArredondarMeioEmMeio (double nota) { double parteDecimal = nota - Math.Truncate(nota); if (parteDecimal > 0.0 && parteDecimal < 0.25) { nota = Math.Floor (nota); } else if (parteDecimal > 0.25 && parteDecimal < 0.75) { nota = Math.Floor (nota) + 0.5; } else { nota = Math.Ceiling(nota); } return nota; } public string TipoTriangulo (Triangulo t) { string tipotriangulo = string.Empty; if (t.LadoA == t.LadoB && t.LadoA == t.LadoC) { tipotriangulo = "É um Triângulo Equilátero"; } else if (t.LadoA != t.LadoB && t.LadoB != t.LadoC && t.LadoA != t.LadoC) { tipotriangulo = "É um Triângulo Escaleno"; } else { tipotriangulo = "É um Triângulo Isósceles"; } return tipotriangulo; } public string Passou1 (Notas notas) { return ((notas.Nota1 + notas.Nota2 + notas.Nota3)/3) >=5 ?"Passou" :"Reprovou"; } public string Passou2 (Notas notas, int faltas) { string mensagem = string.Empty; if ((((notas.Nota1 + notas.Nota2 + notas.Nota3) /3) <5) && (faltas >=25)) { mensagem = "Recuperação por Nota e Falta"; } else if (((notas.Nota1 + notas.Nota2 + notas.Nota3) /3) <5) { mensagem = "Recuperação por Nota"; } else if (faltas >= 25) { mensagem = "Recuperação por Falta"; } else { mensagem = "Você Passou!"; } return mensagem; } public string IMC (Pessoa pessoa) { double imc = pessoa.Peso / (Math.Pow (pessoa.Altura, 2)); string situacao = string.Empty; if (imc >= 18.5 && imc <= 24.9) { situacao = pessoa.Nome + " você está com Peso Normal"; } else if (imc <= 18.4) { situacao = pessoa.Nome + " você está Abaixo do Peso"; } else if (imc >= 25) { situacao = pessoa.Nome + " você está com Sobrepeso"; } return situacao; } } TreinoFocadoA ta = new TreinoFocadoA(); Calculo cal = new Calculo(); cal.Valor1 = 100; cal.Valor2 = 50; cal.Operacao = "soma"; double calc = ta.Calculadora(cal); Console.WriteLine(calc); string temp = ta.Termometro(38); Console.WriteLine(temp); string lop = ta.LucroOuPrejuizo(55000, 10000); Console.WriteLine(lop); double am = ta.ArredondarMeioEmMeio(9.25); Console.WriteLine(am); Triangulo t = new Triangulo(); t.LadoA = 10; t.LadoB = 15; t.LadoC = 20; string tt = ta.TipoTriangulo(t); Console.WriteLine(tt); Notas n1 = new Notas(); n1.Nota1 = 7; n1.Nota2 = 10; n1.Nota3 = 8; string res1 = ta.Passou1(n1); Console.WriteLine(res1); Notas n2 = new Notas(); n2.Nota1 = 10; n2.Nota2 = 8; n2.Nota3 = 8.5; string res2 = ta.Passou2(n2, 7); Console.WriteLine(res2); Pessoa pes = new Pessoa(); pes.Nome = "Milena"; pes.Peso = 55; pes.Altura = 1.60; string sit = ta.IMC(pes); Console.WriteLine(sit); // 150 // Você está com febre. // Muito bem, você está R$ 45000 positivo. // 10 // É um Triângulo Escaleno. // Passou. // Você Passou! // Milena você está com Peso Normal. ``` ## Exercício 2 > Crie a(s) classe(s) representando a abstração de função e/ou dados ao lado. Abaixo a > especificação das situações a serem resolvidas: > ▪ Realize a lógica para implementar uma função que descubra se uma cor é uma cor primária. > ▪ Realize a lógica para implementar uma função que retorne a cor resultante da combinação > de duas cores primárias. Você deve realizar todas combinações. > ▪ Realize a lógica para implementar uma função que retorne o primeiro nome de uma pessoa a > partir de um nome completo, no entando, se a função receber apenas o primeiro nome não > deve resultar em um erro, mas no mesmo primeiro nome. > ▪ Realize a lógica para implementar uma função que a partir de uma peça de dominó e > verifique se a peça é um dobre. > ▪ Realize a lógica para implementar uma função que a partir de duas peças de dominó, > verifique se a primeira peça “encaixa” na segunda, ou seja, se seria um jogada válida. > ▪ Realize a lógica para implementar uma função que mostre ao usuário uma mensagem de > recuperação de senha a partir de um e-mail e senha. A mensagem deve ser no formato: > “Você receberá um e-mail do XXX para resetar a senha. Um código também foi enviado > para o número YYY.” Sendo XXX o domínio (ex: GMAIL) e YYY apenas o final do telefone > (ex: xxxx-5764) > ▪ Realize a lógica para implementar uma função que inicialize um controlador de semáforo. > O semáforo deve iniciar em vermelho aceso e o resto apagado. > ▪ Realize a lógica para implementar uma função que a partir de um estado de um semáforo, > avance para o próximo estado, ou seja, de vermelho para verde, de verde para amarelo e > amarelo para vermelho. ```csharp= using System; public class PecaDomino { public double LadoA {get; set;} public double LadoB {get; set;} } public class Semaforo { public bool LuzVermelhaAcesa {get; set;} public bool LuzAmarelaAcesa {get; set;} public bool LuzVerdeAcesa {get; set;} } public class Recuperacao { public string Email {get; set;} public string Telefone {get; set;} } public class TreinoFocadoB { public bool CorPrimaria (string cor) { bool resposta = true; if (cor == "vermelho" || cor == "amarelo" || cor == "azul") { resposta = true; } else { resposta = false; } return resposta; } public string CombinacaoCorPrimaria (string cor1, string cor2) { string cornova = string.Empty; if ((cor1 == "azul" && cor2 == "vermelho") || (cor2 == "vermelho" && cor1 == "azul")) { cornova = "roxo"; } else if ((cor1 == "azul" && cor2 == "amarelo") || (cor2 == "azul" && cor2 == "amarelo")) { cornova = "verde"; } else if ((cor1 == "amarelo" && cor2 == "vemelho") || (cor2 == "amarelo" && cor1 == "vermelho")) { cornova = "laranja"; } return cornova; } public string PrimeiroNome (string nome) { bool vf = nome.Contains (" "); string primeironome = string.Empty; if (vf == true ) { int posicao = nome.IndexOf (" "); primeironome = nome.Substring(0, posicao); } else { primeironome = nome; } return primeironome; } public bool DobreDomino (PecaDomino peca) { return peca.LadoA == peca.LadoB; } public bool JogadaValida (PecaDomino peca1, PecaDomino peca2) { bool jogadavalida = true; if (peca1.LadoA == peca2.LadoB || peca1.LadoB == peca2.LadoA) { jogadavalida = true; } else if (peca1.LadoA == peca2.LadoA) { jogadavalida = true; } else if (peca1.LadoB == peca2.LadoB) { jogadavalida = true; } else { jogadavalida = false; } return jogadavalida; } public string RecuperacaoSenha (Recuperacao rec) { rec.Telefone = rec.Telefone.Substring (rec.Telefone.IndexOf ("-")); string dominio = rec.Email.Substring (rec.Email.IndexOf ("@") + 1); string sempontocom = (dominio.Substring (0, dominio.IndexOf (".") )).ToUpper(); string mensagem = $"Você recebera um email do {sempontocom} para resetar a senha. Um código também foi enviado para o numero {rec.Telefone}."; return mensagem; } public Semaforo IniciarSemaforo () { Semaforo s = new Semaforo (); s.LuzVermelhaAcesa = true; s.LuzVerdeAcesa = false; s.LuzAmarelaAcesa = false; return s; } public Semaforo ProximoSinal (Semaforo semaforo) { if (semaforo.LuzVermelhaAcesa) { semaforo.LuzVermelhaAcesa = false; semaforo.LuzAmarelaAcesa = true; semaforo.LuzVerdeAcesa = false; } else if (semaforo.LuzAmarelaAcesa) { semaforo.LuzVermelhaAcesa = false; semaforo.LuzAmarelaAcesa = false; semaforo.LuzVerdeAcesa = true; } else if (semaforo.LuzVerdeAcesa) { semaforo.LuzVermelhaAcesa = false; semaforo.LuzAmarelaAcesa = true; semaforo.LuzVerdeAcesa = false; } return semaforo; } } TreinoFocadoB b = new TreinoFocadoB(); bool corp = b.CorPrimaria("preto"); Console.WriteLine(corp); string cors = b.CombinacaoCorPrimaria("azul", "amarelo"); Console.WriteLine(cors); string pn = b.PrimeiroNome("Barbara Barbosa dos Santos"); Console.WriteLine(pn); PecaDomino pc1 = new PecaDomino(); pc1.LadoA = 10; pc1.LadoB = 8; bool dd = b.DobreDomino(pc1); Console.WriteLine(dd); PecaDomino pc2 = new PecaDomino(); pc2.LadoA = 5; pc2.LadoB = 5; bool jv = b.JogadaValida(pc1, pc2); Console.WriteLine(jv); Recuperacao rec = new Recuperacao(); rec.Telefone = "94818-7643"; rec.Email = "barbarabs1703@gmail.com"; string recp = b.RecuperacaoSenha(rec); Console.WriteLine(recp); Semaforo s = b.IniciarSemaforo(); Console.WriteLine($"vermelho: {s.LuzVermelhaAcesa}, verde: {s.LuzVerdeAcesa}, amerelo: {s.LuzAmarelaAcesa}"); s = b.ProximoSinal(s); Console.WriteLine($"vermelho: {s.LuzVermelhaAcesa}, verde: {s.LuzVerdeAcesa}, amerelo: {s.LuzAmarelaAcesa}"); // False // verde // Barbara // False // False // Você recebera um email do GMAIL para resetar a senha. Um código também foi enviado para o numero -7643. // vermelho: True, verde: False, amerelo: False // vermelho: False, verde: False, amerelo: True ``` ## Exercício 3 > Crie a(s) classe(s) representando a abstração de função e/ou dados ao lado. Abaixo a > especificação das situações a serem resolvidas: > ▪ Realize a lógica para implementar uma função que descubra o trimestre a partir de uma > data. > ▪ Realize a lógica para implementar uma função que retorne o nome do mês por extenso. > ▪ Realize a lógica para implementar uma função que retorne o período do dia a partir de > uma data. Os períodos são: Manhã, Tarde, Noite, Madrugada. > ▪ Realize a lógica para implementar uma função que retorne quantos dias de vida uma pessoa > possui a partir da data de seu nascimento. > ▪ Realize a lógica para implementar uma função que verifique qual o signo de uma pessoa a > partir de seu nascimento. A função deve considerar todos os signos. > ▪ Realize a lógica para implementar uma função que escreva uma data por extenso no > seguinte formato: “XXX você nasceu há XXX dias, em uma XXX do dia XXX de XXX (Xo > trimestre) de XXX. > Seu signo é XXX.” > Ex.: “Bruno você nasceu há 11680 dias, em uma noite do dia 22 de Outubro (4o trimestre) de > 1989. Seu signo é Libra.” ```csharp= using System; public class Pessoa { public string Nome {get; set;} public DateTime Nascimento {get; set;} public string Cidade {get; set;} } public class TreinoFocadoC { public int Trimestre (DateTime data) { int trimestre = 0; if (data.Month == 1 || data.Month == 2 || data.Month ==3) { trimestre = 1; } else if (data.Month == 4 || data.Month == 5 || data.Month == 6) { trimestre = 2; } else if (data.Month == 7 || data.Month == 8 || data.Month == 9) { trimestre = 3; } else { trimestre = 4; } return trimestre; } public string Mes (int mes) { string mesescrito = string.Empty; if (mes == 1) { mesescrito = "Janeiro"; } else if (mes == 2) { mesescrito = "Fevereiro"; } else if (mes == 3) { mesescrito = "Março"; } else if (mes == 4) { mesescrito = "Abril"; } else if (mes == 5) { mesescrito = "Maio"; } else if (mes == 6) { mesescrito = "Junho"; } else if (mes == 7) { mesescrito = "Julho"; } else if (mes == 8) { mesescrito = "Agosto"; } else if (mes == 9) { mesescrito = "Setembro"; } else if (mes == 10) { mesescrito = "Outubro"; } else if (mes == 11) { mesescrito = "Novembro"; } else { mesescrito = "Dezembro"; } return mesescrito; } public string PeriodoDia (DateTime data) { string periodo = string.Empty; if (data.Hour < 6) { periodo = "Madrugada"; } else if (data.Hour >= 6 && data.Hour < 12) { periodo = "Manhã"; } else if (data.Hour >= 12 && data.Hour < 18) { periodo = "Tarde"; } else { periodo = "Noite"; } return periodo; } public double DiasVida (DateTime nascimento) { TimeSpan totalm = DateTime.Now - nascimento; double totaldias = Math.Floor(totalm.TotalDays); return totaldias; } public string QualSigno (DateTime nasc) { string signo = string.Empty; if ((nasc.Day > 20 && nasc.Month == 3) || (nasc.Day < 21 && nasc.Month == 4)) { signo = "Áries"; } else if ((nasc.Day > 20 && nasc.Month == 4) || (nasc.Day < 21 && nasc.Month == 5)) { signo = "Touro"; } else if ((nasc.Day > 20 && nasc.Month == 5) || (nasc.Day < 21 && nasc.Month == 6)) { signo = "Gêmeos"; } else if ((nasc.Day > 20 && nasc.Month == 6) || (nasc.Day < 23 && nasc.Month == 7)) { signo = "Câncer"; } else if ((nasc.Day > 22 && nasc.Month == 7) || (nasc.Day < 23 && nasc.Month == 8)) { signo = "Leão"; } else if ((nasc.Day > 22 && nasc.Month == 8) || (nasc.Day < 23 && nasc.Month == 9)) { signo = "Virgem"; } else if ((nasc.Day > 22 && nasc.Month == 9) || (nasc.Day < 23 && nasc.Month == 10)) { signo = "Libra"; } else if ((nasc.Day > 22 && nasc.Month == 10) || (nasc.Day < 22 && nasc.Month == 11)) { signo = "Escorpião"; } else if ((nasc.Day > 21 && nasc.Month == 11) || (nasc.Day < 22 && nasc.Month == 12)) { signo = "Sargitário"; } else if ((nasc.Day > 21 && nasc.Month == 12) || (nasc.Day < 21 && nasc.Month == 1)) { signo = "Capricórnio"; } else if ((nasc.Day > 20 && nasc.Month == 1) || (nasc.Day < 19 && nasc.Month == 2)) { signo = "Aquário"; } else if ((nasc.Day > 18 && nasc.Month == 2) || (nasc.Day < 21 && nasc.Month == 3)) { signo = "Peixes"; } return signo; } public string DataPorExtenso (Pessoa pessoa) { double dv = DiasVida (pessoa.Nascimento); int d = pessoa.Nascimento.Day; string p = PeriodoDia (pessoa.Nascimento); int t = Trimestre (pessoa.Nascimento); int a = pessoa.Nascimento.Year; string s = QualSigno (pessoa.Nascimento); string m = Mes (pessoa.Nascimento.Month); string mensagem = $"{pessoa.Nome} você nasceu há {dv} dias, em uma {p} do dia {d} de {m} ({t}º trimestre) de {a}. Seu signo é {s}"; return mensagem; } } TreinoFocadoC c = new TreinoFocadoC(); DateTime dt1 = new DateTime (2021, 08, 17); int trim = c.Trimestre(dt1); Console.WriteLine(trim); string mes = c.Mes(12); Console.WriteLine(mes); DateTime dt2 = new DateTime(2021, 08, 08, 23, 59, 59); string periodo = c.PeriodoDia(dt2); Console.WriteLine(periodo); DateTime dt3 = new DateTime(2002, 03, 21, 22, 28, 59); double tdias = c.DiasVida(dt3); Console.WriteLine(tdias); string signo = c.QualSigno(dt3); Console.WriteLine(signo); Pessoa p = new Pessoa (); p.Nome = "Barbara"; p.Nascimento = new DateTime (2004, 03, 17, 00, 05, 0); // 3 // Dezembro // Noite // 7015 // Áries. // Barbara você nasceu há 6289 dias, em uma Madrugada do dia 17 de Março (1º trimestre) de 2004. Seu signo é Peixes. ```
{"metaMigratedAt":"2023-06-16T07:38:46.137Z","metaMigratedFrom":"Content","title":"Session five | Fundamentos da Lógica","breaks":true,"contributors":"[{\"id\":\"efa8ac71-fa69-4ab5-8a89-20016d037e45\",\"add\":18009,\"del\":0}]"}
Expand menu