DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion des files, piles, listes et tableaux / Fonctions Tableau
  • Fonctionnement
  • Agrégations existantes
  • Equivalence
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
Exécute une opération d'agrégation sur chaque élément d'un tableau WLangage.
Cette fonction est utilisable :
  • sur les tableaux à une dimension,
  • sur les tableaux associatifs.
    AndroidWidget Android Non disponible.
Exemple
tabValeur est un tableau d'entiers = [1,2,3,4,5]
LaSomme est un entier
LaSomme = Agrège(tabValeur, (Valeur, VariableDeCalculeSomme) => { RENVOYER Valeur + VariableDeCalculeSomme }, 0)
Trace(LaSomme)
// note : cet exemple est didactique ; pour faire la somme des éléments d'un tableau,
// il est préférable d'utiliser la fonction Somme
// -> compter dans un tableau le nombre de chaînes contenant la lettre "e" (Syntaxe préfixée)
tab3 est un tableau de chaînes = ["un","une","des","nos","leurs"]
soit Cpt = Agrège(tab3, (Source, Total) => { RENVOYER Total + (Source [=] "e" ? 1 SINON 0 ) }, 0)
// Cpt = 3
Universal Windows 10 AppiPhone/iPadWidget IOSApple WatchMac Catalyst
tabValeurs est un tableau d'entiers = [1,2]
Trace(Agrège(tabValeurs, (valeur, clé, total) => {RENVOYER valeur + clé + total},0))
Universal Windows 10 AppiPhone/iPadWidget IOSApple WatchMac Catalyst
dictValeurs est tableau associatif d'entiers
dictValeurs["A"] = 1
dictValeurs["B"] = 2
dictValeurs["C"] = 3
dictValeurs["D"] = 4
Trace(Agrège(dictValeurs, (valeur, clé, total) => { RENVOYER (clé = "A" _OU_ clé = "C" ? valeur SINON 0) + valeur + total },0))
Syntaxe
<Résultat> = Agrège(<Tableau> , <Opération à effectuer> [, <Valeur initiale>])
<Résultat> : Type correspondant au résultat
Résultat de l'opération d'agrégation demandée.
<Tableau> : Tableau WLangage
Nom de la variable de type Tableau à manipuler. Ce tableau peut être :
  • un tableau à une dimension.
  • un tableau associatif.
    AndroidWidget Android Non disponible.
<Opération à effectuer> : Procédure WLangage
Nom de la procédure WLangage à exécuter. Cette procédure peut être :
  • une procédure globale ou locale,
  • une procédure interne.
Il est également possible d'utiliser directement une lambda.
<Valeur initiale> : Paramètre optionnel, type correspondant à la valeur initiale
Valeur initiale à utiliser lors de la première exécution de la procédure <Opération à effectuer>.
Remarques

Fonctionnement

La procédure <Opération à effectuer> est appelée une première fois avec plusieurs paramètres :
  • le premier élément du tableau,
  • la clé de l'élément.
    Dans le cas d'un tableau simple, la clé correspond à l'indice de l'élément. Ce paramètre est optionnel.
    Dans le cas d'un tableau associatif, la clé correspond à la clé d'indexation des éléments.
    AndroidWidget Android Non disponible.
  • la valeur initiale spécifiée avec le paramètre <Valeur initiale>.
La procédure est ensuite appelée pour tous les autres éléments du tableau avec deux paramètres :
  • l'élément du tableau,
  • la clé de l'élément.
    Dans le cas d'un tableau simple, la clé correspond à l'indice de l'élément. Ce paramètre est optionnel.
    Dans le cas d'un tableau associatif, la clé correspond à la clé d'indexation des éléments.
    AndroidWidget Android Non disponible.
  • la valeur renvoyée par l'appel précédent.
Exemple didactique
Considérons l'exemple suivant :
tabValeur est un tableau d'entiers = [1,2,3,4,5]
LaSomme est un entier
LaSomme = Agrège(tabValeur, (Valeur, LaSomme) => { RENVOYER Valeur + LaSomme }, 0)

Dans cet exemple, le code :
LaSomme = Agrège(tabValeur, (Valeur, LaSomme) => { RENVOYER Valeur + LaSomme }, 0)
est équivalent au code suivant :
LaSomme = Agrège(tabValeur, Additionne, 0)

PROCÉDURE INTERNE Additionne(Valeur, Total)
	RENVOYER Valeur + Total
FIN

Avec cette procédure interne, il est possible de découper le calcul de la façon suivante :
  • RésultatIntermédiaire1 = Additionne (t[1], ValeurInitiale) : dans l'exemple Additionne( 1, 0 ) -> 1
  • RésultatIntermédiaire2 = Additionne (t[2], RésultatIntermédiaire1) : dans l'exemple Additionne( 2, 1 ) -> 3
  • ...
Note : cet exemple est didactique ; pour faire la somme des éléments d'un tableau, il est préférable d'utiliser la fonction Somme.

Agrégations existantes

Les agrégations les plus courantes sont disponibles en WLangage :
MoyenneCalcule la moyenne de plusieurs éléments :
  • éléments d'un tableau,
  • valeurs numériques, ...
SommeCalcule la somme des éléments d'un tableau.


Enchaînement de fonctions
Il est possible d'enchaîner les différentes fonctions de manipulation d'un tableau.
Les fonctions suivantes peuvent être utilisées dans un enchaînement : Cet enchaînement pourra être utilisé comme source d'une instruction POUR TOUT ou se terminer par une des fonctions suivantes : Exemple :
gnMoyenne = gtabUser.Filtre(cbFiltre).Transforme(cbTransforme).Moyenne()

Equivalence

La syntaxe POUR TOUT permet également de parcourir les éléments d'un tableau pour réaliser des agrégations.
Liste des exemples associés :
Les fonctions Filtre / Transforme / Agrège Exemples unitaires (WINDEV) : Les fonctions Filtre / Transforme / Agrège
[ + ] Cet exemple montre l'utilisation des fonctions Filtre / Transforme / Agrège.

Le concept de Filter / Map / Reduce (Filtre / Transforme / Agrège en français) permet de réaliser des opérations sur des collections de données de manière extrêmement concise.

La fonction Filtre permet de filtrer un tableau d'éléments de manière personnalisée (avec une procédure callback).

La fonction Transforme permet de transformer un tableau d'éléments, toujours avec une procédure callback.

La fonction Agrège permet d'agréger des données de manière personnalisée avec une procédure callback.

Ici, cet exemple permet de calculer l'âge moyen des femmes parmi les utilisateurs affichés dans un champ Table.
Classification Métier / UI : Code neutre
Composante : wd300vm.dll
Version minimum requise
  • Version 25
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 22/04/2024

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