# Funções Packages | Fund. Lógica
**Author:** Matheus Rafael Morato Rocha
**Turma:** InfoC
**Número:** 40
[TOC]
## Nível 1
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:
▪ Calcular a área do retângulo baseado em sua
altura e base.
▪ Calcular o perímetro do retângulo baseado em
sua altura e base.
▪ Verificar se dois retângulos são iguais baseado em
suas áreas.
```csharp=
public class trigonometria
{
public int AreaRetangulo(int basee, int altura)
{
int Area = basee * altura;
return Area;
}
public int PerimetroRetangulo (int basee, int altura)
{
int Perimetro = basee + basee + altura + altura;
return Perimetro;
}
public bool RetangulosIguais (int altura1,int basee1,int altura2, int basee2)
{
double area1 = AreaRetangulo(basee1, altura1);
double area2 = AreaRetangulo(basee2, altura2);
bool iguais = area1 == area2;
return iguais;
}
}
trigonometria trig = new trigonometria();
int a = trig.AreaRetangulo(4,2);
System.Console.WriteLine("Area do retangulo: " + a);
int x = trig.PerimetroRetangulo (4,2);
System.Console.WriteLine("Perimetro do retangulo: " + x);
bool z = trig.RetangulosIguais(4,2,3,5);
System.Console.WriteLine("Retangulos Iguais: " + z);
//Area do retangulo: 8
//Perimetro do retangulo: 12
//Retangulos Iguais: False
```
## Nível 2
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:
▪ Calcular a área do retângulo baseado em sua
altura e base abstraído em um tipo composto.
▪ Calcular a área do triângulo baseado em sua
altura e base abstraído em um tipo composto.
▪ Calcular a área do paralelogramo baseado em sua
altura e base abstraído em um tipo composto.
```csharp=
public class Forma
{
public double basee {get;set;}
public double altura {get;set;}
}
public class trigonometria
{
public double AreaRetangulo(Forma retangulo)
{
double Area = retangulo.basee * retangulo.altura;
return Area;
}
public double AreaTriangulo (Forma triangulo)
{
double AreaTri = (triangulo.basee * triangulo.altura) /2;
return AreaTri;
}
public double AreaParalelogramo(Forma retangulo)
{
double AreaPara = retangulo.basee * retangulo.altura;
return AreaPara;
}
}
Forma form = new Forma();
form.basee = 4;
form.altura = 2;
trigonometria trig = new trigonometria();
double a = trig.AreaRetangulo(form);
double b = trig.AreaTriangulo(form);
double c = trig.AreaParalelogramo(form);
System.Console.WriteLine("Area do retangulo: " + a);
System.Console.WriteLine("Area do Triangulo: " + b);
System.Console.WriteLine("Area Paralelogramo: " + c);
//Area do retangulo: 8
//Area do Triangulo: 4
//Area Paralelogramo: 8
```
## Nível 3
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:
▪ Retorne o primeiro dia do mês a partir de uma data.
▪ Retorne o último dia do mês a partir de uma data.
▪ Verifique se o mês possui 31 dias a partir de uma data.
▪ Verifique se uma data cai em uma sexta-feira 13
▪ Retorne quantas semanas faltam para chegar no
aniversário de uma pessoa a partir de seu nome e data
de aniversário abstraído em um tipo composto. O
retorno deve seguir o template: “XXXX, faltam XXXX
semanas para seu niver.”
▪ Retorne se uma pessoa é de Libra a partir do dia em
que nasceu abstraído em um tipo composto.
```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 mes = new DateTime(data.Year,data.Month,1);
DateTime proximo = mes.AddMonths(1);
return proximo;
}
public DateTime UltimoDia (DateTime data)
{
DateTime a = data.AddMonths(1);
int b = data.Day;
DateTime d = a.AddDays(-b);
return d;
}
public bool Possui31Dias (DateTime data)
{
bool a = data.Day == 31;
return a;
}
public bool SextaFeira13 (DateTime data)
{
bool a = data.Day == 13;
bool z = data.DayOfWeek == DayOfWeek.Friday;
bool x = a && z;
return x;
}
public string SemanasParaNiver (Pessoa Aniversario)
{
int ano = DateTime.Now.Year;
DateTime Niver = new DateTime(ano, Aniversario.Niver.Month,Aniversario.Niver.Day);
TimeSpan Dias = DateTime.Now - Niver;
double Semanas = Dias.TotalDays / 7;
double SemanasTotal = Math.Ceiling(Semanas);
double SemandaPositivo = Math.Abs(SemanasTotal);
string Mensagem = Aniversario.nome + ",faltam " + SemandaPositivo + " semanas para seu niver.";
return Mensagem;
}
public bool SouDeLibra (Pessoa Signo)
{
bool op = Signo.Niver.Month == 9 && Signo.Niver.Day > 22;
bool op2 = Signo.Niver.Month == 10 && Signo.Niver.Day < 23;
bool Libra = op == true || op2 == true;
return Libra;
}
}
Pessoa Humano = new Pessoa();
Humano.Niver = new DateTime (2004, 09, 10);
Humano.nome = "Matheus Rafael";
DateTime data = new DateTime (2021, 08, 13);
Calendario datas = new Calendario();
DateTime a = datas.PrimeiroDia(data);
DateTime b = datas.UltimoDia(data);
bool c = datas.Possui31Dias(data);
bool d = datas.SextaFeira13(data);
string e = datas.SemanasParaNiver(Humano);
bool f = datas.SouDeLibra(Humano);
Console.WriteLine("Primeiro dia do més: " + a);
Console.WriteLine("Ùltimo dia do més: " + b);
Console.WriteLine("O més possui 31 dias: " + c);
Console.WriteLine("Esse dia e sexta-feira 13" + d);
Console.WriteLine(e);
Console.WriteLine("Sou de libra?: " + f);
//Primeiro dia do més: 9/1/2021 12:00:00 AM
//Ùltimo dia do més: 8/31/2021 12:00:00 AM
//O més possui 31 dias: False
//Esse dia e sexta-feira 13True
//Matheus Rafael,faltam 17 semanas para seu niver.
//Sou de libra?: False
```
## Nível 4
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:
▪ Verifique se um cadastro de usuário é válido
seguindo as regras: (1) O e-mail deve ter o
caractere ‘@’ e possuir no mínimo 2 caracteres
antes e depois do ‘@’. (2) A senha precisa ter pelo
menos uma vogal, um caractere especial e
tamanho de 8 caracteres.
▪ Verifique se um domínio escolhido é válido se
terminar em ‘.com.br’ , se o primeiro caractere
não for um número e o domínio possuir 5
caracteres no mínimo.
* Deve-se enviar o domínio completo.
ex: meudominio.com.br
```csharp=
using System;
public class RegistroBRValidator
{
public bool ValidarCadastro (string email,string senha)
{
bool arrouba = email.Contains("@");
int possui = email.IndexOf("@");
string b = email.Substring(possui,2);
int a = possui -2;
string x = email.Substring(a,2);
int s = email.IndexOf(x);
int f = email.IndexOf(b);
bool r = s == 2;
bool e = f == 2;
bool Verificar = e == r;
bool password1 = senha.Contains("a") || senha.Contains("e") ||
senha.Contains("i") || senha.Contains("o") ||
senha.Contains("u") || senha.Contains("A") ||
senha.Contains("E") || senha.Contains("I") ||
senha.Contains("O") || senha.Contains("U");
bool password2 = senha.Contains("!") || senha.Contains("@") ||
senha.Contains("#") || senha.Contains("$") ||
senha.Contains("%") || senha.Contains("¨") ||
senha.Contains("&") || senha.Contains("*") ||
senha.Contains("(") || senha.Contains(")");
bool tamanho = senha.Length == 8;
return arrouba && password1 && password2 && tamanho && Verificar;
}
public bool ValidarDominio (string dominio)
{
int a = dominio.IndexOf(".");
string b = dominio.Substring(a,7);
bool r = b.Contains(".com.br");
bool z = dominio.Contains("1") || dominio.Contains("2") ||
dominio.Contains("3") || dominio.Contains("4") ||
dominio.Contains("5") || dominio.Contains("6") ||
dominio.Contains("7") || dominio.Contains("8") ||
dominio.Contains("9");
int s = dominio.LastIndexOf("@");
string g = dominio.Substring(s,5);
bool v = g.Length == 5;
return z && v && r;
}
}
RegistroBRValidator email = new RegistroBRValidator();
bool a = email.ValidarCadastro("matheusrafa12@gmail.com.br","a25#%#55");
bool b = email.ValidarDominio("matheusrafa12.com.br");
Console.WriteLine(a);
Console.WriteLine(b);
// True
// True
```
## Nível 5
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:
▪ Calcular a área do retângulo.
▪ Calcular o volume do cilindro.
▪ Verificar se dois retângulos são iguais baseado em
sua área. Utilize a ideia de função composta.
▪ Verificar se é possível transferir o conteúdo do
primeiro cilindro ao segundo. Utilize a ideia de
função composta.
```csharp=
using System;
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 AreaIguais (Retangulo ret1,Retangulo ret2)
{
double area1 = AreasRetangulo(ret1);
double area2 = AreasRetangulo(ret2);
bool a = area1 == area2;
return a;
}
public double AreasRetangulo(Retangulo ret)
{
double area = ret.Base * ret.Altura;
return area;
}
public double VolumeCilindro (Cilindro cilindro)
{
double a = 3.14 * Math.Pow(cilindro.Raio,2) * cilindro.Altura;
return a;
}
public bool TransferenciaPossivel (Cilindro ci1,Cilindro ci2)
{
double Volume1 = VolumeCilindro(ci1);
double Volume2 = VolumeCilindro(ci2);
bool a = Volume1 == Volume2;
return a;
}
}
Retangulo Ret = new Retangulo();
Ret.Altura = 4;
Ret.Base = 2;
Cilindro ci = new Cilindro();
ci.Altura = 5;
ci.Raio = 10;
Trigonometria trig = new Trigonometria();
double a = trig.AreasRetangulo(Ret);
bool b = trig.AreaIguais(Ret, Ret);
bool c = trig.TransferenciaPossivel(ci,ci);
double d = trig.VolumeCilindro(ci);
Console.WriteLine("Area do Retangulo " + a);
Console.WriteLine("Areas Iguais " + b);
Console.WriteLine("Transferencia Possivel " +c);
Console.WriteLine("Volume Cilindro " + d);
//8
//True
//True
//1570
```
## Nível 6
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:
▪ 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:
- Masculina = R$ 30,00
- Feminina = R$ 40,00
- Infantil = R$ 20,00
- Calçados = R$ 35,00
* Os calçados são cobrados independente do gênero.
* Utilize ideia de função composta.
* Utilize a ideia de tipos compostos.
* As funções auxiliares devem ser marcadas como
private.
```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;}
}
Compra a = new Compra();
a.QtdCalca = 1;
a.QtdCamiseta = 2;
a.QtdBlusa = 3;
a.QtdCalcados = 3;
Compra b = new Compra();
b.QtdCalca = 1;
b.QtdCamiseta = 2;
b.QtdBlusa = 3;
b.QtdCalcados = 3;
Compra c = new Compra();
c.QtdCalca = 1;
c.QtdCamiseta = 2;
c.QtdBlusa = 3;
c.QtdCalcados = 3;
public class Brecho
{
public double CalcularTotal (Compra masculino,Compra feminino,Compra infantil)
{
double TotalFinal = TotalMasculino(masculino) + TotalFeminino(feminino) + TotalInfantil(infantil) + TotalCalcados(masculino.QtdCalcados, feminino.QtdCalcados, infantil.QtdCalcados);
return TotalFinal;
}
private double TotalMasculino (Compra compra)
{
double total = compra.QtdCalca + compra.QtdCamiseta + compra.QtdBlusa * 40;
return total;
}
private double TotalFeminino (Compra compra)
{
double total = compra.QtdCalca + compra.QtdCamiseta + compra.QtdBlusa * 20;
return total;
}
private double TotalInfantil (Compra compra)
{
double total = compra.QtdCalca + compra.QtdCamiseta + compra.QtdBlusa * 20;
return total;
}
private double TotalCalcados (int qtdCalcadoMasculino, int qtdCalcadoFeminino, int qtdCalcadoInfantil)
{
double total = qtdCalcadoMasculino + qtdCalcadoFeminino + qtdCalcadoInfantil * 35;
return total;
}
}
Brecho venda = new Brecho();
double total = venda.CalcularTotal(a,b,c);
Console.WriteLine(total);
// 360
```
## Nível 7
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:
▪ Calcular o total de uma compra em uma loja de móveis
seguindo as seguintes regras de negócio:
(1) O cupom é um valor representando a porcentagem de
desconto a ser aplicado no valor da compra antes de aplicar
os juros, frete e garantia.
(2) Cada ano de garantia é adicionado 15% do valor da
compra.
(3) A cada 10km de distância é cobrado o valor de R$ 3,00
(4) Deve ser aplicado o juros compostos de 3% ao mês no
valor da compra com o desconto, garantia e frete aplicados.
(5) A nota fiscal é a hora atual no formato YYYYMMDDHHmm
com o prefixo NF. Ex: NF202105091918
* Utilize ideia de função composta.
* Utilize a ideia de tipos compostos.
* As funções auxiliares devem ser marcadas como private.
```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 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);
}
}
Pedido p = new Pedido();
p.Valor = 5014;
p.AnosGarantia = 5;
p.DistanciaEntregaKm = 30;
p.Parcelas = 20;
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);
//Valor final é: 14958.39
//Nota Fiscal é: NF20210515001250
```
{"metaMigratedAt":"2023-06-16T00:15:47.474Z","metaMigratedFrom":"Content","title":"Funções Packages | Fund. Lógica","breaks":true,"contributors":"[{\"id\":\"0ba297e4-eafa-413a-9b17-c3ef1702e693\",\"add\":22387,\"del\":7295}]"}