Articulos Politicos mas Recientes:
08/06/2019 Mc Pato SS y agujeros enormes(por Enrique G. Avogadro) :::

25/05/2019 Mundos raros y curiosos olvidos (por Enrique G. Avogadro) :::

17/05/2019 Truco fallido (por Enrique G. Avogadro)

.. ..
Entrá al fascinante mundo de los médicos, conoce como hacen tus controles de Salud
Clinica de Apnea y Ronquido
Columnistas Destacados

PERL

Conociendo matrices (arrays)

 

by alfi

 

El conocimiento de matrices en cualquier lenguaje de programación es de suma utilidad.

Las matrices o Arrays son grupos de datos acumulados en una simple variable.

En tanto que las variables llamadas scalar (son scalar aquellas que empiezan con $, ejemplo $valor), sólo pueden almacenar un solo valor, las matrices (son matrices las que empiezan con @, ejemplo @valor) pueden almacenar muchos.

 

Un ejemplo de matriz simple, es la que contiene los dias de la semana:

@days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");

Fijese que cada dia de la semana esta entrecomillado y separado del siguiente con una coma.


#!/usr/bin/perl

@days = ("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");

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

print "These are the days of the week: ";
print "@days";


Usando comillas, los scripts traspasan la información y los contenidos de una matriz son impresos con un espacio entre cada uno de ellos.

Sin embargo, a veces resulta util que los elementos de una matriz no esten delimitados por comillas, en cuyo caso deberemos eliminarlas usando el argumento qw.

 

@days = qw(Monday Tuesday Wednesday Thursday Friday Saturday Sunday);

 

