next up previous contents index
Next: Fonctions récursives Up: Fonction Previous: Introduction   Contents   Index



Itération

Scheme définit une structure de contrôle permettant d'écrire facilement des itérations. C'est la forme spéciale do qui s'écrit :

(do ((var1 init1 incrément1)
     (var2 init2 incrément2)
      ...
     (varm initm incrémentm))
   (test-fin résultat)
  expr1 exp2 expn)

L'évaluation de cette expression débute par l'évaluation des expressions initi dont le résultat initialise les variables vari.

L'expression test-fin est évaluée :

Le processus recommence alors.

Par exemple, la fonction suivante affiche tous les éléments d'un vecteur :

Osm> (define (display-vector v)
       (let ((len (vector-length v)))
         (do (; variables
              (i 0 (+ i 1)))
            ; test de terminaison
            ((eq? i len))
           ; corps de l'itération
           (display (vector-ref v i))
           (newline))))
  => #unspecified

Osm> (display-vector #(1 '(2 3) 4))
  => 1
     (2 3)
     4
     #uncpecified



© 1993 to 2001 Erian Concept