Pourquoi Lua ?
Lua est un langage de programmation léger et rapide qui a été créé en 1993 par Roberto Ierusalimschy, Luiz Henrique de Figueiredo et Waldemar Celes. Il est principalement utilisé comme un langage d'extension pour des applications existantes, mais il peut également être utilisé pour créer des programmes autonomes.
Un cas d'utilisation concret est la création de plugins ou d'extensions pour des logiciels tels que Adobe Photoshop, Unity, ou even certains jeux vidéo. Lua offre une excellente performance et est très facile à apprendre, ce qui en fait un choix populaire pour les développeurs.
Prerequis
- Connaissance de base de la programmation (variables, structures de contrôle)
- Un éditeur de texte ou d'IDE (Visual Studio Code, Sublime Text, Atom)
- Lua installé sur votre système (version recommandée : 5.4)
Vous pouvez installer Lua sur Windows en utilisant Chocolatey :
choco install lua
Sur macOS avec Homebrew :
brew install lua
Sur Linux, vous pouvez utiliser le gestionnaire de paquets approprié :
sudo apt-get install lua5.4
Concepts fondamentaux
1. Variables et Types de Données
Lua est un langage dynamiquement typé, ce qui signifie que vous n'avez pas besoin de déclarer le type des variables avant d'utiliser.
## Déclaration de variables
x = 10 -- Entier
y = "Hello" -- Chaîne de caractères
is_valid = true -- Booléen
2. Structures de Contrôle
Lua supporte les structures de contrôle habituelles comme if, for, et while.
## Structure conditionnelle
if x > 5 then
print("x est plus grand que 5")
elseif x == 5 then
print("x est égal à 5")
else
print("x est inférieur à 5")
end
## Boucle for
for i = 1, 10 do
print(i)
end
## Boucle while
while y ~= "" do
print(y)
y = " "
end
3. Fonctions
Les fonctions sont définies avec le mot-clé function et retournent automatiquement la dernière valeur évaluée.
## Définition d'une fonction
function add(a, b)
return a + b
end
## Appel de la fonction
result = add(3, 5)
print(result) -- Affiche 8
4. Tableaux (dictionnaires)
Lua utilise des tableaux pour stocker des collections d'éléments.
## Création d'un tableau
my_table = {1, 2, 3, "a", "b"}
## Accès aux éléments
first_element = my_table[1] -- 1
second_element = my_table[2] -- 2
## Ajout d'éléments
my_table[#my_table + 1] = "c"
## Parcourir un tableau
for i, v in ipairs(my_table) do
print(i, v)
end
5. Modules et Fonctions de Bibliothèque
Lua utilise des modules pour organiser le code.
-- my_module.lua
function add(a, b)
return a + b
end
return {
add = add
}
Utilisation du module :
## main.lua
local my_module = require("my_module")
result = my_module.add(3, 5)
print(result) -- Affiche 8
Mise en pratique : Projet fil rouge
Nous allons créer un gestionnaire de tâches simple. Ce gestionnaire va permettre d'ajouter et de lister des tâches.
Étape 1 : Création du Fichier Principal
Créez un fichier main.lua avec le contenu suivant :
## main.lua
tasks = {}
function add_task(task)
table.insert(tasks, task)
end
function list_tasks()
for i, task in ipairs(tasks) do
print(i .. ". " .. task)
end
end
print("Bienvenue dans le gestionnaire de tâches!")
while true do
io.write("Entrez une tâche (ou 'q' pour quitter): ")
local input = io.read()
if input == "q" then
break
end
add_task(input)
end
print("Liste des tâches:")
list_tasks()
Étape 2 : Exécution du Script
Exécutez le script avec la commande suivante :
lua main.lua
Erreurs fréquentes et debugging
Erreur de syntaxe
# ❌ Mauvais print("Hello, World! # ✅ Correct print("Hello, World!")Accès à une variable non définie
# ❌ Mauvais print(y) # ✅ Correct y = "Hello" print(y)Erreur de type
# ❌ Mauvais x = 10 print(x + "2") -- Erreur # ✅ Correct x = 10 print(x + tonumber("2"))
Pour aller plus loin
Gestion de l'erreur avec
pcalletxpcallUtilisation des tableaux multidimensionnels
Introduction aux modules et à l'organisation du code
Défi pratique
Créez un petit script qui permet de convertir des degrés Celsius en Fahrenheit et vice versa.
## temperature_converter.lua
function celsius_to_fahrenheit(c)
return (c * 9 / 5) + 32
end
function fahrenheit_to_celsius(f)
return (f - 32) * 5 / 9
end
print("Bienvenue dans le convertisseur de température!")
while true do
io.write("Entrez une température et la unité (C ou F), ou 'q' pour quitter: ")
local input = io.read()
if input == "q" then
break
end
local value, unit = input:match("(%d+)([CF])")
value = tonumber(value)
if unit == "C" then
print(celsius_to_fahrenheit(value))
elseif unit == "F" then
print(fahrenheit_to_celsius(value))
else
print("Unité invalide!")
end
end
Exécutez le script avec la commande suivante :
lua temperature_converter.lua