# session one: Check-out | Fund.logica | 2° bimestre
**Nome** Kevin Ribeiro de Andrade
**número** 27
**Turma** INFO A
## Mapa mental

## Tipo composto e os aprendizados da semana
Bom sobre o tipo composto foi bem interessante a gente aprender ele pois estávamos estagnados em C# vendo sempre funções únicas ou compostas sem nenhum conceito novo. Mas com esse tipo composto minhas funções podem começar a ficar mais robustas aumentando minha capacidade como programador de c#.
Falando sobre como funciona o tipo composto é mais ou menos assim lá você cria sua própria variável( ou função, não sei explicar muito bem), que dentro dela pode ter diversos Valores como string, double, long e DateTime. Nós estamos usando esses valores em nossas funções para que fiquem mais robustas para colocarmos o valor da classe dentro de uma função precisamos colocar essa classe como parâmetro para função dar um nome pra ela(nos parâmetros da função), e usar o ponto para chamar as variáveis de dentro da classe.
Ex:
### Tipo composto - função única
```csharp=
using System;
//açaí pequeno- 10,00
//açaí médio- 12,00
//açaí grande- 14,00
public class qtdacais
{
public long acai_pequeno;
public long acai_medio;
public long acai_grande;
}
public double calc_pedido(qtdacais qtd)
{
double pequeno = 10.00;
double medio = 12.00;
double grande = 14.00;
return (qtd.acai_pequeno * pequeno) + (qtd.acai_medio * medio) + (qtd.acai_grande * grande);
}
qtdacais vl = new qtdacais();
vl.acai_pequeno = 1;
vl.acai_medio = 2;
vl.acai_grande = 2;
double x = calc_pedido(vl);
x
```
### Tipo composto - função composta
```csharp=
using System;
public class casal
{
public DateTime nascPessoa1;
public DateTime nascPessoa2;
}
public bool libra(DateTime nasc)
{
bool res = nasc.Month == 9 && nasc.Day > 22;
bool res2 = nasc.Month == 10 && nasc.Day < 23;
return res == true || res2 == true;
}
public bool menor_maior18(DateTime nasc)
{
DateTime agora = DateTime.Now;
TimeSpan calc = agora - nasc;
double calc2 = calc.TotalDays / 365;
return calc2 >= 18;
}
public bool permitir_entrada(casal cs)
{
bool comp = libra(cs.nascPessoa1) == true && menor_maior18(cs.nascPessoa1) == true;
bool comp2 = libra(cs.nascPessoa2) == true && menor_maior18(cs.nascPessoa2) == true;
return comp == true && comp2 == true;
}
casal dt = new casal();
dt.nascPessoa1 = new DateTime (2002,09,25);
dt.nascPessoa2 = new DateTime (2003,10,21);
bool x = permitir_entrada(dt);
x
```
Ai vemos como funciona o tipo composto na práticas o tipo composto pode fazer com que sua função retorne dois valores diferentes, eu só não mostrei nesse código mas quando o professor fez a correção ele usou Console.WriteLine para ler duas Variáveis, eu irei mostrar um código que eu fiz segue a msm idéia do código do professor, ambos estão corretos única diferença são alguns nomes ou valores ou até formas de montagem de código também ex:
```csharp=
using System;
public class equacao
{
public long a;
public long b;
public long c;
}
public class resultado
{
public double x1;
public double x2;
}
public double delta(equacao eq)
{
return Math.Pow(eq.b,2) - 4 * eq.a * eq.c;
}
public resultado segundo_grau(equacao eq)
{
double res = (-eq.b + Math.Sqrt(delta(eq))) / 2 * eq.a;
double res2 = (-eq.b - Math.Sqrt(delta(eq))) / 2 * eq.a;
resultado resul = new resultado ();
resul.x1 = res;
resul.x2 = res2;
return resul;
}
equacao result = new equacao();
result.a = 2;
result.b = -2;
result.c = -2;
resultado x = segundo_grau(result);
Console.WriteLine("res1 é igual a:" + x.x1);
Console.WriteLine("res2 é igual a:" + x.x2);
```
**Todos esses códigos foram tirados da minha session prática de Fund.logica e foi feito totalmente sozinho**
## Dúvidas
eu não tenho dúvidas, consegui absorver o conteúdo tranquilamente.