Вы находитесь на странице: 1из 6

by alfi El conocimiento de matrices en cualquier lenguaje de programacin 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), slo 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 informacin 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 estn 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]"; Ntese 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 sucedera 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; Tambin 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 asignacin: @array1 = @array2; Para agregar un nuevo valor al comienzo de una matriz, usaremos el comando UNSHIFT $elemento="nuevo_elemento"; unshift(@array,$elemento); Pero tambin 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 ms simple: @newarray=(@firstarray,@secondarray);

OPERACIONES DE SUSTRACCIN 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 alfabtico (segn el codigo ASCII): @array=sort(@array); Para ordenarla en sentido inverso del alfabeto, es un poco ms complejo: sort {$b cmp $a} (@array); Para ordenar una matriz en orden numrico 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 ms elementos de una matriz son accedidos simultneamente @values = @array[0,3,4]; Fijese que el valor se acumula en una matriz, ya que es ms 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 estarn indexados ordenadamente y no como ocurre en el ejemplo 0,3,4 Pero si queremos generar una matriz donde los elementos traspasados estn 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");

PERLSCRIPT UNIDAD 3: ARREGLOS TEMA 2: ARREGLOS EN PERL En programacion tradicional siempre se manejan dos tipos de arreglos los arreglos tipo listas, vectores o unidimensionales y los arreglos tipo tablas, cuadros, concentrados, matrices o bidimensionales en ambos casos son variables que permiten almacenar un conjunto de datos del mismo tipo a la vez, su diferencia es en la cantidad de columnas que cada uno de estos tipos contiene, como en los siguientes ejemplos; ARREGLOS TIPO LISTA Juan Pedro > Nombres[1] Jose Ana > Nombres[3] Carmen 18 > Edad[0] 20 25 30 > Edad[3] ARREGLOS TIPO TABLAS CIA ACME ING MENS VTAS (MILES DE $) ENE FEB MAR ABR MAY SUC A 10 12 15 10 9 SUC B 8 7 5 9 6 SUC C 11 18 20 14 17 INST TECN DE TIJUANA CONCENTRADO DE CALIF

MAT FIS QUIM HIST JUAN 5 5 5 5 JOSE 4 4 4 4 PEDRO 3 3 3 3 ANA 9 9 9 9 Como se observa la diferencia principal entre un arreglo tipo lista y un arreglo tipo tabla son las cantidades de columnas que contienen. Sin embargo es de hacer notar que en perl solo existe el arreglo tipo lista pero tiene un segundo tipo de lista llamada lista asociativa. NOTA IMPORTANTE.- LOS CONCEPTOS MANEJADOS AQUI ESTAN ENFOCADOS A LOS SISTEMAS DE INFORMACION CONTABLE-ADMINISTRATIVOS. EN ALGEBRA MATRICIAL, SI SON IMPORTANTES LOS CONCEPTOS DE VECTORES Y MATRICES, PERO LAS OPERACIONES Y METODOS SON PRECISAMENTE LOS DEL ALGEBRA MATRICIAL.