---
# System prepended metadata

title: 'Session two: Getting Better | Fundamentos da Lógica'

---

# Session two: Getting Better | Fundamentos da Lógica
**Autor**: Vitório Trindade Santana
**Turma**: Informática C
**Número**: 50

[toc]

## Exercício 1 
Crie uma função que implemente a lógica para calcular o valor total a ser pago na compra de ingressos do Cinemark. A partir do total de ingressos inteiras, meias e o preço cheio do ingresso, realize o cálculo.
A função deve retornar uma mensagem no seguinte formato:
“O valor da compra de XXX ingressos referente ao filme XXX é R$ XXX”

```csharp=
public class IngressoCinemark 
{ 
	public int QtdInteira { get; set; }
	public int QtdMeia { get; set; }
	public double Preco { get; set; }
	public string Filme { get; set; }
}

public string CalcularIngresso (IngressoCinemark ingresso)
{
	int totalIngresso = ingresso.QtdInteira + ingresso.QtdMeia;
	double totalM = (ingresso.QtdMeia * ingresso.Preco) / 2; 
	double totalI = ingresso.QtdInteira * ingresso.Preco;
	double totalPago = totalM + totalI;
	string frase = $"O valor da compra de {totalIngresso} ingressos referente ao filme {ingresso.Filme} é R$ {totalPago}";
	return frase;
}

IngressoCinemark x1 = new IngressoCinemark ();
x1.QtdInteira = 2;
x1.QtdMeia = 3; 
x1.Preco = 17.99; 
x1.Filme = "John Wick";

string q1 = CalcularIngresso (x1);
Console.WriteLine(q1);
// O valor da compra de 5 ingressos referente ao filme John Wick é R$ 62.965
```

## Exercício 2 
Crie uma função que implemente a lógica do jogo Jokenpo entre 2 jogadores e retorne verd/falso se o jogador 1 venceu.
As possibilidades de jogada são “Papel”, “Pedra” e “Tesoura”.

```csharp=
public class Partida 
{ 
	public string Jogador1 { get; set; }
	public string Jogador2 { get; set; }
}

public bool Jokenpo(Partida jogada)
{
    bool jogador1Vence = (jogada.Jogador1 == "Papel" && jogada.Jogador2 == "Pedra")
                            ||
                          (jogada.Jogador1 == "Pedra" && jogada.Jogador2 == "Tesoura")
                            ||
                          (jogada.Jogador1 == "Tesoura" && jogada.Jogador2 == "Papel");
    return jogador1Vence;
}

Partida x2 = new Partida ();
x2.Jogador1 = "Papel";
x2.Jogador2 = "Tesoura";

bool q2 = Jokenpo (x2);
Console.WriteLine("O jogador 1 venceu? " + q2);
//O jogador 1 venceu? False
```


## Exercício 3 
Crie uma função composta que a partir das datas de checkin (entrada) e checkout (saída) em um hotel, considerando a quantidade de pessoas que serão hospedadas, calcule o valor total a ser pago, sendo que o valor da diária é R$ 120,00.
```csharp=
public class EstadiaHotel 
{
	public DateTime Checkin { get; set; }
	public DateTime Checkout { get; set; }
	public int QtdPessoas { get; set; }
}

public double TotalDias1 (DateTime ida, DateTime volta)
{
     TimeSpan dias = volta - ida;
	 return dias.TotalDays + 1;
}

public double HospedagemHotel (EstadiaHotel x3)
{
	double totalDias = TotalDias1 (x3.Checkin, x3.Checkout);
	double preço = totalDias * x3.QtdPessoas * 120 ;
	return preço;
}

EstadiaHotel x3 = new EstadiaHotel ();
x3.Checkin = new DateTime(2021, 09, 23);
x3.Checkout = new DateTime(2021, 10, 2);
x3.QtdPessoas = 4;

double q3 = HospedagemHotel (x3);
Console.WriteLine("O valor total da hospedagem é R$ " + q3);
//O valor total da hospedagem é R$ 4800
```

