(*recherche bête dans un tableau non trié*) (* la méthode itérative "naturelle" se fait avec un entier qui parcourt les indices du tableau. La boucle for est ici mauvaise: elle ferait parcourir tout le tableau même si la valeur cherchée est en première place Une itération avec while impose la définition d'un identificateur variable: une référence est indispensable *) let tab=[|1;3;45;7;11;6|];; (*ci-dessous une erreur: *) let cherche_iter val tab= let long=vect_length tab in let indice=ref 0 in while ((tab.(!indice)<>val) && (!indiceval) do indice:=(!indice+1) done; !indice ;; (* ci-dessous une programmation fonctionelle du parcours du tableau, la fonction cherche a k t cherche si a est présent au delà de la place k dans le tableau t*) let rec cherche a k t= let n=vect_length t in if t.(k)=a then true else if k=n-1 then false else cherche a (k+1) t ;; (* le cherche a k t est alors utilisé par cherche *) let cherche a t= cherche a 0 t;; (* deux exemples *) cherche 45 tab;; cherche 2 tab;; (*exercices: définir des fonctions caml qui - donnent les 3 premières occurences de a dans t - donnent toutes les occurences de a dans t *)