Les instructions et opérations de base

    Publicités

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)

Superman

V
Ancien staff
Dec 2, 2009
2,489
0
596
Les instructions et opérations de base



Sujet du cours : Les instructions et opérations de base
Auteur du cours : XtreamLua
Difficulté : Accessible aux débutants




I. La notion de variable



Une variable est un bout de mémoire auquel on fait correspondre une valeur. Pour pouvoir l'utiliser facilement, on lui donne un identifiant, autrement dit un nom. Vous l'avez sans doute compris, une variable est une sorte de conteneur, un tiroir qui va nous servir à stocker des nombres, des caractères, des chaînes de caractères, bref toute une kyrielle d'objets utiles en programmation !
Pour remplir une variable, il faut passer par l'étape de la déclaration de la variable (on lui attribue un nom) et on lui fait correspondre une valeur grâce a l'opérateur d'assignation " = ".


Exemple :


Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Mavariable = 5

Dans ce petit bout de code, Mavariable est le nom de notre variable et 5 le nombre que nous souhaitons y stocker. Mavariable pourrait très bien s'appeler Jean ou Marc, mais on préfère généralement nommer une variable en fonction de ce qu'elle contient : on appellera de préférence Nombre_De_Pommes la variable contenant un nombre de pommes, bien qu'on aurait aussi pu l'appeler Variable_avec_un_nom_de_la_mort_qui_tue. Avouez que ce n'est pas très représentatif du contenu de la variable !
smiley-tongue-out.gif



Le Lua impose tout de même quelques contraintes pour les noms de variables :

  • Le nom ne doit pas comporter d'espaces ; les caractères spéciaux (comme [, \ ou "), accentués (é, à, ù ...), les opérateurs mathématiques (+, -, = ...) sont également à bannir.
  • Une variable ne doit pas posséder le même nom qu'une autre variable déclarée dans le même bloc d'instructions, sous peine de la remplacer. Les variables sont sensibles à la casse : cela signifie que Variable, variable et variAble sont trois variables différentes !
  • Le nom ne doit pas commencer par un chiffre.
  • Une variable ne doit pas être nommée telle un des mots-clés du langage, dont voici la liste:

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
'and', 'break', 'do', 'else', 'elseif', 'end', 'false', 'for',
'function', 'if', 'in', 'local', 'nil', 'not', 'or', 'repeat',
'return', 'then', 'true', 'until', 'while'



