Nous allons maintenant voir un cas où l'utilisation du let
est indispensable. Il s'agit de demander un entier à l'utilisateur lors de l'exécution du programme, et d'afficher sa valeur et celle de son carré. La requête d'un nombre entier à l'utilisateur se fait avec la commande read_int()
, traduction "lire un entier"
. Attention, les parenthèses dans read_int
sont indispensables, de la même façon qu'elles l'étaient pour le print_newline()
. En choisissant de poser mon_nombre
la valeur fournie par l'utilisateur, on écrira pour nommer cette valeur :
let mon_nombre = read_int() in
Donc l'ensemble du code que l'on veut écrire est :
print_string "Entrez le nombre : "; let mon_nombre = read_int() in print_int mon_nombre; print_string " a pour carré "; print_int (mon_nombre * mon_nombre);
Pour comprendre ce qui se passe lors de l'exécution du code :
Un read_int()
bloque l'exécution du programme jusqu'à ce que l'utilisateur ait tapé un nombre entier, et ait appuyé sur la touche entrée du clavier. A ce moment le mot read_int()
est remplacé par la valeur donnée.
D'abord le programme affiche "Entrez le nombre : "
. Ensuite il s'arrête, et attend que l'utilisateur tape un nombre. Supposons que celui-ci tape 15, puis la touche entrée. Le fait d'appuyer sur entrée provoque un retour à la ligne dans l'écran d'affichage, bien qu'il n'y ait pas d'instruction print_newline()
utilisée. A ce moment-là, le code restant est équivalent à :
let mon_nombre = 15 in print_int mon_nombre; print_string " a pour carré "; print_int (mon_nombre * mon_nombre);
La règle du let
fait que mon_nombre
est remplacé par sa valeur dans les instructions suivantes, et il reste alors :
print_int 15; print_string " a pour carré "; print_int (15 * 15);
Finalement, sur l'écran final, il sera affiché :
Entrez le nombre : 15 15 a pour carré 225
Faites aussi un test avec un nombre entier négatif, par exemple -8
. Vous devriez avoir au final :
Entrez le nombre : -8 -8 a pour carré 64