## Exercício 4 
Crie uma função composta que implemente a lógica para calcular o valor total de uma compra de passagem aérea. A companhia de viagem está com uma promoção que independente do destino, os passageiros serão cobrados por dia de viagem, onde cada dia custa R$ 200,00. Crianças são cobradas pela metade.
```csharp=
public class PassagemAerea 
{
	public DateTime Ida  { get; set; }
    public DateTime Volta  { get; set; }
    public int QtdAdultos  { get; set; }
	public int QtdCriancas  { get; set; }
	public string Origem  { get; set; }
	public string Destino  { get; set; }
}

public double TotalDias2 (DateTime ida, DateTime volta)
{
     TimeSpan dias = volta - ida;
	 return dias.TotalDays + 1;
}

public double TotalPassagemAerea (PassagemAerea passagem) 
{
	double totalDias = TotalDias2 (passagem.Ida, passagem.Volta);
	double valorDias = totalDias * 200;
	double valorCriancas = (valorDias * passagem.QtdCriancas) / 2; 
	double valorAdultos = valorDias * passagem.QtdAdultos;
	return valorCriancas + valorAdultos;
}

PassagemAerea x4 = new PassagemAerea ();
x4.Ida = new DateTime(2021, 07, 15);
x4.Volta = new DateTime(2021, 07, 22);
x4.QtdAdultos = 3;
x4.QtdCriancas = 1;
x4.Destino = "Oslo";
x4.Origem = "São Paulo";

double q4 = TotalPassagemAerea (x4);
Console.WriteLine("O valor total da passagem aérea é R$ " + q4);
//O valor total da passagem aérea é R$ 5600
```

## Exercício 5
Crie uma função composta que implemente a lógica da compra de um Pacote de Viagem em Família. Esse pacote é composto pela viagem aérea e hospedagem em
um hotel. Utilize as mesmas regras descritas nos exercícios anteriores e retorne um comprovante da compra do pacote contendo os totais do hotel, passagem e o valor final da compra. O comprovante deve ter uma mensagem que segue o template abaixo:
“A compra do Pacote de XXX dias para o destino XXX foi finalizado com sucesso! O total incluindo todas despesas é de R$ XXX”
```csharp=
public class EstadiaHotel 
{
	public DateTime Checkin { get; set; }
	public DateTime Checkout { get; set; }
	public int QtdPessoas { get; set; }
}

public class PassagemAerea 
{
	public DateTime Ida  { get; set; }
    public DateTime Volta  { get; set; }
    public int QtdAdultos  { get; set; }
	public int QtdCriancas  { get; set; }
	public string Origem  { get; set; }
	public string Destino  { get; set; }
}

public class Comprovante 
{
	public double Total { get; set; }
	public double TotalHotel { get; set; }
	public double TotalPassagem { get; set; }
	public string Mensagem { get; set; }
}

public double TotalDias (DateTime ida, DateTime volta)
{
     TimeSpan dias = volta - ida;
	 return dias.TotalDays + 1;
}

public double HospedagemHotel (EstadiaHotel x)
{
	double totalDias = TotalDias (x.Checkin, x.Checkout);
	double preço = totalDias * x.QtdPessoas * 120 ;
	return preço;
}

public double TotalPassagemAerea (PassagemAerea passagem) 
{
	double totalDias = TotalDias (passagem.Ida, passagem.Volta);
	double valorDias = totalDias * 200;
	double valorCriancas = (valorDias * passagem.QtdCriancas) / 2; 
	double valorAdultos = valorDias * passagem.QtdAdultos;
	return valorCriancas + valorAdultos;
}

public Comprovante PacoteViagem (PassagemAerea passagem, EstadiaHotel hospedagem)
{
	
	double dias = TotalDias (passagem.Volta, passagem.Ida);
	
	Comprovante comprovante = new Comprovante();
	comprovante.TotalPassagem = TotalPassagemAerea (passagem);
    comprovante.TotalHotel = HospedagemHotel (hospedagem);
    comprovante.Total = comprovante.TotalHotel + comprovante.TotalPassagem;
    comprovante.Mensagem = $"A compra do Pacote de {dias} dias para o destino {passagem.Destino} foi finalizada com sucesso! O total incluindo todas despesas é de R$ {comprovante.Total}";
	
    return comprovante;
}


EstadiaHotel eH = new EstadiaHotel ();
eH.Checkin = new DateTime(2021, 09, 23);
eH.Checkout = new DateTime(2021, 10, 2);
eH.QtdPessoas = 4;

PassagemAerea pg = new PassagemAerea ();
pg.Ida = new DateTime(2021, 09, 23);
pg.Volta = new DateTime(2021, 10, 2);
pg.QtdAdultos = 3;
pg.QtdCriancas = 1;
pg.Destino = "Oslo";
pg.Origem = "São Paulo";

Comprovante q5 = PacoteViagem (pg, eH);
Console.WriteLine(q5.Mensagem);
//A compra do Pacote de 8 dias para o destino Oslo foi finalizada com sucesso! O total incluindo todas despesas é de R$ 11800
```