algoritmos y programación clase 8 - bienvenidos · el algoritmo en visual basic: for i = 1 to n-1...

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

Upload: vunhan

Post on 21-Sep-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

1

Algoritmos y ProgramaciónAlgoritmos y ProgramaciónClase 8Clase 8

Ordenamiento y Búsqueda

Anexo: Uso de Procedimientos Sub y Procedimientos Function

Page 2: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 82

EXAMENEXAMEN

1.1. Lunes 16 de abril 4 Lunes 16 de abril 4 pmpm..

2.2. Tema: Lo visto hasta la clase de hoy.Tema: Lo visto hasta la clase de hoy.

Page 3: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 83

ContenidoContenidoOrdenamiento y Búsqueda1.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

Page 4: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 84

1.1 Ejemplos1.1 Ejemplos

Ordenamiento y búsquedaOrdenamiento y búsqueda::

En el directorio telefónico.En el directorio telefónico.En el diccionario.En el diccionario.Inventarios.Inventarios.Lista de carnés.Lista de carnés.Billetes (con repetición)Billetes (con repetición)Facturación, proveedores.Facturación, proveedores.BibliotecaBiblioteca, etc., etc.

Page 5: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 85

OrdenamientoOrdenamiento

El ordenamiento de una serie de datos puede ser ascendente o descendente:

Orden ascendente: X1 ≤ X2 ≤... ≤ Xi-1 ≤Xi ≤ Xi+1 ≤... ≤ XnOrden descendente: X1 ≥ X2 ≥... ≥ Xi-1 ≥Xi ≥ Xi+1 ≥ ... ≥ Xn

Page 6: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 86

Métodos de ordenamientoMétodos de ordenamiento

Cinco métodos básicos de ordenamiento de vectores:

Intercambio (“Burbuja”)Intercambio (“Burbuja”)SelecciónSelecciónInserciónInserción**ShellShell**QuickSortQuickSort

EjemploEjemplo: Un mazo de cartas, de una sola pinta.: Un mazo de cartas, de una sola pinta.

TareaTarea

Page 7: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

7

1.2.1 Método de OrdenamientoIntercambio (Burbuja)

Page 8: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 88

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

Para abreviar la explicación del algoritmo se toma Para abreviar la explicación del algoritmo se toma

un subconjunto del mazo de cartas, por ejemplo elun subconjunto del mazo de cartas, por ejemplo el

conformado por las cartas que se muestran.conformado por las cartas que se muestran.

1. Desplegar las cartas sobre una Desplegar las cartas sobre una mesa,en línea, figuras hacia arribamesa,en línea, figuras hacia arriba

Page 9: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 89

Intercambio (Burbuja), cont.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 intercambiointercambio. La carta 5 se lleva a la posición 1, y la carta 9 a la posición 2.

Page 10: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 810

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

2.1 La carta en la primeraposición se lleva a unaubicación temporal.

Esta carta se ubicará

en la segunda posición

2. 2. IntercambiarIntercambiar las cartas que están las cartas que están desordenadas: (se compara la primera con desordenadas: (se compara la primera con todas las demás)todas las demás)

Page 11: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 811

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

La carta en la ubicación temporal se lleva a la segunda posición. Así se ha efectuado un proceso deintercambiointercambio (transposición, permutación).

Page 12: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 812

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

RESULTADO PARCIAL DEL ORDENAMIENTORESULTADO PARCIAL DEL ORDENAMIENTO

Page 13: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 813

Intercambio (Burbuja), cont.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íSí se efectúa el intercambiointercambio.

Page 14: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 814

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

La carta 4, en la posición 3, se lleva a una ubicacióntemporal; la carta 5, en la posición 1, se lleva a laposición 3; y la carta 4 se lleva de la posición temporala la posición 1.

RESULTADO PARCIAL DEL ORDENAMIENTORESULTADO PARCIAL DEL ORDENAMIENTO

Page 15: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 815

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

La carta 4, en la posición 1, se compara con lasdemás; el intercambio se hace con la carta 2, que estáen la posición 5.

