3.2 · Tableaux, chaînes & types avancés

Niveau 3 · Avancé : WLangage approfondi

3.2Tableaux, chaînes & types avancés

Objectif : Choisir le bon type structuré et contrôler les conversions pour des traitements de données fiables.
Temps estimé : 11 min · lecture autonome · Si vous n'avez que 5 min : lisez « L'essentiel en 30s » + le schéma.

L'essentiel en 30 secondes

  • Le tableau indexé convient aux listes ordonnées ; le tableau associatif retrouve une valeur par clé sans parcours, idéal pour les correspondances et les caches.
  • La structure regroupe des données liées sous un type nommé ; les chaînes se découpent, se nettoient et se comparent avec vigilance sur les accents.
  • Toute conversion texte → nombre ou date doit être contrôlée : séparateurs, formats de date et valeurs vides sont des pièges classiques.

Mini-cas filé — Yacine importe le catalogue fournisseur

Yacine doit importer le catalogue d'un fournisseur de matériel électrique : un fichier CSV de vingt mille lignes avec code article, libellé, prix et famille. Il commence par découper chaque ligne selon le point-virgule, puis contrôle le nombre de colonnes. Pour retrouver le libellé d'une famille sans parcourir tout le fichier, il charge une fois les correspondances dans un tableau associatif. Il définit une structure AdresseLivraison pour regrouper rue, code postal et ville, plutôt que de promener cinq variables. Enfin, il remplace la virgule décimale par un point et vérifie que le prix est numérique avant de le convertir. Il note le réflexe : bon type, clé directe, conversion contrôlée.

Cas autonome de cette section : il revient dans le cours, le schéma, le script et le défi 48h de la section 3.2.

1. Tableaux indexés et associatifs

Le tableau est une collection ordonnée d'éléments de même type, accessibles par un indice. On peut le parcourir avec POUR TOUT, y ajouter avec TableauAjoute, le trier et y chercher. Il existe des tableaux dynamiques, dont la taille varie, et des tableaux à plusieurs dimensions. Le tableau associatif range chaque valeur sous une clé — souvent un texte, par exemple un code article. L'accès est direct, sans parcourir toute la collection : c'est parfait pour les correspondances et les caches en mémoire.

2. Structures et chaînes

La structure est un type que vous définissez pour regrouper des informations liées sous un même nom : une structure Adresse contient rue, code postal et ville. Elle rend le code lisible et remplace une poignée de variables éparses. Les chaînes occupent une place centrale en gestion : concaténer, extraire, mesurer avec Taille, chercher avec Position, remplacer, changer la casse, supprimer les espaces et surtout découper selon un séparateur pour lire un CSV ou des données importées.

3. Conversions et accents

Les conversions entre texte, numérique et date sont une source classique d'erreurs : une saisie utilisateur ou un fichier importé peut contenir n'importe quoi. Avant de convertir, Yacine contrôle que la valeur n'est pas vide, que le séparateur décimal est le bon et que la date respecte le format attendu. Les accents et caractères spéciaux demandent aussi de la vigilance lors des comparaisons, des tris et des échanges de fichiers, car l'encodage peut modifier le résultat.

