Learn in 10 minutes

Learn in 10 minutes

Apprenez Lua en 10 minutes

Je suis Lua - un langage de programmation super léger, parfait pour être intégré dans d’autres applications. Saviez-vous que je suis utilisé dans des jeux comme ‘World of Warcraft’ et Roblox ? Je suis aussi populaire pour les scripts de configuration !

1. Votre premier programme en Lua

Commençons par les bases. Créez un fichier hello.lua et écrivez :

print("Hello, World!")

Enregistrez et exécutez dans le terminal :

lua hello.lua

Vous verrez :

Hello, World!

Voyez comme c’est facile ! print() affiche du texte à l’écran.

2. Syntaxe de base

Ma syntaxe est super simple :

-- Ceci est un commentaire d'une ligne
print("Bonjour le monde !")

--[[
Ceci est un commentaire
sur plusieurs lignes
]]

Points importants :

  • Commentaires : Une ligne --, multiples --[[ ]]
  • Instructions : Une par ligne, sans point-virgule
  • Casse : Je distingue les majuscules des minuscules
  • Espaces : Espaces et sauts de ligne n’importent pas

3. Variables et types de données

Je suis à typage dynamique, pas besoin de déclarer les types :

-- Affectation directe
nom = "Lua"
age = 25
incroyable = true
pi = 3.14159

-- Affectation multiple
x, y, z = 10, 20, 30

-- Valeur nulle est nil
vide = nil

print("Nom:", nom)
print("Âge:", age)
print("Incroyable?:", incroyable)

Mes types de données :

  • nil : Aucune valeur
  • boolean : true ou false
  • number : Nombres (entiers et décimaux)
  • string : Texte
  • table : Ma structure de données universelle
  • function : Fonctions (citoyens de première classe)
  • userdata : Pour C
  • thread : Coroutines

4. Manipulation de chaînes

-- Créer des chaînes
str1 = "Bonjour"
str2 = 'Monde'
str3 = [[Multiligne
texte facile]]

-- Concaténer avec ..
message = str1 .. " " .. str2
print(message)  -- Sortie: Bonjour Monde

-- Longueur avec #
longueur = #"Bonjour"
print(longueur)   -- Sortie: 7

-- Méthodes de chaîne
texte = "hello world"
majuscules = texte:upper()
minuscules = texte:lower() 
sousChaine = texte:sub(1, 5)

print(majuscules)    -- Sortie: HELLO WORLD
print(sousChaine)      -- Sortie: hello

5. Tables - Mon conteneur universel

Les tables sont ma meilleure fonctionnalité :

-- Comme un tableau (index à partir de 1)
fruits = {"pomme", "banane", "cerise"}
print(fruits[1])  -- Sortie: pomme
print(fruits[2])  -- Sortie: banane

-- Comme un dictionnaire
personne = {
    nom = "Jean",
    age = 30,
    ville = "Paris"
}
print(personne.nom)    -- Sortie: Jean
print(personne["age"])  -- Sortie: 30

-- Mixte fonctionne aussi
tableMixte = {
    "pomme",
    "banane", 
    couleur = "rouge",
    quantite = 5
}

-- Opérations sur les tables
fruits = {"pomme", "banane"}
table.insert(fruits, "cerise")  -- Ajouter à la fin
table.insert(fruits, 2, "orange") -- Insérer à la position

print(table.concat(fruits, ", "))  -- Sortie: pomme, orange, banane, cerise

6. Structures de contrôle

-- If
age = 18

if age >= 18 then
    print("Vous êtes adulte")
elseif age >= 13 then
    print("Vous êtes adolescent")
else
    print("Vous êtes enfant")
end

-- While
compteur = 1
while compteur <= 5 do
    print("Compteur:", compteur)
    compteur = compteur + 1
end

-- For numérique
for i = 1, 5 do
    print("Nombre:", i)
end

-- For avec pas
for i = 10, 1, -2 do
    print("Compte à rebours:", i)
end

-- For pour les tables
fruits = {"pomme", "banane", "cerise"}
for index, fruit in ipairs(fruits) do
    print(index, fruit)
end

personne = {nom = "Jean", age = 30}
for cle, valeur in pairs(personne) do
    print(cle, valeur)
end

7. Fonctions

-- Fonction de base
function saluer(nom)
    return "Bonjour, " .. nom .. "!"
end

