Aller au contenu

Premiers pas en OCaml/Fonctions utilitaires

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.
Début de la boite de navigation du chapitre
Fonctions utilitaires
Icône de la faculté
Chapitre no 6
Leçon : Premiers pas en OCaml
Chap. préc. :Fonctions
Chap. suiv. :Structures de données
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « Premiers pas en OCaml : Fonctions utilitaires
Premiers pas en OCaml/Fonctions utilitaires
 », n'a pu être restituée correctement ci-dessus.

Maintenant que nous avons vu comment utiliser les fonctions. Voici quelques fonctions qui vous seront probablement utiles.

Les fonctions de conversions

[modifier | modifier le wikicode]

Les fonctions de conversions en OCaml ont la syntaxe suivante :


Le mot anglais of peut être traduit par de en français.

Réel vers entier

[modifier | modifier le wikicode]

Par exemple la fonction int_of_float convertit un réel en un entier.

# int_of_float;;
- : float -> int = <fun>

# int_of_float 13.6;;
- : int = 13

La valeur réelle est tronquée : c'est-à-dire que seule la partie entière est conservée et tout ce que se trouve après la virgule est perdu.

Entier vers réel

[modifier | modifier le wikicode]

L'opération inverse est possible grâce à la fonction float_of_int.

# float_of_int;;
(* Sucre syntaxique *)
# (float);;
- : int -> float = <fun>

# float_of_int 13;;
# (float) 13;;
- : float = 13.

Caractère vers entier

[modifier | modifier le wikicode]

La fonction de conversion d'un caractère vers un entier renvoie la valeur ASCII du caractère.

# int_of_char;;
- : char -> int = <fun>

# int_of_char 'A';;
- : int = 65
# int_of_char '\111';;
- : int = 111

Entier vers caractère

[modifier | modifier le wikicode]

La fonction de conversion d'un entier vers un caractère prend un entier en paramètre compris entre 0 et 255 inclus.

# char_of_int;;
- : int -> char = <fun>

# char_of_int 97;;
- : char = 'a'
# char_of_int 256;;
Exception: Invalid_argument "char_of_int".

Booléen vers chaîne de caractères

[modifier | modifier le wikicode]
# string_of_bool;;
- : bool -> string = <fun>

# string_of_bool true;;
- : string = "true"

# string_of_bool false;;
- : string = "false"

Chaîne de caractères vers booléen

[modifier | modifier le wikicode]

Attention la fonction de conversion d'une chaîne de caractères vers un booléen est sensible à la casse.
Les deux seules valeurs acceptées sont en minuscules "true" et "false".

# bool_of_string ;;
- : string -> bool = <fun>

# bool_of_string "true" ;;
- : bool = true

# bool_of_string "false" ;;
- : bool = false

# bool_of_string "TRUE" ;;
Exception: Invalid_argument "bool_of_string".

Chaîne de caractères vers nombre

[modifier | modifier le wikicode]

La chaîne doit correspondre à un entier ou un réel. Attention de bien utiliser un point et pas une virgule.

# int_of_string;;
- : string -> int = <fun>

# float_of_string;;
- : string -> float = <fun>

# float_of_string "13.37";;
- : float = 13.37

# float_of_string "13,37";;
Exception: Failure "float_of_string".

Nombre vers chaîne de caractères

[modifier | modifier le wikicode]
# string_of_int;;
- : int -> string = <fun>

# string_of_float;;
- : float -> string = <fun>

# string_of_float 13.37;;
- : string = "13.37"

Les fonctions d'entrées

[modifier | modifier le wikicode]

Les fonctions d'entrées commencent par le mot anglais read qui signifie lire (verbe) ou lecture (nom) en français.

Lecture d'une chaîne de caractères

[modifier | modifier le wikicode]

Il n'y a pas besoin de mettre des guillemets " lors de la saisie.

# read_line ;;
- : unit -> string = <fun>

# read_line () ;;
Bonjour le monde ! (* Appuyez sur entrée *)
- : string = "Bonjour le monde !"

Lecture d'un entier

[modifier | modifier le wikicode]
# read_int ;;
- : unit -> int = <fun>

# read_int () ;;
1337 (* Appuyez sur entrée *)
- : int = 1337

Lecture d'un réel

[modifier | modifier le wikicode]
# read_float ;;
- : unit -> float = <fun>

# read_float () ;;
13.37 (* Appuyez sur entrée *)
- : float = 13.37

Les fonctions d'affichages

[modifier | modifier le wikicode]

Les fonctions d'affichage commencent par le mot anglais print qui signifie afficher (verbe) ou affichage (nom) en français.

Affichage d'un caractère

[modifier | modifier le wikicode]
# print_char ;;
- : char -> unit = <fun>

# print_char 'A' ;;
A- : unit = ()

Affichage d'un entier

[modifier | modifier le wikicode]
# print_int ;;
- : int -> unit = <fun>

# print_int 1337 ;;
1337- : unit = ()

Affichage d'un réel

[modifier | modifier le wikicode]
# print_float ;;
- : float -> unit = <fun>

# print_float 13.37 ;;
13.37- : unit = ()

Affichage d'une chaîne de caractères

[modifier | modifier le wikicode]

Sans saut de ligne.

# print_string ;;
- : string -> unit = <fun>

# print_string "Bonjour le monde !" ;;
Bonjour le monde !- : unit = ()

Avec saut de ligne.

# print_endline ;;
- : string -> unit = <fun>

# print_endline "Bonjour le monde !" ;;
Bonjour le monde !
- : unit = ()

Passer une ligne

[modifier | modifier le wikicode]

Pour sauter une ligne.

# print_newline ;;
- : unit -> unit = <fun>

# print_newline () ;;
   (* une ligne vide *)
- : unit = ()

Concaténation de chaîne de caractères

[modifier | modifier le wikicode]

Vous pouvez concaténer deux chaînes de caractères grâce à l'opérateur accent circonflexe ^.

# (^);;
- : string -> string -> string = <fun>

# "Bonjour " ^ "le " ^ "monde " ^ "!";;
# (^)((^)((^) "Bonjour " "le ") "monde ") "!";;

- : string = "Bonjour le monde !"

Récupérer les arguments du programme

[modifier | modifier le wikicode]

Si vous voulez récupérer des arguments que vous avez passé à votre programme. Le premier étant l'emplacement de l'exécutable.

#  Sys.argv.(0);;
- : string = "/usr/bin/ocaml"

(* Il faut évidemment que des paramètres soit passés en entrée. *)
# Sys.argv.(1);;
Exception: Invalid_argument "index out of bounds".

Tableau récapitulatif

[modifier | modifier le wikicode]

Voir la fiche de synthèse.

Toutes ces informations sont disponibles sur la documentation officielle :