¡Ya estamos en Twitter!

Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad

Estructura de Datos (Arrays Multidimensionales)

por monoswim

Introducción

Mediante el presente tutorial vamos a dar una introducción a lo que generalmente se conoce como estructuras de datos. Específicamente vamos a ver como armar una tabla de doble entrada, llamada también vector de vectores o array de arrays, siendo esta la estructura más simple que se puede armar.

Luego quedará a consideración de ustedes (y/o de futuros tutoriales) empezar a jugar con todas las variantes, como hacer hash de hashes, un array de hashes, etc.

Veremos esta estructura por dos razones básicas:

  1. Es la más simple y fácil de entender.
  2. Es una de las que más se usan, ya que tiene el mismo formato que una tabla de una base de datos.

1ro) ARMAR LAS FILAS

Lo primero que haremos es crear las filas que tendremos en nuestra estructura, de manera que tengamos un array por fila, en donde cada elemento del array será una celda de cada fila. Para que lo asocien a una base de datos podríamos decir que cada fila sería un registro de la base de datos.

my @clientes = ('Nombre','Apellido','Nacionalidad');
my @cliente1 = ('Esteban','Quintana','Argentina');
my @cliente2 = ('Uriel','Lizama','Mexico');

Acá vemos como en la primera fila colocamos los nombres de las distintas columnas, y luego en las filas sucesivas vamos cargando los datos. Este sería el vector horizontal de la estructura, ahora crearemos el vector vertical para tener la estructura armada.

2do) CREAR EL ARRAY DE ARRAYS

Como ya tenemos creados nuestros arrays, ahora lo que haremos es crear el array vertical que estará referenciado a cada uno de los arrays horizontales, de manera que se forme la tabla de doble entrada:

my @estructura = (\@clientes,\@cliente1,\@cliente2);

Nótese que estamos cargando todos los arrays del punto uno como referencias. Para hacer estructuras es impresindible el uso de las mismas.

3ro) LLAMAR A LOS DATOS

Ya tenemos todo listo, la estructura armada y cargada, solamente tenemos que llamar a los distintos datos que están depositados en la misma, para lo cual podemos hacer:

print "$estructura[1][1]";

Esta línea de código nos trae el dato "quintana", ya que como son arrays empiezan a contar desde 0, ahora bien, de esta manera tendríamos que crear una linea de código para cada uno de los datos de la estructura, por lo que para mostrar toda la tabla de manera más automática haremos:

print '<table border="1">';
foreach $x (0..@estructura-1){
print "<tr>\n";
foreach $y (0..@{$estructura[$x]}-1){
print "<td> $estructura[$x][$y] </td>\n";
}
print "</tr>\n\n";
}
print "</table>";

Esto nos traerá como resultado:

Nombre Apellido Nacionalidad
Esteban Quintana Argentina
Uriel Lizama Mexico

CÓDIGO FINAL

#!usr/bin/perl

use strict;

my @clientes = ('Nombre','Apellido','Nacionalidad');
my @cliente1 = ('Esteban','Quintana','Argentina');
my @cliente2 = ('Uriel','Lizama','Mexico');

my @estructura = (\@clientes,\@cliente1,\@cliente2);

print "Content-type: text/html\n\n";

my ($x,$y);
print '<table border="1">';
foreach $x (0..@estructura-1){
print "<tr>\n";
foreach $y (0..@{$estructura[$x]}-1){
print "<td> $estructura[$x][$y] </td>\n";
}
print "</tr>\n\n";
}
print "</table>";

exit(1);


CONCLUSIÓN

Perl es un lenguaje bastante flexible a la hora de permitirnos armar estructuras de datos, podemos crear estructuras de varias formas distintas, usando siempre las referencias correctas, para lo cual hay 2 puntos a tener en cuenta:

  1. Es muy común encontrarse con un mensaje como ARRAY[05465400654] esto significa que hemos hecho mal la referencia, ya que nos está dando la direccción de memoria en donde está el dato que queremos, en vez de darnos el dicho dato.
  2. Cuando hacemos un bucle como un foreach y evaluamos mal la referencia como el paso anterior puede que el bucle sea casi eterno, con lo cual tendremos que abortarlo si no bajaríamos el rendimiento del servidor. Preferentemente hagan estas cosas en sus casas y no en un hosting web.
¿Quiéres más tutoriales como este? Escribir tutoriales toma una gran cantidad de tiempo y esfuerzo. Si este tutorial te ayudó a aprender o a solucionar algo, por favor considera dejar alguna donación en apoyo a Perl en Español.

Cliquea en el botón de abajo para dejar tu donación por medio de PayPal.

Comparte:
Categorías de Tutoriales:
En Nuestros Foros:

    Software error:

    junk after document element at line 1, column 32, byte 32 at /usr/lib64/perl5/vendor_perl/XML/Parser.pm line 187.
    

    For help, please send mail to the webmaster ([email protected]), giving this error message and the time and date of the error.

  • Entra a los foros »
Socializa:
Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Perl en Español es mantenido con Movable Type
Todo el contenido de Perl en Español está bajo una licencia CC:
Creative Commons License