# 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
```
{"metaMigratedAt":"2023-06-16T00:10:16.260Z","metaMigratedFrom":"Content","title":"Session two: Getting Better | Fundamentos da Lógica","breaks":true,"contributors":"[{\"id\":\"052c8e10-b233-429a-a1e0-0d8df7864830\",\"add\":11998,\"del\":4462}]"}