3.2 · Tablas, cadenas y tipos avanzados

Nivel 3 · Avanzado: WLangage en profundidad

3.2Tablas, cadenas y tipos avanzados

Objetivo: Elegir el tipo estructurado adecuado y controlar las conversiones para tratamientos de datos fiables.
Tiempo estimado: 11 min · lectura autónoma · Si solo tienes 5 min: lee «Lo esencial en 30s» + el esquema.

Lo esencial en 30 segundos

  • La tabla indexada conviene a las listas ordenadas; la tabla asociativa recupera un valor por clave sin recorrerla, ideal para correspondencias y cachés.
  • La estructura agrupa datos relacionados bajo un tipo con nombre; las cadenas se dividen, se limpian y se comparan con vigilancia en los acentos.
  • Toda conversión de texto → número o fecha debe controlarse: separadores, formatos de fecha y valores vacíos son trampas clásicas.

Mini-caso hilado — Yacine importa el catálogo del proveedor

Yacine debe importar el catálogo de un proveedor de material eléctrico: un archivo CSV de veinte mil líneas con código de artículo, descripción, precio y familia. Empieza por dividir cada línea según el punto y coma, y luego controla el número de columnas. Para recuperar la descripción de una familia sin recorrer todo el archivo, carga una vez las correspondencias en una tabla asociativa. Define una estructura AdresseLivraison para agrupar calle, código postal y ciudad, en lugar de arrastrar cinco variables. Por último, sustituye la coma decimal por un punto y verifica que el precio sea numérico antes de convertirlo. Anota el reflejo: buen tipo, clave directa, conversión controlada.

Caso autónomo de esta sección: reaparece en el curso, el esquema, el guion y el reto de 48 h de la sección 3.2.

1. Tablas indexadas y asociativas

La tabla es una colección ordenada de elementos del mismo tipo, accesibles por un índice. Se puede recorrer con PARA TODO, añadir elementos con TablaAñade, ordenarla y buscar en ella. Existen tablas dinámicas, cuyo tamaño varía, y tablas con varias dimensiones. La tabla asociativa guarda cada valor bajo una clave —a menudo un texto, por ejemplo un código de artículo—. El acceso es directo, sin recorrer toda la colección: es perfecta para correspondencias y cachés en memoria.

2. Estructuras y cadenas

La estructura es un tipo que usted define para agrupar informaciones relacionadas bajo un mismo nombre: una estructura Adresse contiene calle, código postal y ciudad. Hace legible el código y sustituye un puñado de variables dispersas. Las cadenas ocupan un lugar central en la gestión: concatenar, extraer, medir con Tamaño, buscar con Posición, reemplazar, cambiar mayúsculas y minúsculas, eliminar los espacios y sobre todo dividir según un separador para leer un CSV o datos importados.

3. Conversiones y acentos

Las conversiones entre texto, numérico y fecha son una fuente clásica de errores: una entrada de usuario o un archivo importado puede contener cualquier cosa. Antes de convertir, Yacine controla que el valor no esté vacío, que el separador decimal sea el correcto y que la fecha respete el formato esperado. Los acentos y caracteres especiales también exigen vigilancia en las comparaciones, las ordenaciones y los intercambios de archivos, porque la codificación puede modificar el resultado.

Error frecuente de interpretación: «Una tabla asociativa siempre es más lenta que una tabla clásica; una estructura puede contener métodos; y convertir una cadena en número no plantea ningún problema». No, triple error. La tabla asociativa es, al contrario, directa por clave, mientras que la tabla clásica impone un recorrido. Una estructura solo agrupa datos: son las clases las que llevan métodos y encapsulación. Y una conversión supone un formato válido: sin control, una coma decimal o una fecha ambigua produce un valor falso, a veces sin error visible. Yacine siempre controla antes de convertir.
Importar un catálogo sin errores Dividir, controlar, convertir y después indexar por clave. Dividir la línea CSVControlar columnasy formatosConvertir preciosy fechasIndexar clave artículo→ descripción
Dividir, controlar, convertir y después indexar por clave.
Versión en texto del esquema (SEO / lectores de pantalla / traducción): 1) Yacine importa un catálogo de proveedor de veinte mil líneas para su aplicación de venta de material eléctrico en Orán. 2) Divide cada línea según el punto y coma con una función de cadena, verifica el número de columnas, sustituye la coma decimal por un punto y controla que el precio sea numérico antes de la conversión. 3) Carga las correspondencias familia → descripción en una tabla asociativa para un acceso directo, y agrupa los datos de dirección en una estructura AdresseLivraison. Lección: elegir el tipo adecuado y controlar toda conversión hace fiable y rápido el import.

🔎 Ejemplo concreto — 🔎 Ejemplo concreto — Dividir, controlar, indexar

Yacine procesa una línea del catálogo del proveedor antes de integrarla:

// 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"

Lectura: la división aísla los campos y el control bloquea las líneas dudosas.

Lección: la clave «Protection» da acceso directo a la descripción, sin recorrido.

Vocabulario de la sección

Tabla dinámica
Colección ordenada de elementos del mismo tipo, cuyo tamaño puede evolucionar durante la ejecución.

Ejemplo sencillo: Yacine añade cada línea válida del catálogo con TablaAñade.

Lo que no es: una estructura que agrupa campos con nombre.

Reflejo: lista ordenada variable → tabla dinámica.

Tabla asociativa
Colección en la que cada valor se guarda bajo una clave, con acceso directo sin recorrido.

