« Premiers pas en OCaml » : différence entre les versions
Contenu supprimé Contenu ajouté
Ajout des leçons |
Retrait des informations redondantes |
||
Ligne 3 : | Ligne 3 : | ||
| département = Programmation informatique |
| département = Programmation informatique |
||
| 1 = {{C|Installation|2| }} |
| 1 = {{C|Installation|2| }} |
||
| 2 = {{C|Types| |
| 2 = {{C|Types|1|}} |
||
| 3 = {{C|Opérations| |
| 3 = {{C|Opérations|1|}} |
||
| exo1 = {{Exo|QCM|0|?}} |
| exo1 = {{Exo|QCM|0|?}} |
||
| niveau = 13 |
| niveau = 13 |
||
}} |
}} |
||
Nous allons d'abord nous familiariser avec le langage OCaml. |
|||
Pour cela lancez l'interpréteur OCaml dans un invite de commande. |
|||
<source lang="bash"> ocaml </source> |
|||
Si vous avez bien installé OCaml vous devriez voir le prompt d'OCaml apparaître. |
|||
<source lang="bash"> # | </source> |
|||
En OCaml et contrairement à d'autres langage de programmation les expressions finissent par deux points-virgules. |
|||
<source lang="ocaml"> <expression>;; </source> |
|||
== 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 : |
|||
<source lang="ocaml"> 1;; </source> |
|||
La ligne suivante s'affiche. |
|||
<source lang="ocaml"> - : int = 1 </source> |
|||
=== Les réels/flottants (''float'') === |
|||
Maintenant un réel (composé d'un point '.') |
|||
<source lang="ocaml"> 1.0;; </source> |
|||
ou encore <source lang="ocaml"> 1.;; </source> |
|||
La ligne suivante s'affiche. |
|||
<source lang="ocaml"> - : float = 1. </source> |
|||
=== Les caractères (''character'') === |
|||
Puis un caractère encadrés par de simples apostrophes (''simple quote'') |
|||
<source lang="ocaml">'c';; </source> |
|||
<source lang="ocaml"> - : char = 'c'</source> |
|||
Attention un caractère n'est composé que d'un caractère sous peine d'obtenir une erreur. |
|||
<source lang="ocaml">'cd';; </source> |
|||
<source lang="ocaml"> Error: Syntax error |
|||
</source> |
|||
Les seules exceptions sont les caractères spéciaux (commençant par un antislash '\') tel que '\n' (saut de ligne) |
|||
<source lang="ocaml">'\n';; </source> |
|||
<source lang="ocaml"> - : char = '\n' </source> |
|||
=== Les chaînes de caractères (string) === |
|||
Maintenant une chaîne de caractère encadré par des guillemets anglais (''double quote'') |
|||
<source lang="ocaml"> "chaine";; </source> |
|||
<source lang="ocaml"> - : string = "chaine" </source> |
|||
=== Les booléens (''boolean'') === |
|||
Et enfin les booléens : deux valeurs possibles, soit vrai (''true'') soit faux (''false'') |
|||
<source lang="ocaml"> true;; </source> |
|||
<source lang="ocaml"> - : bool = true </source> |
|||
ou |
|||
<source lang="ocaml"> false;; </source> |
|||
<source lang="ocaml"> - : bool = false </source> |
|||
== 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 à 22:23
Premiers pas en OCaml
Département
Programmation informatiqueChapitres
Chap. 1 : | Installation |
---|---|
Chap. 2 : | Types |
Chap. 3 : | Opérations |
Exercices
Exercice : | QCM (?) |
---|
Présentation [ ]
Nous allons découvrir les bases du langage. Les types primitifs et les opérations arithmétiques de bases.
Objectifs [ ]
- Découvrir les types de bases
- Découvrir les opérations de bases
- Savoir effectuer les conversions entre types (transtypage)
Niveau et prérequis conseillés [ ]
Leçon de niveau 13. Aucun prérequis n'est nécessaire pour cette section.
Référents [ ]
Ces personnes sont prêtes à vous aider concernant cette leçon :