Page 1 sur 2

Quelques questions sur les Tableaux et leurs représentation

Publié : ven. 03/avr./2020 19:33
par Shadow
Bonsoir,

Un Tableau à une dimension, c'est une liste vertical, comme une liste de course, ou chaque élément est numéroté de 0 à X éléments.
Genre:

[0]
[1]
[2]

Jusque la j'ai bon ?, car pour moi dans ma tête c’était plutôt une liste Horizontale, ont va y revenir justement.
Genre: [0][1][2]

Ici je parle d'un Tableau à une seule dimension, mais ça va ce gâté et oui !

Un Tableau à deux dimension, c'est ???
Revenons alors à notre Tableau Horizontale, à une dimension, ou chaque élément est mis à coté des uns des autres et pas en dessous comme l'autre Tableau.

Si je rajoute une dimension c'est facile, j'ajoute juste une ligne en plus, comme ceci:
[0][1][2]
[0][1][2]

Pour moi, la ligne 1 est = à la première dimension, ici je la nommerais X.
Pour moi, la ligne 2 est = à la deuxième dimension, ici je la nommerais Y.

Tous ceci semblait logique, quand ont créer un tableau sous Word par exemple
et qu'ont veux qu'une dimension, il l'affiche Horizontalement et pas Verticalement !

Ok mais alors, maintenant si j'en rajoute une autre dimension, comment ça se passe ?
Et bien, alors se serra un tableau Tridimensionnel, la prochaine dimension est une succession de couche en dessous de la première.

Prenez par exemple une feuille et faite un tableau de 10 x 10.
Chaque ligne pris séparément des unes des autres, est la dimension 1: X
Chaque Colonne pris séparément des unes des autres, est la dimension 2: Y

Pour une troisième dimension, facile, prenez une autre feuille et refaite la même chose.
Chaque Feuille pris séparément des unes des autres, est la dimension 3: Z
Imaginez donc ZX, ZY.

Ok et la quatrième dimension alors, comment on la représente elle ?
Ajoutez une boîte et rangez toutes vos feuille dans celle-ci, c'est la quatrième dimension !

En faite à partir de la dimension 4, c'est le même principe que pour les dimension 1, 2, 3, imaginez donc ZX, ZY.
Imaginer 10 boîte mise cote à cote, chaque boite contient par exemple 1000 feuille (Dimension Z) , chaque feuille contient des rangées de cases les une en dessous des autre (Dimension X et Y).
Voilà ce qu'est la quatrième dimension, rien à voir avec les martien !

Et la cinquième alors ?
Et bien facile, ajoutez d'autres rangées de boîte en dessous des autres boîtes !

Et la sixième ?
Ici, imaginez une superposition de boîte les une sur les autres !

--------------------------------------------------------------------------------------------------------------------------------

Ok bon, c'est bien beau tous ça, mais est ce que j'ai bon ?, comment fonctionne les Tableau en codage ?
Tableau(10, 10, 10) >>> ZYX ? ou Tableau(10, 10, 10) >>> XYZ ?

Re: Quelques questions sur les Tableaux et leurs représentat

Publié : ven. 03/avr./2020 21:02
par Ar-S
Un tableau a une ou 2 dimensions...

Toi tu veux un x,y,z pour 1000 trucs ?

Tu fais un tableau 1 dimension de 1000 (enfin 999) et tu le structures avec ce que tu veux.

Code : Tout sélectionner

Structure Direction
  X.i
  Y.i
  Z.i
EndStructure


Dim Tableau.Direction(999)

Tableau(0)\X = 1 
Tableau(0)\Y = 5 
Tableau(0)\Z = 8 


Re: Quelques questions sur les Tableaux et leurs représentat

