O objetivo deste capítulo é entender como um programa pode tomar decisões e alterar seu fluxo de execução. Vamos explorar os operadores de comparação, o tipo booleano, e as estruturas condicionais if, else e elseif em Julia.
Operadores de Comparação e o Tipo Booleano¶
Antes de estudarmos estruturas condicionais, precisamos entender os operadores de comparação e o tipo de dado que eles produzem: o tipo booleano (Bool). Uma variável booleana pode ter apenas dois valores possíveis: true (verdadeiro) ou false (falso).
Vamos examinar os principais operadores de comparação em Julia:
# Igualdade: retorna true se os valores forem iguais
2 + 2 == 4true# Diferença: retorna true se os valores forem diferentes
3 != 8true# Menor que: retorna true se o primeiro valor for menor que o segundo
23 < 24true# Menor ou igual: retorna true se o primeiro valor for menor ou igual ao segundo
42 <= 44true# Maior que: retorna true se o primeiro valor for maior que o segundo
42 > 2true# Maior ou igual: retorna true se o primeiro valor for maior ou igual ao segundo
42 >= 42trueEm linguagens de programação, incluindo Julia, o sinal de igual (=) é usado para atribuição de valores a variáveis, enquanto o operador de igualdade (==) é usado para comparações.
Podemos verificar o tipo de uma expressão de comparação:
typeof(2 == 3)BoolComo esperado, o tipo é Bool, indicando um valor booleano.
Operadores Lógicos¶
Além dos operadores de comparação, Julia também oferece operadores lógicos que permitem combinar ou modificar valores booleanos:
# Operador NOT (negação): inverte o valor booleano
!truefalse!falsetrue# Operador AND: retorna true apenas se ambos os valores forem true
true && truetruetrue && falsefalse# Operador OR: retorna true se pelo menos um dos valores for true
true || falsetruefalse || falsefalseEsses operadores são essenciais para construir condições mais complexas em nossas estruturas condicionais.
Alterando o Fluxo de Execução com if-else¶
Até agora, nossos programas seguiam um fluxo de execução linear, com as instruções sendo executadas na ordem em que foram escritas. Veja o exemplo:
println("Oi")
println("um")
println("dois")Oi
um
dois
A ordem de impressão será “Oi”, “um” e “dois”, exatamente na sequência em que os comandos foram escritos.
No entanto, muitas vezes precisamos que nosso programa tome decisões e execute diferentes blocos de código dependendo de certas condições. É aqui que entra a estrutura condicional if.
A Estrutura if¶
A estrutura if permite executar um bloco de código apenas se uma condição for verdadeira:
pandemia = true
println("Vou sair de casa?")
if pandemia == true
println("Só vou sair de casa se for essencial")
endVou sair de casa?
Só vou sair de casa se for essencial
Neste exemplo, a mensagem “Só vou sair de casa se for essencial” só será impressa se a variável pandemia for igual a true.
Aqui está outro exemplo:
denominador = 1
if denominador != 0
println("Sei fazer a divisão se não for por zero")
println("O resultado da divisão de 30 por ", denominador, " é igual a ", 30/denominador)
endSei fazer a divisão se não for por zero
O resultado da divisão de 30 por 1 é igual a 30.0
O código dentro do bloco if só será executado se o denominador for diferente de zero, evitando assim um erro de divisão por zero.
Adicionando Alternativas com else¶
Frequentemente, queremos executar um bloco de código se uma condição for verdadeira e outro bloco se a condição for falsa. Para isso, usamos a estrutura if-else:
pandemia = true
println("Vou sair de casa?")
if pandemia == true
println("Só vou sair de casa se for essencial")
else
println("Balada liberada!!")
endVou sair de casa?
Só vou sair de casa se for essencial
Se a variável pandemia for true, será impressa a mensagem “Só vou sair de casa se for essencial”. Caso contrário, será impressa a mensagem “Balada liberada!!”.
Múltiplas Condições com elseif¶
E se tivermos mais de duas situações possíveis? Nesse caso, podemos usar a estrutura if-elseif-else:
pandemia = true
tenhoqueestudar = true
println("Vou sair de casa?")
if pandemia == true
println("Só vou sair de casa se for essencial")
elseif tenhoqueestudar == true
println("Melhor ficar em casa")
else
println("Balada liberada")
endVou sair de casa?
Só vou sair de casa se for essencial
Neste exemplo, temos três caminhos possíveis:
Se houver pandemia, sair apenas se for essencial
Se não houver pandemia mas eu tiver que estudar, ficar em casa
Se não houver pandemia e eu não tiver que estudar, ir para a balada
A estrutura if-elseif-else avalia as condições na ordem em que aparecem. Assim que uma condição verdadeira é encontrada, o bloco correspondente é executado e as demais condições são ignoradas.
Verifique seu Aprendizado¶
Qual é a diferença entre o operador
=e o operador==em Julia? Por que essa distinção é importante?Explique a diferença entre if-else e if-elseif-else. Em quais situações você usaria cada um?
Considere a seguinte expressão booleana:
(a > b) && !(c == d). Explique em palavras o que ela significa.
Explore por Conta Própria¶
Pesquise sobre a avaliação em curto-circuito dos operadores lógicos
&&e||em Julia. Como esse comportamento pode ser útil em programação?Em Julia, além dos valores
trueefalse, quais outros valores são considerados “verdadeiros” ou “falsos” em um contexto booleano?Investigue o operador ternário (
?:) em Julia e como ele pode ser usado como uma alternativa mais concisa para certas estruturas if-else.Explore como as estruturas condicionais podem ser combinadas com funções para criar código mais modular e reutilizável.