Page 16: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 816

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

2.2 La carta 2, ahora en la posición 1, es la de menorvalor.

2. 2. IntercambiarIntercambiar las cartas que están las cartas que están desordenadas: (se compara la primera desordenadas: (se compara la primera con todas las demás)con todas las demás)1 2 3 4 5 6 71 2 3 4 5 6 7

Page 17: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 817

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

El proceso de intercambio se repite hasta que las cartasestén ordenadas ascendentemente.

2. 2. IntercambiarIntercambiar las cartas que están las cartas que están desordenadas: (se compara la segunda desordenadas: (se compara la segunda con todas las demás)con todas las demás)1 2 3 4 5 6 71 2 3 4 5 6 7

Page 18: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 818

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

Este método implica dos iteraciones: una que toma cadacarta; y otra que compara la carta tomada con todas lasdemás; en dicha comparación se decide efectuar, o no,el intercambiointercambio.

3. 3. FinalizarFinalizar cuando todas las cartas cuando todas las cartas están ordenadas:están ordenadas:

1 2 3 4 5 6 71 2 3 4 5 6 7

Page 19: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 819

Intercambio (Burbuja)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.

Page 20: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 820

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

El algoritmo en Visual Basic:El algoritmo en Visual Basic:ForFor i = 1 i = 1 ToTo NN--11

ForFor j= i+1 j= i+1 ToTo NNIf(X(jIf(X(j) > X(i))) > X(i))ThenThen

temptemp = X(i)= X(i)X(i) = X(j)X(i) = X(j)X(j) = X(j) = temptemp

EndEnd ififNextNext jj

NextNext ii

Máximo

N-1 N-1

Número de comparaciones ~ N2

Page 21: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 821

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

Ejemplo de la función de la variable Ejemplo de la función de la variable Temporal (Temporal (TempTemp):):

Temp

Page 22: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 822

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

Ejemplo de la función de la variable Ejemplo de la función de la variable Temporal (Temporal (TempTemp):):

1

Temp

Page 23: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 823

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

Ejemplo de la función de la variable Ejemplo de la función de la variable Temporal (Temporal (TempTemp):):

2

Temp

Page 24: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 824

Intercambio (Burbuja), cont.Intercambio (Burbuja), cont.

Ejemplo de la función de la variable Ejemplo de la función de la variable Temporal (Temporal (TempTemp):):

3

Temp

Page 25: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 825

1.2.1 Intercambio (“Burbuja”), cont.1.2.1 Intercambio (“Burbuja”), cont.

número de elementos

# d

e co

mpa

raci

ones

Algoritmoexponencial ~ N2

Page 26: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

26

1.2.2 Método de OrdenamientoSelección

Page 27: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 827

2 Método de Selección2 Método de Selección, , cont.cont.

1. Desplegar las cartas sobre una mesa Desplegar las cartas sobre una mesa figuras hacia arribafiguras hacia arriba

Page 28: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 828

Método de SelecciónMétodo de Selección, cont., cont.

2. Retirar la carta de menor valor y ubicarla en otro sitio:

Page 29: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 829

Método de SelecciónMétodo de Selección, cont., cont.

3. Del mazo restante en la mesa, seleccionar la3. Del mazo restante en la mesa, seleccionar lacarta de menor valor, retirarla de la mesa y carta de menor valor, retirarla de la mesa y

ponerla en el otro sitio, detrás de la anterior.ponerla en el otro sitio, detrás de la anterior.

Page 30: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 830

Método de SelecciónMétodo de Selección, cont., cont.

4. Al finalizar, las cartas estarán ordenadas4. Al finalizar, las cartas estarán ordenadasascendentemente:ascendentemente:

Puede demostrarse que el método de selección requiereun número de comparaciones de (N2 - N)/2. En el mejorde los casos, el número de intercambios es cero y en el peor de los casos es (N2 - N)/2.

Page 31: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 831

Ejemplo utilizando el Mazo de Cartas Ejemplo utilizando el Mazo de Cartas de una sola pintade 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.

Page 32: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 832

