< Initiation au Lua avec Scribunto < Exercices



Exercice 4-1

É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.


Exercice 4-2

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.


Exercice 4-3

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


Exercice 4-4

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 ?


Cet article est issu de Wikiversity. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.