# SESSION THREE — FUNDAMENTOS DA LÓGICA
Author: Igor Lima Charles
N°: 18
Grade: INFOA
## ABSTRAÇÃO DE FUNÇÕES
### EXERCÍCIO 1
```csharp=
using System;
public class Retangulo
{
public double Basee {get; set;}
public double Altura {get; set;}
}
public class Trigonometria
{
public double AreaRetangulo (double Basee, double Altura)
{
return Basee * Altura;
}
public double PerimetroRetangulo (double Basee, double Altura)
{
return Basee + Basee + Altura + Altura;
}
public bool AreasIguais(Retangulo ret1, Retangulo ret2)
{
return AreaRetangulo(ret1.Basee, ret1.Altura) == AreaRetangulo(ret2.Basee, ret2.Altura);
}
}
Trigonometria termo = new Trigonometria ();
double x = termo.AreaRetangulo(5, 5);
Console.WriteLine("A área do retângulo é: " + x);
double y = termo.PerimetroRetangulo(5, 5);
Console.WriteLine("O perímetro do retângulo é:" + y);
Retangulo ret1 = new Retangulo();
ret1.Basee = 6;
ret1.Altura = 6;
Retangulo ret2 = new Retangulo();
ret2.Altura = 10;
ret2.Basee = 5;
bool a = termo.AreasIguais(ret1, ret2);
Console.WriteLine("Os dois retângulos são iguais? " + a)
A área do retângulo é: 25
O perímetro do retângulo é:20
Os dois retângulos são iguais? False
```
### EXERCÍCIO 2
```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.Base * retangulo.Altura;
}
public double AreaTriangulo (Forma triangulo)
{
return (triangulo.Base * triangulo.Altura) / 2;
}
public double AreaPararelogramo (Forma retangulo)
{
return retangulo.Base * retangulo.Altura;
}
}
Trigonometria Termo = new Trigonometria ( );
Forma f = new Forma ();
f.Altura = 5;
f.Base = 6;
double x = Termo.AreaRetangulo(f);
Console.WriteLine("A área do retângulo é: " + x);
f.Altura = 6;
f.Base = 6;
double y = Termo.AreaTriangulo(f);
Console.WriteLine("A área do triângulo é: " + y);
f.Altura = 7;
f.Base = 7;
double z = Termo.AreaPararelogramo(f);
Console.WriteLine("A área do paralelogramo é: " + z)
A área do retângulo é: 30
A área do triângulo é: 18
A área do paralelogramo é: 49
```
### EXERCÍCIO 3
```csharp=
using System;
public class Pessoa
{
public string Nome {get; set;}
public DateTime Aniversario {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 a = DateTime.Now;
DateTime b = new DateTime (a.Year, pessoa.Aniversario.Month, pessoa.Aniversario.Day);
TimeSpan c = a - b;
double d = c.TotalDays /7;
double e = Math.Round(d);
string f = $"pessoa.Nome faltam {e} semanas para o seu aniversário";
return f;
}
public bool SouDeLibra (Pessoa pessoa)
{
DateTime SignoDetestavel1 = new DateTime(pessoa.Aniversario.Year,09,23);
DateTime SignoDetestavel2 = new DateTime(pessoa.Aniversario.Year,10,22);
return pessoa.Aniversario >= SignoDetestavel1 && pessoa.Aniversario <= SignoDetestavel2;
}
}
Pessoa p = new Pessoa ();
p.Nome = "Igor Lima Charles";
p.Aniversario = new DateTime (2004, 08, 12);
Calendario n = new Calendario ( );
DateTime a = n.PrimeiroDia(p.Aniversario);
DateTime b = n.UltimoDia(p.Aniversario);
bool c = n.Possui31Dias(p.Aniversario);
bool d = n.SextaFeira13(p.Aniversario);
string e = n.SemanasParaNiver(p);
bool f = n.SouDeLibra(p);
Console.WriteLine("O primeiro dia do mês é: " + a);
Console.WriteLine("O último dia do mês é: " + b);
Console.WriteLine("O mês de aniversário possui 31 dias? " + c );
Console.WriteLine("A data cai numa sexta-feira 13? " + d);
Console.WriteLine("Quantas semanas faltam para o aniversário? " + e);
Console.WriteLine("O aniversariante pertence ao detestável signo de Libra? " + f);
O primeiro dia do mês é: 8/1/2004 12:00:00 AM
O último dia do mês é: 8/31/2004 12:00:00 AM
O mês de aniversário possui 31 dias? True
A data cai numa sexta-feira 13? False
Quantas semanas faltam para o aniversário? pessoa.Nome faltam -13 semanas para o seu aniversário
O aniversariante pertence ao detestável signo de Libra? False
```
### EXERCÍCIO 4
```csharp=
using System;
public class RegistroBRValidator
{
public bool ValidarCadastro (string email, string senha)
{
bool v1 = email.Length >= 8;
bool v2 = email.Contains("!") || email.Contains("@") || email.Contains("#") || email.Contains("%");
bool v3 = email.Contains("a") || email.Contains("e") || email.Contains("i") || email.Contains("o") || email.Contains("u");
bool v4 = email.Contains("@");
bool v5 = email.Contains("@")
&&
email.Substring(0, email.IndexOf("@")).Length > 2
&&
email.Substring(email.IndexOf("@")).Length > 2;
return v1 && v2 && v3 && v4 && v5;
}
public bool ValidarDominio (string dominio)
{
bool v1 = dominio.EndsWith(".com.br");
bool v2 = 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 v3 = dominio.Substring(0, dominio.IndexOf(".com.br")).Length >= 5;
return v1 && v2 && v3;
}
}
RegistroBRValidator registroBR = new RegistroBRValidator();
bool x = registroBR.ValidarCadastro("IgorLimaCharlesgmail.com", "99083");
Console.WriteLine("Cadastro mencionado está ok? " + x);
RegistroBRValidator novoRegistroBR = new RegistroBRValidator();
bool z = novoRegistroBR.ValidarCadastro("1gorLim4Charles@gmail.com.br", "20040812");
Console.WriteLine("Cadastro mencionado está ok? " + z);
x = Cadastro mencionado está ok? False
z = Cadastro mencionado está ok? True
```
### EXERCÍCIO 5
```csharp=
using System;
public class Retangulo
{
public double Basee {get; set;}
public double Altura {get; set;}
}
public class Cilindro
{
public double Raio {get; set;}
public double Altura {get; set;}
}
public class Trigonometria
{
public double AreaRetangulo (Retangulo x)
{
return x.Basee * x.Altura;
}
public bool AreasIguais(Retangulo ret1, Retangulo ret2)
{
return AreaRetangulo(ret1) == AreaRetangulo(ret2);
}
public double VolumeCilindro (Cilindro cilindro)
{
double a = (Math.PI * (Math.Pow(cilindro.Raio, 2)) * cilindro.Altura);
double b = Math.Round(a, 2);
return b;
}
public bool TransferenciaPossivel (Cilindro ci1, Cilindro ci2)
{
return VolumeCilindro(ci1) == VolumeCilindro(ci2);
}
}
Retangulo r1 = new Retangulo ( );
r1.Basee = 5;
r1.Altura = 5;
Retangulo r2 = new Retangulo ( );
r2.Basee = 6;
r2.Altura = 6;
Cilindro c1 = new Cilindro ( );
c1.Altura = 4;
c1.Raio = 5;
Cilindro c2 = new Cilindro ( );
c2.Altura = 5;
c2.Raio = 4;
Trigonometria r = new Trigonometria();
double x = r.AreaRetangulo(r1);
Console.WriteLine("AreaRetangulo: " + x);
bool y = r.AreasIguais(r1, r2);
Console.WriteLine("AreasIguais: " + y );
double z = r.VolumeCilindro(c1);
Console.WriteLine("O volume do cilindro é de: " + z);
bool p = r.TransferenciaPossivel(c1, c2);
Console.WriteLine(" É possível transferir de um cilindro pra outro? " + p);
AreaRetangulo: 25
AreasIguais: False
O volume do cilindro é de: 314.16
É possível transferir de um cilindro pra outro? False
```
### EXERCÍCIO 6
```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
{
public double CalcularTotal(Compra c1, Compra c2, Compra c3)
{
double a = TotalMasculino(c1);
double b = TotalFeminino(c2);
double c = TotalInfantil(c3);
double d = TotalCalcados(c1.QtdCalcados, c2.QtdCalcados, c3.QtdCalcados);
return a + b + c + d;
}
private double TotalMasculino(Compra x)
{
double a = x.QtdBlusa * 30;
double b = x.QtdCalca * 30;
double c = x.QtdCamiseta * 30;
return a + b + c;
}
private double TotalFeminino(Compra x)
{
double a = x.QtdBlusa * 40;
double b = x.QtdCalca * 40;
double c = x.QtdCamiseta * 40;
return a + b + c;
}
private double TotalInfantil(Compra x)
{
double a = x.QtdBlusa * 20;
double b = x.QtdCalca * 20;
double c = x.QtdCamiseta * 20;
return a + b + c;
}
private double TotalCalcados(int qtdCalcadoMasculino, int qtdCalcadoFeminino, int qtdCalcadoInfantil)
{
double a = qtdCalcadoMasculino * 35;
double b = qtdCalcadoFeminino * 35;
double c = qtdCalcadoInfantil * 35;
return a + b + c;
}
}
Compra Compra1 = new Compra ( );
Compra1.QtdCamiseta = 4;
Compra1.QtdCalca = 2;
Compra1.QtdBlusa = 1;
Compra1.QtdCalcados = 1;
Compra Compra2 = new Compra ( );
Compra2.QtdBlusa = 1;
Compra2.QtdCalca = 2;
Compra2.QtdCamiseta = 0;
Compra2.QtdCalcados = 1;
Compra Compra3 = new Compra ( );
Compra3.QtdCalca = 2;
Compra3.QtdCamiseta = 6;
Compra3.QtdBlusa = 0;
Compra3.QtdCalcados = 1;
Brecho brecho = new Brecho ( );
double z = brecho.CalcularTotal(Compra1, Compra2, Compra3);
Console.WriteLine($"O valor total de sua compra é de {z} reais");
O valor total de sua compra é de 595 reais
```
### EXERCÍCIO 7
```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
{
public Nota CalcularCompra (Pedido pedido, double cupom)
{
double valorFinal = ValorJuros( pedido.Valor - ValorDesconto(pedido.Valor, cupom) + ValorGarantia(pedido.Valor, pedido.AnosGarantia)
+ ValorFrete(pedido.DistanciaEntregaKm), 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 = 1500;
p.AnosGarantia = 3;
p.DistanciaEntregaKm = 20;
p.Parcelas = 10;
double cupom = 15;
LojaMoveis loja = new LojaMoveis();
Nota x = loja.CalcularCompra(p, cupom);
Console.WriteLine($"O valor final é de {x.ValorFinal} reais e o número de sua DANTE/NF é: {x.NotaFiscal}");
O valor final é de 2628.7 reais e o número de sua DANTE/NF é: NF20210515163945
```