INTRODUCCION A LA PROGRAMACION

 

Lección 15: Matrices

 

            15.1 Arreglos de Varias Dimensiones

            15.2 Ejercicios

 

15.1 Arreglos de Varias Dimensiones

 

Existen conjuntos de datos que por su naturaleza son mejor representados mediante tablas o matrices multidimensionales que por vectores.

 

Por ejemplo, se puede representar las calificaciones de 4 asignaturas cursadas por 6 estudiantes mediante una tabla como la que abajo se ilustra:

 

 

Columna 1

Columna 2

Columna 3

Columna 4

Fila 1

 

 

 

 

Fila 2

 

 

 

 

Fila 3

 

 

 

 

Fila 4

 

 

 

 

Fila 5

 

 

 

 

Fila 6

 

 

 

 

 

donde cada fila correspondería a un estudiante y cada columna a una asignatura. Cada dato individual (la calificación de un estudiante en una asignatura dada) es un elemento de esta tabla y ocupa una celda identificable por el número de la fila y el número de la columna.

 

 

 

Columna 1

Columna 2

Columna 3

Columna 4

Fila 1

M(1,1)

M(1,2)

M(1,3)

M(1,4)

Fila 2

M(2,1)

M(2,2)

M(2,3)

M(2,4)

Fila 3

M(3,1)

M(3,2)

M(3,3)

M(3,4)

Fila 4

M(4,1)

M(4,2)

M(4,3)

M(4,4)

Fila 5

M(5,1)

M(5,2)

M(5,3)

M(5,4)

Fila 6

M(6,1)

M(6,2)

M(6,3)

M(6,4)

 

De esta manera, cada elemento de la tabla queda completamente identificado mediante dos subíndices: el primero para identificar la fila y el segundo para identificar la columna.

 

M( i , j )

 

 

Cada elemento de la matriz representaría la calificación de un estudiante dado en una asignatura dada. Por ejemplo:

 

M(4,2) = C

 

significa que el estudiante número 4 obtuvo C en la asignatura 2. La posición del elemento dentro de la matriz corresponde a la celda sombreada en la tabla de la figura de arriba.

 

La matriz de arriba representa un arreglo bidimensional con (6x4) 24 elementos, donde

 

                                                                        i = 1, 2, 3, ...,6

                                                                        j = 1, 2, 3, 4

 

En una matriz multidimensional cada dimensión tiene su propio rango.

 

Con frecuencia se manejan arreglos de más de dos dimensiones, correspondiendo un subíndice a cada dimensión.

 

El programador debe tener presente que la memoria de las computadoras es lineal, por lo que la mayoría de los compiladores almacenan en memoria los elementos de una matriz linealizandola por filas; es decir, todos los elementos de la primera fila primero, los de la segunda después y así sucesivamente.

 

 

Ejemplo

 

GUI

 

 

Después de oprimir Calcular...

 

 

Codificación Básica

--------------------------------------------------------------------------------

General

 

Dim j1 As Integer

Dim j2 As Integer

Dim j3 As Integer

Dim sumaBranch As Double

Dim sumaTrimestre As Double

Dim x(1 To 3, 1 To 4) As Double

--------------------------------------------------------------------------------

 

Private Sub cmdCalcular_Click()

 

lblFlagler.Left = 1640

lblKendall.Left = 1640

lblCoralGables.Left = 1640

txtFlagler.Visible = False

txtKendall.Visible = False

txtCoralGables.Visible = False

cmdCalcular.Enabled = False

Picture1.ForeColor = vbRed

Picture1.Print "Primero", "Segundo", "Tercer", "Cuarto", "TOTAL"

Picture1.ForeColor = vbBlue

 

For i = 1 To 3

 

  sumaBranch = 0

 

  For j = 1 To 4

       Picture1.Print x(i, j),

       sumaBranch = sumaBranch + x(i, j)

  Next j

 

  Picture1.Print sumaBranch

  Picture1.Print

  Picture1.Print

  Picture1.Print

 

Next i

 

cmdLimpiar.SetFocus

 

End Sub

--------------------------------------------------------------------------------

 

Private Sub txtCoralGables_KeyPress(KeyAscii As Integer)

 

If KeyAscii = 13 Then

 

   j3 = j3 + 1

  x(3, j3) = Val(txtCoralGables.Text)

    

   Select Case j3

        Case 1

            lblTrimestre.Caption = "Segundo Trimestre"

        Case 2

            lblTrimestre.Caption = "Tercer Trimestre"

        Case 3

            lblTrimestre.Caption = "Cuarto Trimestre"

     End Select

    

     If j3 = 4 Then

        txtFlagler.Enabled = False

        txtCoralGables.Enabled = False

        txtKendall.Enabled = False

        lblTrimestre.ForeColor = vbRed

        lblTrimestre.Caption = "    TRIMESTRE:"

        cmdCalcular.SetFocus

     Else

        txtCoralGables.Enabled = False

        txtFlagler.Enabled = True

        txtFlagler.SetFocus

        txtFlagler.Text = ""

     End If

    

End If

 

End Sub

--------------------------------------------------------------------------------

 

Private Sub txtFlagler_KeyPress(KeyAscii As Integer)

 

If KeyAscii = 13 Then

  

     j1 = j1 + 1

    x(1, j1) = Val(txtFlagler.Text)

    txtFlagler.Enabled = False

    txtKendall.Enabled = True

    txtKendall.SetFocus

    txtKendall.Text = ""

 

End If

 

End Sub

 

--------------------------------------------------------------------------------

 

Private Sub txtKendall_KeyPress(KeyAscii As Integer)

 

If KeyAscii = 13 Then

   

    j2 = j2 + 1

    x(2, j2) = Val(txtKendall.Text)

    txtKendall.Enabled = False

    txtCoralGables.Enabled = True

    txtCoralGables.SetFocus

    txtCoralGables.Text = ""

 

End If

 

End Sub

--------------------------------------------------------------------------------

 

Arriba

 

15.2 Ejercicios

 

 

Arriba