|
Categorias
|
Funciones y procedimientos en Visual Basic 2005 para calcular el valor en letras de un monto y el detalle del vuelto correspondiente
ÍNDICE Module Module1 Public Function unidades(ByVal montoapagar As Integer) As Integer unidades = Val(Strings.Right(Str(montoapagar), 1)) 'A partir de la derecha, toma un valor, de modo que devuelve las unidades. End Function Public Function decenas(ByVal montoapagar As Integer) As Integer decenas = Val(Strings.Left(Strings.Right(Str(montoapagar), 2), 1)) 'A partir de la derecha, toma dos valores. Luego de ese resultado, a partir de la izquierda toma un valor, de modo que devuelve las decenas.
End
Function Public Function montoenletras1(ByVal montoapagar As Integer) As String Dim unidades1, decenas1 As Integer unidades1 = unidades(montoapagar) decenas1 = decenas(montoapagar) montoenletras1 = "" If (montoapagar >= 30) Then Select Case decenas1 Case 3 montoenletras1 += "Treinta" Case 4 montoenletras1 += "Cuarenta" Case 5 montoenletras1 += "Cincuenta" Case 6 montoenletras1 += "Sesenta" Case 7 montoenletras1 += "Setenta" Case 8 montoenletras1 += "Ochenta" Case 9 montoenletras1 += "Noventa" Case 0 'Si El valor es "100", el segundo digito de derecha a izquierda (el valor de las decenas) es "0". montoenletras1 += "Cien" End Select Select Case unidades1 Case 1 montoenletras1 += " y uno" Case 2 montoenletras1 += " y dos" Case 3 montoenletras1 += " y tres" Case 4 montoenletras1 += " y cuatro" Case 5 montoenletras1 += " y cinco" Case 6 montoenletras1 += " y seis" Case 7 montoenletras1 += " y siete" Case 8 montoenletras1 += " y ocho" Case 9 montoenletras1 += " y nueve" End Select Return montoenletras1 Else Select Case montoapagar Case 0 Return "Cero" Case 1 Return "Uno" Case 2 Return "Dos" Case 3 Return "Tres" Case 4 Return "Cuatro" Case 5 Return "Cinco" Case 6 Return "Seis" Case 7 Return "Siete" Case 8 Return "Ocho" Case 9 Return "Nueve" Case 10 Return "Diez" Case 11 Return "Once" Case 12 Return "Doce" Case 13 Return "Trece" Case 14 Return "Catorce" Case 15 Return "Quince" Case 16 Return "Dieciséis" Case 17 Return "Diecisiete" Case 18 Return "Dieciocho" Case 19 Return "Diecinueve" Case 20 Return "Veinte" Case 21 Return "Veintiuno" Case 22 Return "Veintidos" Case 23 Return "Veintitres" Case 24 Return "Veinticuatro" Case 25 Return "Veinticinco" Case 26 Return "Veintiséis" Case 27 Return "Veintisiete" Case 28 Return "Veintiocho" Case 29 Return "Veintinueve" End Select End If End Function Public Function vuelto1(ByVal montoapagar As Integer) As String vuelto1 = (100 - montoapagar) vuelto1 = "$" + vuelto1 'Concatenando "$" para la respuesta.
End
Function
Public Sub
vueltoendetalle(ByVal vuelto
As String,
ByRef billetes20 As
String, ByRef
billetes10 As String,
ByRef billetes5 As
String, ByRef
billetes1 As String)
'Este es un procedimiento, no una funcion.
Notese que el primer parametro es por valor y los demas por referencia. Es
porque el primer parametro es para darle datos con que trabajar al procedimiento
y los demas son donde se hacen los intercambios u operaciones. Los ultimos 4
parametros tienen que ser "ByRef", pues de lo contrario el programa no da error
pero no funcionaria correctamente, pues esperaria parametros por valor
provenientes de los TextBox. Lo que se pretende es que el procedimiento realice
las respectivas operaciones y modifique las variables correspondientes que se le
dan como parametro, de modo que imprimira los resultados en los TextBox
correspondientes cuando estos se pasen correctamente como parametros del
procedimientos cuando este sea llamado por el programa. Dim residuo As Integer 'Ira almacenando los residuos billetes20 = Str(Int(vuelto / 20)) 'Cuantos billetes de $20 se necesitan para dar el vuelto.
'billetes20 = Str(vuelto Mod 20) '"Str()" porque los
parametros del procedimiento son tipo String, entonces se requiere la conversion. residuo = vuelto Mod 20 'Residuo luego de dar los billetes de $20.00 billetes10 = Str(Int(residuo / 10)) 'Cuantos billetes de $10 se necesitan para dar el vuelto. residuo = residuo Mod 10 'Residuo luego de dar los billetes de $10.00. billetes5 = Str(Int(residuo / 5)) 'Cuantos billetes de $5 se necesitan para dar el vuelto. residuo = residuo Mod 5 'Residuo luego de dar los billetes de $5.00. billetes1 = Str(Int(residuo / 1)) 'Cuantos billetes de $1 se necesitan para dar el vuelto.
residuo
= residuo Mod 1
'Residuo luego de dar los billetes de $1.00. Esta linea realmente no tiene
sentido, pues dividir entre 1 no dara residuo diferente de cero, entonces se
sabe que el residuo es cero. End Sub
End
Module
CONCLUSIÓN
Jaime Montoya
Articulos relacionados:
|










