Leçons de niveau 12

Introduction au Lua/Fonctions

Une page de Wikiversité.
Sauter à la navigation Sauter à la recherche
Début de la boite de navigation du chapitre
Fonctions
Icône de la faculté
Chapitre no 9
Leçon : Introduction au Lua
Chap. préc. :Boucles
Chap. suiv. :Tables
fin de la boite de navigation du chapitre
Icon falscher Titel.svg
En raison de limitations techniques, la typographie souhaitable du titre, « Introduction au Lua : Fonctions
Introduction au Lua/Fonctions
 », n'a pu être restituée correctement ci-dessus.


…Contexte de la leçon[1]… Les fonctions sont des structures de code qui servent à encapsuler une série d'instructions de manière à pouvoir les appeler aussi souvent que nécessaire. Cette leçon montre comment utiliser des fonctions dans un script.

Prérequis[modifier | modifier le wikicode]

Cette leçon suppose que vous ayez assimilé la leçon Boucles.

Créer un script Lua avec des fonctions[modifier | modifier le wikicode]

  1. Accéder au Module:Sandbox.
  2. Supprimer le code existant.
  3. Ajouter le code suivant et enregistrer la page:
local p = {}

local function toCelsius(f)
    return (f - 32) * 5 / 9
end

local function toFahrenheit(c)
    return c * 9 / 5 + 32
end

function p.functions()
    local temperature
    local result
	
    result = ';Fahrenheit to Celsius\n'
    for temperature = 0, 100, 10 do
        result = result .. ':' .. temperature .. ' °F is ' .. string.format('%.1f', toCelsius(temperature)) .. ' °C\n'
    end
 
    result = result .. ';Celsius to Fahrenheit\n'
    for temperature = 0, 100, 10 do
        result = result .. ':' .. temperature .. ' °C is ' .. string.format('%.1f', toFahrenheit(temperature)) .. ' °F\n'
    end
    return result
end

return p

Tester votre nouveau script[modifier | modifier le wikicode]

  1. Rendez-vous sur "votre page de test".
  2. Ajouter le code suivant et enregistrer la page:
 {{#invoke:Sandbox|functions}}

Le résultat doit correspondre à ceci:

Fahrenheit to Celsius
0 °F is -17.8 °C
10 °F is -12.2 °C
20 °F is -6.7 °C
30 °F is -1.1 °C
40 °F is 4.4 °C
50 °F is 10.0 °C
60 °F is 15.6 °C
70 °F is 21.1 °C
80 °F is 26.7 °C
90 °F is 32.2 °C
100 °F is 37.8 °C
Celsius to Fahrenheit
0 °C is 32.0 °F
10 °C is 50.0 °F
20 °C is 68.0 °F
30 °C is 86.0 °F
40 °C is 104.0 °F
50 °C is 122.0 °F
60 °C is 140.0 °F
70 °C is 158.0 °F
80 °C is 176.0 °F
90 °C is 194.0 °F
100 °C is 212.0 °F

Comprendre le nouveau script[modifier | modifier le wikicode]

  1. local function toCelsius(f) déclare une fonction locale nommée toCelsius qui accepte un seul paramètre f, la température en Farenheit à convertir.
    Le fait de déclare la fonction comme local garantit qu'elle ne puisse être appelée en dehors du module.
  2. return (f - 32) * 5 / 9 convertit la température Fahrenheit en Celsius et retourne le résultat.
  3. end termine la fonction.

Comprendre la fonction toFahrenheit[modifier | modifier le wikicode]

  1. local function toFahrenheit(c) déclare une fonction locale nommée toFahrenheit qui accepte un seul paramètre c, la température en Celcius à convertir.
    Le fait de déclare la fonction comme local garantit qu'elle ne puisse être appelée en dehors du module.
  2. return c * 9 / 5 + 32 convertit la température Celsius en Fahrenheit et retourne le résultat.
  3. end termine la fonction.

Comprendre la fonction functions[modifier | modifier le wikicode]

  1. function p.functions() déclare une fonction nommé functions.
    Ici nous n'utilisons pas le code local, ce qui la rend accessible depuis l’extérieur du module.
  2. local et le code qui suit définit les variables temperature et result. Les deux sont nil.
  3. result = ';Fahrenheit to Celsius\n' assigne une chaine de caractère littérale comme valeur à la variable result.
  4. for temperature = 0, 100, 10 do créé un bloc de code pour la boucle qui va incrémenter la variable temperature de 0 à 100 par séquence de 10.
  5. toCelsius(temperature) appel la fonction toCelsius et lui passe la valeur courante de la variable temperature comme température à convertir.
  6. string.format() appel la fonction format de la librairie string pour formater la valeur retournée en Celcius.
  7. '%.1f' indique le format (%) désiré, on affichera une seule décimale (.1) après la virgule flotante (f).
  8. toFahrenheit(temperature) appel la fonction toFahrenheit et lui passe la valeur courante de la variable temperature comme température à convertir.
  9. string.format() appel la fonction format de la librairie string pour formater la température retournée en Fahrenheit.
  10. '%.1f' indique le format (%) désiré, on affichera une seule décimale (.1) après la virgule flotante (f).
  11. return result retourne la valeur courante de la variable result comme résultat de la fonction.

Notez que le script utilise trois types de fonctions différents.

  • fonction à portée locale (toCelsius, toFahrenheit)
  • fonction à portée globale (functions)
  • fonction appartenant à une librairie (string.format).

Conclusion[modifier | modifier le wikicode]

Félicitation! Vous êtes capable de créer, tester et comprendre un script Lua qui contient des fonctions. Continuez avec la leçon Tables.

Voir aussi[modifier | modifier le wikicode]

Références[modifier | modifier le wikicode]

Lua for Wikiversity (en)