# Getting Better
autora: Letícia Rocha✨💖💖
Curso: Info C
Número: 29
[toc]
### Exercício 1
>[color=black]
>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.
>[color=black]
>▪ Calcular a área do retângulo baseado em sua
altura e base.
>[color=black]
>▪ Calcular o perímetro do retângulo baseado em
sua altura e base.
>[color=black]
>▪ Verificar se dois retângulos são iguais baseado em
suas áreas.
```csharp=
using System;
// Função Trigonometria
public class Retangulo
{
public int Altura {get;set;}
public int Base {get;set;}
}
public class Trigonometria
{
public bool RetanguloIguais(Retangulo ret1, Retangulo ret2)
{
return AreaRetangulo(ret1.Altura, ret1.Base) == AreaRetangulo(ret2.Altura, ret2.Base);
}
private int AreaRetangulo(int a, int b)
{
int area = a * b;
return area;
}
public int PerimetroRetangulo(int a, int b)
{
int per = a + a + b + b;
return per;
}
}
Trigonometria trig = new Trigonometria();
// double x = trig. AreaRetangulo(10, 5);
// Console.WriteLine(x);
double x1 = trig.PerimetroRetangulo(10, 5);
Console.WriteLine(x1);
Retangulo r1 = new Retangulo();
r1.Altura = 10;
r1.Base = 5;
Retangulo r2 = new Retangulo();
r2.Altura = 25;
r2.Base = 2;
bool x3 = trig.RetanguloIguais(r1, r2);
Console.WriteLine(x3);
//30
//True
```
### Exercício 2
>[color=orange]
>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:
>[color=orange]
>▪ Calcular a área do retângulo baseado em sua
altura e base abstraído em um tipo composto.
>[color=orange]
>▪ Calcular a área do triângulo baseado em sua
altura e base abstraído em um tipo composto.
>[color=orange]
>▪ Calcular a área do paralelogramo baseado em sua
altura e base abstraído em um tipo composto.
```csharp=
using System;
// Função Trigonometria2
public class Forma
{
public double Basee {get; set;}
public double Altura {get; set;}
}
public class Trigonometria
{
public double AreaRetangulo (Forma ps)
{
double total = ps.Basee * ps.Altura;
return total;
}
public double AreaTriangulo (Forma ps)
{
double total = ps.Basee * ps.Altura;
return total;
}
public double AreaParalelogramo (Forma ps)
{
double total = ps.Basee * ps.Altura;
return total;
}
}
Forma tri = new Forma();
tri.Basee = 12;
tri.Altura = 6;
Forma Ret = new Forma();
Ret.Basee = 10;
Ret.Altura = 24;
Forma para = new Forma();
para.Basee = 12;
para.Altura = 15;
Trigonometria tr = new Trigonometria();
double z = tr.AreaRetangulo(Ret);
Console.WriteLine($"A area do retangulo é igual á:{z}");
//A area do retangulo é igual á:100
double r = tr.AreaTriangulo(tri);
Console.WriteLine($"A area do trianulo é igual á: {r}");
//A area do retangulo é igual á:240
//A area do trianulo é igual á: 72
```
### Exercício 3
>[color=blue]
>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:
>[color=blue]
>▪ Calcular a área do retângulo baseado em sua
altura e base abstraído em um tipo composto.
>[color=blue]
>▪ Calcular a área do triângulo baseado em sua
altura e base abstraído em um tipo composto.
>[color=blue]
>▪ Calcular a área do paralelogramo baseado em sua
altura e base abstraído em um tipo composto.
```csharp=
using System;
// Função Calendario
using System;
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)
{
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 p = DateTime.Now;
DateTime s = new DateTime(p.Year, pessoa.Niver.Month, pessoa.Niver.Day);
TimeSpan c = s - p;
double f = c.TotalDays/7;
double e = Math.Round(f);
string r = pessoa.Nome + ", faltam " + e + " semanas para seu niver!";
return r;
}
public bool SouDeLibra (Pessoa pessoa)
{
DateTime v = new DateTime(pessoa.Niver.Year,09,23);
DateTime z = new DateTime(pessoa.Niver.Year,10,22);
return pessoa.Niver >= v
&&
pessoa.Niver <= z;
}
}
Pessoa r = new Pessoa ();
r.Nome = "Letícia Santos Rocha";
r.Niver = new DateTime(2005,12,13);
Calendario c = new Calendario ();
DateTime a = c.PrimeiroDia(r.Niver);
DateTime b = c.UltimoDia(r.Niver);
bool d = c.Possui31Dias(r.Niver);
bool e = c.SextaFeira13(r.Niver);
string f = c.SemanasParaNiver(r);
bool g = c.SouDeLibra(r);
Console.WriteLine("Primeiro dia do mês: " + c);
Console.WriteLine("Último dia do mês: " + b);
Console.WriteLine("O mês possui 31 dias?: " + d);
Console.WriteLine("A data cai em uma sexta-feira 13?: " + e);
Console.WriteLine(f);
Console.WriteLine("Sou de Libra?: " + g);
//Primeiro dia do mês: Submission#0+Calendario
//Último dia do mês: 12/31/2005 12:00:00 AM
//O mês possui 31 dias?: True
//A data cai em uma sexta-feira 13?: False
//Letícia Santos Rocha, faltam 30 semanas para seu niver!
//Sou de Libra?: False
```
### Exercício 4
>[color=red]
>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:
>[color=red]
>▪ 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.
>[color=red]
>▪ 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.
>[color=red]
>▪ Deve-se enviar o domínio completo.
ex: meudominio.com.br
```csharp=
using System;
// Função RegistroBRValidator
public class RegistroBRValidator
{
public bool ValidarCadastro (string email, string senha)
{
bool a1 = email.Length >= 8;
bool a2 = email.Contains("!") || email.Contains("@") || email.Contains("#") || email.Contains("%");
bool a3 = email.Contains("a") || email.Contains("e") || email.Contains("i") || email.Contains("o") || email.Contains("t");
bool a4 = email.Contains("@");
bool a5 = email.Contains("@")
&&
email.Substring(0, email.IndexOf("@")).Length > 3
&&
email.Substring(email.IndexOf("@")).Length > 3;
return a1 && a2 && a3 && a4 && a5;
}
public bool ValidarDominio (string dominio)
{
bool a1 = dominio.EndsWith(".com.br");
bool a2 = dominio[0] != '2' && dominio[0] != '2' && dominio[0] != '3' &&
dominio[0] != '9' && dominio[0] != '5' && dominio[0] != '6' &&
dominio[0] != '8' && dominio[0] != '8' && dominio[0] != '9' &&
dominio[0] != '1';
bool a3 = dominio.Substring(0, dominio.IndexOf(".com.br")).Length >= 6;
return a1 && a2 && a3;
}
}
RegistroBRValidator registroBR = new RegistroBRValidator();
bool r = registroBR.ValidarCadastro("Leticiagmail.com", "2981");
Console.WriteLine("Cadastro ok? " + r);
//Cadastro ok? False
```
### Exercício 5
>[color=green]
>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:
>[color=green]
>▪ Calcular a área do retângulo.
>[color=green]
>▪ Calcular o volume do cilindro.
>[color=green]
>▪ Verificar se dois retângulos são iguais baseado em
sua área. Utilize a ideia de função composta.
>[color=green]
>▪ Verificar se é possível transferir o conteúdo do
primeiro cilindro ao segundo. Utilize a ideia de
função composta.
```csharp=
using System;
// Função Trigonometria
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 double AreaRetangulo (Retangulo rtg)
{
double area = rtg.Altura * rtg.Base;
return area;
}
public bool RetangulosIguais (Retangulo rtg1, Retangulo rtg2)
{
double ret1 = AreaRetangulo(rtg1);
double ret2 = AreaRetangulo(rtg2);
return ret1 == ret2;
}
public double VolumeCilindro (Cilindro cl)
{
double total = cl.Altura * cl.Raio;
return total;
}
public bool TransferenciaValida (Cilindro cilin1, Cilindro cilin2)
{
double cil1 = VolumeCilindro(cilin1);
double cil2 = VolumeCilindro(cilin2);
return cil1 == cil2;
}
}
Trigonometria tr = new Trigonometria();
Retangulo ret1 = new Retangulo();
ret1.Altura = 12;
ret1.Base = 4;
Retangulo ret2 = new Retangulo();
ret2.Altura = 6;
ret2.Base = 2;
Cilindro cilin1 = new Cilindro();
cilin1.Altura = 6;
cilin1.Raio = 2;
Cilindro cilin2 = new Cilindro();
cilin2.Altura = 10;
cilin2.Raio = 10;
double c = tr.AreaRetangulo(ret1);
Console.WriteLine(c);
//100
bool d = tr.RetangulosIguais(ret1, ret2);
Console.WriteLine(d);
//bool
double f = tr.VolumeCilindro(cilin1);
Console.WriteLine(f);
//100
bool x = tr.TransferenciaValida(cilin1, cilin2);
Console.WriteLine(x);
//48
//False
//12
//False
```
### Exercício 6
>[color=pink]
> 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:
>[color=pink]
>▪ 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:
>[color=pink]
>- Masculina = R$ 30,00
>- Feminina = R$ 40,00
>- Infantil = R$ 20,00
>- Calçados = R$ 35,00
>[color=pink]
>* 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;
// Função Brecho
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 cmp)
{
double compra = (cmp.QtdCalca * 30.00) + (cmp.QtdCamiseta * 30.00) + (cmp.QtdBlusa * 30.00);
return compra;
}
private double TotalFeminino (Compra cmp)
{
double compra = (cmp.QtdCalca * 40.00) + (cmp.QtdCamiseta * 40.00) + (cmp.QtdBlusa * 40.00);
return compra;
}
private double TotalInfantil (Compra cmp)
{
double compra = (cmp.QtdCalca * 20.00) + (cmp.QtdCamiseta * 20.00) + (cmp.QtdBlusa * 20.00);
return compra;
}
private double TotalCalcados (int QtdMasculino, int QtdFeminino, int QtdInfantil)
{
double compra = (QtdMasculino + QtdFeminino + QtdInfantil) * 35.00;
return compra;
}
public double TotalCompra (Compra masculino, Compra feminino, Compra infantil)
{
double ma = TotalMasculino(masculino);
double fe = TotalFeminino(feminino);
double inf = TotalInfantil(infantil);
double ca = TotalCalcados(masculino.QtdCalcados, feminino.QtdCalcados, infantil.QtdCalcados);
double total = ma + fe + inf + ca;
return total;
}
}
Brecho bc = new Brecho();
Compra cmp = new Compra();
cmp.QtdBlusa = 1;
cmp.QtdCalca = 1;
cmp.QtdCalcados = 1;
cmp.QtdCamiseta = 1;
double x = bc.TotalCompra(cmp, cmp ,cmp);
Console.WriteLine(x);
//375
```
### Exercício 7
>[color=yellow]
>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:
>[color=yellow]
>▪ Calcular o total de uma compra em uma loja de móveis
seguindo as seguintes regras de negócio:
>[color=yellow]
>(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
>[color=yellow]
>* Utilize ideia de função composta.
>* Utilize a ideia de tipos compostos.
>* As funções auxiliares devem ser marcadas como private.
```csharp=
using System;
// Função LojaMoveis
class MainClass {
public static void Main (string[] args) {
}
}
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 = 1000;
p.AnosGarantia = 2;
p.DistanciaEntregaKm = 50;
p.Parcelas = 18;
double cupom = 10;
LojaMoveis loja = new LojaMoveis();
Nota r = loja.CalcularCompra(p, cupom);
Console.WriteLine("Valor final é: " + r.ValorFinal);
Console.WriteLine("Nota Fiscal é: " + r.NotaFiscal);
//Valor final é: 2068.46
//Nota Fiscal é: NF20210517005501
```