« 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)
Ajout des leçons
Watermy (discussion | contributions)
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|0|?}}
| 2 = {{C|Types|1|}}
| 3 = {{C|Opérations|0|?}}
| 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
Chapitres
Chap. 1 :Symbole icône indiquant que la page est une leçon avancée Installation 
Chap. 2 :Symbole icône indiquant que la page est à l'état d'ébauche de présentation Types 
Chap. 3 :Symbole icône indiquant que la page est à l'état d'ébauche de présentation Opérations 
Exercices
Exercice : Symbole icône indiquant que la page est à l'état d'ébauche QCM (?)

Présentation [Modifier]

Nous allons découvrir les bases du langage. Les types primitifs et les opérations arithmétiques de bases.

Objectifs [Modifier]

  • 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 [Modifier]

Leçon de niveau 13. Aucun prérequis n'est nécessaire pour cette section.


Référents [Modifier]

Ces personnes sont prêtes à vous aider concernant cette leçon :