Res vecmat8
-
Upload
mary-lopez -
Category
Education
-
view
147 -
download
1
Transcript of Res vecmat8
Vectores y Matrices
CAPITULO 8
Ing. Mary Dunnia López N.
UNIVERSIDAD AUTONOMA GABRIEL RENE MORENOFacultad Ciencias Exactas y Tecnología
Semestre I/2015
Dados 50 números enteros, obtener el promedio de ellos y encontrar los números que fueron mayores que el promedio.
Intente resolver el siguiente problema
• Una de las principales dificultades que se observan con estos problemas es que para la resolución de ambos es necesario almacenar la totalidad de los datos a procesar.
• No sería eficiente crear N cantidad de variables para guardar estos datos.
Es posible resolver estos problemas?
Por qué?
Como ?
Es una forma particular de organizar datos en una computadora para que pueda ser utilizado de manera eficiente.
Estructura de Datos
Vectores
1. Introducción• Definición• Estructura Vector
2. Algoritmos Típicos
• Cargar un Vector• Mostrar un Vector
3. Algoritmos útiles
• Ordenar un Vector• Buscar en un Vector.
4. Ejercicios• Ejercicio1• Ejercicio2
Mi vector
Nombre de la variable
9 35 4 826
Elementos
Posición : 0Contenido : Mi vector[0] = 9
1. Introducción
Un vector es una estructura de datos que puede almacenar un conjunto de datos de un mismo tipo.
1.1 Definición
Características:
• Se identifica con un único nombre de variable.
• Cada elemento se almacena en posiciones uno a lado de la otra.
• Se accede a cada uno de sus elementos por la posición que ocupa
Como se dijo anteriormente, los arreglos son estructuras de datos, por lo tanto las mismas deben ser declaradas.
1.2 La estructura vector
Dim
nombre_del_vector (tamaño) as tipo_dato
Dim• nombreVector () as tipoDato…• Redim nombreVector(10)
1. Asignación de valores
Alumnos(3) = “Juan Perez”Precios(0) = “23.50”
2. En un vector los datos son todos del mismo tipo
23.5 00 0 0Juan Perez
0
2. Algoritmos Típicos
Option explicit onDim vec() as integer Dim n as integer
Sub CarVec() Dim x as string, i as integer N= TextBox.Text Redim Vec(N)
for i:= 0 to N-1 do x=Grid1.item(i,0).value vec(i)=cint(x)
next i End Sub
2.1 Cargar un Vector
Option Explicit onDim vec() as integerDim n as integer
Sub MosVec() Dim i as integer, x as string Redim vec(n) for i:= 0 to n-1 do
x= cstr(vec(i) )Grid1.Item(i,0).value=x
next i End Sub
2.2 Mostrar un vector
Ordenar un vector de N elementos Pasos para resolver este problema:
• Leer un vector de N elementos• Ordenar el vector por un método Conocido• Mostrar el Vector ordenado
3. Algoritmos Útiles
Buscar un “valor en un vector de N elementos. Pasos para resolver este problema:
• Leer un vector de N elementos• Ordenar el vector por el método Burbuja• Buscar un elemento (X) entre todos los elementos
del vector• Si encuentra el valor mostrar la posición que
ocupa en el vector.
3.1 Ordenación por Burbuja
123 50 25 60 10 120 1 2 3 4 5
Primero
0 1 2 3 4 550 123 25 60 10 12Segundo
25 123 50 60 10 120 1 2 3 4 5
Tercero
0 1 2 3 4 525 123 50 60 10 12Cuarto
0 1 2 3 4 510 123 50 60 25 12Quinto
0 1 2 3 4 510 123 50 60 25 12N-1
Primer pasada y el primero
mas pequeño
ahora esta en la
primer posición.
Burbuja
For i=0 to n-2
For j=i+1 to n-1
Vec(i) > Vec(j)
aux = Vec(i) Vec(i) = Vec(j)
Vec(j) = aux
j
i
Fin
VF
Option Explicit onDim Vector1() as integer‘Grid1 es el objeto DataGrid del formulario
'El SUB CarVec copia Grid1 al vector de programa llamado Vec1Sub CarVec()
Dim n as integer, pos As Integer 'Obteniendo la dimensión del vector n = CInt(text2.Text) ReDim Vector1(n) For pos = 0 To n - 1 Vector1(pos) = Grid1.Item(pos,0) Next pos
End Sub
Dele 2 Click sobre el boton en el Formulario Suba a la linea 1 del archivo y escriba las siguientes instrucciones
Private Sub Button1_Click() Call CarVec Call OrdVecPro Call MosVecEnd Sub
Avance con el cursor hasta la línea dentro del Button1_Click
• 'Ordenando por método de la burbuja• Sub OrdVecPro()
• Dim i As Integer, j As Integer• Dim aux As Integer, n As Integer• n = CInt(Text2.Text)• 'Comienza a recorrer el vector y ordenar• For i = 0 To n - 2• For j = i + 1 To n - 1• If (Vector1(i) > Vector1(j)) Then• aux = Vector1(i)• Vector1(i) = Vector1(j)• Vector1(j) = aux• End If• Next j• Next i
• End Sub
'Mostrando el vector ordenado Sub MosVec()
Dim n As Integer, pos As Integer n = CInt(Text2.Text) For pos = 0 To n - 1 Grid1.Item(pos,0) = Vector1(pos) Next pos
End Sub
PrecondiciónEl vector debe estar ordenado
Algoritmo Se compara el dato buscado con el elemento en
el centro del vector. Si coinciden, el dato ha sido encontrado Si el dato es mayor que el elemento central del
vector, se tiene que buscar el dato en segunda mitad del vector.
Si el dato es menor que el elemento central del vector, se tiene que buscar el dato en la primera mitad del vector.
Cargar 10 elementos en un vector,sumarlos y mostrar el resultado enpantalla.
Pasos para resolver este problema:
• Leer un vector de 10 elementos• Sumar los elementos• Mostrar el resultado de la suma en pantalla
Ejemplo 1
Ejemplo 1
Muestra resultados
Lectura delvector
Suma de los elementos
Pasos para resolver este problema:1. Crear un nuevo proyecto con: TextBox1 (N),
DataGridView1 (Vector), Button (boton).2. Haga 2click sobre el boton Button1.
– Private SUB Button1_Click()» CALL Sumar()
» End sub3. Declarar el vector como Variable Global debajo de
la instrucción Public Class Form1
Dim sumandos() as integer4. Luego Crear el proceso Sumar.
Ejemplo1: Solución
Sub Sumar() Dim suma as integer, N as integer, i as integer, x as string, mensage as string
N = CInt(Text2.Text) ReDim sumandos(N) suma = 0 For i = 0 To N - 1 ‘Grid1 es el nombre objeto tipo DataGrid del Formulario x = Grid1.Item(i,0).value sumandos(i) = CInt(x) suma = suma + CInt(x) Next i mensage = "La suma total es: " + CStr(suma) MsgBox («TOTAL»,VBOkOnly,mensage)
End Sub
Lectura desde el DataGrid
Suma de los elementos
Muestra resultados
Dimension del vector
Dados 15 números enteros, obtener el promedio de ellos. Mostrar por pantalla dicho promedio y los números ingresados que fueron mayores que el promedioPasos para resolver este problema:
• Leer un vector de 15 elementos• Acumular en S la sumar los elementos• Dividir S entre 15• Mostrar el Promedio• Recorrer el vector buscando y
mostrando los que sean mayor que el promedio.
Ejemplo 2
Introducción• Definición• Características
Tipos de Matriz• Matriz cuadrada• Matriz Traspuesta• Otras
Operaciones• Suma• Producto
Ejercicios• GenMat1• GenMat2
Matrices
“Su principal aplicación práctica esta en la solución de sistemas de
ecuaciones lineales”
1. Introducción
Definición
Llamaremos matriz de orden (nXm) sobre el cuerpo de los números reales a un conjunto de números reales dispuestos en n filas y m columnas de la siguiente forma:
1. Un nombre2. La dimensión u orden de una matriz, está dado
por la cantidad de filas (n) y la cantidad de columnas (m) que esta tenga y se denota por
(nxm).3. Cada elemento de la matriz corresponde a un
número real representado de la forma (aij) donde
i corresponde a la posición de fila y j corresponde
a la posición de la columna dentro de la matriz.
(A2,3)4. La cantidad de elementos de la matriz se
determina multiplicando la cantidad de filas por la cantidad de columnas. (A(2X3) => Tiene 6 elementos (2X3) )
Características
MATRICES - DECLARACIÓN
Como se dijo anteriormente, los arreglos son estructuras de datos, por lo tanto las mismas deben ser declaradas.
Dimnombre_matriz (columna,fila) as tipo_dato
Dimnombre_matriz () as tipo_dato
Redim nombre_matriz(10,10)
Manejo de índices en matrices
• Asignación de valoresAlumnos(1,1) = 5
Alumnos(3,0) = 2• Los valores de la matriz son todos del
mismo tipo
9 35 4 826
9 35 4 826
9 35 4 826
Alumnos
Cargar una Matriz
Option Explicit onDim Mat() as integerDim n as integer, m as integer
Sub CarMat() Dim x as string, i as integer Dim j as integer Redim Mat (n,m) for i:= 0 to n-1 do
for j=0 to m-1 do x=Grid1.Item(j,i) Mat(i,j)=cint(x)next j
next iEnd Sub
DF ?
MOSTRAR UNA MATRIZ
Option Explicit onDim Mat() as integerDim n as integer, m as integer
Sub CarMat() Dim x as string, i as integer Dim j as integer Redim Mat (n,m) for i:= 0 to n-1 do
for j=0 to m-1 do x = cstr(Notas(i,j))
Grid1.Item(i,j)=xnext j
next iEnd Sub
DF ?
“La sencillez de la matriz y el hecho de que las matrices organicen información numérica (y también de otros tipos) permite que sean utilizadas en casi todos los ámbitos del saber científico: física, sociología, astronomía, ingeniería y tantos otros mas.”
2. Tipos de Matrices
Tipo de Matriz Ejemplo1. Matriz FIla: Es la que tiene una sola fila. A(1 x M)
2. Matriz Columna: Es la que tiene una sola columna . A (N x 1)
3. Matriz nula si: Aij =0 i => 1 <= i <= n ; j => 1 <= j <= m.
4. A será llamada matriz cuadrada si: n=m.
5. Matriz diagonal si: n = m => Igual Nro. Filas y Columnas
Aij =0 => Donde i <> j
Tipo de Matriz Ejemplo6. A será llamada matriz identidad si:
n = m => Igual Nro. Filas y Columnas
Aij =0 => Donde i <> jAij =1 => Donde i = j
7. Matriz triangular superior si: n = m => Igual Nro. Filas y Columnas
Aij =0 => Donde i >= j
8. Mmatriz triangular inferior si n = m => Igual Nro. Filas y Columnas
Aij =0 => Donde i <= j
9. Matriz simétrica n = m => Igual Nro. Filas y Columnas
Aij = Aji
Matriz traspuesta
10 20 102
50 35 36
52 74 32
Resulta de Intercambi
ar el elementos en las filas
por las columnas y viceversa
La matriz debe ser
cuadrada
10 50 52
20 35 74
102 36 32
X=Mat(j,i)
Mat(j,i)=Mat(i,j)
Mat(i,j)=x
Diagonal Principal
10 20 102
50 35 36
52 74 32
Matriz cuadrada donde sus elementos
Fila = columna
‘Este pedazo de código ‘muestra los elementos de la ‘diagonal principal de la ‘matriz Mat.
For i = 0 To n - 1
For j = 0 To n - 1
If (i = j) Then
msgbox(Mat(i,j))
End If
Next j
Next i
Diagonal Secundaria
10 20 102
50 35 36
52 74 32
Matriz cuadrada. Observe las posiciones donde :
Fila+columna= Dimension-1‘Este pedaso de código ‘muestra los elementos de la ‘diagonal secundaria de la ‘matriz Mat.
Col=n-1
For i = 0 To n - 1
MsgBox(Mat(i,col))
Col=col-1
Next i
Matriz Triangular Superior
1 5 80
0 10 50
0 0 1
Matriz Cuadrada cuyos elementos debajo la diagonal principal son todos
CERO
Dim i,j,n as integer
i=o
n=cint(text1.text) – 1
Error=false
While(i<=n AND error=false)
j=0
while(j<=n and error=false)
if (i > j)then
if (mat (i,j) <> 0)then
error = true
end if
end if
j=j+1
wend
i=i+1
Wend
If(error = true)then
msgbox(“No es triangular superior”)
Else
msgbox(“Es triangular superior)
End if
“La utilización de matrices (arrays) constituye actualmente una parte esencial de los lenguajes de programación, ya que la mayoría de los datos se introducen en los ordenadores como tablas organizadas en filas y columnas : hojas de cálculo, bases de datos,....”
3. Operaciones Matriciales
Suma de Matrices
10 20
50 35
52 4
Las matrices deben ser de igual
dimensión
10 50
20 35
10 36
El resultado de la SUMA ira en una
tercer matriz
+
=20 70
70 70
62 40
Tan solo avanzar en la matriz resultante
Producto de Matrices
10 20
50 35
52 4
10 5 2 1
20 2 1 0* =
500 90 40 10
1200 320 135 50
600 268 108 52
El Numero de COLUMNAS de la primer matriz debe ser igual que el Numero de filas de la segunda matriz
(Matriz1 (Matriz
2
(Matriz3
(2,0)(0,2)
(2,2)
(2,1)(1,2)
Matriz3(0,0)= [Matriz1(0,0)*Matriz2(0,0)]+[Matriz1(0,1)*Matriz2(1,0)]
Matriz3(0,0)= [10*10]+[20*20]
10 20
50 35
52 4
10 5 2 1
20 2 1 0* =
500
(0,0)
(0,0) (0,0)
(Matriz1 Matriz2
(Matriz3
Matriz3(fil0,col0) = ∑ matriz1(fila 0) *
matriz2(columna 0)
Producto de Matrices
Matriz3(1,2)= [Matriz1(1,0)*Matriz2(0,2)]+[Matriz1(1,1)*Matriz2(1,2)]
Matriz3(1,2)= [50*2]+[35*1]
10 20
50 35
52 4
10 5 2 1
20 2 1 0* =
500
135
(1,0)(0,2)
(1,2)
(Matriz1Matriz2
(Matriz3
Matriz3(fila 1,columna 2) = ∑ matriz1(fila 1) *
matriz2(columna 2)
Producto de Matrices
ProdMat
For fil=0 to n-1
For col=0 to m-1
Sum=0
col
fil
Fin
For pos=0 to p-1
pos
sum = sum + (mat1(fil, pos) * mat2(pos, col))
Mat3(fil,col) = sum
Para tomar en cuenta !!!
Para resolver matrices se debe siempre tratar
de :
Mapear la Matriz. En cada posición poner que fila y
que columna ocupa el elemento
Identificar las posiciones de los elementos a
analizar
Encontrar la relación Fila Versus Columna para
cada elemento que se esta analizando en la matriz. Esto
es la clave para ver como es mas conveniente moverse
en la matriz:
Por fila y columnas ó por columna y luego filas.
Ejercicio 3:
• Una universidad necesita controlar los resultados de los alumnos en las distintas materias de la facultad de Ingeniería.
• El programa debe ingresar las calificaciones de los alumnos y visualizar en pantalla la media de notas por alumno y la media de notas por materia.
• Las asignaturas están codificadas de 1 a 6 y hay 30 alumnos.