Je ssouhaite utiliser le Lua pour faire quelques programmes sur ma calculette afin d'optimiser l'utilisation de mon temps pendant les contrôles, j'ai donc commencé mon apprentissage avec le site inspired-lua.org en suivant les cours de Steve Arnold, cependant, il y a pas mal de choses qui me perturbent dès la leçon 4, je vais donc poster sur ce topic les différentes questions que je pourrais me poser au fil des cours, et je rajouterait les réponses aux questions sur ce post au fur et a mesure, de sorte que si quelqu'un suit le même chemin, il puisse trouver toutes les réponses au même endroit
j'espère qu'une bonne partie de la communauté participera à ce topic afin de le compléter au plus vite pour les prochains aprentis programmeur, et j’essaierai aussi de répondre aux questions qui seront posée (dans la limite de mes compétences ^^ )
Fubuki
-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-
Voici donc les questions et leurs réponses
°1 Pourquoi les fonctions ne s'éxécutent-elles pas dans l'ordre où elle sont écrite ? (autrement dit, pourquoi, un programme fonctionne-t'il de la même manière peu si on change les positions des fonctions ??) il y a t-il des fonctions prioritaires ???
Le lua est un langage évenementiel, lorsqu'un évènement se produit (par éxemple une entrée clavier), le programme va chercher dans tout le code source si il y a une fonction qui prend en compte cette évènement et éxécuter toutes les instructions qui y sont comprises.
°2 A quoi sert le quatrième paramètre d'une instruction drawString ?
Ce quatrième paramètre permet de modifier le point d'ancrage de la chaîne déssinée, il n'est pas obligatoire, il possible de mettre "baseline", “bottom”, “middle” ou encore “top”, bien que ce paramètre soit relativement inutile.
°3 lorsque l'on appel une seconde fonction onPaint, ce qui a été affiché précédemment est effacé, pourquoi ?
Tout d'abord, il faut savoir qu'une fonction est en fait une variable. lors du lancment du programme, une première lecture est faite de haut en bas de sorte que le programme connaisse toute les fonction, ensuite lorsqu'un évènement appelera une fonction, le code ne sera pas relu entièrement, puisque les fonctions sont connues, donc le programme ira chercher ce qu'il a lu en mémoire.
Or, comme une fonction est une variable, le fait de définir deux fois une fonction revient à faire a=1 puis a=2, en mémoire, a vaudra 2 et le a=1 sera comme innéxistant. il est donc "interdit" d'avoir deux fois la même fonction dans un programme, bien que cela ne fasse pas d'erreur puisqu'il y a un anti-bêtise qui va considérer uniquement la dernière déclaration de cette fonction, le seul problème sera donc que l'on prend de la place en mémoire pour rien.
°4 comment afficher une entrée clavier dans une phrase seulement après que l'on ai fini d'écrire ??
dans ce cas, donner le code complet avec les explications à côté est plus simple :
- Code: Tout sélectionner
local screen = platform.window
local answer = ""
local displayAnswer -- Comme on atribue pas de valeur à la variable, elle sera automatiquement initialisée à nil.
function on.enterKey() -- On choisit la touche entrer pour dire qu'on a fini.
displayAnswer = true -- Quand on appui sur entrer, la fonction on.enterKey est appelée, elle fait passer la variable displayAnswer de nil à true.
screen: invalidate() -- On demande un raffraichissement de l'écran.
end
function on.charIn(char)
if not displayAnswer then -- Tant que displayAnswer n'a pas de valeur, on peut continuer à écrire.
answer = answer..char
screen:invalidate()
end
end
function on.backspaceKey()
answer = answer:usub(0,-2)
screen:invalidate()
end
function on.paint(gc)
gc:drawString("Comment vous appelez vous ?? : ", 0, 20)
gc:drawString(""..answer, 225, 20)
if displayAnswer then -- Si displayAnswer renvoi true, alors on éxécute ce qui suit.
gc:drawString("Oh ! Vous êtes donc "..answer.." ! Anchanté monsieur !", 0, 40)
end
end
détails des questions et des réponses 1 à 4 : viewtopic.php?f=19&t=17460&p=191325#p191296 et viewtopic.php?f=19&t=17460&p=191325#p191301, merci à @technolapin