Ejemplo sencillo: Yacine recupera la descripción de una familia por su código.

Lo que no es: una tabla indexada que hay que recorrer para encontrar un valor.

Reflejo: recuperar por clave → tabla asociativa.

Estructura
Tipo definido por el desarrollador que agrupa varios datos relacionados bajo un mismo nombre.

Ejemplo sencillo: AdresseLivraison contiene calle, código postal y ciudad.

Lo que no es: una clase con métodos y encapsulación.

Reflejo: agrupar datos → una estructura.

División de cadena
Operación que separa una cadena en trozos según un separador, muy útil para el CSV.

Ejemplo sencillo: Yacine divide cada línea del catálogo según el punto y coma.

Lo que no es: una comparación global de la línea sin extraer los campos.

Reflejo: leer un CSV → dividir la cadena.

Conversión controlada
Transformación de un tipo a otro tras verificar el formato y los casos límite.

Ejemplo sencillo: Yacine verifica el precio antes de convertirlo en monetario.

Lo que no es: convertir directamente una entrada sin comprobar que sea numérica.

Reflejo: cambiar de tipo → controlar primero.

En la práctica — En la práctica — Manipular tablas, estructuras y cadenas

  1. Cree una tabla dinámica, aliméntela con TablaAñade y recórrala con PARA TODO, como Yacine.
  2. Utilice una tabla asociativa para una correspondencia clave → valor (código de artículo → descripción): la búsqueda es directa.
  3. Defina una estructura AdresseLivraison para sustituir varias variables separadas en las pantallas de pedido.
  4. Divida una línea CSV según el separador y después controle y convierta cada valor antes de explotarlo.
Manipula con limpieza conjuntos de datos en memoria y cadenas, con el reflejo de controlar toda conversión.

Guion paso a paso — importar un catálogo como Yacine (4 min)

1) Abra el archivo CSV e identifique el separador, así como el formato de las fechas y los precios. 2) Divida cada línea y verifique el número de columnas. 3) Controle los valores, sustituya el separador decimal si es necesario y después convierta. 4) Cargue las correspondencias en una tabla asociativa para evitar recorridos repetidos. 5) Agrupe los datos relacionados en una estructura y registre en el journal las líneas rechazadas.

Mantenga este reflejo: un import silencioso que acepta todo produce datos falsos, no un ahorro de tiempo.

Modelo para copiar y pegar — la ficha de tipos avanzados 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 precio con coma

Yacine sustituye la coma por un punto y verifica el valor antes de la conversión.

Una búsqueda repetida

Yacine indexa las familias en una tabla asociativa: se acabaron los recorridos en cada línea.

Una dirección dispersa

Yacine agrupa calle, código postal y ciudad en una estructura AdresseLivraison.

Una fecha ambigua

Yacine impone el formato esperado y rechaza las fechas ilegibles en lugar de adivinarlas.

✓ Buenas prácticas

  • Elegir el tipo según el acceso deseado (índice o clave).
  • Dividir las cadenas en lugar de comparar la línea entera.
  • Controlar antes de toda conversión de entrada o importación.

✗ Errores frecuentes

  • Recorrer una tabla grande para recuperar por clave.
  • Convertir una cadena vacía o mal separada.
  • Descuidar los acentos y la codificación de los archivos.

Puntos clave

  • Tabla indexada para el orden, tabla asociativa para el acceso directo por clave.
  • La estructura agrupa datos relacionados; no lleva métodos.
  • Las cadenas se dividen, se limpian y se comparan con vigilancia.
  • Toda conversión texto → número o fecha debe controlarse.

Reto 48 h — aplícalo mañana

Como Yacine, tome un archivo CSV real de su aplicación y divida sus líneas según el separador. Cargue una correspondencia clave → valor en una tabla asociativa y después controle y convierta los precios y las fechas antes de explotarlos. Agrupe por último una dirección completa en una estructura y anote en una frase las líneas que tuvo que rechazar, y por qué.

Lista de salida de la sección
  • Elijo entre tabla indexada y tabla asociativa según el acceso.
  • Sé definir y usar una estructura de datos relacionados.
  • Controlo las conversiones y las codificaciones antes de explotarlas.
Autoevaluación 1-5: ¿elijo el tipo adecuado sin dudar?Autoevaluación 1-5: ¿controlo antes de convertir?

Preguntas frecuentes

¿Cuándo usar una tabla asociativa en lugar de una tabla clásica?

Cuando debe recuperar un valor por una clave: un código de artículo, un código de cliente, un identificador. El acceso es directo, mientras que una tabla clásica obliga a recorrer los elementos. Con diez elementos la diferencia es invisible; con veinte mil líneas de import repetidas, se vuelve decisiva. La tabla clásica sigue siendo preferible cuando el orden importa o cuando se recorre sistemáticamente toda la colección.

¿Por qué las conversiones de tipos causan tantos errores?

Porque una conversión supone que el dato tiene el formato esperado, algo que rara vez está garantizado con una entrada o un archivo externo. Coma o punto decimal, fecha en formato día/mes o mes/día, espacios de miles, valor vacío: otros tantos casos que producen cero o un valor falso sin mensaje. La regla es simple: controlar antes de convertir y precisar el formato esperado.

Comprueba tu comprensión

¿Qué tipo elegir para recuperar una descripción a partir de un código de artículo?

Recursos adicionales (opcional, para ir más allá)

Examen del nivel 3Preguntas inéditas y más difíciles para validar tus conocimientos