20
1 Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se puede acceder directamente por el nombre de la variable matriz seguido de uno o más subíndices encerrados entre paréntesis La representación de las matrices se hace mediante variables suscritas o de subíndices y puede tener una o varias dimensiones (subíndices)

Matrices

Embed Size (px)

DESCRIPTION

Matrices. Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se puede acceder directamente por el nombre de la variable matriz seguido de uno o más subíndices encerrados entre paréntesis - PowerPoint PPT Presentation

Citation preview

Page 1: Matrices

1

MatricesMatrices• Es una estructura homogénea, compuesta

por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria

• A cada elemento se puede acceder directamente por el nombre de la variable matriz seguido de uno o más subíndices encerrados entre paréntesis

• La representación de las matrices se hace mediante variables suscritas o de subíndices y puede tener una o varias dimensiones (subíndices)

• Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria

• A cada elemento se puede acceder directamente por el nombre de la variable matriz seguido de uno o más subíndices encerrados entre paréntesis

• La representación de las matrices se hace mediante variables suscritas o de subíndices y puede tener una o varias dimensiones (subíndices)

Page 2: Matrices

2

• Supongamos que tenemos una matriz unidimensional de enteros llamada M, la cual contiene 10 elementos

• Los subíndices son enteros consecutivos y que el primer subíndice vale 0. Un subíndice puede ser cualquier expresión entera positiva

• Una matriz de dos dimensiones se representa mediante una variable con dos subíndices (fila, columna); una de tres dimensiones se representa mediante una variable con tres subíndices, etc.

• El número máximo de dimensiones está limitado a 60 y el número máximo de elementos depende de la memoria disponible

• Supongamos que tenemos una matriz unidimensional de enteros llamada M, la cual contiene 10 elementos

• Los subíndices son enteros consecutivos y que el primer subíndice vale 0. Un subíndice puede ser cualquier expresión entera positiva

• Una matriz de dos dimensiones se representa mediante una variable con dos subíndices (fila, columna); una de tres dimensiones se representa mediante una variable con tres subíndices, etc.

• El número máximo de dimensiones está limitado a 60 y el número máximo de elementos depende de la memoria disponible

M(0)M(0) M(1)M(1) M(2)M(2) M(3)M(3) M(4)M(4) M(5)M(5) M(6)M(6) M(7)M(7) M(8)M(8) M(9)M(9)

Matriz MMatriz M

Page 3: Matrices

3

Matrices numéricas unidimensionalesMatrices numéricas unidimensionales• Para crear y utilizar una matriz hay

que realizar tres operaciones: declararla, crearla e iniciarla

• Declarar una matriz:Dim nombre() As TipoDonde tipo indica el tipo de los elementos

de la matriz; y nombre es un identificador que nombra a la matriz

• Ejemplos:Dim m() As IntegerDim temperatura() As Single

• Para crear y utilizar una matriz hay que realizar tres operaciones: declararla, crearla e iniciarla

• Declarar una matriz:Dim nombre() As TipoDonde tipo indica el tipo de los elementos

de la matriz; y nombre es un identificador que nombra a la matriz

• Ejemplos:Dim m() As IntegerDim temperatura() As Single

Page 4: Matrices

4

• Crear una matriz. Significa reservar la cantidad de memoria necesaria para contener todos sus elementos y asignar al nombre de la matriz una referencia a ese bloqueNombre = New tipo(ind_sup) {}Donde nombre es el nombre de la matriz

previamente declarada; tipo es el tipo de los elementos de la matriz; e ind_sup es una expresión entera positiva menor o igual que la precisión de un Long, que especifica el índice superior de la matriz y coincide con el número de elementos de la matriz menos uno

• Ejemplos:M = New Integer(9) {}Temperatura = New Single(30) {}

• Crear una matriz. Significa reservar la cantidad de memoria necesaria para contener todos sus elementos y asignar al nombre de la matriz una referencia a ese bloqueNombre = New tipo(ind_sup) {}Donde nombre es el nombre de la matriz

