if
Na sua forma mais simples, o condicional if em Scheme avalia um teste e, com base no resultado, executa um de dois possíveis blocos de código. A forma mais simples é:
(if test-is-true
do-this)- Se o
testavaliar como verdadeiro (#t), o bloco consequent é executado. O bloco pode retornar um valor ou executar outras ações, como atribuir uma variável ou imprimir saída.
Exemplo
(if (< 0 1)
(lumi-message "True!"))- Neste caso, o
testé(< 0 1)(verificando se 0 é menor que 1). - Como o teste avalia como verdadeiro (
#t), o bloco de código(lumi-message "True!")é executado, imprimindo"True!".
Adicionando uma condição else: if-else
Quando um condicional if tem um bloco de código alternativo (o caso else), a estrutura é:
(if test
do-this
else-do-this)- Se o
testavaliar como verdadeiro (#t), o bloco consequent é executado. - Se o
testavaliar como falso (#f), o bloco alternative é executado.
(if test
consequent
alternative)Como funciona
Expressão de teste:
- A expressão
testé avaliada primeiro.
- A expressão
Resultado com base no teste:
- Se o
testavaliar como verdadeiro (#t), o bloco consequent é executado. - Se o
testavaliar como falso (#f), o bloco alternative é executado.
- Se o
Tanto os blocos consequent quanto alternative podem executar qualquer operação Scheme válida, incluindo retornar valores, modificar variáveis ou executar procedimentos.
Exemplos
Exemplo 1: retornando um valor
(if (< 0 1)
1
0)- Aqui, o
testé(< 0 1)(verificando se 0 é menor que 1). - Como o teste avalia como verdadeiro (
#t), o bloco consequent (1) é executado e seu valor é retornado.
Resultado: 1
Exemplo 2: avaliando um bloco begin
Quando você precisa executar várias ações quando a condição é verdadeira ou falsa, pode usar begin ou let para agrupá-las.
(if (= 0 1)
(begin
(lumi-message "This won't run")
1)
(begin
(lumi-message "False condition met, calculating...")
(* 3 4)))- Neste exemplo, o
testé(= 0 1)(verificando se 0 é igual a 1). - Como o teste avalia como falso (
#f), o bloco alternative é executado:- Primeiro, imprime
"False condition met, calculating...". - Depois, calcula
(* 3 4)e retorna12.
- Primeiro, imprime
Resultado: Imprime “False condition met, calculating…” e retorna 12.
Exemplo 3: avaliando uma expressão let
Usar let permite declarar variáveis locais dentro do bloco de código.
(if (= 1 1)
(let (x -1)
(lumi-message "True condition met, calculating...")
(* x 10))
(let (y 4)
(lumi-message "This won't run")
(* 3 y)))- Neste exemplo, o
testé(= 1 1)(verificando se 1 é igual a 1). - Como o teste avalia como verdadeiro (
#t), o bloco consequent é executado:- Primeiro, imprime
"True condition met, calculating...". - Depois, calcula
(* -1 10)e retorna-10.
- Primeiro, imprime
Resultado: Imprime “True condition met, calculating…” e retorna -10.
Resumo
- O condicional
ifé uma ferramenta poderosa em Scheme para avaliar testes e executar blocos de código correspondentes. - Pode lidar tanto com expressões simples quanto com blocos de código complexos que retornam valores, modificam variáveis ou produzem efeitos colaterais.
- Lembre-se: se não houver um bloco
elseexplícito, oifsó avalia e executa o consequent se o teste for verdadeiro; caso contrário, o alternative.