Está en la página 1de 20

FUNDAMENTOS DE ALGORITMOS

INF 1141

UNIDAD 5: ARREGLOS
BIDIMENSIONALES
l.griffiths.m@gmail.com
2 Semestre 2015

Fundamentos de Algoritmos

Qu aprenderemos hoy?
1. Qu es un arreglo bidimensional?
2. Cmo se declaran los arreglos bidimensionales en SL?
3. Cmo se indexan los elementos en un arreglo bidimensional?
4. Cules son las principales operaciones sobre arreglos bidimensionales y
cmo se programan?

Fundamentos de Algoritmos

Qu es un Arreglo Bidimensional?

ARREGLO
BIDIMENSIONAL (matriz)

Vector de vectores
Tiene 2 dimensiones : FILA
y COLUMNA

Filas

Fundamentos de Algoritmos

Conjunto finito de
elementos homogneos

10

11

12

13

14

15

16

17

18

19

20

Columnas

Se almacenan en
posiciones consecutivas
de memoria

Cmo se declara un
Arreglo Bidimensional en SL?

La notacin algortmica que utilizaremos para declarar una variable de tipo


matriz en SL es la siguiente:

<Nombre_Matriz> : matriz [DimFila, DimColumna] <tipo de dato>

EJEMPLOS

A: matriz [3,5] cadena


B: matriz [3,3] numerico

C: matriz [10,10] logico

Fundamentos de Algoritmos

Tamao de una Matriz


Tamao de una
matriz

Tamao fsico fila nf


Tamao fsico columna nc

11

12

13

Fundamentos de Algoritmos

Tamao lgico fila mf


Tamao lgico columna mc

Tamao fsico FILA = 4


Tamao fsico COLUMNA = 5
Tamao lgico FILA = 3
Tamao lgico COLUMNA = 3

mf<=nf
y
mc<=nc

Indexacin de
Arreglos Bidimensionales en SL

Mecanismo mediante el cual se puede acceder al elemento almacenado en


cada posicin de la matriz. En SL la indexacin es en base 1 .

Para acceder a cada elemento de la matriz se necesitan 2 ndices : un ndice


FILA y un ndice COLUMNA

filas

Fundamentos de Algoritmos

10

11

12

13

14

15

16

17

18

19

20

columnas

Operaciones sobre Arreglos Bidimensionales

OPERACIONES BSICAS
1. Asignar un valor a una posicin (fila,columna) de la matriz.
2. Leer un valor y almacenarlo en una posicin (fila,columna) de la matriz
3. Escribir el contenido de una posicin (fila,columna) de la matriz
OTRAS
Recorrido, Insercin, eliminacin, bsqueda, ordenamiento.

Fundamentos de Algoritmos

Asignar un valor a una posicin (fila , columna)


de la matriz

<Nombre_Matriz> [indice_fila, indice_columna]=Valor


EJEMPLOS

A [2 , 4]=5
B[i , j]=10

Fundamentos de Algoritmos

Leer un valor y almacenarlo en una posicin


(fila , columna) de la matriz

leer (<Nombre _Matriz> [indice_fila, indice_columna])


EJEMPLOS

leer (numero [2, 4])


leer(A[i,j])

Fundamentos de Algoritmos

Escribir el contenido de una posicin


(fila , columna) de la matriz

imprimir (<Nombre _Matriz> [indice_fila, indice_columna])


EJEMPLOS

imprimir(la cantidad es: , A[i, j])


imprimir(la cantidad es: , B[1,1])

Fundamentos de Algoritmos

Matrices Recorrido para Poblar

Poblar por filas

Poblar por columnas

Fundamentos de Algoritmos

desde i = 1 hasta DimFila


{
imprimir (\ndatos fila ,i,\n)
desde j = 1 hasta DimCol
{
imprimir(\ndato posicin ,i, ,j, = )
leer (nota [i, j])
}
}
desde i = 1 hasta DimCol
{
imprimir (\ndatos columna ,i,\n)
desde j = 1 hasta DimFila
{
imprimir (\ndato posicin ,j, ,i, = )
leer (nota [j, i])
}
}

EJERCICIO # 1

1.

