Initiation au langage Lua (2ème partie)

Créer, jouer et publier des jeux vidéos

Initiation au langage Lua (2ème partie)

Hello,

Nous allons poursuivre notre découverte rapide du langage Lua que nous avons commencé dans l'avant dernier article. Les sujets à aborder dans cette deuxième partie sont : structure de contrôle, les boucles et les fonctions. lua-logo_128x128

Prérequis: avoir déjà des notions de base en programmation quel que soit le langage.

Structure de contrôle

Une structure de contrôle permet de faire des tests et de poser des conditions suivies d’actions qui seront exécutées si ces conditions sont vérifiées ou non. Pour ceux qui débutent en programmation, voici un exemple de structure de contrôle dans la vie réelle. Je me réveille le matin et je dois faire une course pour acheter des raisins dans un magasin. Si je vais dans la boutique A et que je ne trouve pas les fraises, j’irai dans la boutique B à l’autre bout de la ville. Si je ne les trouve toujours pas là-bas alors je demanderai à ma chérie de me les acheter dans le super marché à côté de son boulot en rentrant le soir.  Je suppose que vous avez cerné le concept.

Pour ceux qui s’y connaissent déjà dans d’autres langages, sachez qu’il n’y a pas d’accolades {…} en Lua. Ils sont remplacés par l’instruction do (pour l’équivalent de l’ouverture d’une accolade) et end (pour l’équivalent de la fermeture d’une accolade).

En ce qui concerne l’instruction de contrôle if/else, elle s’écrit en Lua comme ceci : if-then-else (sans accolades)

Exemple d’utilisation:

local ageMarion=20
local ageWarren=21

if(ageMarion>ageWarren) then
   print("Marion est plus âgée que Warren")

elseif(ageMarion<ageWarren) then
   print("Warren est plus âgé que Marion")

else
   print("Marion et Warren ont le même âge")
end

Changez les valeurs des variables ageMarion et ageWarren et exécutez le code pour voir le résultat.

Note: Contrairement à d’autres langages de programmation où le else est séparé du if, l’orthographe du elseif en Lua est collée. Séparer le if du else sera alors une erreur de syntaxe.

Les boucles

Les boucles servent à faire répéter une même partie d’un code un certain nombre de fois et sous une certaine condition. Une fois que la condition qui est mise en place n’est plus vérifiée, alors l’exécution de la boucle s’arrêtera.

La première boucle que nous allons voir est la boucle for…do…end qui s’utilise comme suit :

Exemple d’utilisation:

for i=1, 10 do
   print("Lua est un beau langage") -- affichera la phrase "Lua est un beau langage" 10 fois
end

La syntaxe de la boucle for prend d’abord le nom d’une variable. Dans notre exemple, elle se nomme i et elle prend comme valeur initiale le chiffre 1. Ce chiffre est suivi d’une virgule puis du chiffre 10 qui définit le nombre maximal de fois où le contenu de la boucle devra s’exécuter. Pour finir, nous ouvrons la boucle avec l’instruction do. À l’intérieur de la boucle, nous affichons la phrase "Lua est un beau langage" puis nous fermons la boucle.

Supposons maintenant qu’à chaque tour de la boucle (encore appelée une itération), vous vouliez l’incrémenter de 2 au lieu de 1, vous devez alors ajouter une troisième valeur à l’instruction for comme dans l’exemple suivant :

for i=1, 10, 2 do
   print("Je suis la phrase numéro "..i); --affichera la phrase "Je suis la phrase numéro x" 5 fois. x ici représente la valeur de la variable i à chaque tour de la boucle.
end

L’exécution de ce code affichera :

Je suis la phrase numéro 1

Je suis la phrase numéro 3

Je suis la phrase numéro 5

Je suis la phrase numéro 7

Je suis la phrase numéro 9

Comme vous l’avez remarqué, une valeur de 2 s’ajoute à la valeur de i à chaque itération.

