Introducción a la programación

Tenemos otra estructura, fuertemente basada en la idea matemática de matriz, y que tiene el mismo nombre: matriz (o "array", para quien le guste más el inglés). Una matriz representa la idea de "tabla": una disposición de la información en forma de filas y columnas. Por ejemplo:

[     3   -4.5    0.1   ]
[   4.1    2      -1    ]

En este ejemplo tenemos una matriz formada por dos filas y tres columnas. El elemento de la posición (2,3) (fila 2, columna 3) es el -1.

Podemos entender las matrices como vectores cuyas componentes son vectores. De hecho, en casi todos los lenguajes de programación, esto es así. Según este punto de vista, la matriz del primer ejemplo es un vector de dos elementos: el primero, el vector [ 3 -4.5 0.1 ], y el segundo, el vector [ 4.1 2 -1 ].

Para declarar una variable de tipo matriz escribiremos:

m: Array[1..N,1..M] de Tipo;

siendo N el número de filas que tendrá la matriz, y M el número de columnas. Para referirnos a la posición (i,j), usaremos la nomeclatura m[i,j]. Por ejemplo:

m: Array[1..3,1..5] de Entero;

m[2,3] <- 4;
m[1,5] <- -2;

No perder de vista la declaración de una matriz: puede contener elementos de cualquier tipo. Enteros, reales, cadenas de caracteres, o tipos definidos por el usuario (estos los estudiamos en el capítulo siguiente).

Recorrer los elementos de una matriz requiere de un bucle dentro de otro bucle. ¿Por qué? Pues porque, para cada fila que recorramos, tendremos que recorrer cada elemento de las columnas. Así, empezaremos entrando en la fila 1, y dentro de la fila 1 recorreremos los elementos 1 a M de que constan las columnas. Hecho esto, pasamos a la fila 2, y dentro de la fila 2 volvemos a recorrer los elementos 1 a M de las columnas. Siguiendo este proceso, acabaremos recorriendo todos los elementos de la matriz.

Por ejemplo, para sumar dos matrices (en el sentido matemático, teniendo en cuenta que entonces serán de tipo numérico), tendremos que ir elemento a elemento sumando los valores que se encuentren en las posiciones (i,j). Es obvio que la suma de dos matrices sólo tiene sentido cuando las matrices a sumar tienen el mismo número de filas y de columnas.

Una algoritmo sencillo para sumar dos matrices, almacenando su suma en una tercera, sería:

 desde i <- 1 hasta i = N hacer
   desde j <- 1 hasta j = M hacer
     C[i,j] <- A[i,j] + B[i,j];
   fin desde
 fin desde

Análogamente realizaríamos la resta.

Tenemos una clara aplicación de las matrices en el mundo de la programación gráfica. Las transformaciones de los puntos pueden representarse en términos de unas ciertas matrices, y obtener la transformación de un punto (una rotación, una traslación o un cambio de escala) consiste sencillamente en multiplicar las coordenadas del punto por la matriz correspondiente.

COMPARTE ESTE ARTÍCULO

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
SIGUIENTE ARTÍCULO

HAY 2 COMENTARIOS
  • Anónimo dijo:

    Muy pero Muy interesante el articulo, solo que tengo una critica. Explican todo muy bien, pero donde se supone que tenemos que hacer los ejercisios, en que programa!!! en un notepad?? en un Word¡?¡ en un Exel?? en Dreamweaver?, en una hoja?? Aguardo su respuesta!! Gracias.

  • [email protected] dijo:

    En fortran !Ordenacionde vectores por el metodo de la Burbuja Program Ordena_burbuja integer,dimension(100)::x integer::i,j,k,n integer::temp print*,"Ingrese la cantidad de datos al vector" read*,n print*,"Ingrese datos al vector" read*,(x(i),i=1,n) print* !usando el algoritmo de ordenacion por la burbuja Do i=1,n-1 Do j=1,n-1 if (x(j)>x(j+1)) then temp=x(j) x(j)=x(j+1) x(j+1)=temp end if end do end do Print*,"Vector ordenado" Print*,(x(k),k=1,n) end program ordena_burbuja !Ordenacionde vectores por el metodo de seleccion Program Ordena integer,dimension(100)::x integer::i,j,min,n integer::temp print*,"Ingrese la cantidad de datos al vector" read*,n print*,"Ingrese datos al vector" read*,(x(i),i=1,n) print* !usando el algoritmo de ordenacion por seleccion Do i=1,n-1 min=i Do j=i+1,n if (x(j)<x(min)) then min=j end if temp=x(i) x(i)=x(min) x(min)=temp end do end do Print*,"Vector ordenado" Print*,(x(i),i=1,n) end program ordena atte William

Conéctate o Regístrate para dejar tu comentario.