En esta linea, los elementos de la matriz no tienen ni entrecomillado(") ni comas (,)

Sus elementos están separados por espacios

 

Las matrices son capaces de contener otras variables como scalars ($) y otras matrices (@)

 

Al igual que Visual Basic y JavaScript entre otros lenguajes, PERL en sus matrices comienza a numerar los elementos desde el cero 0, en lugar de 1.

Una matriz de diez elementos, tendrá numerados sus elementos asi: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Si vemos cuidadosamente al empezar desde el cero, los diez elementos finalizan en el 9 !!!

 

Si continuamos con la matriz de los dias @days, para imprimir el cuarto elemento debemos hacer lo siguiente:

 

print "El valor del cuarto elemento de la matriz es $days[3]";

 

Nótese que se generó un concepto nuevo $days[3]

Cada elemento de la matriz se puede analizar por separado usando el mismo nombre de la matriz, pero con el signo $ delante en lugar del signo @. Asi de este modo, haremos referencia solo y exclusivamente a un elemento de esa matriz cuyo nombre es igual al de la variable scalar que estamos escribiendo.

Por otra parte, para hacer referencia al cuarto elemento de la matriz @days, deberemos escribir $days[3] ya que el primer elemento es el $days[0] !!!

 

Los siete elementos de la matriz son entonces:

$days[0] = "Monday";
$days[1] = "Tuesday";
$days[2] = "Wednesday";
$days[3] = "Thursday";
$days[4] = "Friday";
$days[5] = "Saturday";
$days[6] = "Sunday";

 

Si quisieramos saber el numero de elementos de una matriz y asignarlo a una variable scalar, es facil hacerlo, en el caso de la matriz @days el numero de elementos se analiza asi:

 

$days = @days; ## esto nos dice el indice del último elemento

Pero para conocer la cantidad de elementos exacta deberemos agregar 1 ya que el primer indice es igual a cero

$days = @days+1;

 

Ahora una curiosidad, que sucedería si en lugar de escribir $days[3], con lo cual ya sabemos que obtendremos el cuarto elemento de la matriz el cual es THURSDAY, escribimos esto otro:

 

$days[-4];

 

PERL, comenzará a contar cuatro elementos desde el final, con lo cual en este ejemplo de @days, obtendremos tambien THURSDAY

Por lo tanto el último elemento de una matriz es -1

 

Otras curiosidades, por ejemplo usted quiere conocer el primer elemento de una matriz y asignarlo a una variable scalar ($)

($result)=@days;

Naturalmente tambien podemos hacer $result = $days[0];

 

Si queremos asignar los dos primeros elementos de una matriz a variables de tipo scalar podemos hacer:

($result1,$result2)=@days;

También en este caso podemos hacer $result1 = $days[0]; $result2 = $days[1];

 

 

OPERACIONES DE ADICION DE ELEMENTOS EN UNA MATRIZ

Para copiar una matriz en otra es tan facil como hacer la asignación:

@array1 = @array2;

 

Para agregar un nuevo valor al comienzo de una matriz, usaremos el comando UNSHIFT

$elemento="nuevo_elemento";

unshift(@array,$elemento);

 

Pero también el mismo efecto se obtiene haciendo lo siguiente:

$elemento="nuevo_elemento";

@array=($elemento,@array);

 

Para agregar un nuevo valor al final de la matriz haremos lo siguiente:

(@array,newelement);
@array=(@array,newelement);

 

Si queremos combinar dos matrices en una nueva, haremos lo más simple:

@newarray=(@firstarray,@secondarray);

 

 

 

OPERACIONES DE SUSTRACCIÓN DE ELEMENTOS EN UNA MATRIZ

 

Para eliminar el primer elemento de una matriz haremos lo siguiente:

$result=shift(@array);

Hemos removido de la matriz el primer elemento y lo hemos guardado en una variable scalar.


Para eliminar el último elemento de una matriz:

$result=pop(@array);

 

OPERACION DE REEMPLAZO DE UN ELEMENTO DE LA MATRIZ

 

Para reemplazar un elemento de la matriz haremos


$array[3]=$newelement;

En éste caso hemos reemplazado el tercer elemento de la matriz con el valor de la variable scalar $newelement

 

ORDENAMIENTO DE LOS ELEMENTOS DE UNA MATRIZ

Para ordenar una matriz en orden alfabético (según el codigo ASCII):
@array=sort(@array);

 

Para ordenarla en sentido inverso del alfabeto, es un poco más complejo:

sort {$b cmp $a} (@array);

 

Para ordenar una matriz en orden numérico ascendente:
sort {$a <=> $b} (@array);

 

Para ordenar una matriz en orden numerico descendente:
sort {$b <=> $a} (@array);

 

Para imprimir una matriz ordenadamente sin alterar la matriz original:
print sort(@array);

 

Para revertir el orden de los elementos de una matriz, poniendo el último en primer lugar y asi sucesivamente:
reverse (@array);

 

ACCESO MULTIPLE: dos o más elementos de una matriz son accedidos simultáneamente

@values = @array[0,3,4];

 

Fijese que el valor se acumula en una matriz, ya que es más de un solo dato, si pusieramos una variable tipo scalar, solo almacenaria el primer dato de todos los seleccionados.

En la nueva matriz los elementos estarán indexados ordenadamente y no como ocurre en el ejemplo 0,3,4

Pero si queremos generar una matriz donde los elementos traspasados estén ordenados igual a como lo estaban en la matriz original, deberemos hacer:

@values[0,3,4] = @days[0,3,4];

 

Otra manera es:

@array[0,3,4] = ("Hello","Out","There");

 

COMENTAR ESTE ARTICULO
Su Nombre
Su email
Comentario
 
(El comentario será evaluado previo a ser publicado en la página con su nombre + email) Las respuestas, aparecerán en la página consultada
Enviar Mensajes Públicos Enviar Mensajes Públicos
Articulos más leidos
: : : TORAX OSEO
: : : ETMOIDES, ESFENOIDES, PARIETALES, OCCIPITAL
: : : Arteria Aorta y sus ramas
: : : Nutricion, Energia y Metabolismo
: : : ARTICULACIONES
: : : Arteria Aorta y sus ramas
: : : GENERALIDADES DE MUSCULOS. MUSCULOS DE LA CABEZA
: : : MIEMBRO SUPERIOR OSEO
: : : Trabajo Practico Nº2 d
: : : Aparato Digestivo II
: : : MUSCULOS DEL TÓRAX, LA PELVIS, MIEMBROS SUPERIOR E INFERIOR
: : : Trabajo Practico Nº2 d
: : : Sistema Nervioso
: : : HUESOS DEL CRANEO: Temporal
: : : La célula
: : : MUSCULOS DEL CUELLO
: : : Trabajo Practico Nº2 a
: : : Trabajo Practico Nº1
: : : COLUMNA VERTEBRAL
: : : CINTURAS PELVIANA Y ESCAPULAR
: : : MIEMBRO INFERIOR
: : : Aparato Digestivo
: : : Aparato Digestivo
: : : Huesos de la CARA
: : : Aparato digestivo
: : : La piel - Esqueleto Oseo, Cráneo: el Frontal
: : : Trabajo Practico Nº2 a
: : : Cuál es tu dosha ? (Ayurveda)
: : : Tabla de indice glicemico
: : : Consecuencias de la alimentación inadecuada
: : : Cirugia adenoidea (de las vegetaciones adenoides)
: : : Nervio olfatorio I primer par craneal
: : : Vértigo y enfermedad de meniere
: : : Cirugia de amigdalas
: : : Sindrome y Cefalea Tensional
: : : SERC betahistina
: : : Abceso o flemón periamigdalino
: : : Adenoidectomía en paciente con Hemopatía de VON WILLEBRAND
: : : Sindrome de Samter
: : : Hipoacusia Súbita
: : : Nervio optico, el segundo par craneal
: : : Sindrome de Beckwith Wiedemann
: : : Amigdalas (palatinas)
: : : Adenoides o crecimiento de tejido linfoideo detras de la nariz
: : : Argentina es el Tercer Mundo con gente bien vestida y rostro bonito
: : : Test de lesbianismo
: : : Principios básicos de electricidad
: : : La comunicación
: : :
Alfinal.com no se responsabiliza por el contenido de los artículos publicados.
Si el contenido de algun artículo ofende a terceros, comuniquelo a Alfinal.com
www.alfinal.com - Todos los derechos reservados 2012