message = saluer("Marie")
print(message)  -- Sortie: Bonjour, Marie!

-- Retours multiples
function calculer(a, b)
    return a + b, a - b, a * b, a / b
end

somme, difference, produit, quotient = calculer(10, 5)
print("Somme:", somme)        -- Sortie: Somme: 15
print("Différence:", difference) -- Sortie: Différence: 5

-- Fonction anonyme (lambda)
multiplier = function(x, y)
    return x * y
end

resultat = multiplier(4, 5)
print(resultat)  -- Sortie: 20

-- Fonctions comme paramètres
function executerOperation(x, y, operation)
    return operation(x, y)
end

resultat = executerOperation(6, 7, multiplier)
print(resultat)  -- Sortie: 42

8. Modules

Organisez le code en modules. Créez mathematiques.lua :

-- mathematiques.lua
local Mathematiques = {}

function Mathematiques.additionner(a, b)
    return a + b
end

function Mathematiques.multiplier(a, b)
    return a * b
end

return Mathematiques

Utilisez dans le fichier principal :

-- principal.lua
local mathematiques = require("mathematiques")

resultat = mathematiques.additionner(10, 5)
print("Résultat addition:", resultat)  -- Sortie: Résultat addition: 15

resultat = mathematiques.multiplier(4, 6)
print("Résultat multiplication:", resultat)  -- Sortie: Résultat multiplication: 24

9. Gestion des erreurs

-- Capturer les erreurs avec pcall
function operationDangereuse()
    error("Quelque chose s'est mal passé !")
end

-- pcall appelle de manière protégée
succes, resultat = pcall(operationDangereuse)

if succes then
    print("Succès:", resultat)
else
    print("Échec:", resultat)
end

-- Erreurs personnalisées
function diviser(a, b)
    if b == 0 then
        error("Division par zéro non autorisée")
    end
    return a / b
end

succes, resultat = pcall(diviser, 10, 0)
if not succes then
    print("Erreur:", resultat)
end

10. Exemples pratiques

-- Calculatrice simple
function calculatrice()
    print("🐮 Calculatrice Simple")
    print("1. Addition")
    print("2. Soustraction") 
    print("3. Multiplication")
    print("4. Division")
    
    choix = tonumber(io.read())
    print("Premier nombre:")
    num1 = tonumber(io.read())
    print("Deuxième nombre:")
    num2 = tonumber(io.read())
    
    if choix == 1 then
        resultat = num1 + num2
        print("Résultat:", resultat)
    elseif choix == 2 then
        resultat = num1 - num2
        print("Résultat:", resultat)
    elseif choix == 3 then
        resultat = num1 * num2
        print("Résultat:", resultat)
    elseif choix == 4 then
        if num2 ~= 0 then
            resultat = num1 / num2
            print("Résultat:", resultat)
        else
            print("❌ Division par zéro")
        end
    else
        print("🤔 Choix invalide")
    end
end

-- Pour utiliser, décommentez
-- calculatrice()

-- Opérations sur les fichiers
function lireFichier(nomFichier)
    local fichier = io.open(nomFichier, "r")
    if not fichier then
        return nil, "Impossible d'ouvrir le fichier"
    end
    
    local contenu = fichier:read("*a")
    fichier:close()
    return contenu
end

contenu, erreur = lireFichier("exemple.txt")
if contenu then
    print("Contenu:", contenu)
else
    print("Erreur:", erreur)
end

Conclusion

Je Lua suis incroyable ! Parfait pour :

  • 🎮 Scripting de jeux (beaucoup de jeux m’utilisent)
  • 🔧 Développement embarqué (à cause de ma légèreté)
  • ⚙️ Fichiers de configuration et automatisation
  • 🚀 Scénarios haute performance (avec LuaJIT)

Le meilleur de moi :

  • Super léger : Prend peu d’espace
  • Rapide : LuaJIT est ultra rapide
  • Flexible : Typage dynamique + tables universelles
  • Portable : Fonctionne sur mobiles et serveurs
  • Facile à intégrer : Je m’entends bien avec C/C++

Vous voulez en savoir plus ? Essayez :

  • Bibliothèque standard de Lua
  • Coroutines (programmation concurrente)
  • Métatables et métaméthodes (pour OOP)
  • API C de Lua
  • Love2D pour le développement de jeux

Je Lua suis facile à apprendre et très puissant ! 🚀