Erreur d'interprétation fréquente : « Un tableau associatif est toujours plus lent qu'un tableau classique ; une structure peut contenir des méthodes ; et convertir une chaîne en nombre ne pose aucun problème ». Non, triple erreur. Le tableau associatif est au contraire direct par clé, là où le tableau classique impose un parcours. Une structure ne regroupe que des données : ce sont les classes qui portent des méthodes et de l'encapsulation. Et une conversion suppose un format valide : sans contrôle, une virgule décimale ou une date ambiguë produit une valeur fausse, parfois sans erreur visible. Yacine contrôle toujours avant de convertir.
Importer un catalogue sans erreur Découper, contrôler, convertir, puis indexer par clé. Découper la ligne CSVContrôler colonneset formatsConvertir prixet datesIndexer clé article→ libellé
Découper, contrôler, convertir, puis indexer par clé.
Version texte du schéma (SEO / lecteurs d'écran / traduction) : 1) Yacine importe un catalogue fournisseur de vingt mille lignes pour son application de négoce de matériel électrique à Oran. 2) Il découpe chaque ligne selon le point-virgule avec une fonction de chaîne, vérifie le nombre de colonnes, remplace la virgule décimale par un point et contrôle que le prix est numérique avant conversion. 3) Il charge les correspondances famille → libellé dans un tableau associatif pour un accès direct, et regroupe les informations d'adresse dans une structure AdresseLivraison. Leçon : choisir le type adapté et contrôler toute conversion rend l'import fiable et rapide.

🔎 Exemple concret — 🔎 Exemple concret — Découper, contrôler, indexer

Yacine traite une ligne du catalogue fournisseur avant de l'intégrer :

// Ligne CSV : code;libelle;prix;famille
sLigne est une chaine = "EL042;Disjoncteur 32A;12,50;Protection"
sColonnes est un tableau de chaines = ChaineDecoupe(sLigne, ";")

SI TableauOccurrence(sColonnes) <> 4 ALORS
    Erreur("Ligne invalide : " + sLigne)
    RENVOIE Faux
FIN

sPrix est une chaine = Remplace(sColonnes[3], ",", ".")
SI PAS EstNumerique(sPrix) ALORS
    Erreur("Prix non numerique pour " + sColonnes[1])
    RENVOIE Faux
FIN

nPrixHT est un monetaire = sPrix
tFamilles["Protection"] = "Appareillage modulaire"

Lecture : le découpage isole les champs, le contrôle bloque les lignes douteuses.

Leçon : la clé « Protection » donne un accès direct au libellé, sans parcours.

Vocabulaire de la section

Tableau dynamique
Collection ordonnée d'éléments de même type, dont la taille peut évoluer à l'exécution.

Exemple simple : Yacine ajoute chaque ligne valide du catalogue avec TableauAjoute.

Ce que ce n'est pas : une structure qui regroupe des champs nommés.

Réflexe : liste ordonnée variable → tableau dynamique.

Tableau associatif
Collection où chaque valeur est rangée sous une clé, avec un accès direct sans parcours.

Exemple simple : Yacine retrouve le libellé d'une famille par son code.

Ce que ce n'est pas : un tableau indexé qu'il faut parcourir pour trouver une valeur.

Réflexe : retrouver par clé → tableau associatif.

Structure
Type défini par le développeur, regroupant plusieurs données liées sous un même nom.

Exemple simple : AdresseLivraison contient rue, code postal et ville.

Ce que ce n'est pas : une classe avec méthodes et encapsulation.

Réflexe : regrouper des données → une structure.

Découpage de chaîne
Opération qui sépare une chaîne en morceaux selon un séparateur, très utile pour le CSV.

Exemple simple : Yacine découpe chaque ligne du catalogue selon le point-virgule.

Ce que ce n'est pas : une comparaison globale de la ligne sans extraction des champs.

Réflexe : lire un CSV → découper la chaîne.

Conversion contrôlée
Transformation d'un type vers un autre après vérification du format et des cas limites.

Exemple simple : Yacine vérifie le prix avant de le convertir en monétaire.

Ce que ce n'est pas : convertir directement une saisie sans vérifier qu'elle est numérique.

Réflexe : changer de type → contrôler d'abord.

En pratique — En pratique — Manipuler tableaux, structures et chaînes

  1. Créez un tableau dynamique, alimentez-le avec TableauAjoute et parcourez-le avec POUR TOUT, comme Yacine.
  2. Utilisez un tableau associatif pour une correspondance clé → valeur (code article → libellé) : la recherche est directe.
  3. Définissez une structure AdresseLivraison pour remplacer plusieurs variables séparées dans les écrans de commande.
  4. Découpez une ligne CSV selon le séparateur, puis contrôlez et convertissez chaque valeur avant de l'exploiter.
Vous manipulez proprement des ensembles de données en mémoire et des chaînes, avec le réflexe de contrôler toute conversion.

Script pas-à-pas — importer un catalogue comme Yacine (4 min)

1) Ouvrez le fichier CSV et repérez le séparateur ainsi que le format des dates et des prix. 2) Découpez chaque ligne et vérifiez le nombre de colonnes. 3) Contrôlez les valeurs, remplacez le séparateur décimal si besoin, puis convertissez. 4) Chargez les correspondances dans un tableau associatif pour éviter les parcours répétés. 5) Regroupez les informations liées dans une structure et journalisez les lignes rejetées.