Je vous disais tout à l'heure qu'on pouvait utiliser une variable pour stocker de nombreuses choses, voici quelques exemples :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Mon_Nombre = 932 -- Un nombre
Ma_Lettre = 'c' -- Une lettre (ou "caractère"), encadrée par des apostrophes '
Ma_Chaine_De_Caracteres = "Bonjour à toi, ami codeur !" -- Une chaîne de caractères (c'est donc une suite de caractères), encadrée par des guillemets "



J'en profite pour introduire l'utilisation des commentaires. Le début d'un commentaire est indiqué au LuaPlayer par deux symboles "moins" (ou deux tirets).


Exemple :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
--Mon commentaire



Les commentaires sont des indications laissées par le programmeur pour l'aider à se retrouver dans son code ; par exemple, pour indiquer le rôle de telle ou telle variable, ou une réflexion qui lui a prit un certain temps, ou tout ce qui lui passe par la tête ! Les commentaires sont tout simplement ignorés par le LuaPlayer, alors n'hésitez pas, c'est encore plus pratique que ça en a l'air !


Retenez ceci :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Ce code va être lu par le LuaPlayer -- Ce code sera ignoré





II. Les conditions


Une condition est une structure qui va effecteur ou non un code en fonction de la véracité de l'expression qu'on lui soumet, rien que ça.
smiley-laughing.gif

Les deux mots-clés principaux utilisés dans une condition sont "if" et "then". Pour les anglophobes, il s'agit des équivalents anglais de "si" et "alors". Ces mots-clés encadrent l'expression à vérifier. Cette expression consiste généralement à comparer une variable à un nombre, ou une variable à une autre variable du même type.


Exemple :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
--On doit tout d'abord définir les variables à comparer
NombreA = 6
NombreB = 35

if NombreA > 10 then
-- Le code à exécuter dans ce cas
end -- Toute structure conditionnelle se termine par un end

if NombreB == NombreA then
-- Le code à exécuter dans ce cas
end


Le end clos donc la condition.
Bien entendu, les conditions présentées dans ce code sont purement théoriques, dans le sens ou il paraît stupide de vérifier un résultat que l'on connait déjà, mais vous comprendrez bien vite leur utilité.
Voici une petite liste des opérateurs logiques que vous pouvez utiliser dans vos conditions.
Opérateurs logiques
Signification
==
Égal à
~=
Différent de
<
Inférieur à
>
Supérieur à
<=
Inférieur ou égal à
>=
Supérieur ou égal à


Vous pouvez également vérifier plusieurs expressions en même temps grâce aux deux mot-clés suivants :

  • and : ("et") qui n'exécutera la condition que si les deux expressions sont vraies
  • or : ("ou") qui n'exécutera la condition que si au moins une des deux expressions est vraie


Exemple :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
--On doit tout d'abord définir les variables à comparer
NombreA = 6
NombreB = 35

if NombreA > 10 and NombreB == NombreA then
-- Le code à exécuter dans ce cas
end


Il existe deux autres mots-clés à connaître pour une condition : les mots-clés "sinon" et "sinon si" ; en Lua, comme dans beaucoup d'autres langages, cela donne else et elseif.
esleif s'utilise dans le cas où on à plusieurs conditions successives à vérifier et qu'une seule d'entre elle peut être bonne. Si le LuaPlayer rencontre une condition esleif alors qu'il a déjà exécuté une des conditions de la structure, il l'ignorera. Il est nécessaire de commencer une structure conditionnelle par un if, autrement l'utilisation d'un 'sinon si' est illogique. On ne place le end qu'à la fin de la structure conditionnelle, après autant de conditions que l'on souhaite. Un else ne vérifiant aucune expression, il ne requiert pas de then.


Exemple :


Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
-- On doit tout d'abord définir les variables à comparer
NombreA = 11
NombreB = 35

-- Début de la structure conditionnelle, elle commence nécessairement par if
if NombreA > 10 then -- Si NombreA est supérieur à 10, alors :
-- Le code à exécuter dans ce cas
elseif NombreA == 10 then -- Sinon, si NombreA vaut 10, alors
-- Le code à exécuter dans ce cas
elseif NombreA ~= NombreB and NombreA < 0 then -- Sinon, si NombreA ne vaut pas NombreB et NombreA est négatif, alors
--Le code à exécuter dans ce cas
else -- Dans tous les autres cas :
-- Le code à exécuter
end


Voilà, vous savez tout ce qu'il faut savoir sur les conditions, abordons les boucles désormais !




III. Les boucles



Les boucles sont un des outils les plus utilisés dans les programmes. Il est important de comprendre que le LuaPlayer lit votre code du début à la fin et s'il n'a plus rien à lire, s'il n'a plus aucune commande à exécuter, il s'arrêtera. Un programme étant souvent voué à durer dans le temps, on va vouloir faire en sorte que certaines parties de notre code soient lues plusieurs fois par le LuaPlayer : c'est le but de boucles.


Une boucle est un morceau de code qui serait répété tant qu'une condition est vraie. Comment ça marche ? C'est très simple. Tout d'abord, on distingue trois types de boucles :

  1. La boucle while (...) do ... end
  2. La boucle repeat ... until (...)
  3. La boucle for (..., ..., ...) do ... end


1. La boucle while (...) do ... end



C'est la boucle la plus courante, sa syntaxe est la suivante :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
while (condition à vérifier) do
instruction
end



La véracité de l'expression en condtion est vérifiée au début de chaque tour de boucle et le code sera exécuté tant qu'elle sera vraie.



Exemple :


Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
Vie_du_Heros = 10
while (Vie_du_Heros > 0) do -- Tant qu'il reste de la vie au héros, on exécute notre code :
-- Code du jeu
end



Vous noterez le fait que nous utilisons des parenthèses : elles servent à isoler les différents éléments afin de clarifier le code. Dans certains cours, vous verrez des boucles ayant pour condition true ("vrai" en anglais). Il s'agit d'un mot-clé qui est toujours vrai, c'est donc une boucle qui ne s'arrête jamais.
Vous pouvez à tout moment stopper l'exécution d'une boucle en insérant la commande break ; l'exécution reprendra après le end final de la boucle actuelle.



Exemple :


Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
m = 1
while true do
-- [...] autres codes [...]
m = m + 1
if m == 20 then
break
end
end



On revoit ici l'opérateur d'assignation '=' et on introduit l'opérateur d'addition '+'. On aura 20 tours de boucles avant que la boucle ne se casse.


2. La boucle repeat ... until (...)



La boucle repeat ... until (...) est très similaire à la boucle while (...) do ... end, sauf que l'expression sera évaluée à la fin de chaque tour de boucle (au lieu d'être vérifie au début), elle s'exécutera donc au moins une fois. Sa syntaxe est la suivante :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
repeat
instruction
until (condition)



