---
# System prepended metadata

title: Fundamentos da Lógica

---

autor: Felipe Oliveira Verissimo
turma: Info C
número: 16

[toc]
 
## It's always time to restart
 
# Fundamentos da Lógica 

### Trigonometria
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:

```csharp=
using System;
					
public class Trigonometria
{
	public double Areadoretangulo (double Base, double altura)
	{
		return Base * altura;
	}
	
	public double Perimetrodoretangulo (double Base, double altura)
	{
		return Base + altura + Base + altura;
	}
	
	public bool Verificarsesaoiguais (double Base1, double altura1, double Base2, double altura2)
	{
		double area = Areadoretangulo (Base1, altura1);
		double area2 = Areadoretangulo (Base2, altura2);
	    bool areas = area == area2;
		return areas;
	}
}

Trigonometria trig = new Trigonometria();

double calculo = trig.Areadoretangulo(20, 10);
Console.WriteLine("area do retangulo: " + calculo);

double calculo2 = trig.Perimetrodoretangulo(20, 10);
Console.WriteLine("perimetro do retangulo: " + calculo2);

bool calculo3 = trig.Verificarsesaoiguais(20, 10, 20, 10);
Console.WriteLine("verificar se sao iguais: " + calculo3);
// area do retangulo: 200
// perimetro do retangulo: 60
// verificar se sao iguais: True
```

### Forma Trigonometria
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:

```csharp=
using System;

public class Forma 
{
	public double Base { get; set; }
    public double altura { get; set; }
}

public class Trigonometria
{
	public double Areadoretangulo (Forma form)
	{
		return form.Base * form.altura;
	}
	
	public double Areadotriangulo (Forma form)
	{
		return form.Base + form.altura + form.Base + form.altura;
	}
	
	public double Areadoparalelogramo (Forma form)
	{
		return form.Base * form.altura;
	}
}

Trigonometria trig = new Trigonometria();
// area do retangulo: 400
// area do triangulo: 80
// area do paralelograma: 80
```

### Calendário
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:

```csharp=
using System;

public class Pessoa
{
	public string nome { get; set; }
	public DateTime niver { get; set; }
}

public class Calendario
{
	public DateTime Primeirodia (DateTime data)
	{
		DateTime x = new DateTime (data.Year, data.Month, 01);	
		return x;
	}
	public DateTime Ultimodia (DateTime data)
	{
		int x = DateTime.DaysInMonth(data.Year, data.Month);
		DateTime y = new DateTime (data.Year, data.Month, x);
		return y;
	}
	public bool Possui31 (DateTime data)
	{
		int x = DateTime.DaysInMonth(data.Year, data.Month);
		bool y = 31 == x;
		return y;
	}
	public bool Sextafeira13 (DateTime data)
	{
		DayOfWeek x = data.DayOfWeek;
		bool y = x == DayOfWeek.Friday;
		return y;
	}
	
	public string Semanasniver (Pessoa pess)
	{
		DateTime x = DateTime.Now;
		DateTime y = new DateTime(pess.niver.Year, pess.niver.Month, pess.niver.Day);
		TimeSpan z = x - y;
		double c = z.TotalDays / 7;
		double b = Math.Round(c, 1);
		string a = pess.nome + ", faltam " + b + " semanas para seu niver";
		return a;
	}
	
	public bool Soulibra (Pessoa pess)
	{
		DateTime x = new DateTime(pess.niver.Year, 09, 23);
		DateTime y = new DateTime(pess.niver.Year, 10, 22);
		bool z = pess.niver >= x && y >= pess.niver;
		return z;
	}
	
}

Calendario calen = new Calendario();

DateTime dat = new DateTime(2021, 12, 15);

DateTime primeiro = calen.Primeirodia(dat);
Console.WriteLine("primeiro dia : " + primeiro);

DateTime ultimo = calen.Ultimodia(dat);
Console.WriteLine("ultimo dia : " + ultimo);

bool possui = calen.Possui31(dat);
Console.WriteLine("31 dias: " + possui);

bool feira13 = calen.Sextafeira13(dat);
Console.WriteLine("sexta feira 13: " + feira13);


Pessoa pess = new Pessoa();
pess.niver = new DateTime(2021, 6, 18);
pess.nome = "Felipe";

string niver = calen.Semanasniver(pess);
Console.WriteLine(niver);

bool libra = calen.Soulibra(pess);
Console.WriteLine("libra: " + libra);
// primeiro dia : 12/1/2021 12:00:00 AM
// ultimo dia : 12/31/2021 12:00:00 AM
// 31 dias: True
// sexta feira 13: False
// Felipe, faltam -4.3 semanas para seu niver
// libra: False
```

### RegistroBRValidator
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:

```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("brunogmail.com", "1234");
Console.WriteLine("Cadastro ok? " + x);
// adastro ok? False
```

### Retangulo Cilindro Trigonometria
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:

