ALLOCATION DYNAMIQUE : LISTE

pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 - 15 mai 2007 à 13:17
kingcobra Messages postés 316 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 19 septembre 2012 - 17 mai 2007 à 10:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42695-allocation-dynamique-liste

kingcobra Messages postés 316 Date d'inscription vendredi 23 mai 2003 Statut Membre Dernière intervention 19 septembre 2012
17 mai 2007 à 10:52
Salut,

Oui, beaucoup n'ont pas tord... Action script est un language de programmation (si on peut l'appeler ainsi) on ne peut plus libre. On peut contrairement à C mettre tout type de valeur dans des cases d'un même tableau. L'allocation dynamique est automatique et completement caché dans flash.

Je suis actuellement en Master d'info, on programme malloc et free en 4ème année et je peux te garantir que les 2 fonctions ne se limitent pas à 3 lignes.

Un petit conseil en flash : essaye tout ce qui défit les lois de la programmation, tu verra que beaucoup de choses marchent d'elles même en action script.
A bientôt.
scara 51 Messages postés 94 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 18 septembre 2007
16 mai 2007 à 19:02
0/20, ca existe pas commenote :(
Tant pis, on m'empeche de notre lol
SifoDillas Messages postés 6 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 15 mai 2007
15 mai 2007 à 15:36
Re re
Ok merci de vos conseils, je n'ai manifestement pas assez regardé les possibilités de cette classe (array) et vais m'y intéresser de plus prés.

++
Sifo
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
15 mai 2007 à 15:27
tu devrais t'interesser aux fonctions liés à la class Array .. tu découvrirais tout ce qu'on peut faire avec un tableau ...
De plus si tu insers qqch en début de tablea tu décales forcément tout le reste .. comment veux-tu faire, sinon ?

Peg'
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
15 mai 2007 à 15:26
Salut

va voir les méthodes de array dans l'aide de flash.

myArray.push() ajoute un élément à la fin du tableau
myArray.pop() supprime le dernier élément du tableau
myArray.shift()supprime le premier élément du tableau
myArray.unshift()ajout un ou plusieurs éléments au début du tableau
... et il y en a d'autres pour ajouter/supprimer des éléments a une position donnée du tableau...

@+
Girou
SifoDillas Messages postés 6 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 15 mai 2007
15 mai 2007 à 15:20
Re
J'avoue ne pas avoir testé la possibilité de mettre une valeur dans n'importe quelle case d'un tableau, et donc je ne savais pas qu'on pouvait en faire autant.
Ceci dit, pour rester dans mes arbres (j'y tient) ca me semble pas évident (mais possible) de créer ca avec des tableaux.
Enfin je veux dire un peu plus lourd qu'avec des tmp.SAD.

Dernier avantage que j'ai pu trouver à ma méthode (j'essai de la faire survivre) : Lorsque tu veux insérer un élément en début de tableau ou au milieu, tu es obligé de décaler tout ce qui suit (enfin je pense) de même quand tu supprime un élément en début ou au milieu, il y a des trous dans le tableau.
Pas avec les clips, il est trés facile d'insérer un élement où on veut sans traitement des autres cases.

Conclusion : Non ce n'est pas une révolution, je me doutais bien que si personne y avait pensé avant, c'est que ce n'était pas la meilleure des solutions, mais dirais-je pour me réconforter, elle a le mérite d'exister.

Sifo
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
15 mai 2007 à 15:05
Hello,

je suis tout à fait d'accord avec Pegase31, je ne vois pas l'intérêt de stocker des éléments 'abstraits' dans un élément physique tel qu'un movieclip.
Ta méthode de simulation d'allocation mémoire va très vite en utiliser beaucoup (de mémoire) si tu crées un movieclip pour stocker une valeur.

Ensuite, quelle est l'utilité du
cel.swapDepths(1048575) ???

et finalement, évitez au maximum d'utiliser _root... c'est une mauvaise habitude (bien que le this dans une classe pointe sur la classe et non sur le 'Stage')

P.S. tu dis ne pas avoir trouvé d'objet ???
-> en actionscript, une classe EST un objet, et tu peux déclarer une variable objet
maVar:Object=new Object()
ou simplement comme le propose Pegase31
Tab[77] = {toto:"oui", tata=undefined, titi:null}
le accolades sont le raccourcis de new Object()

Girou
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
15 mai 2007 à 14:45
ah oui, j'oubliais aussi :
une cas de tableau ne peux contenir qu'une seule chose .. sauf que cette chose peut être un tableau, une variable, un objet, un clip, etc ...

Pour exemple:
var Tab = new Array(); //déclare ton tableau sans donner de taille
Tab[75] = 8; //place une valeur dans la case 75 du tableau
Tab[76] = new Array(); //Crée un tableau dans la case 76 du tableau (appellé comme ça "Tab[x][y]")
Tah[76] = ["toto", 2, "Tata", null]; //même chose qu'avant, mais tableau rempli
Tab[77] = new Abject(); //Crée un objet qui comportera des valeurs
Tab[77] = {toto:"oui", tata=undefined, titi:null}; //même chose qu'avant (appellé "Tab[77].toto" }

Tu peux même faire ça :
Tab[77] = {toto:15, tata:new Array()};
et tu appelleras le tableau imbriqué dans l'objet de cette façon :
Tab[77].tata[x];

Est-ce plus claire ?

Peg'
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
15 mai 2007 à 14:37
ben justement si, tu peux créer un tableau de 50 cases et lui déclarer une valeur à la case [75] ... Flash fait ça !
De plus, un tableau multidimensionnel est exactement un arbre ... il suffit de définir la base comme le tronc et de le faire contenir autant de tableaux qu'il faut !
Flash n'a rien à voir avec le fonctionnement du C# ou d'un quelconque ASM, on est bien plus "libre". C'est pour ça qu'il faut tester, c'est la seule solution.

Peg'
SifoDillas Messages postés 6 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 15 mai 2007
15 mai 2007 à 14:26
Parce que je n'ai pas trouvé d'objet (ai-je mal cherché, c'est possible) me permettant de créer une pile ou une file, ni même un arbre.
Ensuite pourquoi je n'utilise pas de tableau ? parce qu'un tableau est une implémentation statique des données.
Nous sommes d'accord qu'un tableau déclaré ne peut pas changer de taille a tout moment, si on déclare 50 cases, on ne pourra pas stocker 51 valeurs.
D'où l'intéret de la méthode, la création de clip est la seule méthode dynamique que flash donne pour stocker des valeurs.
Encore une fois, j'ai peut être mal cherché et suis passé a coté de quelque chose de mieu.

+ Sifo
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
15 mai 2007 à 14:18
Alors il faudra que tu m'explique l'interêt de créer des MovieClips (qui sont des éléments graphiques) alors que tu veux faire une allocation en mémoire ..

Pourquoi ne pas utiliser d'objets ou de tableaux pour faire ce que tu fais ?

Peg'
SifoDillas Messages postés 6 Date d'inscription samedi 11 février 2006 Statut Membre Dernière intervention 15 mai 2007
15 mai 2007 à 14:09
Salut,

Tel quel, mon code ne sert a rien de particulier, sinon a permettre la construction de types abstraits de données.
Etant piètre pédagogue, je te renvoi à ce lien : ftp://ftp-developpez.com/lapoire/algorithmique/structures-arborescentes.pdf

En gros, mon code "simule" l'allocation dynamique de mémoire comme on le ferait en C par exemple. C'est une des solutions possibles pour créer un arbre ou autre.

Dernier point concernant ta remarque trés juste d'ailleur. Pour qu'une liste soit correctement formaté, il faut que le dernier élément ait son champ suivant à NULL.
Ici j'ai écrit cette ligne par rigueur plus que par utilité et j'ai mit undefined car null ne marchait pas.

Voila
Sifo
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
15 mai 2007 à 13:17
Salut, j'ai regardé avec attention ton code .. mais je n'ai absolument pas compris à quoi il servait ! Pourrais-tu nous expliquer brièvement, pour nous, simple programmeux à quoi il corresponds ?

Sinon, ton code est plutôt type "débutant" niveau syntaxe, car "New.suivant=undefined;" (par exemple) est inutile, car dans Flash, toute variable non atribuée est définie sur "undefined" par défaut.

Peg'
Rejoignez-nous