Cinéfilo

Cinéfilo

Exercício de aprendizagem

Introdução

O operador ternário

Uma condicional ternária é uma forma mais curta de escrever instruções if/else simples. Se uma instrução if/else contiver apenas dois blocos, um para quando a condição for verdadeira e outro para quando for falsa, ela pode ser reescrita como uma condicional ternária.

As ternárias usam uma combinação dos símbolos ? e : para dividir uma condicional:

condition ? true_branch : false_branch

O código do lado esquerdo do ? é a condição, e o código do lado direito contém os dois blocos possíveis, separados pelo :. Se a condição for verdadeira, o código do lado esquerdo do : é executado. Se a condição for falsa, o código à direita do : é executado.

Por exemplo:

if traffic_light == 'green'
  cross_the_road
else
  wait
end

pode ser reescrito como:

traffic_light == 'green' ? cross_the_road : wait

Instruções

Neste exercício, você vai criar as regras para o site de um cinema.

1. Verifique se o espectador tem direito ao desconto para idosos

O cinema oferece um desconto para aposentados. Quem tem 60 anos ou mais paga 10,00 pelo ingresso. Quem for mais jovem paga o valor integral de 15,00.

Escreva o método Moviegoer#ticket_price usando uma expressão ternária.

Moviegoer.new(21).ticket_price
#=> 15

Moviegoer.new(65).ticket_price
#=> 10

2. Verifique se o espectador pode assistir a filmes de terror

O cinema tem um sistema simplificado de verificação de idade. Se você tem 18 anos ou mais, pode assistir a filmes de terror. Se for mais jovem, não pode.

Implemente o método Moviegoer#watch_scary_movie?. Ele deve retornar se a pessoa pode ou não assistir ao filme.

Moviegoer.new(21).watch_scary_movie?
#=> true

Moviegoer.new(17).watch_scary_movie?
#=> false

3. Verifique se o espectador tem direito a pipoca grátis

O cinema tem o programa Clube de Cinema. Os membros ganham pipoca grátis ao assistir a qualquer filme.

Implemente o método Moviegoer.claim_free_popcorn!. Se o espectador for membro do Clube de Cinema, deve ganhar sua pipoca grátis. Se não for, o método deve lançar a exceção UnsupportedOperation definida no topo do código.

Moviegoer.new(21, member: true).claim_free_popcorn!
#=> 🍿

Moviegoer.new(17, member: false).claim_free_popcorn!
#=> Exception was raised! (NotMovieClubMemberError)
Note

Neste exercício, espera-se que você defina a exceção UnsupportedOperation para um escopo específico.

Editar via GitHub O link abre em uma nova janela ou aba
Ruby Exercism

Tudo pronto para começar Cinéfilo?

Crie sua conta no Exercism para aprender e dominar Ruby com 21 conceitos121 exercícios e mentoria humana de verdade, tudo de graça.