====== Initiation à OCaml ====== {{page>nsi:langages:ocaml:start#Présentation&noheader&nofooter}} ===== Console, programme ===== {{page>nsi:langages:ocaml:start#Console, programme&noheader&nofooter}} ===== Syntaxe de base ===== Lisez d'abord cet [[nsi:langages:ocaml:syntaxe|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 [[nsi:langages:ocaml:fonctions|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 [[nsi:langages:ocaml:listes|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$.