Los programas necesitarán efectuar cálculos matemáticos, de texto, trigonométricos, etc., según el trabajo que el programa realizará. Para ello Visual Basic tiene operadores matemáticos y funciones precreadas para programar. Los operadores matemáticos son los siguientes:
Tabla 5 - Operadores matemáticos. |
Signo |
Concepto |
+ |
Suma |
- |
Resta (o signo negativo) |
* |
Multiplicación |
/ |
División |
|
División entera |
^ |
Potenciación |
& |
Concatenación |
Mod |
Resto de una división |
Ejemplo 1
Crea un nuevo proyecto estándar y coloca en el formulario los siguientes controles:
Control |
Propiedad |
Valor |
Form |
Name |
frmCalc |
Textbox |
Name |
txtVisor |
Commandbutton |
Name |
cmdOper |
" " |
Index |
0 a 6 |
" " |
Caption |
+, -, *, /, , ^, Mod |
Commandbutton |
Name |
cmdIgual |
" " |
Caption |
= |
Escribe el siguiente código en la ventana de código del formulario:
Option Explicit
Dim numer as Double, oper as Byte
Private Sub txtVisor_LostFocus()
If isnumeric(txtVisor.Text)=False Then
MsgBox("Introduzca un valor numérico"):txtVisor.SetFocus
End Sub
Private Sub cmdIgual_Click()
Select Case oper
Case 0
numer=txtVisor.Text
Case 1
txtVisor.Text=numer+txtVisor.Text
numer=txtVisor.Text:oper=0
Case 2
txtVisor.Text=numer-txtVisor.Text
numer=txtVisor.Text:oper=0
Case 3
txtVisor.Text=numer*txtVisor.Text
numer=txtVisor.Text:oper=0
Case 4
txtVisor.Text=numer/txtVisor.Text
numer=txtVisor.Text:oper=0
Case 5
txtVisor.Text=numertxtVisor.Text
numer=txtVisor.Text:oper=0
Case 6
txtVisor.Text=numer^txtVisor.Text
numer=txtVisor.Text:oper=0
Case 7
txtVisor.Text=numer Mod txtVisor.Text
numer=txtVisor.Text:oper=0
End Select
End Sub
Private Sub cmdOper_Click(index as Integer)
oper=1+index
End Sub
Private Sub txtVisor_KeyPress(Keyascii as Integer)
If Keyascii=13 Then
Call cmdIgual_Click
End If
End Sub
Pulse F5 para probar la aplicación.
Funciones.
En esta parte se brindarán funciones matemáticas, funciones de texto, etc., para utilizar.
Las siguientes son las funciones matemáticas y trigonométricas:
- Abs(numero): esta función devuelve el valor absoluto de un número; el valor absoluto de un número es ese número con signo positivo.
- Int(numero) o Fix(numero): estas dos funciones devuelven la parte entera de un número.
- Round(numero,ndec): esta función permite redondear el argumento número con tantos lugares decimales como lo especifique el argumento ndec.
- Sgn(numero): devuelve el signo del argumento número. -1 si numero es menor que 0, 1 si es mayor que 0 y 0 si número es 0.
- Sqr(numero): devuelve la raíz cuadrada del argumento número.
- Sin(angulo): devuelve el seno del argumento ángulo.
- Cos(angulo): devuelve el coseno del argumento ángulo.
- Tan(angulo): devuelve la tangente del argumento ángulo.
- Atan(angulo): devuelve el arco tangente del argumento ángulo.
- Log(numero): devuelve el logaritmo de un número.
- Exp(numero): devuelve el número e (2.71828...), elevada al argumento número [enumero].
- Randomize(numero): inicia el generador de números aleatorios.
- Rnd(numero): devuelve un número aleatorio entre 0 y 1, basado en el argumento numero (o en el generador de números aleatorios).
Aclaración: para las funciones trigonométricas el sistema de medición angular son radianes.
Las siguientes son las funciones de trabajo con texto:
- Lcase(texto): devuelve el texto en minúsculas.
- Ucase(texto): devuelve el texto en mayúsculas.
- Len(texto): devuelve el número de caracteres que conforman una cadena de texto.
- Left(texto,largo): toma del argumento texto los caracteres especificados en el argumento largo, contados desde la izquierda.
- Right(texto,largo): toma del argumento texto los caracteres especificados en el argumento largo, contados desde la derecha.
- Mid(texto,inicio,largo): toma del argumento texto los caracteres especificados en el argumento largo, contados desde el caracter inicio.
- Trim(texto): devuelve el argumento texto sin los espacios que pudiera tener al inicio o al final.
- Like: es un operador que devuelve un valor booleano el cual compara dos cadenas de texto, devuelve False si las cadenas son diferentes y True si las cadenas de texto son iguales.
- Str(expresión): devuelve el argumento expresión como una cadena de caracteres.
- Instr(n,texto1,texto2): devuelve la posición de texto2 dentro de texto1, buscando a partir de caracter n.
- Strcomp(texto1,texto2): devuelve -1, 0 o 1 según sea texto1 <,= o > que texto2.
- Replace(texto,cadena,reemplazo): en un texto, reemplaza cadena con reemplazo.
Las funciones para el trabajo con fechas son:
- Date(): devuelve la fecha actual.
- Time(): devuelve la hora actual.
- Day(fecha): devuelve el día del argumento fecha.
- Month(fecha): devuelve el mes del argumento fecha.
- Year(fecha): devuelve el año del argumento fecha.
- Hour(hora): devuelve la hora del argumento hora.
- Minute(hora): devuelve los minutos del argumento hora.
- Second(hora): devuelve los segundos del argumento hora.
Estas son las funciones de comparación, las cuales devuelven valores booleanos (True o False):
- Isnumeric(expresión): devuelve True si expresión es un número.
- Isdate(expresión): devuelve True si expresión es una fecha.
- Isobject(expresión): devuelve True si expresión es un objeto.
- Iserr(expresión): devuelve True si expresión es un valor de error.
Existen funciones de conversión de un tipo de dato en otro, y son las siguientes:
- Cbool(numero): devuelve el valor de número como un dato de tipo Boolean.
- Cbyte(numero): devuelve el valor de número como un dato de tipo Byte.
- Cint(numero): devuelve el valor de número como un dato de tipo Integer.
- Clng(numero): devuelve el valor de número como un dato de tipo Long.
- Csng(numero): devuelve el valor de número como un dato de tipo Single.
- Cdbl(numero): devuelve el valor de número como un dato de tipo Double.
- Cdate(numero): devuelve el valor de número como un dato de tipo Date o Time.
- Cstr(numero): devuelve el valor de número como un dato de tipo String.
- Cvar(numero): devuelve el valor de número como un dato de tipo Variant.
- Val(numero): devuelve el valor de número como un dato de tipo Double.
Hay muchas más funciones, de las cuales se mencionarán algunas ahora y otras en capítulos posteriores.
- Format(expresión, presentación): esta función devuelve el dato de expresión en un formato definido en presentación. Expresión es un valor, presentación es un texto que define el formato con que se devolverá expresión, por ejemplo:
- Format(23/10/1963,"Long Date") devolverá viernes 23 de octubre de 1963
- Format(2437.1,"Currency") devolverá 2,437.10 Pts (depende del formato monetario especificado en el Panel de Control-Configuración Regional)
- Format(14732,"#,##0.00") devolverá 14,732.00
- Timer(): devuelve la cantidad de segundos pasados desde la medianoche.
- Asc(caracter): devuelve un número (Long) que representa el código ASCII del argumento caracter.
- Chr(número): devuelve un carácter que representa el código ASCII del argumento número (Long).
- Hex(numero): devuelve el valor de numero expresado en el sistema Hexagesimal.
- Oct(numero): devuelve el valor de numero expresado en el sistema Octagesimal.
- Bin(numero): devuelve el valor de numero expresado en el sistema Binario.
Ejemplo 2
Crea un nuevo proyecto estándar y coloca en el formulario los siguientes controles:
Control |
Propiedad |
Valor |
Form |
Name |
frmCalc |
Label |
Name |
lblResu |
" " |
Caption |
0 |
Textbox |
Name |
txtValor |
" " |
Text |
0 |
Frame |
Name |
fraFunc |
" " |
Caption |
Funciones |
Option |
Name |
optAbs |
" " |
Caption |
Abs |
Option |
Name |
optFix |
" " |
Caption |
Fix |
Option |
Name |
optRound |
" " |
Caption |
Round |
Option |
Name |
optSqr |
" " |
Caption |
Sqr |
Option |
Name |
optRnd |
" " |
Caption |
Rnd |
Option |
Name |
optSin |
" " |
Caption |
Sin |
Option |
Name |
optCos |
" " |
Caption |
Cos |
Option |
Name |
optTan |
" " |
Caption |
Tan |
Escribe el siguiente código en la ventana de código
Private Sub txtValor_KeyPress(Keyascii as Integer)
If isnumeric(txtValor.Text)=False Then
txtValor.Text=""
End If
End Sub
Private Sub optAbs_Click()
lblResu.Caption=Abs(txtValor.Text)
End SUB
Private Sub optFix_Click()
lblResu.Caption=Fix(txtValor.Text)
End SUB
Private Sub optRound_Click()
Dim y as Byte
y=InputBox("Ingrese la cantidad de dígitos decimales a redondear",0,"Función Round")
lblResu.Caption=Round(txtValor.Text,y)
End SUB
Private Sub optSqr_Click()
lblResu.Caption=Sqr(txtValor.Text)
End SUB
Private Sub optRnd_Click()
lblResu.Caption=Rnd(txtValor.Text)
End SUB
Private Sub optSin_Click()
lblResu.Caption=Sin(txtValor.Text)
End SUB
Private Sub optCos_Click()
lblResu.Caption=Cos(txtValor.Text)
End SUB
Private Sub optTan_Click()
lblResu.Caption=Tan(txtValor.Text)
End Sub