Publié : sam. 04/avr./2020 0:40
par Shadow
Désoler Ar'S mais c'est pas se que je voulais :(
Relis mon message et dis moi si j'ai raison.

Ce que je veux savoir là, c'est comment interpréter les tableau et leur données.
Tableau(9) à 10 élément, ok ?, mais c'est verticale ou horizontale, tu va trouver sa bizarre de dire ça mais alors Tableau (9, 9) c'est quoi ?
Et Tableau (9, 9, 9) ?

Ok du concret alors, comment tu code ça en Tableau ?

Code : Tout sélectionner

Tableau.s = "[123, [234, Def], Abc, [345, [456, Mno, 567], Jkl], Ghi]"
Merci à toi.

Re: Quelques questions sur les Tableaux et leurs représentat

Publié : sam. 04/avr./2020 9:13
par Naheulf
Un tableau en informatique ce sont des éléments homogènes qui sont alignés sur un quadrillage (à 1, 2, 3 ou plus de dimensions selon le nombre de dimensions du tableau).

Donc :

Code : Tout sélectionner

Dim Tableau_1D.monType(9)
C'est une rangée de 10 éléments de type "monType".

Code : Tout sélectionner

Dim Tableau_2D.monType(9, 6)
C'est un quadrillage bi-dimensionnel de 10 rangées de 7 éléments de type "monType". Attention, la discrimination en terme de lignes et de colonnes n'est qu'une vue de l'esprit permettant de mieux visualiser cette organisation.

Code : Tout sélectionner

Dim Tableau_3D.monType(9, 6, 3)
C'est un quadrillage tri-dimensionnel de 10 rangées contenant chacune 7 rangées de 4 éléments de type "monType".

Etc...

Ta chaîne :
"[123, [234, Def], Abc, [345, [456, Mno, 567], Jkl], Ghi]"
... c'est juste PAS un tableau pour au moins deux raisons :
- Déjà ça mélange les types (123 -> Entier, "Def" -> Chaine de caractère)
- Ensuite : il n'y a aucun alignement. Et on n peut pas inférer les éléments manquants.

Édit :
À la rigueur, avec beaucoup de suppositions on peut avoir un semblant de tableau :
- Supposition 1 : Pour Homogénéiser les types, on considère que tout est chaîne de caractères (y compris ce qui ressemble à des nombres)
- Supposition 2 : Pour Homogénéiser la taille des dimensions, on considère que les éléments non significatifs n'ont pas été retranscrits
- Supposition 3 : Pour que la supposition 2 ait un comportement déterministe, on suppose que tous les éléments significatifs sont "rassemblés" en "début" de rangée et que les éléments non significatifs le sont en "fin" de rangée.
- Supposition 4 : Pour pouvoir appliquer la supposition 2 et en respectant la supposition 1 qui considère que tout est chaîne, on peut considérer les éléments non significatifs de la supposition 2 comme étant des chaînes de caractères vides ("").
- Supposition 5 : Pour homogénéiser le nombre de dimensions, on considère que, pour les rangées ne contenant qu'un seul élément, les crochets représentant les bornages de la rangée n'ont pas été représentés.
- Supposition 6 : Pour que la supposition 5 ait un comportement déterministe, puisse coller à ta chaîne et respecte la supposition 3, on considère que la supposition 5 est récursive.
- Supposition 7 : Pour dimensionner le tableau hypothétique ayant potentiellement pu générer ta chaîne, on considère que la taille de la dimension d'une profondeur donnée (dépendant du nombre de crochets nécessaires dans ta chaîne pour atteindre ladite dimension) correspond au nombre maximum d'éléments explicitement rencontrées à cette profondeur.

Si on considère toutes ces suppositions, que l'on met explicitement contenu des chaînes entre guillemets, et que l'on représente tous les éléments, le contenu de ta chaîne devrait être :

Code : Tout sélectionner

[[["123","",""],["","",""],["","",""]],[["234","",""],["Def","",""],["","",""]],[["Abc","",""],["","",""],["","",""]],[["345","",""],["456","Mno","567"],["Jkl","",""]],[["Ghi","",""],["","",""],["","",""]]]

Re: Quelques questions sur les Tableaux et leurs représentat

Publié : sam. 04/avr./2020 9:26
par falsam
Shadow a écrit :Un Tableau à une dimension, c'est une liste vertical, comme une liste de course
ha bon ? Je la voyais horizontal ...

Re: Quelques questions sur les Tableaux et leurs représentat

Publié : sam. 04/avr./2020 10:13
par Naheulf
Il a bugué le forum ou quoi ? Il a oublié de me mettre que falsam avait posté un message pendant que je faisais une longue réédition du mien…

Re: Quelques questions sur les Tableaux et leurs représentat

Publié : sam. 04/avr./2020 11:24
par Mindphazer
Naheulf a écrit :Il a bugué le forum ou quoi ? Il a oublié de me mettre que falsam avait posté un message pendant que je faisais une longue réédition du mien…
C'est shadow qui a foutu le bazar en posant des questions incompréhensibles :mrgreen:

Re: Quelques questions sur les Tableaux et leurs représentat

Publié : sam. 04/avr./2020 14:05
par G-Rom
Revenons alors à notre Tableau Horizontale
Il n'y a pas d'horizontalité ou de verticalité... un tableau , peut importe le nombre de dimension est une zone de mémoire contiguë , donc tu en fait la représentation que tu veut dans ta tête.

voici deux chose identique :

Code : Tout sélectionner

Dim tableau.l(9)
AllocateMemory(10 * 4)
En revanche , la façon d'y accéder n'est pas identique.

Re: Quelques questions sur les Tableaux et leurs représentat

Publié : sam. 04/avr./2020 22:35
par TazNormand
Pour te représenter un tableau, tu peux imaginer une représentation comme suit :
  • 1 dimension = une liste verticale ou horizontale, comme tu veux
    2 dimensions = comme un tableau Excel : des lignes et des colonnes
    3 dimensions = 1 Rubik's Cube ou un cube en 3D
    4 et + dimensions : là le plus simple tu imagines une commode (le meuble) avec des tiroirs chaque tiroir contient une ou +sieurs boite(s) et chaque boite contient 1 ou +sieurs sous-boites, etc...
manipuler des tableaux de plus de 2 dimensions devient vite ardu, et comme te l'a dit Ar-S, mieux vaut utiliser un tableau de structures.

Pour les 4 et + dimensions, pour l'exemple de la commode : elle contient des tiroirs, on va dire une commode à 4 tiroirs donc 1 tableau à 4 dimensions.
Dans chaque tiroirs, tu as 4 boites, qui représente ta 2ème dimension. Chaque boite contient 2 sacs, on est sur la 3ème dimension, et enfin chaque sac contient 5 écrins (les petites boites dans quoi les bijoutiers mettent les bagues par exemple quand il te les vendent) ; ces écrins sont ta 4ème dimension, tu peux aller encore plus loin mais là ça devient compliqué pour donner des noms au contenus et contenants :lol:

En gros :

Code : Tout sélectionner

Dim Commode (3,3,2,4)
je ne sais pas si ça va t'éclairer sur les tableaux, mais je trouve que cette représentation pour les 4+ dimensions est la plus simple.

Re: Quelques questions sur les Tableaux et leurs représentat

Publié : dim. 05/avr./2020 0:50
par Shadow
Salut a tous, merci pour vos réponses :)
@TazNormand, merci, c'était ma vision des choses aussi, qui est très bonne je trouve :)
Mais pour allers plus loin encore:

