Os Boolean em Cairo são representados pelo tipo Boolean pré-declarado bool, cujos valores podem ser true ou false.
let speeding = true; // Boolean variable 'speeding' set to 'true'
let has_error = false; // Boolean variable 'has_error' set to 'false'
O Cairo suporta três operadores lógicos que permitem avaliar expressões para valores Boolean, devolvendo true ou false.
| Operador | O que significa |
|---|---|
&& (e) |
É verdadeiro se ambas as afirmações forem verdadeiras. |
|| (ou) |
É verdadeiro se pelo menos uma das afirmações for verdadeira. |
! (não) |
É verdadeiro apenas se a afirmação for falsa. |
Neste exercício vais implementar a lógica da missão de um novo jogo de RPG que um amigo está a desenvolver. A personagem principal do jogo é a Annalyn, uma rapariga corajosa com um cão de estimação feroz e leal. Infelizmente, o desastre acontece: o seu melhor amigo foi raptado enquanto procurava bagas na floresta. A Annalyn vai tentar encontrar e libertar o seu melhor amigo, levando opcionalmente o cão com ela nesta missão.
Depois de algum tempo a seguir o rasto do seu melhor amigo, encontra o acampamento onde ele está preso. Acontece que há dois raptores: um cavaleiro poderoso e um arqueiro astuto.
Tendo encontrado os raptores, a Annalyn pondera quais das seguintes ações pode realizar:
Tens quatro tarefas: implementar a lógica para determinar se as ações acima estão disponíveis, com base no estado das três personagens encontradas na floresta e na presença ou não do cão da Annalyn.
Define a função can_fast_attack(), que recebe um valor Boolean que indica se o cavaleiro está acordado.
Esta função devolve true se for possível fazer um ataque rápido, com base no estado do cavaleiro.
Caso contrário, devolve false:
let knight_awake = true;
can_fast_attack(knight_awake); // false
Define a função can_spy(), que recebe três valores Boolean, indicando se o cavaleiro, o arqueiro e o prisioneiro, respetivamente, estão acordados.
A função devolve true se for possível espiar o grupo, com base no estado das três personagens.
Caso contrário, devolve false:
let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
can_spy(knight_awake, archer_awake, prisoner_awake); // true
Define a função can_signal_prisoner(), que recebe dois valores Boolean, indicando se o arqueiro e o prisioneiro, respetivamente, estão acordados.
A função devolve true se for possível sinalizar o prisioneiro, com base no estado das duas personagens.
Caso contrário, devolve false:
let archer_awake = false;
let prisoner_awake = true;
can_signal_prisoner(archer_awake, prisoner_awake); // true
Define a função can_free_prisoner(), que recebe quatro valores Boolean.
Os primeiros três parâmetros indicam se o cavaleiro, o arqueiro e o prisioneiro, respetivamente, estão acordados.
O último parâmetro indica se o cão da Annalyn está presente.
A função devolve true se for possível libertar o prisioneiro, com base no estado das três personagens e na presença do cão da Annalyn.
Caso contrário, devolve false:
let knight_awake = false;
let archer_awake = true;
let prisoner_awake = false;
let dog_present = false;
can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present); // false
Inscreve-te no Exercism para aprenderes e dominares Cairo com 25 conceitos68 exercícios, e mentoria humana real, tudo grátis.