This page is kept for historical purposes only. Please see the home page for my current situation. —Luca Saiu.

Questions

N'écrivez pas des notes légales : elles ne sont pas nécessaires pour cette épreuve, et les ignorerai.

Numéro Question Barème indicatif
1.

Définissez une procédure Scheme nommée «q» qui attend un seul paramètre de type chaîne de caractères, qui renvoie comme résultat une chaîne qui contient les mêmes caractères que le paramètre, en ordre inversé. Par exemple (q "8ab(cAg") doit renvoyer "gAc(ba8".

La procédure ne doit rien afficher. La procédure ne doit pas modifier son paramètre : elle doit renvoyer une nouvelle chaîne.

Il est interdit d'utiliser list->string, string->list, string->symbol, symbol->string, reverse, reverse!, string-reverse, et string-reverse! pour cette question.

+5
2.

Définissez une procédure Scheme nommée «cp» qui copie un fichier. La procédure attend deux paramètres de type chaîne de caractères, qui contiennent des noms de fichiers : le premier est l'origine, le deuxième la destination. Par exemple, l'appel «(cp "/etc/issue" "/tmp/qwqw")» doit créer un fichier /tmp/qwqw, identique à /etc/issue.

La procédure ne doit rien afficher et elle peut renvoyer n'importe quoi. Vous devez supporter au moins tous les caractères ASCII (7 bit) dans le contenu des fichiers. Supporter juste les lettres, par exemple, ne suffit pas.

Il est interdit d'utiliser system, system*, copy-file, execl, execle et execlp pour cette question.

+8
3.

Définissez une procédure Scheme nommée «cpr» qui copie un fichier en inversant ses caractères. La procédure attend deux paramètres de type chaîne de caractères, qui contiennent des noms de fichiers : le premier est l'origine, le deuxième la destination. Par exemple, l'appel «(cpr "/etc/issue" "/tmp/qwqw")» doit créer un fichier /tmp/qwqw, ayant les mêmes caractères de /etc/issue dans l'ordre inversé : si /etc/issue contenait «a,B17&w)», /tmp/qwqw contiendra «)w&71B,a».

La procédure ne doit rien afficher et elle peut renvoyer n'importe quoi. Vous devez supporter au moins tous les caractères ASCII (7 bit) dans le contenu des fichiers. Supporter juste les lettres, par exemple, ne suffit pas.

Il est interdit d'utiliser list->string, string->list, string->symbol, symbol->string, reverse, reverse!, string-reverse, string-reverse!, system, system*, copy-file, execl, execle et execlp pour cette question, mais si vous voulez vous pouvez utiliser la procédure q de la première question (copiez-la dans le fichier de cette réponse).

+8
4.

Définissez une procédure Scheme nommée «plus» qui attend deux paramètres entiers non-négatifs, c'est-à-dire positifs ou 0; la procédure doit renvoyer la somme de ses paramètres. Par exemple «(plus 14 100)» renverra 114.

La procédure ne doit rien afficher.

Il est interdit d'utiliser +, -, *, /, quotient, remainder, exp et expt pour cette question, mais vous pouvez utiliser 1+ et 1-.

+5
5.

Définissez une procédure Scheme nommée «fois» qui attend deux paramètres entiers non-négatifs, c'est-à-dire positifs ou 0; la procédure doit renvoyer le produit de ses paramètres. Par exemple «(fois 14 100)» renverra 1400.

La procédure ne doit rien afficher.

Il est interdit d'utiliser +, -, *, /, quotient, remainder, exp et expt pour cette question, mais vous pouvez utiliser 1+ et 1-.

Suggestion : utilisez la procédure plus de la question 4 en tant que procédure auxiliaire, en copiant sa définition dans le fichier de cette question, et en l'appelant dans fois.

+7

Luca Saiu