Code : Tout sélectionner

Tableau(Z, Y, X)
est correcte ?
Je pense que oui.

Autre exemple:

Code : Tout sélectionner

Tableau(Planète, Pays, Région, Ville, Terrain, Maison, Meuble, Tiroirs, Boite, écrins)
Ici c'est extrême mais correcte ?
manipuler des tableaux de plus de 2 dimensions devient vite ardu, et comme te l'a dit Ar-S, mieux vaut utiliser un tableau de structures.
Ya pas photo, je suis d'accord avec ça aussi, c'est beaucoup beaucoup plus facile de s'y retrouver ainsi !
Merci !

Re: Quelques questions sur les Tableaux et leurs représentat

Publié : dim. 05/avr./2020 0:51
par Shadow
Salut a tous, merci pour vos réponses :)
@TazNormand, merci, c'était ma vision des choses aussi, qui est très bonne je trouve :)
Mais pour allers plus loin encore:

Code : Tout sélectionner

Tableau(Z, Y, X)
est correcte ?
Je pense que oui.

Autre exemple:

Code : Tout sélectionner

Tableau(Planète, Pays, Région, Ville, Terrain, Maison, Meuble, Tiroirs, Boite, écrins)
Ici c'est extrême mais correcte ?
TazNormand a écrit :manipuler des tableaux de plus de 2 dimensions devient vite ardu, et comme te l'a dit Ar-S, mieux vaut utiliser un tableau de structures.
Ya pas photo, je suis d'accord avec ça aussi, c'est beaucoup beaucoup plus facile de s'y retrouver ainsi !
Merci !

