Está en la página 1de 37

Tema: TABLAS BIDIMENSIONALES

(MATRICES)

1
Contenido

 Matrices (variables tipo tabla).


 Iteración definida con matrices
(índices).
 Ejemplos de aplicación.

2
TABLAS BIDIMENSIONALES
(MATRICES)

Son tablas de dos dimensiones. También se


denominan matrices. Tienen dos índices,
por lo cual cada componente de la matriz
se direcciona mediante su nombre seguido
de los dos índices separados por coma y
entre paréntesis.

3
Matriz
 Arreglo de datos, organizados en filas y
columnas.
n+1 columnas
a00 a01 ... a0j ... a0n
a10 a11 ... a1j ... a1n
A=
ai0 ai1 ... aij ... ain
am0 am1 ... amj ... amn
m+1 filas
4
METODOLOGIA DE LA
PROGRAMACIÓN
A
Matriz A de
0
0 1
1 2
2 …………………
………………… N
N
M+1 filas y
0
0 …………………
………………… N +1columnas
1
1 …………………
…………………
2
2 …………………
…………………

…………………
…………………

M
M …………………
………………… (M +1)x (N+1)
Componentes

5
Declaración de matrices
 La declaración de una matriz especifica el nombre de la
matriz, el numero de elementos de las misma y el tipo de
estos:

Dim variable(dimension) As tipo

Donde:
 Variable es el nombre de la matriz
 Dimensión es una lista de expresiones numérica, separadas
por comas y que definen las dimensiones de la matriz
 Tipo: Define el tipo de la variable( Integer, Doble, string,
Boolean .. Etc. )

6
¿Cómo definir matrices en Visual Basic?

 Ejemplo: A es Nombre de la matriz


de m+1 filas y n+1 columnas:
Declarar
tipo de dato
 Declaración
 Dim A(m,n) As Double
Instrucción
para la
Dimensión
declaración Nombre
m+1Filas
matriz
Dimensión
n+1Columnas
7
Matrices, Notación estándar
Elemento de la
fila i, columna j
A=
a00 a01 ... a0j ... a0n
m+1 filas a10 a11 ... a1j ... a1n
ai0 ai1 ... aij ... ain
am0 am1 ... amj ... amn

n +1columnas
8
Direccionamiento de un elemento:

A (fila, columna)
↑ ↑ ↑
Identificador Valor, variable o expresión
(numérica entera)

9
En general, los elementos en una matriz se
almacenan en la memoria interna de la
computadora por columnas, es decir:
A(0,0), A(1,0), A(2,0), …, A(m,0), A(0,1), A(1,1),
A(2,1), …………A(m,1),A(0,2)…………….…,A(m,n)

A
0 1 2 n
0
1
2

10
Procesos con matrices
 Lectura: desde cualquier medio de
entrada (teclado, archivo, etc).
 Cálculos y Relaciones Lógicas: Los
elementos de la matriz pueden intervenir
en operaciones lógicas y matemáticas
como cualquier variable.
 Salida de resultados: hacia cualquier
medio de salida (pantalla, archivo, etc).

11
Leer una matriz por teclado:

Inicia recorrido
For F = O To M filas

For C = O To N Inicia recorrido


columnas

A(F, C) = Console.ReadLine() Lee y


almacena
Next Termina recorrido
elemento

Next columnas

Termina
recorrido filas

12
Sumar dos matrices

 A y B tienen iguales dimensiones


 Recorriendo las matrices por filas:

For i = 0 To m
For j = 0 To n
C(i,j) = A(i,j) + B(i,j)
Next
Next

13
Transpuesta de una matriz
A(m+1)x(n+1)  At(n+1)x(m+1)

A(0,0) A(0,1) … A(0,n)

A(1,0) A(1,1) … A(1,n)


A=
…. …. A(i,j) ….
A(m,0) A(m,1) … A(m,n)

A(0,0) A(1,0) … A(m,0)


A(0,1) A(1,1) … A(m,1)
AT = …. …. A(j,i) ….
A(0,n) A(1,n) … A(m,n)

14
Transpuesta de una matriz
A(m+1)x(n+1)  At(n+1)x(m+1)

 Dos procesos iterativos para recorrer


las filas y columnas de la matriz A.
Para i=0,…,m
Para j=0,…,n
AT(j,i)  A(i,j)

 Dimensión de la matriz transpuesta:


A(m+1)x(n+1)  At(n+1)x(m+1)

15
Transpuesta de una matriz
Transpuesta
A
de
A
una
(m+1)x(n+1)
t
matriz
(n+1)x(m+1)

A(m+1)x(n+1)  At(n+1)x(m+1)

 Dimensionar AT Dim AT(4,4), A(4,4), m, n As


 Empezar en la fila i de Integer
M =Console.readLine()
A (columna i de AT) N =Console.readLine()
 Recorrer las columnas
For i=0 to m
j de A (Filas j de A )
T

 Hacer ATji =Aij For j=0 to n


AT(j,i) = A(i,j)
Next
Next
16
EJERCICIO 1
 En una fábrica textil, se tiene un reactor funcionando a su
máximo rendimiento, mediante los cuales pasa un
determinado flujo; aunque la capacidad el flujo es
variable. Diseñe un programa en el cual mida el flujo que
pasa por cada reactor, el flujo es medido cada 3 horas y
diario durante 7 días.
a) Hallar el mayor flujo registrado, día y hora
b) Hallar el menor flujo registrado, día y hora
c) Hallar el flujo promedio registrado por día

17
MATRIZ DEL REACTOR

DIAS
FLUJO
0 1 2 6
0
1
2
HORAS

