;; Ces programmes sont sous licence CeCILL-B V1. ;; Exécution en ligne de commande avec Bigloo : ;; $ bigloo -i Pseudo.scm (define (appartient lettre mot) ;; Dans cette fonction "lettre" est censé ne contenir ;; qu'un seul caractère. On vérifie si ce caractère ;; apparaît dans la chaîne "mot" (let ((longueur-m (string-length mot))) (do ((i 0 (+ i 1))) ((or (= i longueur-m) (char=? (string-ref mot i) lettre)) (not (= i longueur-m)))))) (define (BonPseudo? pseudo) (let ((autorises "abcdefghijklmnopqrstuvwxyz") (longueur-p (string-length pseudo))) (do ((i 0 (+ i 1))) ((or (= i longueur-p) (not (appartient (string-ref pseudo i) autorises))) (= i longueur-p))))) (define (Pseudo) ;; On redemande un pseudo tant qu'il n'est pas correct (let boucle ((pseudoOK #f)) (if (not pseudoOK) (begin (display "Entrer votre pseudo : ") (let ((pseudo (read-line))) (if (BonPseudo? pseudo) ;; On vérifie que chaque caractère du pseudo est ;; autorisé (display "OK") (boucle #f)))))) (newline)) (Pseudo)