```csharp=
using System;

public class Retangulo
{
	public double altura { get; set; }
	public double basee { get; set; }
}

public class Cilindro
{
	public double raio { get; set; }
	public double altura { get; set; }
}

public class Trigonometria
{
	
	public double AreaRetangulo (Retangulo retan)
	{
		return retan.altura * retan.basee;
	}
	
	public double VolumeCilindro (Cilindro cilin)
	{
		return 3.14 * Math.Pow(cilin.raio, 2) * cilin.altura;
	}
	
	public bool AreasIguais (Retangulo retan1, Retangulo retan2)
	{
		double area1 = AreaRetangulo (retan1);
		double area2 = AreaRetangulo (retan2);
		return area1 == area2;
	}
	
	public bool TransferenciaPossivel (Cilindro cilin1, Cilindro cilin2)
	{
		double cilindro1 = VolumeCilindro (cilin1);
		double cilindro2 = VolumeCilindro (cilin2);
		return cilindro1 <= cilindro2;
	}
}

Trigonometria trig = new Trigonometria();

Retangulo retan = new Retangulo();
retan.altura = 9;
retan.basee = 3;

double AreaRetan = trig.AreaRetangulo(retan);
Console.WriteLine(AreaRetan);

Cilindro cilin = new Cilindro();
cilin.raio = 10;
cilin.altura = 20;

double VolumeCilin = trig.VolumeCilindro(cilin);
Console.WriteLine(VolumeCilin);

Retangulo retan1 = new Retangulo();
retan1.altura = 40;
retan1.basee = 5;

Retangulo retan2 = new Retangulo();
retan2.altura = 20;
retan2.basee = 3;

bool AreasIgua = trig.AreasIguais(retan1, retan2);
Console.WriteLine(AreasIgua);

Cilindro cilin1 = new Cilindro();
cilin1.raio = 8;
cilin1.altura = 7;

Cilindro cilin2 = new Cilindro();
cilin2.raio = 2;
cilin2.altura = 7;

bool TransfePossivel = trig.TransferenciaPossivel(cilin1, cilin2);
Console.WriteLine(TransfePossivel);
// 27
// 6280
// False
// False

```

### Compra Brecho
▪ 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:


```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 calca = compra.QtdCalca * 30;
		double camiseta = compra.QtdCamiseta * 30;
		double blusa = compra.QtdBlusa * 30;
		return calca + camiseta + blusa;
	}
	
	private double TotalFeminino (Compra compra)
	{
		double calca = compra.QtdCalca * 40;
		double camiseta = compra.QtdCamiseta * 40;
		double blusa = compra.QtdBlusa * 40;
		return calca + camiseta + blusa;
	}
	
	private double TotalInfantil (Compra compra)
	{
		double calca = compra.QtdCalca * 20;
		double camiseta = compra.QtdCamiseta * 20;
		double blusa = compra.QtdBlusa * 20;
		return calca + camiseta + blusa;
	}
	
	private double TotalCalcados (int qtdCalcadoMasculino, int qtdCalcadoFeminino, int qtdCalcadoInfantil)
	{
		int qtdMasculino = qtdCalcadoMasculino * 35;
		int qtdFeminino = qtdCalcadoFeminino * 35;
		int qtdInfantil = qtdCalcadoInfantil * 35;
		return qtdMasculino + qtdFeminino + qtdInfantil;
	}
	
	public double CalcularTotal (Compra masculino, Compra feminino, Compra infantil)
	{
		double totalMasc = TotalMasculino(masculino);
		double totalFemi = TotalFeminino(feminino);
		double totalInfan = TotalInfantil(infantil);
		double totalcalcados = TotalCalcados(masculino.Qtdcalcados, feminino.Qtdcalcados, infantil.Qtdcalcados);
		return totalMasc + totalFemi + totalInfan + totalcalcados;
	}
}

Compra masculino = new Compra();
masculino.QtdCalca = 14;
masculino.QtdCamiseta = 25;
masculino.QtdBlusa = 10;
masculino.Qtdcalcados = 20;

Compra feminino = new Compra();
feminino.QtdCalca = 21;
feminino.QtdCamiseta = 15;
feminino.QtdBlusa = 14;
feminino.Qtdcalcados = 4;

Compra infantil = new Compra();
infantil.QtdCalca = 13;
infantil.QtdCamiseta = 10;
infantil.QtdBlusa = 8;
infantil.Qtdcalcados = 4;

Brecho brecho = new Brecho();
double CalcTotal = brecho.CalcularTotal(masculino, feminino, infantil);
Console.WriteLine(CalcTotal);
// 5070
```

### Pedido Nota LojaMoveis
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:



```csharp=
using System;


class MainClass {
  
  public static void Main (string[] args) {
    
    Console.WriteLine ("Exercício 7 | Abstração de Funções");

    Pedido p = new Pedido();
    p.Valor = 1000;
    p.AnosGarantia = 2;
    p.DistanciaEntregaKm = 50;
    p.Parcelas = 18;
    
    double cupom = 10;

    LojaMoveis loja = new LojaMoveis();
    Nota n = loja.CalcularCompra(p, cupom);

    Console.WriteLine("Valor final é: " + n.ValorFinal);
    Console.WriteLine("Nota Fiscal é: " + n.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 desconto = ValorDesconto(pedido.Valor, cupom);
        double garantia = ValorGarantia(pedido.Valor, pedido.AnosGarantia);
        double frete = ValorFrete(pedido.DistanciaEntregaKm);

        double valor = pedido.Valor - desconto + garantia + frete;
        
        double valorFinal = ValorJuros(valor, 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);
    }
}

LojaMoveis x = new LojaMoveis();

Pedido y = new Pedido();
y.Valor = 150;
y.AnosGarantia = 2;
y.DistanciaEntregaKm = 10;
y.Parcelas = 2;

Nota z = x.CalcularCompra(y, 20);
Console.WriteLine(z.NotaFiscal);
Console.WriteLine(z.ValorFinal);
// NF20210519020451
// 178.23
``` 