Método de SelecciónMétodo de Selección, cont., cont.Programa en Visual Basic:Programa en Visual Basic:

For i = 1 To N-1c = i : t = X(i)For j = i+1 To N

If(X(j) >= t)Thenc = j : t = X(j)

End IfNext j

X(c) = X(i)

X(i) = t

Next i

Page 33: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 833

Eficiencia de los MétodosEficiencia 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.

Page 34: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 8

1.3 1.3 Métodos de BúsquedaMétodos de Búsqueda

La búsqueda implica hallar un elemento en una lista de datos.

Métodos de búsqueda:

SecuencialBinaria

Page 35: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

35

1.3.1 Búsqueda Secuencial

Page 36: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 8

BBúsqueda Secuencialúsqueda Secuencial

Lectura de datos vector A(N)

K = 0

Dok = k + 1

Loop Until(Dato = A(k) or k=N)

~ N

El arreglo puede estar, o no estar, ordenado .

Page 37: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 837

Búsqueda SecuencialBúsqueda Secuencial

If k = n And dato <> a(k) ThenText1.Text = "dato no encontrado "

ElseText1.Text = "Posición " & kText2.Text = "Dato " & dato

End If

Page 38: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

38

1.3.2 Búsqueda Binaria

Page 39: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 8

2 B2 Búsqueda Binariaúsqueda BinariaEl 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.

Page 40: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 840

Búsqueda Binaria

Inf

[a1 a2 a3 a4 … am … aj … an]

Supm=(Inf+Sup)/2

A() es un vector ordenado ascendentemente y se esta buscando un “dato” entre los lìmites superior e inferior.

Si dato buscado < am

Sup = m-1

Si dato buscado > am

Inf = m+1Si dato buscado = amLa posición buscada = m

Page 41: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 8

BBúsqueda Binaria, cont.ú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.

Page 42: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 8

BBúsqueda Binaria, cont.úsqueda Binaria, cont.

Lectura de datos X(N)Inf = 1 : Sup = NDom = (Inf+Sup)/2If (dato < X(m))Then

Sup = m Else If(dato > X(m))ThenInf = m

End IfLoop Until (dato=X(m) or Inf >= Sup)

Page 43: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 843

Presentación de resultados

If(dato=X(m)) ThenText1.text = “La posición es:” & mText2.text = “El dato es: ” & X(m)

ElseText1.text = “El dato no se encontro”

EndIf

Page 44: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 8

BBúsqueda Binaria (cont.)ú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%).

~ N: Secuencial

~ Log2(N): Binaria

número de elementos

Com

para

cion

es

Page 45: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

45

TAREAS

Page 46: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 846

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]

Page 47: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 847

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.

Page 48: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 848

Listado de ejercicios…

Conocido un vector: identificar qué posición ocupa el cuarto siete?

Page 49: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

49

ANEXO 1

Page 50: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

50

1.2.3 Método de OrdenamientoInserción

Page 51: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 851

Método de Inserción, cont.Método de Inserción, cont.

Ejemplo: Ejemplo: Ordenar las letras W Q R D C A B Ordenar las letras W Q R D C A B en orden alfabético.en orden alfabético.

1 2 3 4 5 6 7 (posición)1 2 3 4 5 6 7 (posición)Inicial: W Q R D C A BInicial: W Q R D C A B

Paso 1: Q W Paso 1: Q W (los dos primeros se ordenan)(los dos primeros se ordenan)

Paso 2: Q R W Paso 2: Q R W (insertar tercero, en orden)(insertar tercero, en orden)

Paso 3: D Q R W Paso 3: D Q R W (insertar cuarto, en orden)(insertar cuarto, en orden)

Paso 4: C D Q R W Paso 4: C D Q R W (insertar quinto, en orden)(insertar quinto, en orden)

Paso 5: A C D Q R W Paso 5: A C D Q R W (insertar sexto, en orden)(insertar sexto, en orden)

Paso 6: A B C D Q R W Paso 6: A B C D Q R W (insertar séptimo, en (insertar séptimo, en

orden)orden)

Page 52: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 852