Note : La variable i de la boucle for est locale à cette boucle. Il n'est donc pas nécessaire de la déclarer avec le mot local. Ainsi, il n’est pas possible d’utiliser sa valeur après le end de la boucle.

La deuxième boucle dont nous allons parler est while…do…end (tant que)

Cette boucle prend une condition en paramètre et exécute une instruction tant que cette condition est valide. Nous allons réécrire l’exemple de la boucle for en utilisant cette fois while.

Exemple d’utilisation:

local i=1

while(i<10) do
   print("Lua est un beau langage") -- affiche la phrase "Lua est un beau langage"
   i=i+1 -- incrémente la valeur de i de 1
end

Dans cette boucle, nous avons la condition suivante. Tant que la valeur de i sera inférieure à 10, affiche la phrase "Lua est un beau langage" et incrémente la valeur de i avant de reprendre le test de la boucle.

La troisième boucle à voir pour finir avec cette section est repeat…until (répéter….jusqu’à)

Contrairement à la boucle  while où la condition est vérifiée avant l’exécution de l’instruction de la boucle, la boucle repeat…until exécute d’abord une instruction avant de vérifier si la condition est valide.

Exemple d’utilisation:

local i=1

repeat
   i=i+1 -- incrémentation de la variable i de 1
   print("Lua est un beau langage") -- affiche la phrase "Lua est un beau langage"
until(i==10) -- la boucle s’arrêtera quand la variable i prendra la valeur 10

Cet exemple joue le même rôle que celui de la boucle for et de la boucle while.

Pack cadeau de bienvenue

Les fonctions

Une fonction est une portion de code (ou une partie d’un programme) qui peut être appelée à divers endroits par un autre programme ou par elle-même (récursivité). Ainsi, le code est écrit une seule fois et peut être utilisée le nombre de fois voulu dans le programme principal. Comme dans d’autres langages, on trouve aussi en Lua, des fonctions simples et des fonctions paramétrées. Une fois qu’une fonction est définie avec le code à exécuter, il suffit de l’appeler par son nom à l’endroit voulu pour que son code s’exécute. Voici les deux manières possibles à utiliser pour déclarer une fonction en Lua.

Exemple d’utilisation:

-- une première façon de déclarer une fonction
function afficheBonjour()
   print("Bonjour Eric")
end

afficheBonjour() -- appel de la fonction par son nom. Affichera "Bonjour Eric"

-- une deuxième façon de déclarer une fonction
afficheBonsoir=function()
    print("Bonsoir Dodji")
end

afficheBonsoir() -- appel de la fonction par son nom. Affichera "Bonsoir Eric"

Dans le deuxième exemple, la fonction est traitée comme une variable. En Lua, une fonction peut être globale ou locale (comme les variables). Pour la rendre locale, il suffit de préciser le mot local devant sa déclaration (comme les variables). Voir le code suivant :

local function afficheBonjour()
   print("Bonjour Eric")
end

afficheBonjour()

Pour passer des variables en paramètre à une fonction, il faut placer ces variables dans le jeu de parenthèses à côté du nom de la fonction. Les paramètres d’une fonction n’ont pas besoin du mot local parce qu’elles sont traitées par défaut comme des variables locales.

Exemple d’utilisation:

local a=10 -- déclaration de la variable a avec 10 pour valeur
local b=35 -- déclaration de la variable b avec 35 pour valeur

function addition(nombre1, nombre2) -- la fonction addition prend 2 nombres en paramètres
  return nombre1+nombre2; -- addition des valeurs des paramètres de la fonction. Une fois cette addition effectuée, le résultat est retournée par la fonction
end

local res=addition(a,b) -- passage en paramètres des variables a et b à la fonction addition() et récupération du résultat retournée par la fonction dans la variable res

print(res) -- affichage de 45 qui est le résultat de l’addition des variables a et b

C’est tout pour cette deuxième partie. Vous pouvez déposer vos questions dans les commentaires ci-dessous. Bon début de semaine

Ressources en ligne pour apprendre le langage Lua

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Close
%d blogueurs aiment cette page :