Os valores booleanos são representados pelo tipo Bool.
Contém apenas dois valores: true e false.
julia> true
true
julia> false
false
Há três operadores Boolean em Julia.
&& é o operador Boolean "e".
É avaliado como true se as expressões em ambos os lados de && forem true.
julia> true && true
true
julia> true && false
false
|| é o operador Boolean "ou".
É avaliado como true se uma expressão em qualquer dos lados de || for true.
julia> true || true
true
julia> false || true
true
! é o operador Boolean "não".
Troca os valores true e false.
julia> !true
false
julia> !false
true
Para expressões mais longas e complicadas, é melhor usares parênteses para deixares clara a tua intenção.
julia> (true || false) && (false && true)
false
Neste exercício, vais escrever alguma lógica para um videojogo 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: a sua melhor amiga é raptada enquanto procura bagas na floresta. A Annalyn vai tentar encontrar e libertar a amiga, podendo levar o cão com ela nesta missão.
A Annalyn acaba por encontrar o acampamento onde a amiga está presa e descobre que há dois raptores: um cavaleiro poderoso e um arqueiro astuto.
Ao jogador são apresentadas várias opções sobre o que fazer a seguir. Para cada uma das quatro opções possíveis, tens de escrever uma função que diz ao jogo se deve mostrar essa opção ou não.
Se o cavaleiro estiver a dormir, a Annalyn conseguirá fazer um ataque rápido ao acampamento antes de ele acordar devidamente e vestir a armadura.
Implementa uma função chamada can_do_fast_attack que recebe um valor Boolean que indica se o cavaleiro está acordado.
Esta função devolve true se a ação «Ataque Rápido» estiver disponível, com base no estado da personagem. Caso contrário, devolve false:
julia> knight_awake = true
julia> can_do_fast_attack(knight_awake)
false
O grupo pode ser espionado se pelo menos um dos seus elementos estiver acordado. Caso contrário, espiar é uma perda de tempo.
Implementa uma função chamada can_spy que recebe três valores Boolean, que indicam se o cavaleiro, o arqueiro e a prisioneira, respetivamente, estão acordados.
A função devolve true se a ação «Espionar» estiver disponível, com base no estado das personagens.
Caso contrário, devolve false:
# Output suppressed from the next 3 lines
julia> knight_awake = false
julia> archer_awake = true
julia> prisoner_awake = false
julia> can_spy(knight_awake, archer_awake, prisoner_awake)
true
É possível sinalizar a prisioneira com sons de aves se ela estiver acordada e o arqueiro estiver a dormir. Se o arqueiro estiver acordado, não é possível sinalizá-la em segurança, porque o arqueiro também está treinado em sinais com sons de aves.
Implementa uma função chamada can_signal_prisoner que recebe dois valores Boolean, que indicam se o arqueiro e a prisioneira, respetivamente, estão acordados.
A função devolve true se a ação «Sinalizar a Prisioneira» estiver disponível, com base no estado das personagens.
Caso contrário, devolve false:
julia> archer_awake = false
julia> prisoner_awake = true
julia> can_signal_prisoner(archer_awake, prisoner_awake)
true
A Annalyn pode tentar entrar furtivamente no acampamento para libertar a amiga. É algo arriscado e só pode ter sucesso de uma de duas formas:
Se a Annalyn tiver o cão com ela, pode resgatar a prisioneira se o arqueiro estiver a dormir. O cavaleiro tem medo do cão e o arqueiro não terá tempo de se preparar antes de a Annalyn e a amiga conseguirem escapar.
Se a Annalyn não tiver o cão, ela e a prisioneira têm de ser muito furtivas! A Annalyn pode libertar a prisioneira se esta estiver acordada e o cavaleiro e o arqueiro estiverem ambos a dormir. Mas se a prisioneira estiver a dormir, não pode ser resgatada: assustar-se-ia com o aparecimento súbito da Annalyn e acordaria o cavaleiro e o arqueiro.
Implementa uma função chamada can_free_prisoner que recebe quatro valores Boolean.
Os primeiros três parâmetros indicam se o cavaleiro, o arqueiro e a prisioneira, respetivamente, estão acordados.
O último parâmetro indica se o cão da Annalyn está presente.
A função devolve true se a ação «Libertar a Prisioneira» estiver disponível, com base no estado das personagens. Caso contrário, devolve false:
julia> knight_awake = false
julia> archer_awake = true
julia> prisoner_awake = false
julia> dog_present = false
julia> can_free_prisoner(knight_awake, archer_awake, prisoner_awake, dog_present)
false
Inscreve-te no Exercism para aprenderes e dominares Julia com 35 conceitos128 exercícios, e mentoria humana real, tudo grátis.