Rechercher
Résultats par :
Recherche avancée
Qui est en ligne ?
Il y a en tout 2 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 2 Invités

Aucun

Voir toute la liste


Partagez
Voir le sujet précédentAller en basVoir le sujet suivant
Junior Member
Messages : 26
Date d'inscription : 2010-05-18
Voir le profil de l'utilisateur

Questions sur le tutoriel

le Sun 20 Jun - 8:35
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 ?
Member
Messages : 138
Date d'inscription : 2008-04-09
Voir le profil de l'utilisateur

Questions sur le tutoriel

le Sun 20 Jun - 16:57
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..
Junior Member
Messages : 26
Date d'inscription : 2010-05-18
Voir le profil de l'utilisateur

Questions sur le tutoriel

le Sun 20 Jun - 18:19
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 :;
): ;
);
)
Contenu sponsorisé

Re: Questions sur le tutoriel

Voir le sujet précédentRevenir en hautVoir le sujet suivant
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum