Initiation au Lua avec Scribunto/Exercices/Sur la gestion de l'environnement
Exercice 9-1
On considère les trois fonctions f, g, h définies par
Après avoir programmé ces trois fonctions dans un module, on écrira une fonction chrono qui accepte une fonction en argument et qui nous retourne le temps d'exécution de la fonction passée en argument.
Dans la fonction principale p.rapide, on comparera le temps d'exécution des trois fonctions f, g, h et on retournera à l'utilisateur un message indiquant la fonction qui s'exécute le plus rapidement.
Contrainte : Le nom de la fonction chrono ne devra apparaître qu'une seule fois dans la fonction p.rapide.
Exercice 9-2
Dans le chapitre sur les fonctions basiques, nous avons écrit, pour donner un exemple d'utilisation de la fonction next, le programme suivant :
local Categorie = { ["Prénom"] = "Christine", ["Mois"] = "Avril", ["Métier"] = "Boulanger", ["Poisson"] = "Truite", ["Métal"] = "Argent", ["Planète"] = "Saturne", ["Instrument"] = "Piano"}
function p.yatil(frame)
local suivant
local trouve = false
repeat
suivant = next(Categorie,suivant) --Cherche la clé suivante et la met dans suivant
if Categorie[suivant] == frame.args[1] then trouve = true end
until suivant == nil or trouve -- On tourne dans la boucle jusqu'à ce que toute la table ait été parcourue ou jusqu'à ce qu'on ait trouvé
if trouve then
return "Le mot figure dans la table"
else
return "Le mot ne figure pas dans la table"
end
end
L'écriture de la fonction p.yatil est-elle correcte ? Donner une meilleure façon d'écrire cette fonction.
Exercice 9-3
(à compléter)
Exercice 9-4
(à compléter)