DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Syntaxe WLangage / Déclaration des variables
  • Autres types de tableaux
  • Procédure : Déclarer un paramètre de type tableau
  • Passer un tableau en paramètre à une procédure
  • Fonctions du WLangage et tableaux
  • Tableau de tableau, tableau associatif, file, pile, liste
  • Limites : Éléments d'un tableau
  • Tableaux dans les classes
  • Ajouter le contenu d'une structure dans un tableau de structures sans passer par une variable de cette structure
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Un tableau est un type structuré qui permet de regrouper une série d'éléments de même type. Chaque élément du tableau est accessible directement par son numéro d'ordre.
Exemple
// Déclare un tableau initialisé avec les noms des jours de la semaine
TableauJour est un tableau de chaînes = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi"]
// Manipule le tableau
TableauJour[2] // Renvoie "Mardi"
// Déclare un tableau d'entiers
TableauValeur est un tableau d'entiers
// Remplit le tableau d'entiers par ajout des valeurs
Ajoute(TableauValeur, 5)
Ajoute(TableauValeur, 10)
Ajoute(TableauValeur, 15)
// Parcourt les valeurs du tableau
POUR TOUT x DE TableauValeur
	// x vaut successivement 5, 10, 15
	...
FIN
// Déclare un tableau d'entiers
TableauValeur est un tableau <agrandissement=1> d'entiers
// Agrandit le tableau pour insérer la valeur 1 : 10
TableauValeur[1] = 10
// Agrandit le tableau pour insérer la valeur 2 : 20
TableauValeur[2] = 20
// Agrandit le tableau pour insérer la valeur 3 : 30
TableauValeur[3] = 30
// Parcourt les valeurs du tableau
POUR TOUT x DE TableauValeur
	// x vaut successivement 10, 20, 30
FIN
// Déclare un tableau d'entiers
TableauValeur est un tableau <agrandissement=N> d'entiers
// Agrandit le tableau pour insérer la valeur 1 : 10
TableauValeur[1] = 10
// Agrandit le tableau pour insérer la valeur 5 : 50
// Les valeurs 2, 3 et 4 sont initialisées à 0
TableauValeur[5] = 50
// Parcourt les valeurs du tableau
POUR TOUT x DE TableauValeur
	// x vaut successivement 10, 0, 0, 0, 50
FIN
Windows
// Déclare un Tableau de tableau
tabMonTableau est un tableau de tableau de chaînes
nIndiceTab est un entier

nIndiceTab = Ajoute(tabMonTableau)
Ajoute(tabMonTableau[nIndiceTab], "Janvier")
Ajoute(tabMonTableau[nIndiceTab],"300")
nIndiceTab = Ajoute(tabMonTableau)
Ajoute(tabMonTableau[nIndiceTab], "Février")
Ajoute(tabMonTableau[nIndiceTab],"600")

Trace(tabMonTableau[1][1]) // Affiche "Janvier"
Trace(tabMonTableau[1][2]) // Affiche "300"
Syntaxe

Déclarer un tableau à une dimension (syntaxe 1)


<Nom du tableau> est [un] tableau [<agrandissement>] [ [<Dimension 1>] ] <Type des éléments du tableau>
Exemple :
tabChaîne est un tableau <agrandissement=N> [10] chaînes
tabEntier est un tableau [5] entiers

Déclarer un tableau à une dimension (syntaxe 2) Masquer les détails

<Nom du tableau> est [un] tableau [<agrandissement>] de [<Dimension>] <Type des éléments du tableau>
<Nom du tableau> :
Nom de la variable tableau à déclarer.
<agrandissement> :
Mode optionnel d'agrandissement du tableau :
  • rien (par défaut) ou "<agrandissement=0>" : le tableau n'est pas agrandi automatiquement. Si le tableau contient par exemple 5 éléments et si le programme accède à l'élément 6 ou 100, une erreur d'exécution sera levée.
  • "<agrandissement>" ou "<agrandissement=1>" : le tableau est automatiquement agrandi de 1 élément. Si le tableau contient par exemple 5 éléments et si le programme accède à l'élément 6, le tableau est automatiquement agrandi pour manipuler l'élément 6 ; si le programme accède à l'élément 100, une erreur d'exécution sera levée.
  • "<agrandissement=N>" : le tableau est automatiquement agrandi du nombre d'éléments nécessaires. Si le tableau contient par exemple 5 éléments et si le programme accède à l'élément 6, le tableau est automatiquement agrandi d'un élément pour manipuler l'élément 6 ; si le programme accède à l'élément 100, le tableau est automatiquement agrandi pour manipuler l'élément 100. Les éléments intermédiaires sont initialisés avec la valeur par défaut du type des éléments du tableau.