Método de InserciónMé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 lainserción correspondiente.

4. Repetir paso 3, hasta que se agoten las cartas de la mano.

Page 53: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 853

Método de Inserción, cont.Método de Inserción, cont.Programa en Visual Basic:Programa en Visual Basic:

For i = 2 To Nt = X(i) : j = i-1Do Until(j = 0 And t >= X(j))

X(j+1) = X(j)

j = j -1LoopX(j+1) = t

Next i

Método de Inserción también es ~ N2.

Page 54: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

54

ANEXO 2ANEXO 2

Subprogramas (Procedimientos):Procedimientos SubProcedimientos Function

Page 55: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 855

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 procedimientosprocedimientos o subrutinassubrutinas.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.

SubprogramasSubprogramas

Page 56: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 856

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

SubprogramasSubprogramas

Page 57: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 857

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 SubSub que no devuelven un valor.Procedimientos FunctionFunction que devuelven un valor.

Crear procedimientosCrear procedimientos

Page 58: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 858

Los procedimientos Sub no devuelven un valor.Sintaxis:AlcanceAlcance SubSub NombreProcNombreProc((parámetrosparámetros))

CuerpoProcedimientoCuerpoProcedimientoEndEnd SubSub

AlcanceAlcance: Opcional. Es el alcance del procedimiento. Puede ser PrivatePrivate o PublicPublic. Si no se especifica se asume PublicPublic.NombreProcNombreProc: Requerido. Es el nombre del procedimiento.

Procedimientos Procedimientos SubSub

Page 59: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 859

parámetrosparámetros: Opcional. Son los parámetros del procedimiento. (Véase más adelante).CuerpoProcedimientoCuerpoProcedimiento: Opcional. Son las instrucciones que conforman al procedimiento.Cada vez que se llama al procedimiento se ejecutan las instrucciones que hay entre SubSub y EndEnd SubSub. El cuerpo del procedimiento puede tener instrucciones ExitExit SubSub, 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 procedimiento Sub.

Procedimientos Procedimientos SubSub

Page 60: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 860

Existen dos tipos de procedimientos SubSub: 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_nombreEventonombreObjeto_nombreEvento

Ejemplo: Command1_Click(), Form_Load(), Form_Resize()Un procedimiento general indica a la aplicación cómo realizar una tarea específica.

Procedimientos Procedimientos SubSub

Page 61: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 861

Son procedimientos que devuelven un valor.Sintaxis:

AlcanceAlcance FunctionFunction NombreProc(parámetrosNombreProc(parámetros) As Tipo) As TipoCuerpoProcedimientoCuerpoProcedimiento

EndEnd FunctionFunction

AlcanceAlcance: Opcional. Es el alcance del procedimiento. Puede ser PrivatePrivate o PublicPublic. Si no se especifica se asume PublicPublic.NombreProcNombreProc: Requerido. Es el nombre del procedimiento.

Procedimientos Procedimientos FunctionFunction

Page 62: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 862

parámetrosparámetros: Opcional. Son los parámetros del procedimiento. (Véase más adelante).CuerpoProcedimientoCuerpoProcedimiento: Opcional. Son las instrucciones que conforman al procedimiento. Puede tener instrucciones ExitExit FunctionFunction.

TipoTipo: Es el tipo de dato que retorna el procedimiento.El valor que retorna un procedimiento FunctionFunction se le debedebe asignar al nombre del procedimiento, en caso contrario se retorna el valor por defecto.

Procedimientos Procedimientos FunctionFunction

Page 63: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 863

Los argumentos pueden ser constantes, variables o expresiones pasadas a un procedimiento.Ejemplo: en la expresión: X = X = SqrSqr(15)(15), el valor 1515corresponde al argumento pasado a la función SqrSqr 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.

Argumentos Argumentos vsvs ParámetrosParámetros

Page 64: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 864

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:

[OptionalOptional] [ByValByVal | ByRefByRef] [ParamArrayParamArray] nombre_variablenombre_variable[( )] [AsAs tipotipo]

[= valor_predeterminadovalor_predeterminado]

