Leçons de niveau 10

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

Une page de Wikiversité.
Sauter à la navigation Sauter à la recherche
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
Icon falscher Titel.svg
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 | modifier le wikicode]

É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 | modifier le wikicode]

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 | modifier le wikicode]

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 | modifier le wikicode]

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 ?