previamente declarada; tipo es el tipo de los elementos de la matriz; e ind_sup es una expresión entera positiva menor o igual que la precisión de un Long, que especifica el índice superior de la matriz y coincide con el número de elementos de la matriz menos uno

• Ejemplos:M = New Integer(9) {}Temperatura = New Single(30) {}

Page 5: Matrices

5

• Es bastante común declarar y crear la matriz utilizando una sola sentenciaDim nombre() As tipo = New tipo(ind_sup) {}

• Ejemplos:Dim m() As Integer = New Integer(9) {}Dim Temperatura() As Single = New Single(30)

{}

• También es bastante común declarar y crear una matriz utilizando la forma abreviadaDim nombre(ind_sup) As tipo

• Ejemplos:Dim m(9) As IntegerDim Temperatura(30) As Single

• Es bastante común declarar y crear la matriz utilizando una sola sentenciaDim nombre() As tipo = New tipo(ind_sup) {}

• Ejemplos:Dim m() As Integer = New Integer(9) {}Dim Temperatura() As Single = New Single(30)

{}

• También es bastante común declarar y crear una matriz utilizando la forma abreviadaDim nombre(ind_sup) As tipo

• Ejemplos:Dim m(9) As IntegerDim Temperatura(30) As Single

Page 6: Matrices

6

• Iniciar una matriz. Cuando se crea, sus elementos son automáticamente iniciados, igual que sucede con las variables. Si la matriz es numérica, sus elementos son iniciados a 0 y si no es numérica, a un valor análogo al 0; los caracteres al valor ‘\u000’ un elemento booleano a False

• Si deseamos iniciar una matrizDim m() As Integer = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}Dim temperatura() As Single = {10.0F, 12.3F}Las declaraciones son la forma abreviada de:Dim m() As Integer = New Integer(9) {0, 1, 2, 3, 4,

5, 6, 7, 8, 9}Dim temperatura() As Single = New Single(1)

{10.0F, 12.3F}

• Iniciar una matriz. Cuando se crea, sus elementos son automáticamente iniciados, igual que sucede con las variables. Si la matriz es numérica, sus elementos son iniciados a 0 y si no es numérica, a un valor análogo al 0; los caracteres al valor ‘\u000’ un elemento booleano a False

• Si deseamos iniciar una matrizDim m() As Integer = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}Dim temperatura() As Single = {10.0F, 12.3F}Las declaraciones son la forma abreviada de:Dim m() As Integer = New Integer(9) {0, 1, 2, 3, 4,

5, 6, 7, 8, 9}Dim temperatura() As Single = New Single(1)

{10.0F, 12.3F}

Page 7: Matrices

7

• Acceder a los elementos de una matriz. Se utiliza el nombre de la matriz, seguido de un subíndice entre paréntesis. Esto es, un elemento de una matriz no es más que una variable subindicada; por lo tanto, se puede utilizar exactamente igual que cualquier otra variable

• Ejemplos:Dim m(99) As IntegerDim K, A As Integer…A = m(1) + m(99)K = 50m(k) += 1m(k + 1) = m(k)

• La primera posición es la 0

• Acceder a los elementos de una matriz. Se utiliza el nombre de la matriz, seguido de un subíndice entre paréntesis. Esto es, un elemento de una matriz no es más que una variable subindicada; por lo tanto, se puede utilizar exactamente igual que cualquier otra variable

• Ejemplos:Dim m(99) As IntegerDim K, A As Integer…A = m(1) + m(99)K = 50m(k) += 1m(k + 1) = m(k)

• La primera posición es la 0

Page 8: Matrices

8

• Si se intenta acceder a un elemento con un subíndice menor que cero o mayor que el número de elementos de la matriz menos uno, Visual Basic lanzara una excepción de tipo IndexOutOfRangeException

• La propiedad Length contiene la longitud de la matrizDim n As Integer = m.Length

• Si se intenta acceder a un elemento con un subíndice menor que cero o mayor que el número de elementos de la matriz menos uno, Visual Basic lanzara una excepción de tipo IndexOutOfRangeException