Gardez ce réflexe : un import silencieux qui accepte tout produit des données fausses, pas un gain de temps.

Modèle copier-coller — la fiche types avancés de Yacine

Tableau        : liste ordonnee, indice, TableauAjoute, POUR TOUT
Associatif     : cle -> valeur, acces direct (correspondances, caches)
Structure      : donnees liees sous un nom (AdresseLivraison)
Chaine         : Taille, Position, Remplace, decoupage par separateur
Conversion     : controler vide, format, separateur AVANT de convertir

Un prix avec virgule

Yacine remplace la virgule par un point et vérifie la valeur avant conversion.

Une recherche répétée

Yacine indexe les familles dans un tableau associatif : plus de parcours à chaque ligne.

Une adresse éclatée

Yacine regroupe rue, code postal et ville dans une structure AdresseLivraison.

Une date ambiguë

Yacine impose le format attendu et rejette les dates illisibles au lieu de les deviner.

✓ Bonnes pratiques

  • Choisir le type selon l'accès voulu (indice ou clé).
  • Découper les chaînes plutôt que comparer la ligne entière.
  • Contrôler avant toute conversion de saisie ou d'import.

✗ Pièges fréquents

  • Parcourir un grand tableau pour retrouver par clé.
  • Convertir une chaîne vide ou mal séparée.
  • Négliger les accents et l'encodage des fichiers.

Points clés à retenir

  • Tableau indexé pour l'ordre, tableau associatif pour l'accès direct par clé.
  • La structure regroupe des données liées ; elle ne porte pas de méthodes.
  • Les chaînes se découpent, se nettoient et se comparent avec vigilance.
  • Toute conversion texte → nombre ou date doit être contrôlée.

Défi 48h — appliquez demain

Comme Yacine, prenez un fichier CSV réel de votre application et découpez ses lignes selon le séparateur. Chargez une correspondance clé → valeur dans un tableau associatif, puis contrôlez et convertissez les prix et les dates avant de les exploiter. Regroupez enfin une adresse complète dans une structure et notez en une phrase les lignes que vous avez dû rejeter — et pourquoi.

Checklist sortie de section
  • Je choisis entre tableau indexé et tableau associatif selon l'accès.
  • Je sais définir et utiliser une structure de données liées.
  • Je contrôle les conversions et les encodages avant exploitation.
Auto-évaluation 1-5 : est-ce que je choisis le bon type sans hésiter ?Auto-évaluation 1-5 : est-ce que je contrôle avant de convertir ?

Questions fréquentes

Quand utiliser un tableau associatif plutôt qu'un tableau classique ?

Quand vous devez retrouver une valeur par une clé — un code article, un code client, un identifiant. L'accès est direct, alors qu'un tableau classique impose de parcourir les éléments. Sur dix éléments la différence est invisible ; sur vingt mille lignes d'import répétées, elle devient décisive. Le tableau classique reste préférable quand l'ordre compte ou quand on parcourt systématiquement toute la collection.

Pourquoi les conversions de types causent-elles autant de bugs ?

Parce qu'une conversion suppose que la donnée a le format attendu, ce qui est rarement garanti avec une saisie ou un fichier externe. Virgule ou point décimal, date au format jour/mois ou mois/jour, espaces de milliers, valeur vide : autant de cas qui produisent zéro ou une valeur fausse sans message. La règle est simple : contrôler avant de convertir, et préciser le format attendu.

Vérifiez votre compréhension

Quel type choisir pour retrouver un libellé à partir d'un code article ?

Ressources supplémentaires (optionnel, pour aller plus loin)

Examen du niveau 3Questions inédites et durcies pour valider vos acquis