Commençons par la division entière et le modulo.
L'opérateur /
représente la division entière.
L'opérateur mod
calcule le reste de la division entière.
Détaillons cela.
Supposons qu'un fermier dispose de n
œufs, et qu'il souhaite remplir des boites de 12. L'expression (n / 12)
donne le nombre de boites qu'il remplira entièrement. L'expression (n mod 12)
donne le nombre d'œufs qu'il trouvera dans la boite incomplète. En particulier, lorsque n
est un multiple de 12, il n'y a pas de boite incomplète, et dans ce cas (n mod 12)
vaut 0.
Remarque : les divisions par zéro provoquent ici des erreurs. (n / 0)
tout comme (n mod 0)
amène l'erreur d'exécution suivante :
Fatal error: exception Division_by_zero;
Comme pour les réels, on dispose de fonctions prédéfinies pour les entiers. Leur mode de fonctionnement est très similaire à celui des fonctions réelles.
n
s'écrit abs n
.min
et max
fonctionnent pour les entiers aussi bien que pour les réels. Si a
et b
sont deux entiers (min a b)
et (max a b)
représentent respectivement luer minimum et leur maximum.Remarque : min
, max
, et les opérateurs de comparaisons (<, >, <=, >=, =, <>
) sont les seuls opérateurs qui fonctionnent à la fois sur des entiers et les réels. Il s'agit d'une exception, qui permet au programmeur d'écrire des tests sans alourdir les notations.
Il existe deux fonctions si triviales qu'à priori elles ne servent à rien, mais qui nous permettront dans la suite d'écrire du code plus lisible, donc il faut les retenir.
La première fonction permet d'obtenir le nombre qui suit immédiatement un entier. Elle est nommée succ
en abréviation de successeur. Ainsi pour un entier n
, l'expression succ n
est équivalente à n+1
.
La seconde fonction permet d'obtenir le nombre précédent un entier, et se nomme pred
. Ainsi l'expression pred n
est équivalente à n-1
.