;; Ces programmes sont sous licence CeCILL-B V1. ;; Exécution en ligne de commande avec Bigloo : ;; $ bigloo -i Repertoire.scm (define (Repertoire) (let* ((tailleRepertoire 10) (nom (make-vector tailleRepertoire "")) (tel (make-vector tailleRepertoire ""))) (vector-set! nom 0 "Alice") (vector-set! tel 0 "0606060606") (vector-set! nom 1 "Bob") (vector-set! tel 1 "0606060607") (vector-set! nom 2 "Charles") (vector-set! tel 2 "0606060608") (vector-set! nom 3 "Djamel") (vector-set! tel 3 "0606060609") (vector-set! nom 4 "Étienne") (vector-set! tel 4 "0606060610") (vector-set! nom 5 "Frédérique") (vector-set! tel 5 "0606060611") (vector-set! nom 6 "Guillaume") (vector-set! tel 6 "0606060612") (vector-set! nom 7 "Hector") (vector-set! tel 7 "0606060613") (vector-set! nom 8 "Isabelle") (vector-set! tel 8 "0606060614") (vector-set! nom 9 "Jérôme") (vector-set! tel 9 "0606060615") ;; Recherche du numéro associé au nom s (display "Nom ? ") (let ((s (read-line))) (display (Recherche s nom tel)) (newline)))) (define (Recherche s nom tel) (let ((tailleRepertoire (vector-length nom))) (let boucle ((i 0)) (if (and (< i tailleRepertoire) (not (string=? s (vector-ref nom i)))) (boucle (+ i 1)) (if (< i tailleRepertoire) (vector-ref tel i) "Inconnu"))))) (Repertoire)