Remarque : Pour agrandir un tableau à plusieurs dimensions, utilisez la fonction Dimension.
<Dimension> :
Dimension optionnelle du tableau. Ce paramètre peut :
  • ne pas être précisé ou correspondre à * ou 0 : le tableau est initialisé vide.
  • correspondre à une valeur constante ou à une variable de type entier : le tableau est initialisé avec le nombre d'éléments indiqué. Chaque élément est initialisé avec la valeur par défaut de son type.
<Type des éléments du tableau> :
Type des éléments constituant le tableau. Voir Les différents types du WLangage.
Windows Remarque : Les éléments constituant le tableau peuvent être également des tableaux, des tableaux fixes, des tableaux associatifs, des files, des piles ou des listes.

Déclarer un tableau à plusieurs dimensions (10 maximum) - Syntaxe 1


<Nom du tableau> est [un] tableau de [ [<Dimension 1> [,<Dimension 2>]...[,<Dimension 10>]] ] <Type des éléments du tableau>
Exemple :
tabChaîne est un tableau [10,20] chaînes
tabEntier est un tableau [3,5,2] entiers

Déclarer un tableau à plusieurs dimensions (10 maximum) - Syntaxe 2 Masquer les détails

<Nom du tableau> est [un] tableau de [<Dimension 1> [par <Dimension 2>]...[par <Dimension 10>]] <Type des éléments du tableau>
OU
<Nom du tableau> est [un] tableau de [<Dimension 1> [,<Dimension 2>]...[,<Dimension 10>]] <Type des éléments du tableau>
<Nom du tableau> :
Nom de la variable tableau à déclarer.
<Dimension 1>...<Dimension 10> :
Dimension 1 à 10 du tableau. La valeur de la dimension peut correspondre à :
  • * ou 0 : la dimension est initialisée avec 0 élément.
  • une valeur constante ou une variable de type entier : la dimension est initialisée avec le nombre d'éléments indiqué. Chaque élément est initialisé avec la valeur par défaut de son type.
<Type des éléments du tableau> :
Type des éléments constituant le tableau. Voir Les différents types du WLangage.
Windows Remarque : Les éléments constituant le tableau peuvent être également des tableaux, des tableaux fixes, des tableaux associatifs, des files, des piles ou des listes.

Déclarer un paramètre de type tableau Masquer les détails

Tableau à une dimension :
<Nom du paramètre> est [un] tableau de [<Dimension>] <Type des éléments du tableau>

Tableau à 2 dimensions
<Nom du paramètre> est [un] tableau de <Dimension 1> par <Dimension 2> <Type des éléments du tableau>

Tableau à n dimensions
<Nom du paramètre> est [un] tableau de [<Dimension 1> [ par <Dimension 2>]...[ par <Dimension n>]] <Type des éléments du tableau>
<Nom du paramètre> :
Nom du paramètre de type tableau à déclarer.
<Dimension n> :
Le paramètre <Dimension> peut ne pas être précisé, correspondre à * , 0 ou une valeur constante.
<Type des éléments du tableau> :
Type des éléments constituant le tableau. Voir Les différents types du WLangage.
Remarque : Les éléments constituant le tableau peuvent être également des tableaux, des tableaux fixes, des tableaux associatifs, des files, des piles ou des listes.

Faire référence à un tableau Masquer les détails

Faire référence à un élément d'un tableau à une dimension :
<Nom du tableau>[Indice1]

Faire référence à un élément d'un tableau à deux dimensions :
<Nom du tableau>[Indice1, Indice2]
OU
<Nom du tableau>[Indice1][Indice2]

Faire référence à un élément d'un tableau à n dimensions :
<Nom du tableau>[Indice1,...,IndiceN]
OU
<Nom du tableau>[Indice1]...[IndiceN]
<Nom du tableau> :
Nom du tableau à manipuler.
<Indice1> :
Indice de l'élément pour la 1ère dimension.
<Indice2> :
Indice de l'élément pour la 2ème dimension.
<IndiceN> :
Indice de l'élément pour la Nième dimension (N <= 10).
Remarques

Autres types de tableaux

Le mot-clé Tableau permet de définir un tableau. D'autres types de tableaux "avancés" sont disponibles :
  • Tableau dynamique : Tableau alloué à la demande.
  • Tableau fixe : Tableau de taille fixe (conseillé pour les API Windows).
  • Tableau associatif : Tableau permettant de stocker des éléments indexés sur n'importe quel type d'information.

Procédure : Déclarer un paramètre de type tableau

Un tableau peut être passé en paramètre à une procédure. Par exemple :
// Ajoute un client dans le tableau
PROCÉDURE AjouteClient(tabClient est un tableau de * CClient,
	sNom est une chaîne,
	sInfo est une chaîne)
// Construit le nouvel objet client
c est CClient(sNom, sInfo)
// Ajoute l'objet dans le tableau
Ajoute(tabClient, c)

