# Initiation au Lua avec Scribunto/Exercices/Sur les fonctions basiques
## Exercice 5-1

Un des problèmes possibles, lorsqu'on écrit une grande table dont les clés sont des chaînes de caractère, est que, sans le faire exprès, on risque d’utiliser la même clé plusieurs fois. Nous allons donc étudier ce cas de figure dans cet exercice.
Soit la table suivante :
Nous voyons que nous avons utilisé la clé "Poisson" deux fois.
Écrire une fonction p.listecle qui permet d'énumérer le contenu de cette table en utilisant la fonction pairs.
Que remarque-t-on ?
La solution de l'exercice se trouve dans le Module:Doublon.
{{#invoke:Doublon|listecle}} nous donne :
Description de la table à la clé numéro Prénom se trouve l’objet Christine. à la clé numéro Instrument se trouve l’objet Piano. à la clé numéro Planète se trouve l’objet Saturne. à la clé numéro Métal se trouve l’objet Argent. à la clé numéro Mois se trouve l’objet Avril. à la clé numéro Poisson se trouve l’objet Sardine. à la clé numéro Métier se trouve l’objet Boulanger.
Nous remarquons que l'erreur n’est pas signalée. Une des deux clés "Poisson" n'a, tout simplement, pas été enregistrée. Lorsque l’on écrit une longue table, nous devons donc faire particulièrement attention de ne pas utiliser deux fois la même clé car cette erreur n’est pas signalée et l'une des deux clés ne sera pas prise en compte.

## Exercice 5-2

Nous savons que la fonction pairs retourne trois valeurs : Une fonction itérative, la table concernée et la valeur nil. Écrire une fonction p.test testant le type des valeurs retournées par la fonction ainsi que leur action sur un exemple. Réécrire la fonction p.farfouille donnée en exemple dans le cours en court-circuitant la fonction pairs. On utilisera la fonction next comme fonction itérative.
Le programme se trouve dans le Module:iteratif.
{{#invoke:iteratif|test}} nous retourne : La première valeur est de type function et la clé suivant la clé couvert est la clé Truc La seconde valeur est de type table et t[Boisson] = Limonade La troisième valeur est de type nil
{{#invoke:iteratif|farfouille}} nous retourne : à la clé Nourriture se trouve l’objet Fromage. à la clé Boisson se trouve l’objet Limonade. à la clé Couvert se trouve l’objet Fourchette. à la clé Truc se trouve l’objet Machin chose. à la clé Bestiole se trouve l’objet Cafard.

## Exercice 5-3

Même exercice que précédemment avec la fonction p.description donnée en exemple dans le cours pour la fonction ipairs :
On court-circuitera la fonction ipairs en utilisant une fonction itérative suivant que l’on écrira pour l’occasion.
La solution se trouve dans le Module:iteratif
{{#invoke:iteratif|description}} nous retourne : à la clé numéro 1 se trouve l’objet flute. à la clé numéro 2 se trouve l’objet pipo. à la clé numéro 3 se trouve l’objet manche à balaie. à la clé numéro 4 se trouve l’objet serpière. à la clé numéro 5 se trouve l’objet jeu de cartes. à la clé numéro 6 se trouve l’objet coton tige. à la clé numéro 7 se trouve l’objet tourne vis. à la clé numéro 8 se trouve l’objet rateau. à la clé numéro 9 se trouve l’objet stylo. à la clé numéro 10 se trouve l’objet poupée.

## Exercice 5-4

(à compléter)
Cette solution n'a pas été rédigée. Vous pouvez le faire en modifiant le paramètre « contenu » du modèle.
| Sur les structures de contrôle | Sur les chaînes de caractères |