Aller au contenu

Initiation au Lua avec Scribunto/Exercices/Sur les tables et les fonctions

Leçons de niveau 10
Une page de Wikiversité, la communauté pédagogique libre.
Sur les tables et les fonctions
Image logo représentative de la faculté
Exercices no3
Leçon : Initiation au Lua avec Scribunto
Chapitre du cours : Tables et fonctions

Exercices de niveau 10.

Exo préc. :Recherche d'erreurs
Exo suiv. :Sur les structures de contrôle
En raison de limitations techniques, la typographie souhaitable du titre, « Exercice : Sur les tables et les fonctions
Initiation au Lua avec Scribunto/Exercices/Sur les tables et les fonctions
 », n'a pu être restituée correctement ci-dessus.



Écrire une fonction, dans un module, qui fait la somme de ses deux arguments écrits en toutes lettres et qui renvoie cette somme, elle aussi, écrite en toutes lettres. Par exemple si l’on rentre, en arguments, six et neuf, le module doit nous renvoyer quinze. On se limitera à faire la somme de nombres compris entre zéro et dix.


Que retourne une fonction dans laquelle, on n'a pas utilisé l'instruction return? On répondra à cette question après avoir écrit un programme qui nous permettra de trouver la réponse.


Dans un module, nous avons écrit :

local p = {}
-- Ce module permet d'étudier la visibilité d'une variable.
local a = 5   

function g(x)
	a = a + x
	local a = 3
	a = a + x
	return a
end

function p.f()
	local reponse = " "
	reponse = reponse.." "..a
	reponse = reponse.." "..g(a)
	reponse = reponse.." "..a
	local a = 1
	reponse = reponse.." "..a
	reponse = reponse.." "..g(a)
	reponse = reponse.." "..a
	return reponse
end

return p

Qu'obtient-on en appelant la fonction p.f avec la commande #invoke ?


Une fonction peut-elle recevoir en argument une autre fonction ? Pour répondre à la question, on écrira un module comprenant :

  • Une première fonction g incrémentant son argument de 3.
  • Une seconde fonction h considérant son argument comme étant une fonction qui sera appliqué à un nombre, le résultat étant retourné.
  • Une troisième fonction principale p.f Manipulant les deux fonctions g et h de façon à voir si la fonction h accepte bien la fonction g comme argument.

Si le passage de fonction se fait bien, pensez-vous qu’il s'agit d'un passage par valeur ou d'un passage par référence ?