7
19
20
21
CODIFICACION EN VISUAL BASIC
Module Module1

Sub Main()
Dim FLUJO(7, 6), C, F, WDÍA, WMAY, WHORA, PROM, SUMA As
Integer
Dim WMEN, WMENDÍA, WMENHORA As Integer
WMAY = 0
WMEN = 999
‘CARGA DE LA MATRIZ
 For F = 0 To 7
 For C = 0 To 6
 FLUJO(F, C) = Console.ReadLine
 Next
 Next

22
 For F = 0 To 7
 For C = 0 To 6
 If FLUJO(F, C) > WMAY Then
 WMAY = FLUJO(F, C)
 WDÍA = C
 WHORA = F
 End If
 Next
 Next
 For F = 0 To 7
 For C = 0 To 6
 If FLUJO(F, C) < WMEN Then
 WMEN = FLUJO(F, C)
 WMENDÍA = C
 WMENHORA = F
 End If
 Next
 Next
23
 For C = 0 To 6
 For F = 0 To 7
 SUMA = SUMA + FLUJO(F, C)
 Next
 PROM = SUMA / 8
 Console.WriteLine("PROMEDIO DIARIO" & C & "ES =>" & PROM)
 PROM = 0
 SUMA = 0
 Next
 Console.WriteLine("FLUJO MAYOR=>" & WMAY)
 Console.WriteLine("FUE EL DÍA =>" & WDÍA)
 Console.WriteLine("FUE LA HORA =>" & WHORA)
 Console.WriteLine("FLUJO MENOR =>" & WMEN)
 Console.WriteLine("FUE EL DÍA =>" & WMENDÍA)
 Console.WriteLine("FUE LAHORA =>" & WMENHORA)
 Console.ReadLine()
 End Sub
 End Module

24
EJERCICIO 2
 Una empresa produce 3 ácidos: Ac. clorhídrico,
Ac. Sulfúrico y Ac. Nítrico en sus 7 fábricas, y lo
venden por litros. Haga un programa que calcule:

a) ¿Cuantos litros de ácidos produjo la fábrica que


tuvo mayor producción?.
b) ¿Cual es el acido que se produjo más litros?.

25
MATRIZ DE LA PRODUCCION DE ACIDO

PROD ACIDOS

CLORHIDRICO SULFURICO NITRICO

0 1 2
0
1
2
FABRICAS
3
4
5
6
INICIO

F=0

F>6

C=0

C>2

LEER PROD (F,C)

C=C+1

F=F+1

A
27
A

F = 0

F > 6

C = 0

C > 2

S1 = S1 + PROD(I)

C = C + 1

S1 > FABMAY

FABMAY = S1

S1 = 0

F = F + 1

A
28
A

C = 0

C > 2

F = 0

F > 6

S2 = S2 + PROD (I)

F = F + 1

C = C + 1

S2 > ACDMAY

ACDMAY = S2

S2 = 0

C =C + 1

ESCRIBIR FABMAY, ACDMAY

FIN 29
 Variables F, C, S1, S2, FABMAY, ACDMAY de tipo entero
 PROD(6,2) matriz de tipo entero
 Para F = 0 hasta 6 hacer
 Para C = 0 hasta 2 hacer
 Leer PROD(F,C)
 Fin para
 Fin para

 Para F = 0 hasta 6
 Para C = 0 hasta 2
 S1 = S1 + PROD(F,C)
 Fin para
 Si S1 > FABMAY entonces
 FABMAY = S1
 Fin si
 S1 = 0
 Fin para

30
 Para C = 0 hasta 2
 Para F= 0 hasta 6
 S2 = S2 + PROD(F,C)
 Fin para
 Si S2 > ACDMAY entonces
 ACDMAY = S2
 Fin si
 S2 = 0
 Fin para
 ESCRIBIR(" LA FABRICA QUE PRODUJO MAS LITROS
DE ACIDOS FUE LA DE " & FABMAY & " LITROS EN
TOTAL ")
 ESCRIBIR(" EL ACIDO MAS PRODUCIDO FUE LA DE " &
ACDMAY & " LITROS EN TOTAL ")
 Fin

31
EJERCICIO 3
 Capturar una tabla que nos muestre
el peso en libras de los tres
jugadores claves de 4 equipos de
fútbol, desplegarlos en otra tabla
pero convertidos a kg. ( una libra =
.454 kg.).
Private Sub Button1_Click(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles Button1.Click
Dim f, c, jug(3, 2) As Double

jug(0, 0) = TextBox1.Text
jug(0, 1) = TextBox2.Text
jug(0, 2) = TextBox3.Text

jug(1, 0) = TextBox4.Text
jug(1, 1) = TextBox5.Text
jug(1, 2) = TextBox6.Text

jug(2, 0) = TextBox7.Text
jug(2, 1) = TextBox8.Text
jug(2, 2) = TextBox9.Text

jug(3, 0) = TextBox10.Text
jug(3, 1) = TextBox11.Text
jug(3, 2) = TextBox12.Text
For c = 0 To 2
For f = 0 To 3
jug(f, c) = jug(f, c) * 0.454

If c = 0 Then
ListBox1.Items.Add(jug(f, c))
End If
If c = 1 Then
ListBox2.Items.Add(jug(f, c))
End If
If c = 2 Then
ListBox3.Items.Add(jug(f, c))
End If
Next

Next
End Sub
Ejercicio 4

 Esta aplicación permite manejar los


elementos de un array de 16
elementos, estos elementos son
valores numéricos de tipo entero
con los cuales se realiza los
siguientes procesos: Sumar filas,
columnas, diagonales.

También podría gustarte