si
Dans sa forme la plus simple, le conditionnel if dans Scheme évalue un test et, en fonction du résultat, exécute l’un des deux blocs de code possibles. La forme la plus simple ressemble à ceci :
(if test-is-true
do-this)- Si
testest évalué à vrai (#t), le bloc de code dans le conséquent est exécuté. Le bloc peut renvoyer une valeur ou effectuer d’autres actions, telles que l’attribution d’une variable ou l’impression d’une sortie.
Exemple
(if (< 0 1)
(lumi-message "True!"))- Dans ce cas, le
testest(< 0 1)(en vérifiant si 0 est inférieur à 1). - Puisque le test est évalué comme vrai (
#t), le bloc de code(lumi-message "True!")est exécuté, qui imprime"True!".
Ajout d’une condition Else : if-else
Lorsque vous utilisez un conditionnel if avec un bloc de code alternatif (le cas else), la structure ressemble à ceci :
(if test
do-this
else-do-this)- Si
testest évalué à vrai (#t), le bloc de code conséquent est exécuté. - Si
testest évalué à false (#f), le bloc de code alternatif est exécuté.
(if test
consequent
alternative)Comment ça marche
Expression de test :
- L’expression
testest évaluée en premier.
- L’expression
Résultat basé sur le test :
- Si
testest évalué à vrai (#t), le bloc de code conséquent est exécuté. - Si
testest évalué à false (#f), le bloc de code alternatif est exécuté.
- Si
Les blocs de code consequent et alternative peuvent effectuer n’importe quelle opération Scheme valide, y compris le renvoi de valeurs, la modification de variables ou l’exécution de procédures.
Exemples
Exemple 1 : renvoyer une valeur
(if (< 0 1)
1
0)- Ici, le
testest(< 0 1)(en vérifiant si 0 est inférieur à 1). - Puisque le test est évalué à vrai (
#t), le bloc conséquent (1) est exécuté et sa valeur est renvoyée.
Résultat : 1
Exemple 2 : évaluation d’un bloc de début
Dans les cas où vous devez effectuer plusieurs actions lorsque la condition est vraie ou fausse, vous pouvez utiliser begin ou un let pour les regrouper.
(if (= 0 1)
(begin
(lumi-message "This won't run")
1)
(begin
(lumi-message "False condition met, calculating...")
(* 3 4)))- Dans cet exemple, le
testest(= 0 1)(en vérifiant si 0 est égal à 1). - Puisque le test est évalué à faux (
#f), le bloc alternatif est exécuté :- Tout d’abord, il imprime
"False condition met, calculating...". - Ensuite, il calcule
(* 3 4)et renvoie12.
- Tout d’abord, il imprime
Résultat : Imprime “Fausse condition remplie, calcul…” et renvoie 12.
Exemple 3 : évaluation d’une instruction let
L’utilisation d’un let nous permet de déclarer des variables de portée locale dans le bloc de code.
(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)))- Dans cet exemple, le
testest(= 1 1)(vérifier si 1 est égal à 1). - Puisque le test est évalué à vrai (
#t), le bloc conséquent est exécuté :- Tout d’abord, il imprime
"True condition met, calculating...". - Ensuite, il calcule
(* -1 10)et renvoie-10.
- Tout d’abord, il imprime
Résultat : Imprime “Condition réelle remplie, calcul…” et renvoie -10.
Résumé- Le conditionnel if est un outil puissant dans Scheme pour évaluer les tests et exécuter les blocs de code correspondants.
- Il peut gérer à la fois des expressions simples et des blocs de code complexes qui renvoient des valeurs, modifient des variables ou effectuent des effets secondaires.
- N’oubliez pas : s’il n’y a pas de bloc
elseexplicite, leifn’évalue et n’exécute le conséquent que si le test est vrai. Sinon, il évalue et exécute l’alternative.