Outils pour utilisateurs

Outils du site


nsi:terminales:programmation_fonctionnelle:ocaml

Initiation à OCaml

Wikipedia

OCaml est un langage essentiellement développé en France notamment par l'INRIA. C'est un langage fonctionnel. C'est un langage développé par des universitaires avec une approche très formelle. Néanmoins, c'est un langage utilisé dans l'industrie notamment quand il s'agit de prouver la validité d'un programme.

C'est un langage difficile à maîtriser, on va se limiter aux bases.

Pour faire des tests, vous pourrez utiliser un environnement en ligne

Console, programme

Comme souvent, vous disposez à la fois d'une console dans laquelle vous pouvez entrer des commandes qui seront exécutées immédiatement. Le prompt de la console est représenté par le caractère #.

Vous pouvez aussi enregistrer vos commandes dans un fichier et les exécuter ensuite.

Syntaxe de base

Lisez d'abord cet article.

Exercices

Testez les expressions suivantes. Essayez de deviner le résultat puis vérifier dans OCaml, corrigez-les au besoin.

let r = let x = 7 in 6 * x;;
let a = (r - 6) / 6 - 6;;
let o = r * r - x * x - 51;;
let u = let x = 9 in if (x>9) then 9/x else x/9;;

Corrigez ces expressions

let pi_sur_4 = 3.14 / 4.;;
let dans_l_ordre = 1 < 2 < 3;;
let positif = let a = 42 in if a >= 0 then true;;
let double_absolu = let x = -2.7 in (if x>0 then x else -x) *. 2;;

Fonctions

Lisez d'abord cet article.

Exercices fonctions

  • Écrire une fonction cube de type float -> float qui élève son argument au cube.
  • Écrire une fonction is_positive de type int -> bool qui teste si son argument est positif ou nul.
  • Écrire une fonction is_even de type `int → bool` qui teste si son argument est pair.
    On pourra utiliser l’opérateur mod calculant le reste dans une division euclidienne.

Exercices fonctions à deux variables

  • Écrire une fonction qui calcule le produit de 3 entiers donnés en argument,
  • Écrire une fonction qui détermine si trois arguments entiers positifs forment un triplet pythagoricien – comme 3, 4, 5 qui vérifient $3^2 + 4^2 = 5^2$

Exercice fonction comme argument

Écrire une fonction repete_n qui reçoit comme argument :

  • une fonction f à une variable réelle,
  • un entier n,
  • un nombre réel x.

Le résultat de repete_n est l'application n fois de f. Par exemple repete_n f 3 x renvoie l'équivalent de f(f(f x)).

Exercice récurrence

Écrivez une fonction somme recevant l'argument n et calculant la somme des entiers de 1 à n.

Listes

Lisez d'abord cet article.

Exercice

  • Écrivez une fonction longueur donnant la longueur d'une liste.
  • Soit un polynome à coefficient entiers, par exemple $x^5 + 3\,x^2 - 4\,x + 2$. On peut représenter ce polynôme par une liste [2, -4, 3, 0, 0, 1] où chaque terme représente le coefficient de $x$ à la puissance donné par l'indice du terme. Par exemple, 3 à l'indice 2 signifie $3\,x^2$.
    Écrivez une fonction qui donne la liste dérivée, c'est à dire ici [-4, 6, 0, 0, 5] pour $5\,x^4 +6\,x -4$.
nsi/terminales/programmation_fonctionnelle/ocaml.txt · Dernière modification : de goupillwiki