Tutoriel LUA les structures de contrôle, cours complet LUA en pdf.
Différents types de listes
Il existe trois types de listes chaînées dépendant de la manière dont on se déplace dans la liste :
1 les listes chaînées simples ;
2 les listes doublement chaînées ;
3 les listes circulaires.
La liste chaînée simple est la liste de base, dont chaque élément appelé nœud, contient deux parties :
1 une partie contenant l’information proprement dite ;
2 une partie appelée pointeur qui lie le nœud précédent au nœud suivant.
8-e-3 – Et avec Lua ?
Vous aurez rarement besoin de ces structures, car il existe, avec Lua, un moyen plus simple pour représenter vos données sans l’aide de listes.
Il suffit de représenter une pile à l’aide d’une table illimitée, avec n champs pointant vers le haut.
Or qui dit table Lua, dit table dynamique, donc taille illimitée …
En effet, les tables Lua étant des entités dynamiques, il est facile d’implémenter des listes chaînées avec ce type de langage.
Chaque nœud serait représenté par une table où les liens seraient tout simplement les champs des tables qui contiendraient des références (pointeurs) à d’autres tables.
Par exemple, pour réaliser une liste basique, où chaque nœud serait composé de deux champs, next et value.
Création de nouvelles listes :
local list = nil — initialisation de la variable
for line in io.lines do
list = {next = list, value = v}
end
Ce code lit les lignes de l’entrée standard et les stocke dans une liste liée, dans l’ordre inverse.
Chaque nœud de la liste est une table avec deux champs : le contenu en ligne value et next, une référence au nœud suivant.
……
1 – Préambule
1-a – Introduction
1-b – De quoi aurez-vous besoin ?
1-c – Guide de style
2 – Les bases du langage
2-a – Qu’est-ce que Lua ?
2-b – Les conventions lexicales
2-c – Les types et les valeurs
2-d – La coercition
2-e – Les « chuncks » et les blocs
2-e-1 – Les chunks
2-e-2 – Les blocs
2-f – Les opérateurs arithmétiques
2-g – Les opérateurs relationnels
2-h – Les opérateurs logiques
2-i – L’opérateur « length »
2-j – L’ordre de priorité des opérateurs
2-k – La concaténation
3 – Les variables
3-a – Une variable, c’est quoi ?
3-b – Global ou local ?
3-c – Affectation
3-d – La portée lexicale
3-e – Le typage
3-f – À retenir
4 – Les structures de contrôle
4-a – Égal (=) ou bien égal (==) ?
4-b – Qu’est-ce qu’une « condition » d’exécution ?
4-c – if … then … else … end
4-d – while … do … end
4-e – repeat … until
4-f – return et break
4-g – À retenir
5 – La boucle « for »
5-a – for … do … end
5-b – La boucle « for numérique »
5-c – La boucle « for générique »
5-d – À retenir
6 – Les fonctions
6-a – Qu’est-ce qu’une fonction ?
6-b – Fonction, méthode, self, this
6-c – return, fausse variable et unpack
6-c-1 – La fausse variable
6-c-2 – La fonction « unpack »
6-d – Les arguments multiples
6-e – Les arguments nominatifs
6-f – Les fonctions anonymes
6-g – Les closures
6-h – La portée lexicale
6-i – Les variables non-globales
6-j – Les appels récursifs
6-k – À retenir
7 – Les itérateurs
7-a – Qu’est-ce qu’un itérateur ?
7-b – Les « for » génériques
7-c – La sémantique des « for » génériques
7-d – Stateless iterator
7-e – pairs(t) et ipairs(t)
……….