# Session Four: Programs also choose! | Fund. Lógica
autor: Alan Oliveira Rocha Santiago
turma: InfoB
número: 02
[TOC]
## Exercicio 1
Crie uma função simples que verifique se dois retângulos são
iguais baseado em suas áreas.
- Se forem iguais, retorne:
“Os retângulos são iguais”
- Se forem diferentes, retorne:
“Os retângulos são diferentes”
```csharp=
public string RetangulosIguais(double b1,double a1,double b2,double a2)
{
bool iguais = (b1 * a1) == (b2 * a2);
string x;
if(iguais == true)
{
x = "Os retângulos são iguais";
}
else
{
x = "Os retângulos são diferentes";
}
return x;
}
string ri1 = RetangulosIguais(2,25,2,25);
Console.WriteLine (ri1);
//Os retângulos são iguais
```
## Exercicio 2
Crie uma função compostas que
verifique se dois retângulos são
iguais baseado em suas áreas.
- Se forem iguais, retorne:
“Os retângulos são iguais”
- Se o primeiro for maior, retorne:
“O primeiro retângulo é maior.”
- Se o segundo for maior, retorne:
“O segundo retângulo é maior.”
```csharp=
public double AreaDoRetangulo(double basee,double altura)
{
double x = basee * altura;
return x;
}
public string RetangulosIguais2(double b1, double a1, double b2, double a2)
{
double area1 = AreaDoRetangulo(b1,a1);
double area2 = AreaDoRetangulo(b2,a2);
bool iguais = area1 == area2;
bool maior = area1 > area2;
bool maior2 = area1 < area2;
string x = "";
if(iguais == true)
{
x = "Os retangulos são iguais";
}
else if(maior == true)
{
x ="O primeiro retângulo é maior.";
}
else if(maior2 == true)
{
x = "O segundo retângulo é maior.";
}
return x;
}
string ri2 = RetangulosIguais2 (5,09,2,25);
Console.WriteLine (ri2);
//O segundo retângulo é maior
```
## Exercicio 3
Crie uma função compostas que
verifique se três retângulos são
iguais baseado em suas áreas.
- Se forem iguais, retorne:
“Os retângulos são iguais”
- Se o primeiro for o maior, retorne:
“O primeiro retângulo é maior.”
- Se o segundo for o maior, retorne:
“O segundo retângulo é maior.”
- Se o terceiro for o maior, retorne:
“O terceiro retângulo é maior.”
- Se todos testes acima forem falsos,
retorne:
“Existem 2 maiores retângulos”
```csharp=
public class Retangulo
{
public double Altura1{get; set;}
public double Altura2{get; set;}
public double Altura3{get; set;}
public double Base1{get; set;}
public double Base2{get; set;}
public double Base3{get; set;}
}
public double AreaDoRetangulo2(double basee, double area)
{
double x = basee * area;
return x;
}
public string RetangulosIguais3(Retangulo ret)
{
double r1 = (ret.Altura1 * ret.Base1);
double r2 = (ret.Altura2 * ret.Base2);
double r3 = (ret.Altura3 * ret.Base3);
bool iguais = r1 == r2;
bool iguais2 = r1 == r3;
bool iguais3 = r2 == r3;
string x = "error!";
if(iguais == true && iguais2 == true && iguais3 == true)
{
x = "Os retângulos são iguais";
}
else if(r1 > r2 && r1 > r3)
{
x = "O primeiro retângulo é maior.";
}
else if(r2 > r1 && r2 > r3)
{
x = "O segundo retângulo é maior.";
}
else if(r3 > r2 && r3 > r1)
{
x = "O terceiro retângulo é maior.";
}
else
{
x = "existem 2 retangulos maiores";
}
return x;
}
Retangulo retangulo = new Retangulo();
retangulo.Altura1 = 5;
retangulo.Base1 = 10;
retangulo.Altura2 = 5;
retangulo.Base2 = 10;
retangulo.Altura3 = 5;
retangulo.Base3 = 15;
string retigual = RetangulosIguais3(retangulo);
Console.WriteLine (retigual);
//O terceiro retângulo é maior.
```
## Exercicio 4
Crie a(s) classe(s) representando a abstração de
função e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:
- Calcular o valor total a pagar referente a compra
de um ingresso do Cinemark considerando se o
ingresso é meia ou inteira.
- Realize a lógica acima, mas no retorno você deve
seguir o padrão abaixo:
“Compra concluída! O ingresso para o filme XXX é
de R$ XXXX”
- Realize a lógica da primeira função, mas
considerando a compra de dois ingressos.
```csharp=
public class Ingresso
{
public bool Meia{get; set;}
public double Preco{get; set;}
public string Filme{get; set;}
}
public class Cinemark4
{
public double CalcularTotal1(Ingresso ing)
{
double x = 0;
if(ing.Meia == true)
{
x = ing.Preco / 2;
}
else
{
x = ing.Preco;
}
return x;
}
public string CalcularTotal2(Ingresso ing)
{
double x = 0;
if(ing.Meia == true)
{
x = ing.Preco / 2;
}
else
{
x = ing.Preco;
}
string text = $"Compra concluída! O ingresso para o filme {ing.Filme} é de R$ {x}";
return text;
}
public double CalcularTotal3(Ingresso ing1, Ingresso ing2)
{
double x = 0;
if(ing1.Meia == true)
{
x = ing1.Preco / 2;
}
else
{
x = ing1.Preco;
}
double y = 0;
if(ing2.Meia == true)
{
y = ing2.Preco / 2;
}
else
{
y = ing2.Preco;
}
return x + y;
}
}
Ingresso ing1 = new Ingresso();
ing1.Meia = true;
ing1.Preco = 20;
ing1.Filme = "Liga da Justiça - Snyder cut";
Ingresso ing2 = new Ingresso();
ing2.Meia = false;
ing2.Preco = 20;
ing2.Filme = "Demon Slayer - Trem Infinito";
Ingresso ing3 = new Ingresso();
ing3.Meia = false;
ing3.Preco = 30;
ing3.Filme = "Liga da Justiça - Snyder cut";
Ingresso ing4 = new Ingresso();
ing4.Meia = false;
ing4.Preco = 30;
ing4.Filme = "Demon Slayer - Trem Infinito";
Cinemark4 cine4 = new Cinemark4();
double cinema1 = cine4.CalcularTotal1(ing1);
string cinema2 = cine4.CalcularTotal2(ing2);
double cinema3 = cine4.CalcularTotal3(ing3,ing4);
Console.WriteLine(cinema1);
Console.WriteLine(cinema2);
Console.WriteLine(cinema3);
//10
//Compra concluída! O ingresso para o filme Demon Slayer - Trem Infinito é de R$ 20
//60
```
## Exercicio 5
Crie a(s) classe(s) representando a abstração de
função e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:
- Calcular o valor total a pagar referente a compra
de ingressos do Cinemark considerando se os
ingressos são meia ou inteira.
- Realize a lógica acima, mas no retorno você deve
seguir o padrão abaixo:
“Compra concluída! A compra de XXXX ingressos
XXXX para o filme XXX é de R$ XXXX”
**Ex1. Compra concluída! A compra de 2 ingressos
INTEIRA para o filme Avengers é de R$ 50,00
Ex2. Compra concluída! A compra de 2 ingressos
MEIA para o filme Avengers é de R$ 25,00**
```csharp=
public class Ingressos
{
public int QtdIngressos{get; set;}
public bool Meia{get; set;}
public double Preco{get; set;}
public string Filme{get; set;}
}
public double CalcularMedia11(Ingressos ingresso)
{
double x = (ingresso.QtdIngressos * ingresso.Preco) / 2;
return x;
}
public string CalcularMedia22(Ingressos ingresso)
{
double total = 0;
if(ingresso.Meia == false)
{
total = ingresso.QtdIngressos * ingresso.Preco;
}
else
{
total = CalcularMedia11(ingresso);
}
string meiatexto = "";
if(ingresso.Meia == false)
{
meiatexto = "Inteira";
}
else
{
meiatexto = "Meia";
}
string ing1 = $"Ex5: Compra concluída! A compra de {ingresso.QtdIngressos} ingressos {meiatexto} para o filme {ingresso.Filme} é de R$ {total}";
return ing1;
}
Ingressos ingre2 = new Ingressos();
ingre2.QtdIngressos = 3;
ingre2.Meia = true;
ingre2.Preco = 10;
ingre2.Filme = "Midsommar - O mal não espera a noite";
string ingre1 = CalcularMedia22(ingre2);
Console.WriteLine(ingre1);
//Compra concluída! A compra de 3 ingressos Meia para o filme Midsommar - O mal não espera a noite é de R$ 15
```
## Exercicio 6
Crie a(s) classe(s) representando a abstração de
função e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:
- Calcular o valor total a pagar referente a compra
de ingressos do Cinemark considerando se os
ingressos são meia ou inteira e o cupom de
desconto.
- Aplicar o cupom de desconto que vem em
porcentagem em cima do valor total dos ingressos.
A função deve retornar o valor já com o desconto
aplicado.
```csharp=
public class Ingressos2
{
public int QtdIngresso{get; set;}
public bool Meia{get; set;}
public double Preco{get; set;}
public string Filme{get; set;}
}
public class Cinemark6
{
public double CalcularTotal(Ingressos2 ingresso, double c)
{
double ing = 0;
if(ingresso.Meia == true)
{
ing = ingresso.QtdIngresso * ingresso.Preco / 2;
}
else
{
ing = ingresso.Preco;
}
double total = AplicarDados(ing, c);
return total;
}
static double AplicarDados(double total, double cupom)
{
double td = total * cupom / 100;
double descCupom = total - td;
return descCupom;
}
}
Ingressos2 ingresso6 = new Ingressos2();
ingresso6.QtdIngresso = 3;
ingresso6.Meia = true;
ingresso6.Preco = 10;
ingresso6.Filme = "OldBoy";
double cupom1 = 5;
Cinemark6 cine1 = new Cinemark6();
double ingre6 = cine1.CalcularTotal(ingresso6, cupom1);
Console.WriteLine(ingre6);
//14,25
```
## Exercicio 7
Crie a(s) classe(s) representando a abstração de
função e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:
- Calcular o valor total a pagar referente a compra
de ingressos do Cinemark considerando se os
ingressos são meia ou inteira e o cupom de
desconto. Além do cupom de desconto você deve
aplicar as seguintes regras:
* Se o total da compra de ingressos for maior
que R$ 100,00 após a aplicação do desconto,
aplicar mais 10% de desconto.
- Aplicar o cupom de desconto que vem em
porcentagem em cima do valor total dos ingressos.
A função deve retornar o valor já com o desconto
aplicado.
```csharp=
public class Ingressos3
{
public int QtdIngresso{get; set;}
public bool Meia{get; set;}
public double Preco{get; set;}
public string Filme{get; set;}
}
public class Cinemark7
{
public double CalcularTotal22(Ingressos3 ingresso, double cupom)
{
double total = 0;
if(ingresso.Meia == true)
{
total = ingresso.QtdIngresso * ingresso.Preco / 2;
}
else
{
total = ingresso.QtdIngresso * ingresso.Preco;
}
double descTotal = AplicarDados22(total, cupom);
double x = descTotal * (10 / 100);
double y = descTotal - x;
double DezDesc = 0;
if(descTotal > 100)
{
DezDesc = y;
}
else
{
DezDesc = descTotal;
}
return DezDesc;
}
static double AplicarDados22(double total, double cupom)
{
double x = total * (cupom / 100);
double y = total - x;
return y;
}
}
Ingressos3 ing7 = new Ingressos3();
ing7.QtdIngresso = 5;
ing7.Meia = false;
ing7.Preco = 30;
ing7.Filme = "Mortal Kombat(2021)";
Cinemark7 ingre7 = new Cinemark7();
double desc7 = 30;
double ingresso7 = ingre7.CalcularTotal22(ing7, desc7);
Console.WriteLine(ingresso7);
//105
```
## Exercicio 8
Crie a(s) classe(s) representando a abstração de
função e/ou dados ao lado. Abaixo a especificação das
situações a serem resolvidas:
- Calcular o valor total a pagar referente a compra de
ingressos do Cinemark considerando se os ingressos
são meia ou inteira e o cupom de desconto. Além do
cupom de desconto você deve aplicar as seguintes
regras:
* Se o dia atual for uma quarta-feira aplicar
desconto de 50% no valor da compra após aplicar
o desconto.
* Se o total da compra de ingressos for maior que
R$ 100,00 após a verificação de quarta-feira,
aplicar mais 10% de desconto.
- Aplicar o cupom de desconto que vem em
porcentagem em cima do valor total dos ingressos. A
função deve retornar o valor já com o desconto
aplicado.
```csharp=
public class Ingressos8
{
public int QtdIngresso{get; set;}
public bool Meia{get; set;}
public double Preco{get; set;}
public string Filme{get; set;}
}
public class Cinemark8
{
public double CalcularTotal(Ingressos8 ingresso,double cupom)
{
double meia = 0;
if(ingresso.Meia == true)
{
meia = ingresso.QtdIngresso * ingresso.Preco / 2;
}
else
{
meia = ingresso.QtdIngresso * ingresso.Preco;
}
double descTotal = AplicarDados(meia, cupom);
double desc3 = meia * (50 / 100);
double desc4 = meia - desc3;
double desc1 = meia * (10 / 100);
double desc2 = meia - desc1;
if(DateTime.Now.DayOfWeek == DayOfWeek.Saturday)
{
descTotal = desc4;
}
if(descTotal > 100)
{
descTotal = desc2;
}
return descTotal;
}
static double AplicarDados(double total, double cupom)
{
double x = total * (cupom / 100);
double y = total - x;
return y;
}
}
Ingressos8 ing8 = new Ingressos8();
ing8.QtdIngresso = 2;
ing8.Meia = true;
ing8.Preco = 15;
ing8.Filme = "Liga da Justiça - Snyder Cut";
Cinemark8 cine8 = new Cinemark8();
double desc8 = 5;
double ingre8 = cine8.CalcularTotal(ing8,desc8);
Console.WriteLine(ingre8);
//14,25
```
## Exercicio 9
Crie a(s) classe(s) representando a abstração de função
e/ou dados ao lado. Abaixo a especificação das situações a
serem resolvidas:
- Calcular o valor total a pagar referente a compra de
ingressos do Cinemark considerando se os ingressos são
meia ou inteira e o cupom de desconto. Além do cupom
de desconto você deve aplicar as seguintes regras:
- Se o gênero for ‘NACIONAL’ o valor de cada ingresso
será R$ 5,00 independente de qualquer valor e
todas as regras abaixo serão desconsideradas.
- Se o dia atual for uma quarta-feira aplicar desconto
de 50% no valor da compra após aplicar o desconto.
- Se o total da compra de ingressos for maior que R$
100,00 após a verificação de quarta-feira, aplicar
mais 10% de desconto.
- Aplicar o cupom de desconto que vem em porcentagem
em cima do valor total dos ingressos. A função deve
retornar o valor já com o desconto aplicado.
```csharp=
public class Ingressos9
{
public int QtdIngresso{get; set;}
public bool Meia{get; set;}
public double Preco{get; set;}
public string Filme{get; set;}
public string Genero{get; set;}
}
public class Cinemark9
{
public double CalcularTotal(Ingressos9 ing, double cupom)
{
double meia = 0;
if(ing.Meia == true)
{
meia = ing.QtdIngresso * ing.Preco / 2;
}
else
{
meia = ing.QtdIngresso * ing.Preco;
}
double total = AplicarDados(meia, cupom);
double descQuarta = AplicarDescQuarta(meia);
double desc10 = AplicarDesc10(meia);
if(DateTime.Now.DayOfWeek == DayOfWeek.Saturday)
{
total = descQuarta;
}
if(total > 100)
{
total = desc10;
}
if(ing.Genero == "Nacional")
{
total = ing.QtdIngresso * 5;
}
return total;
}
static double AplicarDados(double total, double cupom)
{
double desc1 = total * (cupom / 100);
double desc2 = total - desc1;
return desc2;
}
static double AplicarDesc10(double total)
{
double desc1 = total * (10 / 100);
double desc2 = total - desc1;
return desc2;
}
static double AplicarDescQuarta(double total)
{
double desc1 = total * (50 / 100);
double desc2 = total - desc1;
return desc2;
}
}
Ingressos9 ing9 = new Ingressos9();
ing9.QtdIngresso = 2;
ing9.Meia = true;
ing9.Preco = 15;
ing9.Filme = "Hereditario";
ing9.Genero = "Terror";
Cinemark9 cine9 = new Cinemark9();
double desc9 = 10;
double ingre9 = cine9.CalcularTotal(ing9, desc9);
Console.WriteLine(ingre9);
//13,5
```
## Exercicio 10
Faça uma função que implemente a lógica que identifique o vencedor de uma partida
de Jokenpo dizendo se quem ganhou foi o jogador1, jogador2 ou empate.
```csharp=
public class Jogadores
{
public string Jogador1{get; set;}
public string Jogador2{get; set;}
}
public class Jokenpo
{
public string Partida(Jogadores jogador)
{
bool x = jogador.Jogador1 == "papel" && jogador.Jogador2 == "pedra";
bool y = jogador.Jogador1 == "pedra" && jogador.Jogador2 == "tesoura";
bool z = jogador.Jogador1 == "tesoura" && jogador.Jogador2 == "papel";
string ganhador = "";
if(x == true || y == true || z == true)
{
ganhador = "Jogador1 Venceu";
}
else
{
ganhador = "Jogador2 Venceu";
}
if(jogador.Jogador1 == jogador.Jogador2)
{
ganhador = "empate";
}
return ganhador;
}
}
Jogadores jogador = new Jogadores();
jogador.Jogador1 = "papel";
jogador.Jogador2 = "papel";
Jokenpo jogada = new Jokenpo();
string jogar = jogada.Partida(jogador);
Console.WriteLine(jogar);
//empate
```
## Exercicio 11
Faça uma função que implemente a lógica que identifique o vencedor de uma partida
de Par ou Ímpar dizendo se quem ganhou foi o jogador1, jogador2 ou empate.
```csharp=
public class JogadorPar
{
public string Jogador1{get; set;}
public string Jogador2{get; set;}
public int Numero1{get; set;}
public int Numero2{get; set;}
}
public class ImparPar
{
public string Partida(JogadorPar jogador)
{
int x = jogador.Numero1 + jogador.Numero2;
string ip = ImparOuPar(x);
string vencedor = "";
if(jogador.Jogador1 == ip)
{
vencedor = "Jogador1 venceu";
}
else
{
vencedor = "Jogador2 venceu";
}
if(jogador.Jogador1 == jogador.Jogador2)
{
vencedor = "!error";
}
return vencedor;
}
public string ImparOuPar(int numero)
{
string x = "";
if(numero % 2 == 0)
{
x = "par";
}
else
{
x = "impar";
}
return x;
}
}
JogadorPar ip = new JogadorPar();
ip.Jogador1 = "impar";
ip.Numero1 = 10;
ip.Jogador2 = "par";
ip.Numero2 = 8;
ImparPar jogada2 = new ImparPar();
string jogar2 = jogada2.Partida(ip);
Console.WriteLine(jogar2);
//Jogador2 venceu
```