Remarques :
  • Le type des éléments du tableau passé en paramètre doit être le même que celui de la déclaration.
  • Le nombre de dimensions du tableau passé en paramètre doit être le même que celui de la déclaration.
  • Le nombre d'éléments de chaque dimension du tableau passé en paramètre doit correspondre à la déclaration :
    • si le nombre d'éléments pour la dimension est *, aucune vérification n'est effectuée.
    • si le nombre d'éléments pour la dimension est indiqué, le nombre d'éléments doit être le même.
  • Aucune vérification n'est effectuée à la compilation : les vérifications sont uniquement effectuées en exécution.

Passer un tableau en paramètre à une procédure

Un tableau peut être passé en paramètre à une procédure. Pour cela, utilisez la syntaxe suivante :
<Nom de la procédure>(<Nom du tableau>)

Par exemple :
TableauFourn est un tableau de 10 par 50 chaînes
// Appel de la procédure AfficheTableau
AfficheTableau(TableauFourn)

Fonctions du WLangage et tableaux

Plusieurs fonctions WLangage permettent de manipuler des tableaux. Il est possible d'effectuer des tris, des recherches, etc. Pour plus de détails, consultez Fonctions de gestion des tableaux.
Windows

Tableau de tableau, tableau associatif, file, pile, liste

Les syntaxes suivantes sont supportées :
<variable> est un tableau de tableaux d'entiers
<variable> est un tableau de tableaux de 5 entiers
<variable> est un tableau de 5 tableaux d'entiers
<variable> est un tableau de 5 tableaux de 5 entiers

<variable> est un tableau de tableaux fixes de 5 entiers
<variable> est un tableau de 5 tableaux fixes de 5 entiers

<variable> est un tableau de tableaux associatifs d'entiers
<variable> est un tableau de tableaux associatifs (avecDoublon) d'entiers
<variable> est un tableau de tableaux associatifs (avecDoublon,wlEntier) d'entiers
<variable> est un tableau de 5 tableaux associatifs d'entiers
<variable> est un tableau de 5 tableaux associatifs (avecDoublon) d'entiers
<variable> est un tableau de 5 tableaux associatifs (avecDoublon,wlEntier) d'entiers

<variable> est un tableau de files d'entiers
<variable> est un tableau de 5 files d'entiers

<variable> est un tableau de piles d'entiers
<variable> est un tableau de 5 piles d'entiers

<variable> est un tableau de listes d'entiers
<variable> est un tableau de 5 listes d'entiers

Limites : Éléments d'un tableau

  • Un tableau peut être constitué de classes uniquement si ces classes possèdent un constructeur sans paramètres (ou avec des paramètres facultatifs).
  • Un tableau ne peut pas être constitué de variables composées.

Tableaux dans les classes

Lors de copies d'instances de classes, tous les membres de la classe sont recopiés dans la nouvelle instance, sauf les tableaux. Ainsi, si la valeur d'un membre de type tableau est modifiée, cette valeur est modifiée dans toutes les instances.
Pour obtenir des tableaux indépendants dans toutes les instances de classes, il est nécessaire de déclarer un tableau local de la manière suivante :
ClasseSystème est une Classe
	tTableauDéfaut est un tableau local de 1 entier
FIN

Ajouter le contenu d'une structure dans un tableau de structures sans passer par une variable de cette structure

Si vous utilisez un tableau de structures avec peu de membres, il peut être plus simple d'ajouter directement une structure en utilisant l'opérateur [ ] (crochet).
Par exemple, pour la structure suivante :
// Structure pour mémoriser une lettre et son code ASCII
STTouche est une Structure
	sTouche est une chaîne
	nCodeAscii est un entier
FIN
// Tableau de structures
tabTouches est un tableau de STTouche

L'ajout se fait généralement en passant par une variable du type de la structure :
// Structure temporaire pour l'ajout
stUneTouche est un STTouche
// Mémorise la lettre A
stUneTouche.sTouche = "A"
stUneTouche.nCodeAscii = Asc("A")
tabTouches.Ajoute(stUneTouche)

Avec l'opérateur [ ], vous pouvez gagner en visibilité :
// Mémorise la lettre A
tabTouches.Ajoute(["A", Asc("A")])
Liste des exemples associés :
Utilisation des tableaux Exemples unitaires (WINDEV) : Utilisation des tableaux
[ + ] Utilisations du type tableau en WLangage.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Tableau dynamique dans une classe (précision sur le local)
La copie d'objet fait bien une copie du tableau mais chaque indice du tableau contient en fait une référence vers l'élément correspondant dans l'autre tableau.
L'attribut "LOCAL" du tableau ne porte que sur le tableau lui-même, pas sur son contenu.
cela évite uniquement la copie au moment de l'ajout d'un élément.
Dans ce cas la copie sera à gérer manuellement.
ricil
09 déc. 2021

Dernière modification : 03/04/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale