Algoritmos y Programación Clase 8



Documentos relacionados
Como se declara un vector en Visual Basic 6.0

Fundamentos de Programación


Curso de Programación 1

Universidad de Valladolid. Departamento de informática. Campus de Segovia. Estructura de datos Tema 4: Ordenación. Prof. Montserrat Serrano Montero

5. Subprogramas Fundamentos de Informática

Fundamentos de Informática Examen 18 de Septiembre de 2006 Mecánica y Electricidad

Practica 10. Ordenamiento y Búsqueda.

7.1 Consideraciones. Considere la búsqueda de un libro en una biblioteca. Considere la búsqueda de un nombre en el directorio telefónico.

5. Subprogramas. 1.1 Análisis Coseno. 1. Cálculo de la función Coseno. cos( x) = ( 1) (2)! i

Ejemplos de uso de forms, labels, inputbox y msgbox en Visual Basic. (CU00332A)

Indice del curso básico programación desde cero Visual Basic Nivel I (CU00302A)

Visual Basic: paso de parámetros por referencia ByRef y por valor ByVal. Procedimientos y funciones. (CU00341A)

Sentencias DO-WHILE EN C++

FUNDAMENTOS DE INFORMÁTICA

Repaso Visual Basic Interfaz Gráfica

Métodos de ordenamiento y búsqueda en vectores

Métodos de ordenamiento:

Sumador con comprobación (1)

Métodos de ordenamiento:

Parte 4: Estructuras de Control

Índice general. Capítulo 1 Conceptos básicos. Capítulo 2 Controles básicos I. Pág. N. 1

LABORATORIO Nº 5 FORMULARIOS EN EXCEL

ELEMENTOS BÁSICOS PARA LA PROGRAMACIÓN DE FUNCIONES TIPOS DE DATOS. Constantes

Nombre y Apellidos: Especialidad y Grupo:

Unidad 4. Arreglos y Cadenas

Ubound y Lbound en Visual Basic. Conocer índice superior e inferior de arrays (arreglos) Ejemplos y ejercicios. (CU00343A)

Práctica 6. Validación de Datos II. Mas Controles.

Ordenamiento y Búsqueda

CAPÍTULO 3 ESTRUCTURAS DE DATOS ESTÁTICAS

llamada a la función Val(num) cambiosigno(n) redondeo(num,3)

Introducción. Visual Basic para Aplicaciones (VBA) en Excel: aspectos elementales

GENERACIÓN DE CÓDIGO ORIENTADO A OBJETOS

PROGRAMACION EN VISUAL BASIC

Abstracción, código y verificación del programa ejercicio algoritmo de ordenación resuelto con Visual Basic. (CU00358A)

Bucles For Next Step, Do While Loop, Do Loop While (Estructuras de repetición en Visual Basic) (CU00326A)

3. Estructuras iterativas

PROGRAMACIÓN ESTRUCTURADA

Algoritmos y Programación Clase 7

MODULO II PROGRAMACIÓN ORIENTADA A EVENTOS

Algoritmos y Programación Clase 6 - primera parte

InputBox Un InputBox es una ventana donde se le solicita información al usuario, tal como puede verse en el siguiente ejemplo:

Guía practica de Visual Basic 6.0

PROGRAMACIÓN CON VBA: MACROS EXCEL Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Ejemplos ejercicios resueltos Visual Basic. Arrays estáticos, uso de constantes vbyes, vbno y MsgBox. (CU00334A-1)

col Type mismatch cadena vacía fila 1 z + i 4 1 fila 2

Visual Basic y.net Do Loop, Exit Do, Exit For y GoTo. Ejemplos y ejercicios resueltos. (CU00337A)

Ejemplos Visual Basic: función Val, arrays de controles, generar números aleatorios, ficheros de texto. (CU00333A)

n de un Diagrama de Flujo

2. Estructuras condicionales

1. Leer dos números A y B e intercambiar sus valores sin utilizar variables auxiliares.

LENGUAJE FORTRAN. FUNCIONES Y SUBRUTINAS

Fundamentos de la Programación

TEST. 2 En el PC de prácticas. Puede haber varios procesos en el mismo instante de tiempo?

3.2. Matrices Introducción Qué ocurre cuando el tipo base de un array es otro array? Mat =vector[ vector[1....4] de (vector[1..5] de enteros);

Funciones en Visual Basic

Algoritmos Iterativos de Búsqueda y Ordenación y sus tiempos

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Cómo nombrar variables ( 2&

Fundamentos de Informática Laboratorio: Funciones

En esta sección se describen las variables, constantes, tipos de datos, operadores y estructuras de control

COLECCIÓN DE EXÁMENES DE LA ASIGNATURA APLICACIÓN DE ORDENADORES

Apunte Laboratorio ALPI - El lenguaje de programación Pascal

TEMA 7. ALGORITMOS DE BÚSQUEDA, ORDENACIÓN

Algorítmica y Complejidad. Tema 3 Ordenación.

Select Case Visual Basic. Palabras clave To, Is. Instrucción Según (Caso) Hacer. Ejemplos y ejercicios resueltos (CU00325A)

ANEXOS. NODOS

INFORMATICA VISUAL BASIC 2008

1.-Tipos y subtipos de datos en VBS

Ejercicios resueltos Visual Basic y.net con arrays (arreglos), Do While, For, mod, ficheros, Ubound. Cálculo serie numérica (CU00344A)

(71.56) Programación. Diagrama

Subprogramas en Fortran 90. Seminario de Computación 2009

ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Seminario de Actualización - Excel Avanzado y Macros. Visual Basic. Conceptos Básicos de Visual Basic para Aplicaciones

Algoritmos de Ordenación

Guía de Ejercicios de Arreglos

Práctica 7. Procesando una encuesta.

Visual Basic: procedimientos Sub y funciones Function. Tipos de parámetros y tipos de retorno. Ejemplos (CU00340A)

ASECOMPU. PORTAL DE REFUERZO ACADEMICO EN PROGRAMACIÓN LISTA DE EJERCICIOS

1. Introducción a la programación

Curso de Programación II con Visual Basic.Net

Complejidad de Algoritmos

Tema 1 INTRODUCCIÓN A LOS LENGUAJES DE PROGRAMACIÓN

COLEGIO PABLO DE TARSO IED CONSTRUCCION DE PROYECTOS DE VIDA PRODUCTIVOS VISUAL BASIC PRÁCTICAS DOC RAUL MONROY PAMPLONA

Resolver triángulos en Visual Basic. Parte 3/3

Curso Completo de Visual Basic 6.0

Programa de saludo 2 (resuelto)

VISUAL BASIC Diseño de Formularios MDI y Menús - Proyectos Aplica

Programa de resolución de ecuaciones de primero y segundo grado

PARTE 3: CONCEPTOS BÁSICOS DE PROGRAMACIÓN: QBASIC

Estructuras de Datos y Algoritmos

6ROXFLRQHVDOH[DPHQ &XDGHUQLOORGHH[DPHQ

col Type mismatch línea 1 3A Type mismatch c$ + j línea 2

Lecturas 7 y 8. Capítulo Ordenamiento

Estructuras de Datos y Algoritmos

Práctica 4. Más controles. Validación de datos I.

FUNDAMENTOS DE INFORMÁTICA

Prerrequisitos El alumno debe conocer y dominar los aspectos básicos de programación.

Apunte de cátedra: Ordenación de Arreglos

Transcripción:

Algoritmos y Programación Ordenamiento y Búsqueda Anexo: Uso de Procedimientos Sub y Procedimientos Function 1

EXAMEN 1. Lunes 16 de abril 4 pm. 2. Tema: Lo visto hasta la clase de hoy. 2

Contenido Ordenamiento y Búsqueda 1.1 Ejemplos. 1.2 Métodos de Ordenamiento: Intercambio o Burbuja Selección Inserción (Anexo, para estudiar) 1.3 Métodos de búsqueda: Secuencial Binaria 3

1.1 Ejemplos Ordenamiento y búsqueda: En el directorio telefónico. En el diccionario. Inventarios. Lista de carnés. Billetes (con repetición) Facturación, proveedores. Biblioteca,, etc. 4

Ordenamiento El ordenamiento de una serie de datos puede ser ascendente o descendente: Orden ascendente: X 1 X 2... X i-1 X i X i+1... X n Orden descendente: X 1 X 2... X i-1 X i X i+1... X n 5

Métodos de ordenamiento Cinco métodos básicos de ordenamiento de vectores: Intercambio ( Burbuja ) Selección Inserción *Shell *QuickSort Tarea Ejemplo: : Un mazo de cartas, de una sola pinta. 6

1.2.1 Método de Ordenamiento Intercambio (Burbuja) 7

Intercambio (Burbuja), cont. 1. Desplegar las cartas sobre una mesa,en línea, figuras hacia arriba Para abreviar la explicación del algoritmo se toma un subconjunto del mazo de cartas, por ejemplo el conformado por las cartas que se muestran. 8

Intercambio (Burbuja), cont. 2. Intercambiar las cartas que están desordenadas: (se compara la primera con todas las demás) 1 2 3 4 5 6 7 2.1 La carta de la primera posición es mayor que la carta ubicada en la segunda posición. Hay que efectuar intercambio. La carta 5 se lleva a la posición 1, y la carta 9 a la posición 2. 9

Intercambio (Burbuja), cont. 2. Intercambiar las cartas que están desordenadas: (se compara la primera con todas las demás) 2.1 La carta en la primera posición se lleva a una ubicación temporal. Esta carta se ubicará en la segunda posición 10

Intercambio (Burbuja), cont. La carta en la ubicación temporal se lleva a la segunda posición. Así se ha efectuado un proceso de intercambio (transposición, permutación). 11

Intercambio (Burbuja), cont. RESULTADO PARCIAL DEL ORDENAMIENTO 12

Intercambio (Burbuja), cont. Ahora, la carta 5 es la primera, y es menor que la carta 9. Es decir, NO se realiza intercambio. Luego la carta 5 se compara con la siguiente (4). La carta 5 es mayor que la 4. Entonces Sí se efectúa el intercambio. 13

Intercambio (Burbuja), cont. RESULTADO PARCIAL DEL ORDENAMIENTO La carta 4, en la posición 3, se lleva a una ubicación temporal; la carta 5, en la posición 1, se lleva a la posición 3; y la carta 4 se lleva de la posición temporal a la posición 1. 14

Intercambio (Burbuja), cont. La carta 4, en la posición 1, se compara con las demás; el intercambio se hace con la carta 2, que está en la posición 5. 15

Intercambio (Burbuja), cont. 2. Intercambiar las cartas que están desordenadas: (se compara la primera con todas las demás) 1 2 3 4 5 6 7 2.2 La carta 2, ahora en la posición 1, es la de menor valor. 16

Intercambio (Burbuja), cont. 2. Intercambiar las cartas que están desordenadas: (se compara la segunda con todas las demás) 1 2 3 4 5 6 7 El proceso de intercambio se repite hasta que las cartas estén ordenadas ascendentemente. 17

Intercambio (Burbuja), cont. 3. Finalizar cuando todas las cartas están ordenadas: 1 2 3 4 5 6 7 Este método implica dos iteraciones: una que toma cada carta; y otra que compara la carta tomada con todas las demás; en dicha comparación se decide efectuar, o no, 18 el intercambio.

Intercambio (Burbuja) Ordenar ascendentemente: 1. Desplegar las cartas sobre una mesa, en línea, figuras hacia arriba. 2. Intercambiar las cartas que están desordenadas: 2.1 Llevar la carta con número inferior a la posición de la carta con la cual se va a intercambiar. 2.2 Llevar la carta con número superior a la posición de la carta descrita en 2.1. 3. Repetir el paso 2, hasta que no se encuentren cartas desordenadas. 19

Intercambio (Burbuja), cont. El algoritmo en Visual Basic: For i = 1 To N-1 For j= i+1 To N If(X(j) ) > X(i))Then temp = X(i) Máximo X(i) = X(j) X(j) = temp N-1 N-1 End if Next j Next i Número de comparaciones ~ N 2 20

Intercambio (Burbuja), cont. Ejemplo de la función de la variable Temporal (Temp( Temp): Temp 21

Intercambio (Burbuja), cont. Ejemplo de la función de la variable Temporal (Temp( Temp): 1 Temp 22

Intercambio (Burbuja), cont. Ejemplo de la función de la variable Temporal (Temp( Temp): 2 Temp 23

Intercambio (Burbuja), cont. Ejemplo de la función de la variable Temporal (Temp( Temp): 3 Temp 24

1.2.1 Intercambio ( Burbuja ), cont. # de comparaciones Algoritmo exponencial ~ N 2 número de elementos 25

1.2.2 Método de Ordenamiento Selección 26

2 Método de Selección, cont. 1. Desplegar las cartas sobre una mesa figuras hacia arriba 27

Método de Selección,, cont. 2. Retirar la carta de menor valor y ubicarla en otro sitio: 28

Método de Selección,, cont. 3. Del mazo restante en la mesa, seleccionar la carta de menor valor, retirarla de la mesa y ponerla en el otro sitio, detrás de la anterior. 29

Método de Selección,, cont. 4. Al finalizar, las cartas estarán ordenadas ascendentemente: Puede demostrarse que el método de selección requiere un número de comparaciones de (N 2 - N)/2. En el mejor de los casos, el número de intercambios es cero y en el peor de los casos es (N2 - N)/2. 30

Ejemplo utilizando el Mazo de Cartas de una sola pinta 1.Desplegar las cartas sobre una mesa, figuras hacia arriba. 2.Seleccionar la carta de menor valor, retirarla de la mesa, ponerla en la mano. 3.Del mazo restante en la mesa, seleccionar la carta de menor valor, retirarla de la mesa y ponerla en la mano, detrás de la anterior. 4.Repetir paso 3. Al terminar, las cartas están ordenadas en la mano. 31

Método de Selección,, cont. Programa en Visual Basic: For i = 1 To N-1 c = i : t = X(i) For j = i+1 To N If(X(j) >= t)then c = j : t = X(j) End If Next j X(c) = X(i) X(i) = t Next i 32

Eficiencia de los Métodos Algunos parámetros a considerar son: 1.Número de comparaciones que se efectúan. 2.Número de intercambios de posición (transposiciones) que se ejecutan. Las transposiciones toman la mayor parte del tiempo. 33

1.3 Métodos de Búsqueda La búsqueda implica hallar un elemento en una lista de datos. Métodos de búsqueda: Secuencial Binaria

1.3.1 Búsqueda Secuencial 35

Búsqueda Secuencial Lectura de datos vector A(N) K = 0 Do k = k + 1 Loop Until(Dato = A(k) or k=n) ~ N El arreglo puede estar, o no estar, ordenado.

Búsqueda Secuencial If k = n And dato <> a(k) Then Text1.Text = "dato no encontrado " Else Text1.Text = "Posición " & k Text2.Text = "Dato " & dato End If 37

1.3.2 Búsqueda Binaria 38

2 Búsqueda B Binaria El arreglo está ordenado ascendentemente: 1. Comparar el dato buscado con el elemento del medio. 1.1. Si aquel es menor que el dato del medio, entonces la búsqueda se hace en la primera mitad. 1.2. De lo contrario, el dato buscado puede estar en la segunda mitad. 2. Repetir el proceso hasta que se encuentre el dato buscado, o hasta que se agoten los elementos.

Búsqueda Binaria A() es un vector ordenado ascendentemente y se esta buscando un dato entre los lìmites superior e inferior. Inf m=(inf+sup)/2 Sup [a1 a2 a3 a4 am aj an] Si dato buscado < am Sup = m-1 Inf = m+1 Si dato buscado = am La posición buscada = m Si dato buscado > am 40

Búsqueda Binaria, cont. Ejemplo: Para hallar el Dato = 40, en la lista 10,20,30,40,50,60,70,80,90 Primero se compara con el elemento del medio, 50. Puesto que Dato < 50, la búsqueda continua con la primera mitad: 10,20,30,40,50. El elemento del medio es ahora 30, que es menor que 40 (el dato buscado). La búsqueda sigue con la lista 40,50. Encontrándose el valor buscado (40) en uno de los extremos.

Búsqueda Binaria, cont. Lectura de datos X(N) Inf = 1 : Sup = N Do m = (Inf+Sup)/2 If (dato < X(m))Then Sup = m Else If(dato > X(m))Then Inf = m End If Loop Until (dato=x(m) or Inf >= Sup)

Presentación de resultados If(dato=X(m)) Then Text1.text = La posición es: & m Text2.text = El dato es: & X(m) Else Text1.text = El dato no se encontro EndIf 43

Búsqueda Binaria (cont.) Este método es más eficiente que el anterior ya que con las primeras dos comparaciones se descartan 3/4 de los datos (el 75%). Comparaciones ~ N: Secuencial ~ Log 2 (N): Binaria número de elementos

TAREAS 45

Listado de ejercicios Calcular el mayor y el menor valor de un vector. Calcular la suma y el promedio de un vector. Invertir las entradas de un vector sobre el mismo vector, ej: [5, 6, 9, 1, 3, 0, 4] [4, 0, 3, 1, 9, 6, 5] 46

Listado de ejercicios Conocidas las coordenadas de un conjunto de puntos: Calcular un vector en la que el elemento (i) sea la distancia del punto i al origen. Calcular una matriz en la que el elemento (i,j) sea la distancia del punto i al punto j. 47

Listado de ejercicios Conocido un vector: identificar qué posición ocupa el cuarto siete? 48

ANEXO 1 49

1.2.3 Método de Ordenamiento Inserción 50

Método de Inserción, cont. Ejemplo: Ordenar las letras W Q R D C A B en orden alfabético. 1 2 3 4 5 6 7 (posición) Inicial: W Q R D C A B Paso 1: Q W (los dos primeros se ordenan) Paso 2: Q R W (insertar tercero, en orden) Paso 3: D Q R W (insertar cuarto, en orden) Paso 4: C D Q R W (insertar quinto, en orden) Paso 5: A C D Q R W (insertar sexto, en orden) Paso 6: A B C D Q R W (insertar séptimo, en orden) 51

Método de Inserción 1. Sostener el mazo de cartas en la mano. 2. Tomar dos cartas, colocarla en la mesa. La de menor valor antes de la de mayor valor. 3.Tomar una carta, ubicarla en la mesa, insertándola en el lugar correcto. Esto implica tener que empujar hacia adelante o hacia atrás, para efectuar la inserción correspondiente. 4. Repetir paso 3, hasta que se agoten las cartas de la mano. 52

Método de Inserción, cont. Programa en Visual Basic: For i = 2 To N t = X(i) : j = i-1 Do Until(j = 0 And t >= X(j)) X(j+1) = X(j) j = j -1 Loop X(j+1) = t Next i Método de Inserción también es ~ N 2. 53

ANEXO 2 Subprogramas (Procedimientos): Procedimientos Sub Procedimientos Function 54

Subprogramas Para simplificar las tareas de programación se dividen los programas en componentes lógicos más pequeños. Estos componentes lógicos se denominan procedimientos o subrutinas. Los procedimientos resultan muy útiles para condensar las tareas repetitivas o compartidas, como cálculos utilizados frecuentemente, manipulación de texto y controles, operaciones con bases de datos, etc. 55

Subprogramas Ya se han utilizado algunos tipos de subprogramas: Funciones de la librería estándar de VB: Val(), Str(), Sqr(), Atn(), Abs(), etc. Otras funciones: MsgBox(), InputBox(), etc. Métodos propios de algunos controles: Clear, AddItem, Scale, Cls, Line, Circle, etc. Procedimientos asociados a eventos: Private Sub Command1_Click() End Sub 56

Crear procedimientos Un procedimiento siempre se define a nivel de módulo (estándar o de formulario). Por lo tanto, un procedimiento no se puede anidar dentro de otro procedimiento. Todo el código ejecutable de un programa en VB debe estar contenido en uno o varios procedimientos. En VB se utilizan varios tipos de procedimientos: Procedimientos Sub que no devuelven un valor. Procedimientos Function que devuelven un valor. 57

Procedimientos Sub Los procedimientos Sub no devuelven un valor. Sintaxis: Alcance Sub NombreProc(parámetros parámetros) CuerpoProcedimiento End Sub Alcance: Opcional. Es el alcance del procedimiento. Puede ser Private o Public. Si no se especifica se asume Public. NombreProc: Requerido. Es el nombre del procedimiento. 58

Procedimientos Sub parámetros: Opcional. Son los parámetros del procedimiento. (Véase más adelante). CuerpoProcedimiento: Opcional. Son las instrucciones que conforman al procedimiento. Cada vez que se llama al procedimiento se ejecutan las instrucciones que hay entre Sub y End Sub. El cuerpo del procedimiento puede tener instrucciones Exit Sub, la cual permite salir de inmediato del procedimiento. La ejecución del programa continúa con la instrucción que sigue a la instrucción que llamó el 59 procedimiento Sub.

Procedimientos Sub Existen dos tipos de procedimientos Sub: Procedimientos Generales y Procedimientos de Eventos. Un procedimiento de evento es un procedimiento que hace referencia a un evento de un objeto. Siempre el nombre de un procedimiento de evento se compone por el nombre del objeto, seguido de un subrayado, seguido del nombre del evento: nombreobjeto_nombreevento Ejemplo: Command1_Click(), Form_Load(), Form_Resize() Un procedimiento general indica a la aplicación cómo realizar una tarea específica. 60

Procedimientos Function Son procedimientos que devuelven un valor. Sintaxis: Alcance Function NombreProc(parámetros) ) As Tipo CuerpoProcedimiento End Function Alcance: Opcional. Es el alcance del procedimiento. Puede ser Private o Public. Si no se especifica se asume Public. NombreProc: Requerido. Es el nombre del procedimiento. 61

Procedimientos Function parámetros: Opcional. Son los parámetros del procedimiento. (Véase más adelante). CuerpoProcedimiento: Opcional. Son las instrucciones que conforman al procedimiento. Puede tener instrucciones Exit Function. Tipo: Es el tipo de dato que retorna el procedimiento. El valor que retorna un procedimiento Function se le debe asignar al nombre del procedimiento, en caso contrario se retorna el valor por defecto. 62

Argumentos vs Parámetros Los argumentos pueden ser constantes, variables o expresiones pasadas a un procedimiento. Ejemplo: en la expresión: X = Sqr(15) (15), el valor 15 corresponde al argumento pasado a la función Sqr de la librería estándar de VB. El parámetro es el nombre de variable por el cual un argumento de procedimiento se conoce dentro del procedimiento. Esta variable recibe el argumento que se pasa dentro del procedimiento. Su alcance es local, es decir, el alcance termina cuando el procedimiento finaliza. 63

Declaración de Argumentos Los parámetros de un procedimiento corresponde a una lista de variables (separadas por comas) que representan los argumentos que se pasan a un procedimiento cuando se le llama. La declaración de argumentos (parámetros) de un procedimiento tiene la siguiente sintaxis: [Optional] [ByVal ByRef] [ParamArray] nombre_variable[( )] [As tipo] [= valor_predeterminado] En la sintaxis, los corchetes ([]) significan que la expresión es opcional y la barra vertical ( ) significa exclusión lógica. 64

Declaración de Argumentos ByVal indica que el argumento se pasa por valor, es decir, se pasa su valor (una copia de la variable) en vez de su dirección. Como resultado, el valor actual de la variable no puede ser cambiado por el procedimiento al cual se pasa. 65

Declaración de Argumentos ByRef indica que el argumento se pasa por referencia, es decir, se pasa su dirección en vez de su valor. Como resultado, el valor real de la variable puede ser cambiado por el procedimiento al cual se pasa. ByRef es el modo predeterminado en Visual Basic. 66

Declaración de Argumentos nombre_variable es el nombre del parámetro. Los paréntesis al final del nombre de la variable significan que el parámetro recibe un array. No se debe especificar tamaño ni número de dimensiones del array, sólo se colocan los paréntesis vacíos. tipo es el tipo de dato del parámetro. Si no se especifica se asume Variant. 67

Llamar procedimientos Utilizando la instrucción Call: Call nombre_procedimiento(arg1,arg2,,arg2,,argn) En este caso, se debe utilizar paréntesis después del nombre del procedimiento. Si el procedimiento retorna un valor, este se pierde. Útil para procedimientos Sub. Ejemplo: Call Sqr(15) 68

Llamar procedimientos En una expresión: nombre_procedimiento(arg1,arg2,,arg2,,argn) En este caso, se debe utilizar paréntesis después del nombre del procedimiento. Sólo es válido para procedimientos Function. Ejemplos: X = Sqr(15) Y = Abs(10 * X Atn(2)) 69

Ejemplo 1 Realizar un procedimiento genérico que permita leer una matriz por el teclado de elementos reales. Realizar un procedimiento genérico que permita mostrar una matriz de elementos reales en una caja de texto. 70

Ejemplo 1: Análisis Un procedimiento genérico para leer una matriz necesita: Un parámetro que recibe la matriz de tipo real simple: A() As Single Un parámetro por referencia, de tipo entero, para el número de filas: N As Integer Un parámetro por referencia, de tipo entero, para el número de columnas: M As Integer 71

Ejemplo 1: Análisis Un procedimiento genérico para mostrar una matriz en una caja de texto necesita: Un parámetro que recibe la matriz de tipo real simple: A() As Single Un parámetro por valor, de tipo entero, para el número de filas: ByVal N As Integer Un parámetro por valor, de tipo entero, para el número de columnas: ByVal M As Integer Un parámetro con la referencia de la caja de texto: txt As TextBox 72

Ejemplo 1: Implementación Procedimiento genérico para leer una matriz: Public Sub LeerMatriz(A() () As Single,, N As Integer,, _ M As Integer) Dim I As Integer N = Val(InputBox("Número ("Número de Filas:")) M = Val(InputBox("Número ("Número de Columnas:")) ReDim A(1 To N, 1 To M) For I = 1 To N For J = 1 To M A(I,, J) = Val(InputBox("Ingrese ("Ingrese elemento(" & _ I & ", " & J & "):")) Next J Next I End Sub 73

Ejemplo 1: Implementación Procedimiento genérico para mostrar una matriz: Public Sub MostrarMatriz(A() () As Single, ByVal N As Integer,, _ ByVal M As Integer, txt As TextBox) Dim I As Integer txt.text = "" For I = 1 To N For J = 1 To M txt.text = txt.text & A(I,, J) & vbtab Next J txt.text = txt.text & vbcrlf Next I End Sub 74

Ejemplo 2 Realizar un procedimiento que permita multiplicar dos matrices: Una matriz A de orden mxn y una matriz B de orden pxq. Nota: Las matrices se pueden multiplicar si y sólo si n = p. El orden de la matriz resultante es mxq. 75

Ejemplo 2: Análisis Un procedimiento para multiplicar dos matrices necesita: Dos parámetros que reciben las matrices de tipo real simple: A() As Single, B() As Single Cuatro parámetros por valor, de tipo entero, para el orden de cada matriz: N1 As Integer, M1 As Integer, N2 As Integer, M2 As Integer Un parámetro que devuelve la matriz resultante: C() As Single El procedimiento devolverá True si se realizó la multiplicación, en caso contrario devolverá False. 76

Ejemplo 2: Implementación Procedimiento para multiplicar dos matrices: Public Function MultMat(A() () As Single,, B() As Single,, _ ByVal N1 As Integer, ByVal M1 As Integer,, _ ByVal N2 As Integer, ByVal M2 As Integer,, _ C() As Single) As Boolean Dim I As Integer,, J As Integer,, K As Integer, Sum As Single If M1 <> N2 Then MultMat = False: Exit Function ReDim C(1 To N1, 1 To M2) For I = 1 To N1 For J = 1 To M2 Sum = 0 For K = 1 To M1 Sum = Sum + A(I,, K) * B(K,, J) Next K C(I,, J) = Sum Next J Next I 77 MultMat = True End Function

Ejemplo 3 Realizar un programa en VB que permita, leer, multiplicar dos matrices y mostrar el resultado. 78

Ejemplo 3: Análisis Un programa que permita multiplicar dos matrices necesita: Leer las dos matrices Realizar la multiplicación Mostrar el resultado si la multiplicación fue posible, en caso contrario, mostrar un mensaje descriptivo. El programa puede hacer uso de los procedimientos definidos anteriormente, implementándolos en un módulo estándar. 79

Ejemplo 3: Implementación 'En el evento Click de un botón de Comando. Dim M1() As Single,, M2() As Single,, M3() As Single Dim N As Integer,, M As Integer,, P As Integer,, Q As Integer Call LeerMatriz(M1,, N, M) Call LeerMatriz(M2,, P, Q) If (MultMat(M1,, M2, N, M, P, Q, M3)) Then MostrarMatriz M3, UBound(M3 (M3,, 1), UBound(M3 (M3,, 2), Text1 Else MsgBox "No se puede multiplicar las matrices: " & _ "El número de columnas de la primera matriz es " & _ "diferente al número de filas de la segunda " & _ "matriz.", vbexclamation,, "Error" End If 80