Sunteți pe pagina 1din 9

INTRODUCCION A LA PROGRAMACION

Leccin 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 correspondera a un estudiante y cada columna a una asignatura. Cada dato individual (la calificacin de un estudiante en una asignatura dada) es un elemento de esta tabla y ocupa una celda identificable por el nmero de la fila y el nmero 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 Fila 3 Fila 4 Fila 5 Fila 6

M(2,1) M(3,1) M(4,1) M(5,1) M(6,1)

M(2,2) M(3,2) M(4,2) M(5,2) M(6,2)

M(2,3) M(3,3) M(4,3) M(5,3) M(6,3)

M(2,4) M(3,4) M(4,4) M(5,4) M(6,4)

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

M( i , j )

Cada elemento de la matriz representara la calificacin de un estudiante dado en una asignatura dada. Por ejemplo:

M(4,2) = C

significa que el estudiante nmero 4 obtuvo C en la asignatura 2. La posicin 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 dimensin tiene su propio rango.

Con frecuencia se manejan arreglos de ms de dos dimensiones, correspondiendo un subndice a cada dimensin.

El programador debe tener presente que la memoria de las computadoras es lineal, por lo que la mayora 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 despus y as sucesivamente.

Ejemplo

GUI

Despus de oprimir Calcular...

Codificacin Bsica -------------------------------------------------------------------------------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

Completar la aplicacin del ejemplo calculando e imprimiendo el total por trimestre y el Gran Total. Modificar la aplicacin del ejemplo para que determine el elemento de mayor valor y el de menor valor en la tabla del ejemplo (que sucursal y en que trimestre se produjo la mxima y la mnima venta)

S-ar putea să vă placă și