• La propiedad Length contiene la longitud de la matrizDim n As Integer = m.Length

Page 9: Matrices

9

Matrices multidimencionalesMatrices multidimencionales• Es una matriz de dos o más dimensiones• Definición

Dim nombre(,…) As tipo = New tipo(expr-1, expr-2, …) {}

Dim nombre(expr-1, expr-2, …) As tipoDonde tipo es un número primitivo entero o real. El

número de elementos de una matriz multidimencional es el producto de (expr-1 + 1) x (expr-2 + 1) x …

• Ejemplos:Dim m(,) As Integer = New Integer(1, 2) {}Dim m(1, 2) As Integer

• Es una matriz de dos o más dimensiones• Definición

Dim nombre(,…) As tipo = New tipo(expr-1, expr-2, …) {}

Dim nombre(expr-1, expr-2, …) As tipoDonde tipo es un número primitivo entero o real. El

número de elementos de una matriz multidimencional es el producto de (expr-1 + 1) x (expr-2 + 1) x …

• Ejemplos:Dim m(,) As Integer = New Integer(1, 2) {}Dim m(1, 2) As Integer

Page 10: Matrices

10

• A partir de cualquiera de las líneas de código anteriores, se crea una matriz bidimensional m con 2 filas y 3 columnas

• Para acceder a los elementos de la matriz se utilizan dos subíndices, el primero indicará la fila y el segundo la columnam(1, 2) = xm(0, 1) = m(1,2)

• El método GetLength devuelve el número de elementos de la dimensión especificada. m.GetLength(1) 3

• A partir de cualquiera de las líneas de código anteriores, se crea una matriz bidimensional m con 2 filas y 3 columnas

• Para acceder a los elementos de la matriz se utilizan dos subíndices, el primero indicará la fila y el segundo la columnam(1, 2) = xm(0, 1) = m(1,2)

• El método GetLength devuelve el número de elementos de la dimensión especificada. m.GetLength(1) 3

m0,0 m0,1 m0,2

m1,0 m1,1 m1,2

fila 0fila 0

fila 1fila 1

col 0col 0 col 1col 1 col 2col 2Matriz mMatriz m

Page 11: Matrices

11

Sentencia For EachSentencia For Each• Es similar a la sentencia For, con la

diferencia de que ahora un bloque de una sentencia o más sentencias se ejecuta repetidamente por cada elemento de una colección de objetos o de una matriz

• Sintaxis:For Each (elemento In colección/matriz)

sentenciaNextDonde elemento se corresponde en cada ejecución

de la sentencia con el siguiente elemento de la colección o de la matriz indicada. Sin embargo, este elemento es de sólo lectura, por lo que no se puede utilizar para modificar los valores de la colección

• Es similar a la sentencia For, con la diferencia de que ahora un bloque de una sentencia o más sentencias se ejecuta repetidamente por cada elemento de una colección de objetos o de una matriz

• Sintaxis:For Each (elemento In colección/matriz)

sentenciaNextDonde elemento se corresponde en cada ejecución

de la sentencia con el siguiente elemento de la colección o de la matriz indicada. Sin embargo, este elemento es de sólo lectura, por lo que no se puede utilizar para modificar los valores de la colección

Page 12: Matrices

12

• Ejemplo:Dim m(9) As IntegerDim I As IntegerFor Each I In m

txtSalida.Text &= I.ToString & vbCrLfNext

• Ejemplo:Dim m(9) As IntegerDim I As IntegerFor Each I In m

txtSalida.Text &= I.ToString & vbCrLfNext

Page 13: Matrices

13

Modificar el tamaño de una matrizModificar el tamaño de una matriz• Se puede modificar el tamaño de una

matriz existente, en cualquier instante de la ejecución de un programa

• Una forma es asignando una matriz diferente a la misma variable

• Otra forma es utilizando la sentencia ReDim

• En cualquier caso el número de dimensiones no se puede modificar, pero si se puede modificar la longitud de cualquiera de las dimensiones

• Se puede modificar el tamaño de una matriz existente, en cualquier instante de la ejecución de un programa

