Programmer avec le langage Linotte
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Programmer avec le langage LinotteConnexion

Besoin d'un conseil sur la programmation en Linotte ?

-27%
Le deal à ne pas rater :
-27% sur la machine à café Expresso Delonghi La Specialista Arte
399.99 € 549.99 €
Voir le deal

descriptionQuestions sur le tutoriel EmptyQuestions sur le tutoriel

more_horiz
Bonjour,

Je vais profiter de ce post pour mieux comprendre la programmation :;
):

J'ai du mal à assimiler la notion d'acteurs locaux
Voilà où se situe mon problème:

Code:

Livre :
Sans acteurs locaux
Paragraphe :
premier
Rôles :

liste est un casier de nombre vide
Actions :

Parcours ajout
Parcours ajout
Parcours ajout
Affiche liste
Termine
Paragraphe :
ajout
Rôles :

a est un nombre valant 1000
liste est un casier de nombre
Actions :

Mélange a
Ajoute a dans liste
Reviens

Pour moi quand on parcourt ajout, on mélange à chaque fois a et ça devrait donner à chaque fois un nombre aléatoire sans passer par un acteur local ?
Je ne comprends pas la logique ?

descriptionQuestions sur le tutoriel EmptyQuestions sur le tutoriel

more_horiz
On va commencer par regarder ce qui est fait dans l'exemple "SANS acteurs locaux" :

on parcourt une première fois le paragraphe 'ajout'
a = 755 (par exemple )
liste = [ a ] = [ 755 ]

on parcourt une 2eme fois le paragraphe 'ajout'
a = 412
liste = [ a , a ] = [ 412 , 412 ]

on parcourt une 3eme fois le paragraphe 'ajout'
a = 087
liste = [ a , a , a ] = [ 087 , 087 , 087 ]

a est donc bien mélangé 3 fois.
mais en fait , lorsqu'on ajoute a dans la liste, ce n'est pas sa valeur qu'on ajoute dans la liste mais une référence à la variable a.



en fait, quand tu ajoute une variable dans une liste, tu crée une équivalence:
'a' devient équivalent à 'liste{0}'
si tu change a, tu change aussi liste{0}
si tu change liste{0} , tu change aussi a

le problème , c'est qu'ici, on a une tripple équivalence :
liste{0} <
=>
liste{1} <
=>
liste{2} <
=>
a
changer n'importe laquelle de ces variables revient à changer les 3 autres
voici un exemple :

Code:

livre :
exemple

paragraphe :
p1
les rôles :

a est un nombre
liste est un casier de nombre vide
les actions :

a = 10
mélange a
ajoute a dans liste
a = 10
mélange a
ajoute a dans liste
a = 10
mélange a
ajoute a dans liste
liste{1} = 42
liste !
a !
termine

du coup, l'acteur local trouve un intéret :
si un même paragraphe est parcouru plusieurs fois, les acteurs locaux déclarés seront différents à chaque fois :

Code:

Livre :
AVEC acteurs locaux
Paragraphe :
premier
Rôles :

liste est un casier de nombre vide
Actions :

Parcours ajout
Parcours ajout
Parcours ajout
Affiche liste
Termine
Paragraphe :
ajout
Rôles :

§a est un nombre valant 1000
liste est un casier de nombre
Actions :

Mélange a
Ajoute a dans liste
Reviens

dans le livre "avec acteurs locaux",
il y a donc 3 acteurs a différents, qui correspondent à chaque lecture du paragraphe ajout.

( on pourrait les nommer a(0) a(1) et a(2) par exemple )

et il y a trois équivalences différentes:
a(0) <
=>
liste{0}
a(1) <
=>
liste{1}
a(2) <
=>
liste{2}

donc modifier une variable ne modifie pas toutes les autres variables à la fois !


Dans l'exemple que tu donnes, il existe une autre possibilité pour éviter que la liste contienne 3 fois la meme valeur.
il aurait alors fallu utiliser la notion de clonage.
mais il me semble que le clonage arrive plus tard dans le tutoriel..

descriptionQuestions sur le tutoriel EmptyQuestions sur le tutoriel

more_horiz
Je te remercie beaucoup pour tes explications.
Je vais progresser dans le tuto et si j'éprouve à nouveau des difficultés je reviendrais faire appel à ton aide :;
): ;
);
)

descriptionQuestions sur le tutoriel EmptyRe: Questions sur le tutoriel

more_horiz
privacy_tip Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
power_settings_newSe connecter pour répondre