« Premiers pas en OCaml » : différence entre les versions

Une page de Wikiversité, la communauté pédagogique libre.
Contenu supprimé Contenu ajouté
Watermy (discussion | contributions)
Premiers pas, 1ère partie
 
Watermy (discussion | contributions)
Premier pas 2ème partie
Ligne 1 : Ligne 1 :
== Préambule ==
Nous allons d'abord nous familiariser avec le langage OCaml.
Nous allons d'abord nous familiariser avec le langage OCaml.
Pour cela lancez l'interpréteur OCaml dans un invite de commande.
Pour cela lancez l'interpréteur OCaml dans un invite de commande.
Ligne 7 : Ligne 6 :
En OCaml et contrairement à d'autres langage de programmation les expressions finissent par deux points-virgules.
En OCaml et contrairement à d'autres langage de programmation les expressions finissent par deux points-virgules.
<source lang="ocaml"> <expression>;; </source>
<source lang="ocaml"> <expression>;; </source>



== Types basiques ==
== Types basiques ==
Ligne 57 : Ligne 57 :


== Les opérations simples ==
== Les opérations simples ==

=== sur les entiers ===
L'inférence de type décharge le développeur de la déclaration des différents types. En contrepartie l'utilisation d'opérateurs spécifiques pour chaque type.
Les opérateurs +,-,/,* permettent respectivement d'effectuer les opérations sur l

<source lang="ocaml"> 1+2;; </source>
<source lang="ocaml"> - : int = 3 </source>

L'ordre des opérateurs est le même que pour les mathématiques '*' et '/' sont prioritaires sur '+' et '-'.
<source lang="ocaml"> 1*2-3+4;; </source>
<source lang="ocaml"> - : int = 3 </source>

Mais il reste possible d'utiliser des parenthèse pour changer les priorités.
<source lang="ocaml"> 1*2-(3+4);; </source>
<source lang="ocaml"> - : int = -5 </source>

L'utilisation de la division tronque le résultat.
<source lang="ocaml"> 5/2;; </source>
<source lang="ocaml"> - : int = 2 </source>

=== sur les réels ===
Les opérateurs pour les réels sont les mêmes que pour les entiers mais suivit d'un point +.,-.*.,/. .

<source lang="ocaml"> 1.0 +. 2.0 </source>
<source lang="ocaml"> - : float = 3. </source>
L'addition s'effectue avec l'opérateur '+' pour les entier et '+.' pour les réels.
De même '*.' et '/.' sont prioritaires sur '+.' et '-.'.
<source lang="ocaml"> 1.*.2.-.3.+.4.;; </source>
<source lang="ocaml"> - : float = 3. </source>

De même les parenthèse change les priorités.
<source lang="ocaml"> 1.*.2.-.(3.+.4.);; </source>
<source lang="ocaml"> - : float = -5. </source>

Mais cette fois la division donne le résultat exacte
<source lang="ocaml"> 5./.2.;; </source>
<source lang="ocaml"> - : float = 2.5 </source>

Version du 29 avril 2011 à 21:58

Nous allons d'abord nous familiariser avec le langage OCaml. Pour cela lancez l'interpréteur OCaml dans un invite de commande.

 ocaml

Si vous avez bien installé OCaml vous devriez voir le prompt d'OCaml apparaître.

 # |

En OCaml et contrairement à d'autres langage de programmation les expressions finissent par deux points-virgules.

 <expression>;;


Types basiques

OCaml est statiquement typé. Pourtant le type n'est jamais explicitement donné par le développeur. C'est l'une des puissance de OCaml qui utilise l'inférence de type pour déterminer à la compilation le type utilisé. Voyons ce que peut faire OCaml sur quelques exemples.

Les entiers (Integer)

Commencez par taper un entier :

 1;;

La ligne suivante s'affiche.

 - : int = 1


Les réels/flottants (float)

Maintenant un réel (composé d'un point '.')

 1.0;;

ou encore

 1.;;

La ligne suivante s'affiche.

 - : float = 1.

Les caractères (character)

Puis un caractère encadrés par de simples apostrophes (simple quote)

'c';;
 - : char = 'c'

Attention un caractère n'est composé que d'un caractère sous peine d'obtenir une erreur.

'cd';;
 Error: Syntax error

Les seules exceptions sont les caractères spéciaux (commençant par un antislash '\') tel que '\n' (saut de ligne)

'\n';;
 - : char = '\n'

Les chaînes de caractères (string)

Maintenant une chaîne de caractère encadré par des guillemets anglais (double quote)

 "chaine";;
 - : string = "chaine"

Les booléens (boolean)

Et enfin les booléens : deux valeurs possibles, soit vrai (true) soit faux (false)

 true;;
 - : bool = true

ou

 false;;
 - : bool = false

Les opérations simples

sur les entiers

L'inférence de type décharge le développeur de la déclaration des différents types. En contrepartie l'utilisation d'opérateurs spécifiques pour chaque type. Les opérateurs +,-,/,* permettent respectivement d'effectuer les opérations sur l

 1+2;;
 - : int = 3

L'ordre des opérateurs est le même que pour les mathématiques '*' et '/' sont prioritaires sur '+' et '-'.

 1*2-3+4;;
 - : int = 3

Mais il reste possible d'utiliser des parenthèse pour changer les priorités.

 1*2-(3+4);;
 - : int = -5

L'utilisation de la division tronque le résultat.

 5/2;;
 - : int = 2

sur les réels

Les opérateurs pour les réels sont les mêmes que pour les entiers mais suivit d'un point +.,-.*.,/. .

 1.0 +. 2.0
 - : float = 3.

L'addition s'effectue avec l'opérateur '+' pour les entier et '+.' pour les réels. De même '*.' et '/.' sont prioritaires sur '+.' et '-.'.

 1.*.2.-.3.+.4.;;
 - : float = 3.

De même les parenthèse change les priorités.

 1.*.2.-.(3.+.4.);;
 - : float = -5.

Mais cette fois la division donne le résultat exacte

 5./.2.;;
 - : float = 2.5