Escriba un programa que permita poblar una matriz de enteros de orden


3x3, la muestre por pantalla y sume sus elementos. Use subrutinas.

programa ej1mat
var MATRIZ:matriz [3,3] numerico
suma:numerico
inicio
cls()
PoblarMatriz(MATRIZ,3,3)
MostrarMatriz(MATRIZ,3,3)
suma=SumarElementos (MATRIZ,3,3)
imprimir("La suma de los elementos de la matriz es ",suma,"\n")
fin

Fundamentos de Algoritmos

sub PoblarMatriz(ref M:matriz [3,3] numerico;DimFila,DimCol:numerico)


var i,j:numerico
inicio
desde i=1 hasta DimFila
{
desde j=1 hasta DimCol
{
imprimir("Ingrese elemento matriz posicin ",i,",",j," : ")
leer(M[i,j])
}
}
fin

Fundamentos de Algoritmos

sub MostrarMatriz(M:matriz [3,3] numerico ; DimFila,DimCol:numerico)


var i,j:numerico
inicio
imprimir("MATRIZ\n")
desde i=1 hasta DimFila
{
desde j=1 hasta DimCol
{
imprimir(M[i,j]," ")
}
imprimir("\n")
}
fin

Fundamentos de Algoritmos

sub SumarElementos(M:matriz[3,3] numerico;DimFila,DimCol:numerico) retorna numerico


var i,j,suma:numerico
inicio
suma=0
desde i=1 hasta DimFila
{
desde j=1 hasta DimCol
{
suma=suma+M[i,j]
}
}
retorna suma
fin

Fundamentos de Algoritmos

EJERCICIO # 2
2.

Escriba un programa que permita poblar una matriz de enteros de orden


5x5, la muestre por pantalla y sume los elementos de su diagonal principal.
Use subrutinas.

programa ej2mat
var MATRIZ:matriz [5,5] numerico
SumaDiag:numerico
inicio
cls()
PoblarMatriz(MATRIZ,5,5)
MostrarMatriz(MATRIZ,5,5)
SumaDiag=SumaElementosDiagonalMatriz(MATRIZ,5,5)
imprimir("La suma de los elementos de la diagonal de la matriz es ",
SumaDiag,"\n")
fin

Fundamentos de Algoritmos

sub PoblarMatriz(ref M:matriz [5,5] numerico;DimFila,DimCol:numerico)


var i,j:numerico
inicio
desde i=1 hasta DimFila
{
desde j=1 hasta DimCol
{
imprimir("Ingrese elemento matriz posicin ",i,",",j," : ")
leer(M[i,j])
}
}
fin

Fundamentos de Algoritmos

sub MostrarMatriz(M:matriz [5,5] numerico ; DimFila,DimCol:numerico)


var i,j:numerico
inicio
imprimir("MATRIZ\n")
desde i=1 hasta DimFila
{
desde j=1 hasta DimCol
{
imprimir(M[i,j]," ")
}
imprimir("\n")
}
fin

Fundamentos de Algoritmos

sub SumaElementosDiagonalMatriz(M:matriz[5,5]numerico;DimFila,DimCol:numerico) retorna numerico


var i,j,suma:numerico
inicio
suma=0
desde i=1 hasta DimFila
{
desde j=1 hasta DimCol
{
si (i==j)
{
suma=suma+M[i,j]
}
}
}
retorna suma
fin
sub SumaElementosDiagonalMatriz(M:matriz[5,5]numerico;DimFila,DimCol:numerico) retorna numerico
var i,j,suma:numerico
inicio
suma=0
desde i=1 hasta DimFila
{
suma=suma+M[i,i]
}
retorna suma
fin

Fundamentos de Algoritmos

EJERCICIOS PROPUESTOS

3.

Escriba un programa que permita poblar una matriz de enteros de orden


5x5, la muestre por pantalla y la rote 90 hacia la derecha.

4.

Escriba un programa que permita poblar una matriz de enteros de orden


5x5, la muestre por pantalla y la rote 90 hacia la izquierda.

5.

Escriba un programa que permita poblar una matriz de enteros de orden


5x5, la muestre por pantalla y la rote sobre la diagonal principal.

Fundamentos de Algoritmos