Re: Quelques questions sur les Tableaux et leurs représentat

Publié : dim. 05/avr./2020 9:20
par Naheulf
Shadow a écrit :Autre exemple:

Code : Tout sélectionner

Tableau(Planète, Pays, Région, Ville, Terrain, Maison, Meuble, Tiroirs, Boite, écrins)
Ici c'est extrême mais correcte ?
En soi c’est correct, mais il risque « juste » d’y avoir un petit problème de taille. En effet la place mémoire utilisé par un tableau comme ça est juste ÉNORME ! (C'est le produit de la taille de chaque dimension)

Supposons que l’on colle les vraies valeurs en face de tes étiquettes :
Nombre de planètes : 4242 (La terre + 4241 exoplanètes d’après www.astrocaw.eu)
Nombre de pays max par planète : 187 (d’après : http://www.ilo.org/public/english/stand ... ountry.htm)
Nombre de régions max par pays : 50 (pour les états Unis)
Nombre de Villes par région : 2770 (Moyenne pour la France : 36 000 communes / 13 régions)
Nombre de Terrains par Ville : au moins 2000 (Nombre approximatif de parcelles cadastrale d’une commune choisie au hasard)
Nombre de Maisons (Bâtiments) Par Terrain : 20 (pour les maisonnettes genre appart-hôtel)
Nombre de Maisons (Appartements) Par Terrain : 2000 (Estimation basse)
Nombre de Meubles par Maison : 50 (rien que chez mes parents il y en a au moins 45)
Nombre de Tiroirs par meuble : 11 (au moins)
Nombre de boîtes par tiroir : 8 (au pif)
Nombre nombre d’écrins par boîte : 4 (au pif aussi)

Donc, avec toutes ces estimations plutôt basses (il faudrait vraiment prendre le nombre maximum à chaque fois, je te laisse compte les meubles à Versailles, et faire le tour de tous les plans cadastraux) on trouve :
4242 × 187 × 50 × 2770 × 2000 × 20 × 2000 × 50 × 11 × 8 × 4 = 154 690 876 032 000 000 000 000.
Donc, en considérant que l’on ne stocke qu’un octet dans chaque écrin, il faudrait un ordinateur avec 154 690 876 032 To de RAM pour stocker un tel tableau…

Mais sur le principe c’est correct…

Re: Quelques questions sur les Tableaux et leurs représentat

Publié : dim. 05/avr./2020 15:49
par kernadec
bjr à tous

je pense que pour faire simple un tableau 4d c'est ça :mrgreen:

Cordialement

Code : Tout sélectionner

t = 0
For i = 1 To 10
  For j = 1 To 10
    For k = 1 To 10
      For l = 1 To 10
        t + 1
        Debug "  I: "+Str(i)+"  J: "+Str(j)+"  K: "+Str(k)+"  L: "+Str(l)+"       T: "+Str(t) 
      Next l
    Next k
  Next j
Next i


Re: Quelques questions sur les Tableaux et leurs représentat

Publié : dim. 05/avr./2020 16:09
par G-Rom
kernadec a écrit :bjr à tous

je pense que pour faire simple un tableau 4d c'est ça :mrgreen:

Cordialement

Code : Tout sélectionner

t = 0
For i = 1 To 10
  For j = 1 To 10
    For k = 1 To 10
      For l = 1 To 10
        t + 1
        Debug "  I: "+Str(i)+"  J: "+Str(j)+"  K: "+Str(k)+"  L: "+Str(l)+"       T: "+Str(t) 
      Next l
    Next k
  Next j
Next i

Abomination... :mrgreen:
500go de ram !
Dim OutOfMemory.q(500,500,500,500)

Re: Quelques questions sur les Tableaux et leurs représentat

Publié : dim. 05/avr./2020 16:16
par kernadec
bjr Grom :mrgreen: :mrgreen: