- Accès aux tableaux associatifs
- Accès aux éléments des tableaux associatifs
- Comment initialiser un tableau associatif dès sa déclaration?
- Parcours des tableaux associatifs
- Fonctions du WLangage et tableaux
- Paramètres de type tableau associatif
- Tableau associatif de classes ou de structures
- Tableau associatif de tableau, file, pile, liste
Tableau associatif (Type de variable) En anglais : Associative array
Un tableau associatif est un type "avancé" de tableau : il permet de regrouper une série d'éléments du même type. Chaque élément du tableau est indexé sur n'importe quel type d'information (et non plus simplement sur un indice numérique, comme dans les autres types de tableau). Remarque : Ce type de tableau permet un accès rapide à un élément quelconque, avec certaines options sur les chaînes.
taTailleFichier est tableau associatif d'entiers
taTailleFichier["Fichier1.txt"] = fTaille("Fichier1.txt")
taTailleFichier["Fichier2.txt"] = fTaille("Fichier2.txt")
Trace(taTailleFichier["Fichier2.txt"])
sFichier est une chaîne
nTaille est un entier
POUR TOUT ÉLÉMENT nTaille,sFichier DE taTailleFichier
Trace(ChaîneConstruit("%1 : %2", sFichier, nTaille))
FIN
Syntaxe
Déclarer un tableau associatif Masquer les détails
<Nom du tableau> est un tableau associatif [(<Options> [, <Valeur par défaut> [, <Type de clé> [,<Taille initiale>]]])] de <Type>
<Nom du tableau> : Nom de la variable tableau à déclarer. <Options> : Combinaison de constantes permettant de paramétrer le fonctionnement du tableau :
| | AvecDoublon | Cette constante permet d'autoriser les doublons. En effet, par défaut, un tableau associatif ne peut pas contenir de doublons. | ccSansAccent | Si le type de clé est une chaîne (par défaut), l'indexation ne tient pas compte des accents. | ccSansCasse | Si le type de clé est une chaîne (par défaut), l'indexation ne tient pas compte de la casse. | ccSansEspace | Si le type de clé est une chaîne (par défaut), l'indexation ne tient pas compte des espaces. | ccSansPonctuationNiEspace | Si le type de clé est une chaîne (par défaut), l'indexation ne tient pas compte de la ponctuation et des espaces. | SansDoublon (valeur par défaut) | Par défaut, un tableau associatif ne peut pas contenir de doublons. Il est possible de ne pas indiquer cette constante. |
La valeur "*" permet de conserver la valeur par défaut de l'option. <Valeur par défaut> : Valeur renvoyée lors de l'accès à un élément inexistant dans un tableau associatif sans doublon. Ce paramètre est ignoré dans un tableau associatif avec doublons. Par défaut, la valeur par défaut du type du tableau est utilisé (0, "", Faux).La valeur "*" permet de conserver la valeur par défaut du type. <Type de clé> : Type de la clé utilisée pour parcourir le tableau. Par défaut, le parcours est réalisé sur une clé de type chaîne. Les types autorisés sont les suivants :
| | wlChaîne | Chaîne de caractères | wlChaîneUnicode | Chaîne de caractères Unicode | wlDate | Date | wlDateHeure | DateHeure | wlEntier | Entier signé sur 4 octets | wlEntier_8 | Entier signé sur 8 octets | wlEntierSansSigne_4 | Entier non signé sur 4 octets | wlEntierSansSigne_8 | Entier non signé sur 8 octets | wlHeure | Heure | wlMonétaire | Monétaire | wlNumérique | Numérique | wlRéel | Réel sur 8 octets |
La valeur "*" permet de conserver le type de clé par défaut (chaîne). <Taille initiale> : Entier. Correspond à la taille initiale de la zone mémoire pour le tableau associatif.L'ajout peut être long dans un tableau associatif en cas de redimensionnement du tableau. En cas d'ajouts multiples, il est conseillé de surdimensionner le tableau pour optimiser les ajouts. La valeur "*" permet de conserver la taille par défaut. <Type> : Type des éléments constituant le tableau.
Déclarer un paramètre de type tableau associatif Masquer les détails
<Nom du paramètre> est un tableau associatif de <Type>
<Nom du paramètre> : Nom de la variable tableau à déclarer. <Type> : Type des éléments constituant le tableau.
Remarques Accès aux tableaux associatifs Pour manipuler un tableau associatif, il est possible d'utiliser les propriétés suivantes : | | Occurrence | Renvoie le nombre d'occurrences dans le tableau. | Vide | Permet de savoir si le tableau est vide ou non. |
Les syntaxes &Tableau et Tableau1 = Tableau2 sont interdites. La copie et la prise de référence sur les tableaux associatifs ne sont pas disponibles. Accès aux éléments des tableaux associatifs L'accès aux éléments des tableaux associatifs peut être différent si le tableau associatif est avec ou sans doublons. | | Tableau associatif sans doublons | | Propriété Existe | MonTableau[MaClé]..Existe Renvoie Vrai si l'élément MaClé existe, Faux sinon. | Propriété Vide | Renvoie Vrai si l'élément MaClé n'existe pas, Faux sinon. | Propriété Occurrence | MonTableau[MaClé]..Occurrence Renvoie 1 si l'élément MaClé existe, 0 si l'élément n'existe pas. | Affectation d'un élément | MonTableau[MaClé] = <Valeur> Si l'élément MaClé n'existe pas, un élément MaClé est créé et affecté avec <Valeur>. Si l'élément MaClé existe, sa valeur est modifiée. | | MonTableau[MaClé, Indice] = Valeur Si Indice est différent de 1, une erreur WLangage est affichée. Si l'élément MaClé n'existe pas, une erreur WLangage est affichée. Si l'élément MaClé existe, sa valeur est modifiée.
Syntaxe compatible avec tableaux associatifs avec doublons. | | Crée l'entrée dans le tableau associatif, avec la valeur par défaut spécifiée lors de la déclaration du tableau. | Accès à un élément | Si l'élément MaClé n'existe pas, renvoie la valeur par défaut du tableau. Si l'élément MaClé existe, renvoie la valeur de l'élément. | | MonTableau[MaClé, Indice] Si Indice est différent de 1, une erreur WLangage est affichée. Si l'élément MaClé n'existe pas, une erreur WLangage est affichée. Si l'élément MaClé existe, renvoie la valeur de l'élément.
Syntaxe compatible avec tableaux associatifs avec doublons. | Adresse d'un élément | Si l'élément MaClé n'existe pas, affichage d'une erreur WLangage. Si l'élément MaClé existe, renvoie l'adresse de l'élément. | | &MonTableau[MaClé, Indice] Si Indice est différent de 1, une erreur WLangage est affichée. Si l'élément MaClé n'existe pas, une erreur WLangage est affichée. Si l'élément MaClé existe, renvoie l'adresse de l'élément.
Syntaxe compatible avec tableaux associatifs avec doublons. |
| | Tableau associatif avec doublons | | Propriété Existe | MonTableau[MaClé]..Existe Renvoie Vrai si au moins un élément MaClé existe, Faux si l'élément MaClé n'existe pas. | Test de l'existence d'une clé : Propriété Vide | Renvoie Vrai si l'élément MaClé n'existe pas, Faux si au moins un élément MaClé existe. | Nombre d'éléments d'une clé : Propriété Occurrence | MonTableau[MaClé]..Occurrence Renvoie le nombre d'éléments MaClé. | Affectation d'un élément | MonTableau[MaClé] = <Valeur> Crée un élément MaClé, et affecte cet élément avec la valeur indiquée (même si des éléments MaClé existent déjà ). | | MonTableau[MaClé, Indice] = Valeur Si Indice est supérieur au nombre d'éléments existants, une erreur WLangage est affichée. Si l'élément MaClé n'existe pas, une erreur WLangage est affichée. Si l'élément MaClé existe, la valeur de l'élément connu par son indice est modifiée. | Accès à un élément | Syntaxe interdite, provoquant une erreur WLangage (car il peut y avoir plusieurs éléments correspondant à la même clé). | | MonTableau[MaClé, Indice] Si Indice est supérieur au nombre d'éléments existants, une erreur WLangage est affichée. Si l'élément MaClé n'existe pas, une erreur WLangage est affichée. Si l'élément MaClé existe, renvoie la valeur de l'élément connu par son indice. | Adresse d'un élément | Syntaxe interdite | | &MonTableau[MaClé, Indice] Si Indice est supérieur au nombre d'éléments existants, une erreur WLangage est affichée. Si l'élément MaClé n'existe pas, une erreur WLangage est affichée. Si l'élément MaClé existe, renvoie l'adresse de l'élément identifié par son indice. |
Il est possible d'utiliser l'affectation multiple pour les tableaux associatifs. Comment initialiser un tableau associatif dès sa déclaration? Pour initialiser un tableau associatif dès sa déclaration, il suffit d'ajouter directement les couples "clé / valeur" en utilisant
l'opérateur [ ] (crochet). La syntaxe est la suivante :
taMonTableau est un tableau associatif de xxx = ... [ [<clé1>, <valeur1>], [<clé2>, <valeur2>], ... ] Par exemple :
taTauxTVA est tableau associatif de réels = ...
[["Normale", 0.2], ["Intermédiaire", 0.1], ["Réduite", 0.055]]
Fonctions du WLangage et tableaux Plusieurs fonctions WLangage permettent de manipuler des tableaux associatifs. Pour plus de détails, consultez Fonctions de gestion des tableaux. Il est ainsi par exemple possible de supprimer un élément d'un tableau associatif en utilisant la fonction Supprime (ou TableauSupprime) en utilisant la syntaxe suivante : Supprime(NomTableau, clé) TableauSupprime(NomTableau, Clé) Paramètres de type tableau associatif - Le type des éléments du tableau associatif passé en paramètre doit être le même que celui de la déclaration.
- Un tableau associatif ne peut pas être passé par valeur. Il faut obligatoirement passer une variable en paramètre.
Exemple :
PROCÉDURE AjouteClient(taClient est tableau associatif de CClient,
sNom est une chaîne,
sInfo est une chaîne)
c est CClient(sNom, sInfo)
taClient[sNom] = c
- Aucune vérification n'est effectuée à la compilation : les vérifications sont uniquement effectuées en exécution.
- La copie et la prise de référence sur les tableaux associatifs ne sont pas disponibles.
Tableau associatif de classes ou de structures Si vous utilisez un tableau associatif de classes ou de structures, les différentes instances sont automatiquement recopiées lors des ajouts. Si vous utilisez un tableau associatif de classes dynamiques ou de structures dynamiques, il est nécessaire d'allouer les classes ou les structures au moment de l'ajout (les libérations sont automatiquement réalisées). Exemples :
clObj est un cLMaClasse
taAssociatif est tableau associatif de cLMaClasse
clObj:nMembre = 0
taAssociatif["Association"] = clObj
clObj:nMembre = 2
Info(taAssociatif["Association"]:nMembre)
pclObj est un cLMaClasse dynamique
taAssociatif est tableau associatif de cLMaClasse dynamique
pclObj = allouer un cLMaClasse
pclObj:nMembre = 0
taAssociatif["Association"] = pclObj
pclObj:nMembre = 2
Info(taAssociatif["Association"]:nMembre)
Les accès aux membres d'un élément inexistant d'un tableau associatif de structures ou de classes ne créent pas automatiquement l'instance de la structure ou de la classe. La ligne de code : MonTableauAssociatif["Clé"]:Membre = 5
échoue si l'élément "Clé" n'a pas été créé auparavant.
Liste des exemples associés :
|
Exemples unitaires (WINDEV) : Les tableaux associatifs
[ + ] Utilisation des tableaux associatifs du WLangage : - Remplir un tableau associatif - Accéder à un tableau associatif
|
Documentation également disponible pour…
|
|
|