# Session three: It's always time to restart | Fundamentos da Lógica
**Autor**: Vitório Trindade Santana
**Turma**: Informática C
**Número**: 50
[toc]
## Exercício 1
```csharp=
public class Trigonometria
{
public int AreaRetangulo (int altura, int basee)
{
return altura * basee;
}
public int PerimetroRetangulo (int altura, int basee)
{
return (altura * 2) + (basee * 2);
}
public bool RetangulosIguais (int a1, int b1, int a2, int b2)
{
int r1 = AreaRetangulo (a1, b1);
int r2 = AreaRetangulo (a2, b2);
bool s = r1 == r2;
return s;
}
}
Trigonometria trig = new Trigonometria ();
int x1 = trig.AreaRetangulo(8, 5);
int x2 = trig.PerimetroRetangulo(7, 4);
bool x3 = trig.RetangulosIguais(9, 4, 12, 3);
Console.WriteLine("A área do retângulo é :" + x1);
Console.WriteLine("O perímetro do retângulo é :" + x2);
Console.WriteLine("Os retângulos possuem áreas iguais? " + x3);
// A área do retângulo é :40
//O perímetro do retângulo é :22
//Os retângulos possuem áreas iguais? True
```
## Exercício 2
```csharp=
public class Forma
{
public double Base { get;set; }
public double Altura { get;set; }
}
public class Trigonometria
{
public double AreaRetangulo (Forma ret)
{
double area = ret.Base * ret.Altura;
return area;
}
public double AreaTriangulo (Forma tri)
{
double area = (tri.Base * tri.Altura) / 2;
return area;
}
public double AreaParalelogramo (Forma ret)
{
double area = ret.Base * ret.Altura;
return area;
}
}
Forma ret = new Forma ();
ret.Altura = 9;
ret.Base = 6;
Forma tria = new Forma ();
tria.Altura = 7;
tria.Base = 4;
Forma par = new Forma ();
par.Altura = 10;
par.Base = 6;
Trigonometria tri = new Trigonometria ();
double x1 = tri.AreaRetangulo(ret);
double x2 = tri.AreaTriangulo(tria);
double x3 = tri.AreaParalelogramo(par);
Console.WriteLine("A área do retângulo é: " + x1);
Console.WriteLine("A área do triângulo é: " + x2);
Console.WriteLine("A área do paralelogramo é: " + x3);
//A área do retângulo é: 54
//A área do triângulo é: 14
//A área do paralelogramo é: 60
```
## Exercício 3
```csharp=
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)
{
DateTime a = new DateTime(data.Year, data.Month, 1);
DateTime b = a.AddMonths(1);
DateTime c = b.AddDays(-1);
return c;
}
public bool Possui31Dias (DateTime data)
{
DateTime a = new DateTime(data.Year, data.Month, 1);
DateTime b = a.AddMonths(1);
DateTime c = b.AddDays(-1);
int d = c.Day;
bool e = d == 31;
return e;
}
public bool SextaFeira13 (DateTime data)
{
bool a = data.Day == 13 && data.DayOfWeek == DayOfWeek.Friday;
return a;
}
public string SemanasParaNiver (Pessoa pessoa)
{
DateTime dataNiver = new DateTime(pessoa.Niver.Year, pessoa.Niver.Month, pessoa.Niver.Day);
DateTime hoje = DateTime.Now;
TimeSpan dif = dataNiver - hoje;
int semanas = dif.Days / 7;
string mensagem = $"{pessoa.Nome}, faltam {semanas} semanas para seu niver.";
return mensagem;
}
public bool SouDeLibra (Pessoa info)
{
bool opcao1 = info.Niver.Day >= 22 && info.Niver.Month == 9;
bool opcao2 = info.Niver.Day <= 23 && info.Niver.Month == 10;
bool conf = opcao1 == true || opcao2 == true;
return conf;
}
}
DateTime q1 = new DateTime(2021, 5, 9);
DateTime q2 = new DateTime(2021, 3, 9);
DateTime q3 = new DateTime (2021, 2, 10);
DateTime q4 = new DateTime(2020, 11, 13);
Pessoa q5 = new Pessoa ();
q5.Niver = new DateTime(2021, 12, 26);
q5.Nome = "Vitório Trindade Santana";
Pessoa q6 = new Pessoa ();
q6.Niver = new DateTime(2021, 10, 1);
Calendario cal = new Calendario ();
DateTime x1 = cal.PrimeiroDia(q1);
DateTime x2 = cal.UltimoDia(q2);
bool x3 = cal.Possui31Dias(q3);
bool x4 = cal.SextaFeira13(q4);
string x5 = cal.SemanasParaNiver(q5);
bool x6 = cal.SouDeLibra(q6);
Console.WriteLine("O primeiro dia do mês é: " + x1);
Console.WriteLine("O último de do mês é: " + x2);
Console.WriteLine("O mês possui 31 dias?: " + x3);
Console.WriteLine("O dia é uma sexta-feira 13?: " + x4);
Console.WriteLine(x5);
Console.WriteLine("Sou de libra?: " + x6);
//O primeiro dia do mês é: 5/1/2021 12:00:00 AM
//O último de do mês é: 3/31/2021 12:00:00 AM
//O mês possui 31 dias?: False
//O dia é uma sexta-feira 13?: True
//Vitório Trindade Santana, faltam 32 semanas para seu niver.
//Sou de libra?: True
```
## Exercício 4
```csharp=
public class RegistroBrValidator
{
public bool ValidarCadastro (string email, string senha)
{
bool a1 = email.Contains("@");
bool a2 = email.Substring(0, email.IndexOf("@")).Length > 2 && email.Substring(email.IndexOf("@")).Length > 2;
bool a3 = senha.Contains("a") || senha.Contains("e") || senha.Contains("i") || senha.Contains("o") || senha.Contains("u");
bool a4 = senha.Contains("!") || senha.Contains("@") || senha.Contains("#") || senha.Contains("%") || senha.Contains("*") || senha.Contains("-");
bool a5 = senha.Length >= 8;
return a1 && a2 && a3 && a4 && a5;
}
public bool ValidarDominio (string dominio)
{
bool a1 = dominio.EndsWith(".com.br");
bool a2 = 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 a3 = dominio.Length >= 5;
return a1 && a2 && a3;
}
}
RegistroBrValidator x1 = new RegistroBrValidator();
bool q1 = x1.ValidarCadastro("vitoriotrindade-2004@hotmail.com", "vito98*-");
bool q2 = x1.ValidarDominio("hotmail.com.br");
Console.WriteLine("O seu cadastro é: " + q1);
Console.WriteLine("O dominio do seu email é: " + q2);
//O seu cadastro é: True
//O dominio do seu email é: True
```
## Exercício 5
```csharp=
class MainClass {
public static void Main (string[] args) {
Retangulo ret1 = new Retangulo();
ret1.Altura = 25;
ret1.Base =3;
Retangulo ret2 = new Retangulo();
ret2.Altura = 12.5;
ret2.Base =6;
Cilindro ci1 = new Cilindro();
ci1.Raio = 4;
ci1.Altura = 9;
Cilindro ci2 = new Cilindro();
ci2.Raio = 3;
ci2.Altura = 10;
Trigonometria tri = new Trigonometria ();
bool q1 = tri.AreasIguais (ret1, ret2);
bool q2 = tri.TransferenciaPossivel (ci1, ci2);
Console.WriteLine ("Os retângulos possuem uma área igual? " + q1 );
Console.WriteLine("É possível a transferência? " + q2);
}
}
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)
{
bool x1 = AreaRetangulo (ret1) == AreaRetangulo (ret2);
return x1;
}
public double AreaRetangulo (Retangulo ret1)
{
return ret1.Altura * ret1.Base;
}
public bool TransferenciaPossivel (Cilindro ci1, Cilindro ci2)
{
bool x2 = VolumeCilindro (ci1) == VolumeCilindro (ci2);
return x2;
}
public double VolumeCilindro (Cilindro ci1)
{
return 3.14 * Math.Pow(ci1.Raio, 2) * ci1.Altura;
}
}
//Os retângulos possuem uma área igual? True
//É possível a transferência? False
```
## Exercício 6
```csharp=class MainClass {
public static void Main (string[] args) {
Compra masc = new Compra();
masc.QtdCalca = 1;
masc.QtdCamiseta = 4;
masc.QtdBlusa = 2;
masc.QtdCalcados = 1;
Compra fem = new Compra();
fem.QtdCalca = 3;
fem.QtdCamiseta = 4;
fem.QtdBlusa = 5;
fem.QtdCalcados = 2;
Compra infan = new Compra();
infan.QtdCalca = 1;
infan.QtdCamiseta = 4;
infan.QtdBlusa = 2;
infan.QtdCalcados = 0;
Brecho bre = new Brecho ();
double q1 = bre.CalcularTotal (masc, fem, infan);
Console.WriteLine ("O valor total da compra foi: " + q1 );
}
}
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
{
public double CalcularTotal (Compra masculino, Compra feminino,Compra infantil)
{
return TotalMasculino (masculino) + TotalFeminino(feminino) + TotalInfantil(infantil) + TotalCalcados (masculino.QtdCalcados, feminino.QtdCalcados, infantil.QtdCalcados);
}
private double TotalMasculino (Compra compra)
{
return (compra.QtdBlusa * 30) + (compra.QtdCalca * 30) + (compra.QtdCamiseta * 30);
}
private double TotalFeminino (Compra compra)
{
return (compra.QtdBlusa * 40) + (compra.QtdCalca * 40) + (compra.QtdCamiseta * 40);
}
private double TotalInfantil (Compra compra)
{
return (compra.QtdBlusa * 20) + (compra.QtdCalca * 20) + (compra.QtdCamiseta * 20);
}
private double TotalCalcados (int qtdCalcadoMasculino, int qtdCalcadoFeminino, int qtdCalcadoInfantil)
{
return (qtdCalcadoMasculino * 35) + (qtdCalcadoFeminino * 35) + (qtdCalcadoInfantil * 35);
}
}
//O valor total da compra foi: 935
```
## Exercício 7
```csharp=
class MainClass {
public static void Main (string[] args) {
Pedido p = new Pedido();
p.Valor = 2300;
p.AnosGarantia = 1;
p.DistanciaEntregaKm = 12;
p.Parcelas = 4;
double cupom = 20;
LojaMoveis lm = new LojaMoveis ();
Nota nt = lm.CalcularCompra (p, cupom);
Console.WriteLine("Valor final é: " + nt.ValorFinal);
Console.WriteLine("Nota Fiscal é: " + nt.NotaFiscal);
}
}
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 valor = pedido.Valor - ValorDesconto(pedido.Valor, cupom) + ValorGarantia(pedido.Valor, pedido.AnosGarantia) +
ValorFrete(pedido.DistanciaEntregaKm);
double total = Math.Round(ValorJuros(valor, pedido.Parcelas), 2);
Nota notafis = new Nota();
notafis.ValorFinal = total;
notafis.NotaFiscal = "NF" + DateTime.Now.ToString("yyyyMMddHHmmss");
return notafis;
}
private double ValorDesconto (double valorCompra, double cupom)
{
return (valorCompra * cupom) / 100;
}
private double ValorGarantia (double valorCompra, int anos)
{
return anos * ((15 * valorCompra) / 100);
}
private double ValorFrete (int distancia)
{
return (distancia / 10 * 3);
}
private double ValorJuros (double valor, int parcelas)
{
return valor * Math.Pow(1 + 0.03, parcelas);
}
}
//Valor final é: 2462.61
// Nota Fiscal é: NF20210517024050
```