# Condição 2 | Fund. Lógica
**Author:** Matheus Rafael Morato Rocha
**Turma:** InfoC
**Número:** 40
[TOC]
## Nível 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=
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 Pessoa
{
public string Nome { get; set; }
public double Altura { get; set; }
public double Peso { get; set; }
}
public class Notas
{
public double Nota1 { get; set; }
public double Nota2 { get; set; }
public double Nota3 { get; set; }
}
Calculo calcular = new Calculo();
calcular.valor1 = 10;
calcular.valor2 = 2;
calcular.Operacao = "Adição";
Notas escola = new Notas ();
escola.Nota1 = 5.76;
escola.Nota2 = 5.76;
escola.Nota3 = 5.76;
int faltas = 28;
Triangulo tri = new Triangulo();
tri.LadoA = 10;
tri.LadoB = 3;
tri.LadoC = 1;
Pessoa pessoa = new Pessoa();
pessoa.Nome = "Matheus";
pessoa.Altura = 1.75;
pessoa.Peso = 60;
double temperatura = 41;
double gastos = 1500;
double lucro = 1000;
double nota = 8.70;
TreinoFocadoA x = new TreinoFocadoA();
double b = x.Calculadora(calcular);
string c = x.Termometro(temperatura);
string d = x.LucroOuPrejuizo(gastos,lucro);
string e = x.Passou(escola);
string f = x.Passou(escola,faltas);
string g = x.TipoTriangulo(tri);
string h = x.IMC(pessoa);
double i = x.ArredondarMeioEmMeio(nota);
Console.WriteLine(b);
Console.WriteLine(c);
Console.WriteLine(d);
Console.WriteLine(i);
Console.WriteLine(e);
Console.WriteLine(f);
Console.WriteLine(g);
Console.WriteLine(h);
public class TreinoFocadoA
{
public double Calculadora (Calculo a)
{
double x = 0;
if (a.Operacao == "Adição")
{
x = a.valor1 + a.valor2;
}
if (a.Operacao == "Divisão")
{
x = a.valor1 / a.valor2;
}
if (a.Operacao == "Multiplicação")
{
x = a.valor1 * a.valor2;
}
if (a.Operacao == "Substração")
{
x = a.valor1 / a.valor2;
}
if (a.Operacao == "Potencia")
{
x = Math.Pow(a.valor1,a.valor2);
}
return x;
}
public string Termometro (double grau)
{
string z = "";
if((grau > 39.6) && (grau >= 41))
{
z = $"Você esta com febre alta, sua temperatura é: {grau}";
}
if ((grau > 35.6) && (grau < 37.5))
{
z = $"Você não esta com febre,sua temperatura é: {grau}";
}
if ((grau > 37.6) && (grau < 39.5))
{
z = $"Você esta com febre,sua temperatura é: {grau}";
}
if (grau > 41)
{
z = $"Você esta com Hipertemia,sua temperatura é: {grau}";
}
return z;
}
public string LucroOuPrejuizo (double gastos,double lucro)
{
double a = lucro - gastos;
string x = "";
if (a >= 0)
{
x = $"Muito bem, você está R$ {a} positivo";
} else {
x = $"Poxa, você ficou R$ {Math.Abs(a)} negativo.";
}
return x;
}
public double ArredondarMeioEmMeio (double nota)
{
double a = nota - Math.Truncate(nota);
double x = Math.Round(a,2);
double b = 0;
if (a <= 0.25)
{
b = Math.Floor(nota);
}
if ((x >= 0.26) && (x <= 0.75))
{
b = Math.Truncate(nota) + 0.5;
}
else
{
b = Math.Ceiling(nota);
}
return b;
}
public string Passou (Notas nota)
{
double Total = (nota.Nota1 + nota.Nota2 + nota.Nota3) / 3;
string a = "";
if (Total >= 5)
{
a = $"Passou!";
} else {
a = $"Recuperação!";
}
return a;
}
public string Passou (Notas nota,int falta)
{
double Total = (nota.Nota1 + nota.Nota2 + nota.Nota3) / 3;
string a = "";
if ((Total >= 5) && (falta <= 25))
{
a = $"Passou!";
}
if ((Total < 5 ) && (falta > 25))
{
a = $"Recuperação por Nota e Falta!";
}
if ((Total >= 5) && (falta > 25))
{
a = $"Recuperação por Falta!";
}
if ((Total < 5) && (falta <= 25))
{
a = $"Recuperação por Nota!";
}
return a;
}
public string TipoTriangulo(Triangulo tri)
{
string x = "";
if ((tri.LadoA == tri.LadoB) && (tri.LadoC == tri.LadoA) && (tri.LadoC == tri.LadoB))
{
x = $"Seu triangulo e um: Equilátero";
}
else if ((tri.LadoA != tri.LadoB) && (tri.LadoC != tri.LadoA) && (tri.LadoC != tri.LadoB))
{
x = $"Seu triangulo e um: Escaleno";
}
else
{
x = $"Seu triangulo e um: Isósceles";
}
return x;
}
public string IMC(Pessoa pessoa)
{
double imc = pessoa.Peso / (pessoa.Altura * pessoa.Altura) ;
string x = "";
if ((imc > 18.5) && (imc < 24.9))
{
x = $"{pessoa.Nome} Você esta Normal";
}
if (imc < 18.5)
{
x = $"{pessoa.Nome} Você esta Abaixo do Peso";
}
if ((imc > 25) && (imc < 29.9))
{
x = $"{pessoa.Nome} Você esta Acima do Peso";
}
if (imc > 30)
{
x = $"{pessoa.Nome} Você esta Sobrepeso";
}
return x;
}
}
// 12
// Você esta com febre alta, sua temperatura é: 41
// Poxa, você ficou R$ 500 negativo.
// 8,5
// Passou!
// Recuperação por Falta!
// triangulo e um: Escaleno
//Matheus Você esta Normal
```
## Nível 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;
public string Telefone;
}
string nome = "Matheus Rafael";
string cor1 = "Azul";
string cor2 = "Amarelo";
PecaDomino lados1 = new PecaDomino();
lados1.LadoA = 6;
lados1.LadoB = 6;
PecaDomino lados2 = new PecaDomino();
lados2.LadoA = 6;
lados2.LadoB = 5;
Semaforo s = new Semaforo();
s.LuzVerdeAcesa = true;
s.LuzVermelhaAcesa = false;
s.LuzAmarelaAcesa = false;
Recuperacao EmailRec = new Recuperacao();
EmailRec.Email = "matheuszap@gmail.com";
EmailRec.Telefone = "5978-7210";
TreinoFocadoB treino = new TreinoFocadoB();
bool CorTeste1 = treino.CorPrimaria(cor1);
string CorTeste2 = treino.CombinacaoCorPrimaria(cor1,cor2);
string Nome = treino.PrimeiroNome(nome);
bool Domino = treino.DobreDomino(lados1);
bool Domino2 = treino.JogadaValida(lados1,lados2);
string Email1 = treino.RecuperacaoSenha(EmailRec);
Semaforo semaforo2 = treino.IniciarSemaforo();
Console.WriteLine(CorTeste1);
Console.WriteLine(CorTeste2);
Console.WriteLine(Nome);
Console.WriteLine(Domino);
Console.WriteLine(Domino2);
Console.WriteLine(Email1);
Console.WriteLine($"Vermelho: {s.LuzVermelhaAcesa} - Amarelo : {s.LuzAmarelaAcesa} - Verde: {s.LuzVerdeAcesa}");
public class TreinoFocadoB
{
public bool CorPrimaria (string cor)
{
bool Resultado = true;
if ((cor == "Amarelo") || (cor == "Azul") || (cor == "Vermelho"))
{
Resultado = true;
}
else {
Resultado = false;
}
return Resultado;
}
public string CombinacaoCorPrimaria (string cor1,string cor2)
{
string Mensagem = "";
if ((cor1 == "Amarelo") && (cor2 == "Vermelho") || (cor1 == "Vermelho") && (cor2 == "Amarelo"))
{
Mensagem = "Laranja";
}
else if ((cor1 == "Amarelo") && (cor2 == "Azul") || (cor1 == "Azul") && (cor2 == "Amarelo"))
{
Mensagem = "Verde";
}
else if ((cor1 == "Vermelho") && (cor2 == "Azul") || (cor1 =="Azul") && (cor2 == "Vermelho"))
{
Mensagem = "Roxo";
} else {
Mensagem = "Nenhuma cor foi encontrada";
}
return Mensagem;
}
public string PrimeiroNome (string nome)
{
bool verificar = nome.Contains(" ");
string NomeFinal = "oi";
int numero = 0;
if (verificar == true)
{
numero = nome.IndexOf(" ");
NomeFinal = nome.Substring(0,numero);
}
else {
NomeFinal = nome;
}
return NomeFinal;
}
public bool DobreDomino (PecaDomino peca)
{
bool Resultado = true;
if (peca.LadoA == peca.LadoB)
{
Resultado = true;
} else {
Resultado = false;
}
return Resultado;
}
public bool JogadaValida(PecaDomino peca1, PecaDomino peca2)
{
bool Resultado = true;
if((peca1.LadoA == peca2.LadoA) || (peca1.LadoB == peca2.LadoB) || (peca1.LadoB == peca2.LadoA))
{
Resultado = true;
} else {
Resultado = false;
}
return Resultado;
}
public string RecuperacaoSenha(Recuperacao rec)
{
int corte = rec.Telefone.IndexOf("-");
string corte2 = rec.Telefone.Substring(corte +1);
if (rec.Email.Contains("@"))
{
string corte3 = rec.Email.Substring(rec.Email.LastIndexOf("@"));
string corte4 = corte3.Substring(0,corte3.IndexOf("."));
string CorteFinal = corte4.Replace("@","");
return $"Você receberá um e-mail do {CorteFinal} para resetar a senha. Um código também foi enviado para o número {corte2}.";
} else {
return $"Algo esta errado no seu email ou telefone, tente rescrevelos";
}
}
public Semaforo IniciarSemaforo()
{
Semaforo s = new Semaforo();
s.LuzVerdeAcesa = true;
s.LuzVermelhaAcesa = false;
s.LuzAmarelaAcesa = false;
return s;
}
public Semaforo ProximoSinal (Semaforo s)
{
if (s.LuzVermelhaAcesa)
{
s.LuzVermelhaAcesa = true;
s.LuzAmarelaAcesa = false;
s.LuzVerdeAcesa = false;
}
else if (s.LuzAmarelaAcesa)
{
s.LuzVermelhaAcesa = false;
s.LuzAmarelaAcesa = true;
s.LuzVerdeAcesa = false;
}
else if (s.LuzVerdeAcesa)
{
s.LuzVermelhaAcesa = false;
s.LuzAmarelaAcesa = false;
s.LuzVerdeAcesa = true;
}
return s;
}
}
// True
// Verde
// Matheus
// True
// True
//Você receberá um e-mail do gmail para resetar a senha. Um código também foi enviado para o número 7210.
// Vermelho: False - Amarelo : False - Verde: True
```
## Nível 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 numero = 0;
if (data.Month == 1 || data.Month <= 3)
{
numero = 1;
}
else if (data.Month == 4 || data.Month < 6)
{
numero = 2;
}
else if (data.Month == 7 || data.Month < 9)
{
numero = 3;
}
else if (data.Month == 10 || data.Month < 12)
{
numero = 4;
}
return numero;
}
public string Mes(int mes)
{
string extenso = "";
if (mes == 1)
{
extenso = "Janeiro";
}
else if (mes == 2)
{
extenso = "Fevereiro";
}
else if (mes == 3)
{
extenso = "Março";
}
else if (mes == 4)
{
extenso = "Abril";
}
else if (mes == 5)
{
extenso = "Maio";
}
else if (mes == 6)
{
extenso = "Junho";
}
else if (mes == 7)
{
extenso = "Julho";
}
else if (mes == 8)
{
extenso = "Agosto";
}
else if (mes == 9)
{
extenso = "Setembro";
}
else if (mes == 10)
{
extenso = "Outubro";
}
else if (mes == 11)
{
extenso = "Novvembro";
}
else if (mes == 12)
{
extenso = "Dezembro";
}
return extenso;
}
public string PeriodoDia(DateTime data)
{
string HoraDoDia = "";
if (data.Hour >= 6 && data.Hour < 12)
{
HoraDoDia = "Manhã";
}
else if (data.Hour >= 12 && data.Hour < 18)
{
HoraDoDia = "Tarde";
}
else if (data.Hour >= 18 && data.Hour < 24)
{
HoraDoDia = "Noite";
}
else if (data.Hour >= 24 && data.Hour < 6)
{
HoraDoDia = "Madrugada";
}
return HoraDoDia;
}
public double DiasVida(DateTime Nascimento)
{
TimeSpan dias = DateTime.Now - Nascimento;
double Total = dias.TotalDays;
double Total2 = Math.Truncate(Total);
return Total2;
}
public string QualSigno(DateTime nascimento)
{
string Signo = "";
if (nascimento.Day >=21 && nascimento.Month == 1 || nascimento.Day <= 18 && nascimento.Month == 2)
{
Signo = "Aquário";
}
else if (nascimento.Day >= 19 && nascimento.Month == 2 || nascimento.Day <= 20 && nascimento.Month == 3)
{
Signo = "Peixes";
}
else if (nascimento.Day >=21 && nascimento.Month == 3 || nascimento.Day <= 20 && nascimento.Month == 4)
{
Signo = "Áries";
}
else if (nascimento.Day >=21 && nascimento.Month == 4 || nascimento.Day <= 20 && nascimento.Month == 5)
{
Signo = "Touro";
}
else if (nascimento.Day >=21 && nascimento.Month == 5 || nascimento.Day <= 20 && nascimento.Month == 6)
{
Signo = "Gêmeos";
}
else if (nascimento.Day >=21 && nascimento.Month == 6 || nascimento.Day <= 22 && nascimento.Month == 7)
{
Signo = "Câncer";
}
else if (nascimento.Day >=23 && nascimento.Month == 7 || nascimento.Day <= 22 && nascimento.Month == 8)
{
Signo = "Leão";
}
else if (nascimento.Day >=23 && nascimento.Month == 8 || nascimento.Day <= 22 && nascimento.Month == 9)
{
Signo = "Virgem";
}
else if (nascimento.Day >=23 && nascimento.Month == 9 || nascimento.Day <= 22 && nascimento.Month == 10)
{
Signo = "Libra";
}
else if (nascimento.Day >=23 && nascimento.Month == 10 || nascimento.Day <= 21 && nascimento.Month == 11)
{
Signo = "Escorpião";
}
else if (nascimento.Day >=22 && nascimento.Month == 11 || nascimento.Day <= 21 && nascimento.Month == 12)
{
Signo = "Sagitário";
}
else if (nascimento.Day >=22 && nascimento.Month == 12 || nascimento.Day <= 20 && nascimento.Month == 1)
{
Signo = "Capricórnio";
}
else
{
Signo = "Se chegou aqui, seu signo é Alienígina";
}
return Signo;
}
public string DataPorExtenso(Pessoa pessoa)
{
string MesExtenso = Mes(pessoa.Nascimento.Month);
int tri = Trimestre(pessoa.Nascimento);
string HoraDoDia = PeriodoDia(pessoa.Nascimento);
double DiasDeLife = DiasVida(pessoa.Nascimento);
string SignoGay = QualSigno(pessoa.Nascimento);
return $"{pessoa.Nome} você nasceu há {DiasDeLife} dias, em uma {HoraDoDia} do dia {pessoa.Nascimento.Day} de {MesExtenso} ({tri}o trimestre) de {pessoa.Nascimento.Year}. Seu signo é {SignoGay}.";
}
}
Pessoa eu = new Pessoa();
eu.Nome = "Matheus Rafael";
eu.Nascimento = new DateTime (2004, 09, 10, 13, 30, 0);
eu.cidade = "São Paulo";
DateTime data = new DateTime (2004,11,05);
DateTime data2 = new DateTime(2021, 4, 10, 6, 30, 0);
DateTime Dias = new DateTime(2004,09,10);
int mes = 6;
TreinoFocadoC a = new TreinoFocadoC();
int tri = a.Trimestre(data);
string MesExtenso = a.Mes(mes);
string HoraDoDia = a.PeriodoDia(data2);
double DiasDeLife = a.DiasVida(Dias);
string SignoGay = a.QualSigno(Dias);
string DataExtenso = a.DataPorExtenso(eu);
Console.WriteLine(tri);
Console.WriteLine(MesExtenso);
Console.WriteLine(HoraDoDia);
Console.WriteLine(DiasDeLife);
Console.WriteLine(SignoGay);
Console.WriteLine(DataExtenso);
// 4
// Junho
// Manhã
// 6106
// Virgem
// Matheus Rafael você nasceu há 6105 dias, em uma Tarde do dia 10 de Setembro (4o trimestre) de 2004. Seu signo é Virgem.
```