Exemple :


Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
m = 1
repeat
m = m + 1
until (m == 20)




On aura donc 20 tours de boucles avant de sortir de la boucle. Dans le code suivant, nous allons mettre en évidence la différence qu'il existe entre la boucle repeat ... until (...) et la boucle while (...) do ... end :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
m = 1

while m <= 0 do
m = m+1
end



Le code à l'intérieur de la boucle ne sera pas exécuté car m n'est pas négatif. Après ce bout de code, m vaudra donc toujours 1.

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
m = 1

repeat
m = m+1
until (m > 0) -- Jusqu'à ce que m soit supérieur à 0



Désormais, la boucle sera exécutée même si m n'est pas négatif ; après ce code, m vaudra 2.



3. La boucle for (..., ..., ...) do ... end



La boucle for (..., ..., ...) do ... end est une boucle un peu à part ; elle est ce qu'on appelle une boucle d'incrémentation, c'est-à-dire qu'elle permet de faire varier une variable très facilement. On va créer dedans une variable, la valeur qu'elle doit atteindre et le pas (qui peut être négatif). Nous verrons que cette boucle est très pratique pour parcourir des tableaux de données (que nous verrons plus tard). Voici sa syntaxe :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
for (variable = valeur de début, valeur de fin , pas) do
instruction
end


Vous remarquerez que le pas est facultatif, par défaut il est à +1, ne l'indiquez que si vous en voulez un autre. On appelle généralement la variable que l'on incrémente i (pour itérateur).


Exemple:

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
nombreX = 30
compteur = 0

for (i = 1, 100) do
nombreX = nombreX + i
if (nombreX > 200 and compteur == 0) then
compteur = i
end
end



Dans ce code, on fait varier i de 1 à 100 ; à chaque tour de boucle, on le rajoute à nombreX qui vaudra donc 30 + 1 + 2 + 3 + 5 etc...
La variable compteur contiendra le numéro du tour où nombreX a dépassé 200 (on vérifie que c'est bien la première fois en vérifiant que compteur est égal à 0, sinon il serait écrasé à chaque tour à partir du moment où nombreX dépasse 200)
Notez qu'on pourrait écrire le programme précédent avec une boucle while de la manière suivante :

Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!
nombreX = 30
compteur = 0

i = 1
while (i ~= 100) do
nombreX = nombreX + i
if (nombreX > 200 and compteur == 0) then
compteur = i
end
i = i+1
end



Ce que vous avez appris aujourd'hui va vous servir constamment lorsque vous programmerez, soyez sûr d'avoir bien tout compris, et n'hésitez pas à y revenir. Il faut bien comprendre que vous avez acquis des outils, si vous voulez désormais qu'un code se répète plusieurs fois, utilisez une boucle ; si vous avez besoin de stocker quelque chose, utilisez une variable ; si vous ne voulez exécuter un code que dans certains cas, utilisez une condition. Cette notion d'outil est très importante en programmation, elle va vous permettre de structurer vos programmes.


SOURCE : Ce lien n'est pas visible, veuillez vous connecter pour l'afficher. Je m'inscris!