En la sintaxis, los corchetes ([]) significan que la expresión es opcionalopcional y la barra vertical (|) significa exclusión lógica.

Declaración de ArgumentosDeclaración de Argumentos

Page 65: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 865

ByValByVal 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.

Declaración de ArgumentosDeclaración de Argumentos

Page 66: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 866

ByRefByRef 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. ByRefByRef es el modo predeterminado en Visual Basic.

Declaración de ArgumentosDeclaración de Argumentos

Page 67: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 867

nombre_variablenombre_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.tipotipo es el tipo de dato del parámetro. Si no se especifica se asume VariantVariant.

Declaración de ArgumentosDeclaración de Argumentos

Page 68: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 868

Utilizando la instrucción Utilizando la instrucción CallCall::CallCall nombre_procedimiento(arg1nombre_procedimiento(arg1,arg2,,arg2,…,argN…,argN))

En este caso, se debese debe utilizar paréntesis después del nombre del procedimiento.Si el procedimiento retorna un valor, este se pierde.Útil para procedimientos SubSub.Ejemplo: CallCall SqrSqr(15)(15)

Llamar procedimientosLlamar procedimientos

Page 69: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 869

En una expresión:En una expresión:nombre_procedimiento(arg1nombre_procedimiento(arg1,arg2,,arg2,…,argN…,argN))En este caso, se debese debe utilizar paréntesis después del nombre del procedimiento.Sólo es válido para procedimientos FunctionFunction.Ejemplos:

X = X = SqrSqr(15)(15)

Y = Y = AbsAbs(10 * X (10 * X –– AtnAtn(2))(2))

Llamar procedimientosLlamar procedimientos

Page 70: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 870

Ejemplo 1Ejemplo 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.

Page 71: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 871

Ejemplo 1: AnálisisEjemplo 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 SingleUn parámetro por referencia, de tipo entero, para el número de filas: N As IntegerUn parámetro por referencia, de tipo entero, para el número de columnas: M As Integer

Page 72: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 872

Ejemplo 1: AnálisisEjemplo 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 SingleUn parámetro por valor, de tipo entero, para el número de filas: ByVal N As IntegerUn parámetro por valor, de tipo entero, para el número de columnas: ByVal M As IntegerUn parámetro con la referencia de la caja de texto: txt As TextBox

Page 73: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 873

Ejemplo 1: ImplementaciónEjemplo 1: ImplementaciónProcedimiento genérico para leer una matriz:

PublicPublic SubSub LeerMatriz(ALeerMatriz(A() () As SingleAs Single, N , N As As IntegerInteger, _, _M M As As IntegerInteger))

DimDim I I As As IntegerIntegerN = N = Val(InputBoxVal(InputBox("Número de Filas:"))("Número de Filas:"))M = M = Val(InputBoxVal(InputBox("Número de Columnas:"))("Número de Columnas:"))ReDimReDim A(1 A(1 ToTo N, 1 N, 1 ToTo M)M)ForFor I = 1 I = 1 ToTo NN

ForFor J = 1 J = 1 ToTo MMA(IA(I, J) = , J) = Val(InputBoxVal(InputBox("Ingrese elemento(" & _("Ingrese elemento(" & _

I & ", " & J & "):"))I & ", " & J & "):"))NextNext JJ

NextNext IIEndEnd SubSub

Page 74: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 874

Ejemplo 1: ImplementaciónEjemplo 1: Implementación

Procedimiento genérico para mostrar una matriz:

PublicPublic SubSub MostrarMatriz(AMostrarMatriz(A() () As SingleAs Single, , ByValByVal N N As As IntegerInteger, _, _

ByValByVal M M As As IntegerInteger, , txttxt As As TextBoxTextBox))

DimDim I I As As IntegerInteger

txt.Texttxt.Text = ""= ""

ForFor I = 1 I = 1 ToTo NN

ForFor J = 1 J = 1 ToTo MM

txt.Texttxt.Text = = txt.Texttxt.Text & & A(IA(I, J) & , J) & vbTabvbTab

