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

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.



Exercice 4-1 modifier

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

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 modifier

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 modifier

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 ?