• Una forma es asignando una matriz diferente a la misma variable

• Otra forma es utilizando la sentencia ReDim

• En cualquier caso el número de dimensiones no se puede modificar, pero si se puede modificar la longitud de cualquiera de las dimensiones

Page 14: Matrices

14

• Ejemplo:Dim m(3, 4) As Integer ‘matriz 4 filas por 5

columnas…m = New Integer(1, 2) {} ‘matriz 2 filas por 3

columnas

• Los elementos se pierden• Para conservarlos es necesario utilizar la

sentencia ReDim con la cláusula Preserve. En este caso sólo permite modificar la longitud de la última dimensión

• Ejemplo:Dim m(2, 3) As Integer…ReDim Preserve m(2, 7)

• Ejemplo:Dim m(3, 4) As Integer ‘matriz 4 filas por 5

columnas…m = New Integer(1, 2) {} ‘matriz 2 filas por 3

columnas

• Los elementos se pierden• Para conservarlos es necesario utilizar la

sentencia ReDim con la cláusula Preserve. En este caso sólo permite modificar la longitud de la última dimensión

• Ejemplo:Dim m(2, 3) As Integer…ReDim Preserve m(2, 7)

Page 15: Matrices

15

Números aleatoriosNúmeros aleatorios• La biblioteca de clases .Net incluye una

clase llamada Random, la cual define un conjunto de operaciones relacionadas con la obtención de números al azar

• La biblioteca de clases .Net incluye una clase llamada Random, la cual define un conjunto de operaciones relacionadas con la obtención de números al azar

Método Descripción

Next() Devuelve un número entero positivo

Next(máx As Integer)

Devuelve un número entero positivo menor que máx

Next(min As Integer, máx As Integer)

Devuelve un número entero positivo mayor o igual que min y menor que máx

NextDouble() Devuelve un número mayor o igual a 0.0 y menor que 1.0

Page 16: Matrices

16

• Ejemplo:El código siguiente muestra como obtener un

número al azar entre 1 y 49:Dim n As IntegerDim rnd As Random = New Random()n = rnd.Next(1, 50)

• Ejemplo:El código siguiente muestra como obtener un

número al azar entre 1 y 49:Dim n As IntegerDim rnd As Random = New Random()n = rnd.Next(1, 50)

Page 17: Matrices

17

Clase ArrayClase Array• La clase Array del espacio de nombres System

contiene varios métodos para manipular matrices.

• Clone. Permite duplicar una matrizDim m1() As Integer = {10, 20, 30, 40, 50}Dim m2() As Integer = m1.Clone()

• Clear. Asigna un valor 0 o Nothing a todos los elementos de una matriz, o bien a cada elemento de un rango especificadoClear(m As Array, desdeInd As Integer, longitud As Integer)

Donde m es la matriz, desdeInd es el índice del primer elemento del rango y longitud el número de elementos del mismo

• La clase Array del espacio de nombres System contiene varios métodos para manipular matrices.

• Clone. Permite duplicar una matrizDim m1() As Integer = {10, 20, 30, 40, 50}Dim m2() As Integer = m1.Clone()

• Clear. Asigna un valor 0 o Nothing a todos los elementos de una matriz, o bien a cada elemento de un rango especificadoClear(m As Array, desdeInd As Integer, longitud As Integer)

Donde m es la matriz, desdeInd es el índice del primer elemento del rango y longitud el número de elementos del mismo

Page 18: Matrices

18

• Ejemplo:Dim a() As Double = {55, 50, 45, 40, 35, 30, 25, 20, 10}System.Array.Clear(a, 0, a.Length)

• Sort. Ordena los elementos de una matriz unidimensional en orden ascendente utilizando el algoritmo quicksortSort(m As Array)Sort(m As Array, desdeInd As Integer, longitud As

Integer)Donde m es la matriz a ordenar. Cuando solo queramos

ordenar un rango de elementos, utilizaremos el segundo formato de Sort donde desdeInd es el índice del primer elemento del rango y longitud el número de elementos del mismo

