Unidad V: Arreglos Bidimensionales

Anuncio
UNIDAD V:
ARREGLOS BIDIMENSIONALES
Unidad V: Arreglos Bidimensionales
UNIDAD V: ARREGLOS BIDIMENSIONALES
1.1
GENERALIDADES:
Las matrices son una colección finita, homogénea y ordenada de datos. Su información está
organizada en forma de tablas; es decir, los elementos que la conforman están dispuestos bajo
dos conceptos de clasificación (fila y columna). Para poder indicar el lugar donde se encuentra
un determinado elemento, es necesario utilizar dos índices: uno para indicar el renglón o fila y
otro para indicar la columna.
Puede mirarse una matriz como un vector de vectores; por lo tanto, es un conjunto de
componentes en el que se necesitan dos subíndices para identificar un elemento que
pertenezca al arreglo.
Un arreglo bidimensional N * M tiene N filas y M columnas; por lo tanto, tiene N * M elementos
dispuestos interiormente en memoria en forma sucesiva. Un array de dos dimensiones
equivale a una tabla de múltiples filas y múltiples columnas.
Gráficamente se puede representar como una tabla de valores.
Estructura de un array de dos dimensiones.
Si las filas se etiquetan de 0 a m y las columnas de 0 a n, el número de elementos que tendrá el
array será el resultado del producto N * M. El sistema para localizar un elemento será por las
coordenadas representadas por el número de fila y su número de columna (fila, columna).
1.2
DECLARACIÓN DE ARRAYS BIDIMENSIONALES
El espacio que los arreglos ocupan en memoria se reserva en el momento de realizar la
declaración de los mismos.
La sintaxis para la declaración de un array de dos dimensiones es:
Dimension nombre_arreglo[numero_filas,numero_columnas];
Ejemplos de declaración de arreglos bidimensionales:
Definir matriz_ejemplo como Entero;
Dimension matriz_ejemplo[3,2]; //Matriz de 3 filas y 2 columnas que puede almacenar 6 elementos
2
Unidad V: Arreglos Bidimensionales
1.3
INICIALIZACIÓN DE UN ARRAY:
Se deben asignar valores a los elementos del arreglo antes de utilizarlos, tal como se asignan
valores a variables. Para asignar valores a cada elemento del arreglo de enteros
“matriz_ejemplo”, se puede escribir:
matriz_ejemplo [0,0] <- 15;
matriz_ejemplo [0,1] <- 25;
matriz_ejemplo [1,0] <- 30;
matriz_ejemplo [1,1] <- 35;
matriz_ejemplo [2,0] <- 8;
matriz_ejemplo [2,1] <- 5;
Ejemplo #1: Pseudocódigo para inicializar un arreglo de 3 filas y 4 columnas a 1.
Solución #1:
Proceso inicializar_bidi
Definir matriz_ejemplo,fila,columna como entero;
Dimension matriz_ejemplo[3,4];
Para fila<-0 Hasta 2 Con Paso 1 Hacer
Para columna<-0 Hasta 3 Con Paso 1 Hacer
matriz_ejemplo[fila,columna] <- 1;
Escribir Sin Saltar matriz_ejemplo[fila,columna]," ";
FinPara
Escribir " ";
FinPara
FinProceso
1.4
OPERACIONES QUE SE PUEDEN REALIZAR EN UNA MATRIZ:
Se puede acceder a los elementos de arrays multidimensionales de igual forma que a los
elementos de un array unidimensional. La diferencia reside en que en los elementos
bidimensionales deben especificarse los índices de la fila y la columna.
El formato general para asignación directa de valores a los elementos es:
•
Inserción de elementos:
<Nombre array> [índice_fila,índice_columna] = valor elemento;
•
Extracción de elementos:
<Variable> = <nombre array>[índice_fila,índice_columna];
3
Unidad V: Arreglos Bidimensionales
Ejemplo 2: Algoritmo que encuentre e imprima la transpuesta de una matriz. La transpuesta
de una matriz se obtiene al escribir las filas de la matriz como columnas y las columnas como
filas.
Proceso Matriz_transpuesta
Definir MAT,TMAT,nFilas,nColumnas,fila,columna como entero;
Escribir 'Numero de filas de la matriz ';
Leer nFilas;
nColumnas<-nFilas;
Dimension MAT[nFilas,nColumnas]; //Matriz Original
Dimension TMAT[nColumnas,nFilas]; //Almacenara la matriz transpuesta
//Se piden los datos de la matriz
Para fila <-0 Hasta nFilas-1 Con Paso 1 Hacer
Para columna <-0 Hasta nColumnas-1 Con Paso 1 Hacer
Escribir 'Ingrese el elemento [', fila, ', ', columna, '] ' ;
Leer MAT[fila, columna]; //se almacena el elemento
TMAT[columna,fila]<-MAT[fila,columna]; //Se copia el elemento
FinPara
FinPara
Escribir "MATRIZ TRANSPUESTA";
Para fila<-0 Hasta nFilas-1 Con Paso 1 Hacer
Para columna<-0 Hasta nColumnas-1 Con Paso 1 Hacer
Escribir Sin Saltar TMAT[fila,columna]," ";
FinPara
Escribir "";
FinPara
FinProceso
Ejemplo 3: Escribir un pseudocódigo que lea un array de N*M elementos y que guarde 0
en las posiciones pares y 1 en las posiciones impares. Imprimir el array resultante.
Proceso ubicar_posiciones
Definir matriz_ejemplo,fila,columna,indice como Entero;
Dimension matriz_ejemplo[3,4];
Para fila<-0 Hasta 2 Con Paso 1 Hacer
Para columna<-0 Hasta 3 Con Paso 1 Hacer
indice<-fila+columna;
Si indice MOD 2 = 0 Entonces
matriz_ejemplo[fila,columna] <- 0;
Sino
matriz_ejemplo[fila,columna] <- 1;
FinSi
Escribir Sin Saltar matriz_ejemplo[fila,columna]," ";
FinPara
Escribir "";
FinPara
FinProceso
4
Unidad V: Arreglos Bidimensionales
Ejemplo #4: Pseudocódigo que imprime la suma de cada una de las filas de una matriz
bidimensional N*M.
Solución #4:
Proceso suma_filas
Definir a,sumafil Como Real;
Definir fil,col,f,c Como Entero;
Repetir
Escribir "NUMERO DE FILAS: ";
Leer fil;
Hasta Que fil>0 O fil>=1
Repetir
Escribir "NUMERO DE COLUMNAS: ";
Leer col;
Hasta Que col>0 O col>=1
Dimension a[fil,col]; // Declaración de la matriz
//Lectura de los datos de la matriz
Escribir "**Introduzca los datos de la matriz**";
Para f<-0 Hasta fil-1 Hacer
Para c<-0 Hasta col-1 Hacer
Escribir "Elemento[",f,"][",c,"]:";
Leer a[f,c];
FinPara
FinPara
//Escribir la suma de cada fila
Para f<-0 Hasta fil-1 Hacer
sumafil=0;
Para c<-0 Hasta col-1 Hacer
sumafil <- sumafil + a[f,c];
FinPara
Escribir "La suma de la fila ",f,"= ",sumafil;
FinPara
Finproceso
5
Unidad V: Arreglos Bidimensionales
Ejemplo #5: Pseudocódigo que lea una matriz de N filas y N columnas y que almacene
en la diagonal principal unos y en las demás posiciones ceros.
Solución #5:
Proceso diagonal
Definir matriz,f,c como Entero;
Dimension matriz[3,3];
Para f<-0 Hasta 2 Hacer
Para c<-0 Hasta 2 Hacer
Si f = c Entonces
matriz[f,c] <- 1;
Sino
matriz[f,c] <- 0;
FinSi
Escribir Sin Saltar matriz[f,c]," ";
FinPara
Escribir "";
FinPara
FinProceso
6
Unidad V: Arreglos Bidimensionales
EJERCICIOS PROPUESTOS:
Autoevaluación:
1.Según lo explicado, cuales son para usted las ventajas de utilizar arreglos
2.¿Cuál es la sintaxis de declaración de un arreglo?
3.¿Qué hace el compilador cuando se declara un arreglo?
4.Explique, ¿qué es un índice?
5.De acuerdo al siguiente trozo de código, diga si se produce o no un error y porque.
Dimension arreglo[5];
arreglo[13]<-3;
6.De acuerdo al siguiente trozo de código, diga si se produce o no un error y si lo se
produce diga cuál es la solución.
Dimension arreglo1[5];
Dimension arreglo2[5];
// ...
arreglo2 <- arreglo1;
7.- Pseudocódigo un array de N * M indicando que una empresa tiene N vendedores cada uno
de los cuales vende 5 productos. El array almacena los ingresos obtenidos por cada vendedor en
cada producto, imprimir el total de cada vendedor y obtener los ingresos totales de la tienda.
8.- Pseudocódigo que permita calcular la suma de los elementos de la diagonal principal de una
matriz (N*N), el producto de los elementos de la diagonal secundaria.
9.- Pseudocódigo que rellene automáticamente una matriz N*M con la suma de sus índices (Es
decir, el elemento a[1][1] = 1+1=2, a[3][2] = 3+2=5). El algoritmo mostrará la matriz resultante
por pantalla.
7
Descargar