NextNext JJ

txt.Texttxt.Text = = txt.Texttxt.Text & & vbCrLfvbCrLf

NextNext II

EndEnd SubSub

Page 75: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 875

Ejemplo 2Ejemplo 2

Realizar un procedimiento que permita multiplicar dos matrices: Una matriz AA de orden mmxxnn y una matriz BBde orden ppxxqq.

Nota: Las matrices se pueden multiplicar si y sólo si nn == pp. El orden de la matriz resultante es mmxxqq.

Page 76: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 876

Ejemplo 2: AnálisisEjemplo 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 SingleCuatro parámetros por valor, de tipo entero, para el orden de cada matriz: N1 As Integer, M1 As Integer, N2 As Integer, M2 As IntegerUn parámetro que devuelve la matriz resultante: C() As SingleEl procedimiento devolverá True si se realizó la multiplicación, en caso contrario devolverá False.

Page 77: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 877

Ejemplo 2: ImplementaciónEjemplo 2: Implementación

Procedimiento para multiplicar dos matrices:

PublicPublic FunctionFunction MultMat(AMultMat(A() () As SingleAs Single, B() , B() As SingleAs Single, _, _ByValByVal N1 N1 As As IntegerInteger, , ByValByVal M1 M1 As As IntegerInteger, _, _ByValByVal N2 N2 As As IntegerInteger, , ByValByVal M2M2 As As IntegerInteger, _, _C() C() As SingleAs Single) ) As As BooleanBoolean

DimDim I I As As IntegerInteger, J, J As As IntegerInteger, K, K As As IntegerInteger, , SumSum As SingleAs SingleIfIf M1 <> N2M1 <> N2 ThenThen MultMatMultMat = = FalseFalse: : ExitExit FunctionFunctionReDimReDim C(1 C(1 ToTo N1, 1 N1, 1 ToTo M2)M2)ForFor I = 1 I = 1 ToTo N1N1

ForFor J = 1 J = 1 ToTo M2M2SumSum = 0= 0ForFor K = 1 K = 1 ToTo M1M1

SumSum = = SumSum + + A(IA(I, K) * , K) * B(KB(K, J), J)NextNext KKC(IC(I, J) = , J) = SumSum

NextNext JJNextNext IIMultMatMultMat = = TrueTrue

EndEnd FunctionFunction

Page 78: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 878

Ejemplo 3Ejemplo 3

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

Page 79: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 879

Ejemplo 3: AnálisisEjemplo 3: Análisis

Un programa que permita multiplicar dos matrices necesita:

Leer las dos matricesRealizar la multiplicaciónMostrar 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.

Page 80: Algoritmos y Programación Clase 8 - Bienvenidos · 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) X(i) = X(j) X(j) = temp End if Next

Clase 880

Ejemplo 3: ImplementaciónEjemplo 3: Implementación

'En el evento Click de un botón de Comando.DimDim M1() M1() As SingleAs Single, M2() , M2() As SingleAs Single, M3() , M3() As SingleAs SingleDimDim N N As As IntegerInteger, M , M As As IntegerInteger, P , P As As IntegerInteger, Q, Q As As IntegerIntegerCallCall LeerMatriz(M1LeerMatriz(M1, N, M), N, M)CallCall LeerMatriz(M2LeerMatriz(M2, P, Q), P, Q)IfIf ((MultMat(M1MultMat(M1, M2, N, M, P, Q, M3)), M2, N, M, P, Q, M3)) ThenThen

MostrarMatrizMostrarMatriz M3,M3, UBoundUBound(M3(M3, 1),, 1), UBoundUBound(M3(M3, 2), Text1, 2), Text1ElseElse

MsgBoxMsgBox "No se puede multiplicar las matrices: " & _"No se puede multiplicar las matrices: " & _"El número de columnas de la primera matriz es " & _"El número de columnas de la primera matriz es " & _"diferente al número de filas de la segunda " & _"diferente al número de filas de la segunda " & _"matriz.", "matriz.", vbExclamationvbExclamation, "Error", "Error"

EndEnd IfIf