Você está na página 1de 4

12 de septiembre de 2013 - Docente: Nelson Rojas Nez

Fundamentos de programacin
Gua de uso de arreglos con Visual Basic .Net

Hasta ahora hemos trabajado usando diferentes tipos de datos que van desde el uso de Enteros
(Integer), Decimales (Double/Single), Cadenas de Caracter (String) y Fechas (Date).
Todos las variables que hemos usado son especialmente elementos atmicos, pues slo nos
permiten almacenar en ellos un nico valor.

Ahora bien, la mayora de los programas que se realizan en informtica puede resolverse con
variables, pero no en todos los casos las operaciones son sencillas y alguna veces requiere de
elementos que pueden ser vistos como repeticiones de acciones.
Un ejemplo clsico de este concepto es el desglose de monedas. Supongamos que una persona
tiene un servicio de pago de cheques de hasta $200.000.- Cada uno de los cajeros debe hacer
rendir sus fondo de caja para que el efectivo le dure lo ms posible dentro de su jornada.
Luego, una mala forma de echar a perder el trabajo sera la siguiente: un cliente se presenta con
un cheque de $200.000.- Como al cajero le da lo mismo, toma los $200.000 de los billetes de
$1.000 (mil pesos) . En una sola operacin el cajero dej salir 200 billetes. Luego, el prximo
cliente viene con $150.000.- Y nuevamente el cajero toma los billetes de mil pesos y le entrega
ciento cincuenta billetes. El problema es que el cajero se acaba de gastar la provisin de billetes de
mil pesos que tena asignada en la maana.

As, una mejor forma de resolver este problema es comenzar con los billetes ms altos, e ir
bajando dependiendo del monto del cheque.

Si un cliente llega con un cheque de $147.678, entonces el sistema deber decirle al cajero cul es
la mejor forma de resolver dicho monto:
Billete/Moneda Cantidad
$20.000 5
$10.000 4
$5.000 1
$2.000 1
$1.000 0
$500 1
$100 1
12 de septiembre de 2013 - Docente: Nelson Rojas Nez
$50 1
$10 2
$5 1
$1 3

Lo anterior genera el desglose ptimo para el cheque ingresado por el cliente.

El problema anterior puede resolverse en una buena cantidad de lneas de trabajo secuencial.
A mi parecer, muchas ms de las que me gustara leer para un problema que creo singularmente
sencillo.
Bueno, para que se den cuenta de lo que les digo, les presento la idea algortmica que resuelve la
problemtica
Leer Valor_Cheque
Si Valor_Cheque >= 20.000 Entonces
Billetes_Veinte = Valor_Cheque / 20.000
Valor_Cheque = Valor_Cheque - Billetes_Veinte * 20.000
Fin Si
Si Valor_Cheque >= 10.000 Entonces
Billetes_Diez = Valor_Cheque / 10.000
Valor_Cheque = Valor_Cheque - Billetes_Diez * 10.000
Fin Si
Si Valor_Cheque >= 5.000 Entonces
Billetes_Cinco = Valor_Cheque / 5.000
Valor_Cheque = Valor_Cheque - Billetes_Cinco * 5.000
Fin Si
...
Si Valor_Cheque >= 5 Entonces
Monedas_Cinco = Valor_Cheque / 5
12 de septiembre de 2013 - Docente: Nelson Rojas Nez
Valor_Cheque = Valor_Cheque - Monedas_Cinco * 5
Fin Si
Si Valor_Cheque >= 1 Entonces
Monedas_Uno = Valor_Cheque
Fin Si
// Luego el desglose es como sigue:
Escribir "Billetes de $20.000 = " + Billetes_Veinte
Escribir "Billetes de $10.000 = " + Billetes_Diez
Escribir "Billetes de $5.000 = " + Billetes_Cinco
Escribir "Billetes de $2.000 = " + Billetes_Dos
Escribir "Billetes de $1.000 = " + Billetes_Mil
Escribir "Monedas de $500 = " + Monedas_Quinientos
Escribir "Monedas de $100 = " + Monedas_Cien
Escribir "Monedas de $50 = " + Monedas_Cincuenta
Escribir "Monedas de $10 = " + Monedas_Diez
Escribir "Monedas de $5 = " + Monedas_Cinco
Escribir "Monedas de $1 = " + Monedas_Uno

Como ven, la cantidad de lneas que permite resolver el problema no es tan larga, pero creo que
puede mejorarse si se usa algo de iteracin y un tipo de variables llamadas arreglos.

Un arreglo es una variable que puede almacenar datos contiguos en memoria y que nos permite
utilizar un ndice para referirnos a cada uno de los elementos que dentro de la variable han sido
asignados.

Si utilizramos la misma operacin respecto de los contenidos para el desglose, las operaciones de
programacin usando un lenguaje como Visual Basic .NET podra resumirse a lo siguiente:
12 de septiembre de 2013 - Docente: Nelson Rojas Nez
Dim Valor_Cheque As Integer = 147678
Dim Monedas(10) As Integer = {20000, 10000, 5000, 2000, 1000, 500, 100, 50, 10, 5, 1}
Dim Desglose(10) As Integer = {0,0,0,0,0,0,0,0,0,0,0}
Dim Indice as Integer
For Indice = 0 To 10
If Valor_Cheque > Monedas(Indice) Then
Desglose(Indice) = Valor_Cheque / Monedas(Indice)
Valor_Cheque = Valor_Cheque - Monedas(Indice) * Desglose(Indice)
End If
Next
'Mostrar resultados
For Indice = 0 To 10
Console.WriteLine("Monedas de " & Monedas(Indice) & " = " & Desglose(Indice))
Next
'Fin
Console.ReadLine()

Como se darn cuenta, la versin iterativa que utiliza variables de tipo Arreglo es mucho ms corta
que la versin secuencial.

Labor de hoy:
Implementar ambos algoritmos dentro de Visual Basic .NET

Você também pode gostar