• Ejemplo:Dim a() As Double = {55, 50, 45, 40, 35, 30, 25, 20, 10}System.Array.Sort(a)

• Ejemplo:Dim a() As Double = {55, 50, 45, 40, 35, 30, 25, 20, 10}System.Array.Clear(a, 0, a.Length)

• Sort. Ordena los elementos de una matriz unidimensional en orden ascendente utilizando el algoritmo quicksortSort(m As Array)Sort(m As Array, desdeInd As Integer, longitud As

Integer)Donde m es la matriz a ordenar. Cuando solo queramos

ordenar un rango de elementos, utilizaremos el segundo formato de Sort donde desdeInd es el índice del primer elemento del rango y longitud el número de elementos del mismo

• Ejemplo:Dim a() As Double = {55, 50, 45, 40, 35, 30, 25, 20, 10}System.Array.Sort(a)

Page 19: Matrices

19

• BinarySearch. Busca un valor en una matriz unidimensional que esté ordenada ascendentemente utilizando el algoritmo de búsqueda binaria.BinarySearch(m As Array, clave As Object) As IntegerDonde m representa la matriz, clave es el valor que

se desea buscar

• El valor devuelto es un entero correspondiente al índice del elemento que coincide con el valor buscado. Si el valor buscado no se encuentra, entonces el valor devuelto es: -(punto de inserción) – 1. El valor de punto de inserción es el índice del elemento de la matriz donde debería encontrarse el valor buscado.

• BinarySearch. Busca un valor en una matriz unidimensional que esté ordenada ascendentemente utilizando el algoritmo de búsqueda binaria.BinarySearch(m As Array, clave As Object) As IntegerDonde m representa la matriz, clave es el valor que

se desea buscar

• El valor devuelto es un entero correspondiente al índice del elemento que coincide con el valor buscado. Si el valor buscado no se encuentra, entonces el valor devuelto es: -(punto de inserción) – 1. El valor de punto de inserción es el índice del elemento de la matriz donde debería encontrarse el valor buscado.

Page 20: Matrices

20

• Ejemplo:Dim a() As Integer = {10, 15, 20, 25, 30, 35, 40, 45, 50, 55}Dim i As Integeri = System.Array.BinarySearch(a, 25) ‘ i = 3i = System.Array.BinarySearch(a, 27) ‘ i = -5i = System.Array.BinarySearch(a, 5) ‘ i = -1i = System.Array.BinarySearch(a, 60) ‘ i = -11

• Reverse. Invierte la secuencia de todos los elementos de una matriz unidimensional, o bien de los elementos de un rango especificado.Reverse(m As Array)Reverse(m As Array, desdeInd As Integer, longitud As

Integer)Donde m es la matriz. Cuando sólo queremos invertir la secuencia

de un rango de elementos, utilizaremos el segundo formato de Reverse donde desdeInd es el índice del primer elemento del rango y longitud el numero de elementos del mismo

• Ejemplo:Dim a() As Integer = {10, 15, 20, 25, 30, 35, 40, 45, 50, 55}System.Array.Reverse(a)

• Ejemplo:Dim a() As Integer = {10, 15, 20, 25, 30, 35, 40, 45, 50, 55}Dim i As Integeri = System.Array.BinarySearch(a, 25) ‘ i = 3i = System.Array.BinarySearch(a, 27) ‘ i = -5i = System.Array.BinarySearch(a, 5) ‘ i = -1i = System.Array.BinarySearch(a, 60) ‘ i = -11

• Reverse. Invierte la secuencia de todos los elementos de una matriz unidimensional, o bien de los elementos de un rango especificado.Reverse(m As Array)Reverse(m As Array, desdeInd As Integer, longitud As

Integer)Donde m es la matriz. Cuando sólo queremos invertir la secuencia

de un rango de elementos, utilizaremos el segundo formato de Reverse donde desdeInd es el índice del primer elemento del rango y longitud el numero de elementos del mismo

• Ejemplo:Dim a() As Integer = {10, 15, 20, 25, 30, 35, 40, 45, 50, 55}System.Array.Reverse(a)