You are on page 1of 24

Funciones

Salvador Gurrola Velazquez


salvador.gurrola@yahoo.com.mx
Funciones
– 4.1. Funciones.
• 4.1.1 Definición de funciones.
• 4.1.2 Funciones estándar.
– 4.2. Entrada y Salida de datos.
– 4.3. Funciones definidas por el usuario.
• 4.3.1 Pase por valor
• 4.3.2 Pase por referencia
– 4.4 Punteros
• 4.4.1 Definición de punteros
• 4.4.2 Paso de variable
Tipos de procedimientos
• En Visual Basic existen tres tipos de procedimientos:
– Sub,
– Function
– Property.
• Los procedimientos Function se distinguen de los Sub
por que siempre devuelven un valor asociado al nombre
del procedimiento.
• Este valor puede ser usado por el código que lo ha
llamado.
• Los procedimientos Property sirven para crear y
manipular propiedades personalizadas de los objetos..
Crear procedimientos Sub

Para crear un procedimiento tienes dos alternativas,
una utilizar la opción Procedimiento del menú Insertar o
escribirlo completamente en la ventana de código.
• En la definición de un procedimiento Sub puedes
diferenciar dos partes: la cabecera u el cuerpo del
procedimiento.
Crear procedimientos Sub
• La cabecera del procedimiento se indica el ámbito (si es
público o privado) del mismo, su tipo (mediante la
palabra Sub), su nombre y la lista de parámetros (entre
paréntesis).
• La lista de parámetros sirve para poder comunicar el
procedimiento con el resto de código de la aplicación.
• Para ello se utiliza un parámetro que indique de alguna
forma dicha circunstancia.
• Un parámetro se comporta como una variable en el
cuerpo del procedimiento, pudiendo simplemente
utilizar su valor o incluso modificarlo.
Crear procedimientos Sub
• Cuando un procedimiento quiere comunicar algún dato
a la aplicación, tiene que utilizar un parámetro para
ello, es decir, puede servir bien para comunicar un valor
al procedimiento o bien para que éste lo comunique a
la aplicación.
Llamar al procedimiento Sub

• Para llamar a un procedimiento sub lo podemos hacer de dos formas:

Call NombreSub (parámetros)


• O también:
• NombreSub parámetros

Los argumentos deben coincidir en la llamada en número y tipo con la


definición del procedimiento.
• Tanto si se especifica en la llamada un número distinto de argumentos
como si alguno de éstos no pueden convertirse al tipo declarado en la
definición del procedimiento, se creará un error de compilación.
Llamar al procedimiento Sub
• La llamada al procedimiento será como una
instrucción más del lenguaje, donde se especifica el
nombre del procedimiento seguido sin paréntesis,
de una línea de argumentos que deberá coincidir
en número y tipo con los parámetros de la
definición y que darán valor a los parámetros para
que se ejecute el cuerpo del procedimiento.
• Una vez se llega a la instrucción End Sub del
procedimiento el flujo de ejecución vuelve a la línea
siguiente a la que ocasionó la llamada.
Crear procedimientos Function
El concepto de procedimiento es válido para un
procedimiento Function, pero la diferencia con los
procedimientos Sub siempre tiene que devolver un valor
asociado al nombre del mismo.
En el cuerpo del procedimiento aparecerá una asignación del
valor a devolver con el nombre del procedimiento.
El uso de los procedimientos Function suele estar más
restringido que el de los procedimientos Sub.
Un procedimiento Function es utilizado cuando necesitamos
obtener un único valor, resultado de un cálculo o proceso a
realizar.
Un procedimiento de este tipo no debería realizar más de lo
que se le pide, ni mostrar mensajes, ni devolver más valores
en los parámetros, etc.
Crear procedimientos Function
La diferencia en la definición de un procedimiento Sub y un
Function comienza en la cabecera.
El procedimiento Function también puede contener una lista
de parámetros, no debe aparecer ninguno que sirva para
devolver el valor que se calcula, ya que dicho valor tiene que
asociarse con el mismo nombre del procedimiento Function.

Además, al tener que devolver un valor asociado al nombre


del procedimiento Function, el procedimiento tiene que tener
un tipo de datos.
Esto se especifica indicano la cláusula AS Tipo al final de la
cabecera del procedimientos, una vez indicada la lista de
parámetros.
Si no se especifica ningún tipo de datos, se aplica la misma
regla que con las variables, es decir, tendrá el tipo Variant.
Llamar al procedimiento Function
Así como la llamada al procedimiento Sub es como una instrucción más
del lenguaje, la llamada al procedimiento Function suele estar situada
como parte de una expresión y no como una línea independiente de su
código.

Ya que el procedimiento Function devuelve un valor asociado a su


nombre, este valor suele asignarse a alguna variable para poder utilizarlo
en el código que ha realizado la llamada.
La sintaxis será la siguiente:

NombreVarialbe = NombreFunction(ListaParámetros)

Si quieres utilizar el valor que devuelve el procedimiento Function, tienes


que encerrar la lista de argumentos, en la llamada, con paréntesis.
Esto no era así en el caso del procedimiento Sub.
Visual Basic incorpora un gran número de funciones que puedes utilizar
en tus aplicaciones, entre ellas cabe destacar MsgBox, InputBox, Date...
Paso de parametros
A la hora de escribir la definición de un procedimiento Sub o Function
puedes especificar cómo se pasan los parámetros de su lista de
parámetros: por valor o por referencia
Cuando el paso es por valor, se utiliza la palabra clave ByVal
antecediendo al nombre del parámetro en la definición del procedimiento.
En este caso el procedimiento recibe una copia del argumento utilizado
en la llamada y no el mismo argumento.
Si realizas cambios en su valor, estos cambios podrán ser utilizados en el
interior del procedimiento, pero no afectará para nada a la variable que
actúa como argumento en la llamada.
En el paso por referencia no se necesita especificar ninguna palabra
clave, aunque también puedes hacerlo con la palabra ByRef.
En el paso por referencia, el procedimiento estará manejando los propios
argumentos utilizados en la llamada, ya que recibe la dirección y no el
valor de estos.
En este caso cualquier modificación en el valor que se realice en el
interior del procedimiento será sufrido por la propia variable que actúe
como argumento de llamada.
Ámbito de la acción
Cuando un proyecto esté constituido por distintos módulos, ya sean de
formulario, clase o módulos generales de Visual Basic, es importante
delimitar dónde se pueden utilizar y dónde no, los procedimientos,
variables y constantes que tengas definidos o declaradas.
El nivel de ocultación es establecido por el programador al declarar las
variables y constantes o al definir procedimientos utilizando las palabras
Public y Private.

Una declaración de variables de tipo Public NombreVariable As Tipo,


indica que dicha variable puede ser utilizada tanto en el módulo donde se
realiza como en el resto de módulos de la aplicación.

Si la declaración fuera del tipo Private NombreVariable As Tipo, dicha


variable sólo podrá ser conocida y por tanto utilizada, en el mismo
módulo donde se declara.
El uso de Public y Private también se aplica a la declaración de
procedimientos.
Ámbito de la acción
Un caso especial es cuando se declara una variable dentro
de un procedimiento, en estos casos, dichas variables sólo
pueden ser conocidas por el propio procedimiento, por lo que
no es válida la declaración Public de estas.

Además, si existe conflicto de nombre, al haber declarado


dos variables con el mismo nombre, una a nivel de módulo y
otra a nivel de procedimiento, siempre tiene preferencia la
más local, es decir, la declarada a nivel de procedimiento.

Al utilizar Dim en la declaración de las variables, en lugar de


Private o Public, la visibilidad de dichas variables es la que
deban tener por defecto: a nivel de módulo está visible para
todos los procedimientos y a nivel de procedimiento sólo para
éste.
Ejercicio
Dim iVal As Integer
For iVal = 1 To 10
If IsAnEvenNumber(iVal) Then
Call OutputResult(iVal, "even")
Else
Call OutputResult(iVal, "odd")
End If
Next
Function IsAnEvenNumber(ByVal iVal As Integer) As Boolean
If iVal Mod 2 = 0 Then
Return True
Else
Return False
End If End
Function Sub OutputResult(ByVal iVal As Integer, ByVal cResult As
String)
Debug.WriteLine(iVal & " is " & cResult)
End Sub
Funciones Matematicas
Rnd, Sqr, Int, Abs, Exp, Log, Sin, Cos, Tan , Atn, Fix y Round.

(i)Rnd   Es muy util cuando cuando trabajamos con


el concepto de probabilidad. Esta funcion regresa un
valor random entre 0 y 1.
         Private Sub Form_Activate
Randomize Timer
For x=1 to 10
Print  Rnd
Next x
End Sub
Funciones Matematicas
Rnd, Sqr, Int, Abs, Exp, Log, Sin, Cos, Tan , Atn, Fix y Round.

(i)Rnd   Es muy util cuando cuando trabajamos con el concepto de


probabilidad. Esta funcion regresa un valor random entre 0 y 1.
         Private Sub Form_Activate
Randomize Timer
For x=1 to 10
Print  Rnd
Next x
End Sub

Dim num as integer


Private Sub Command1_Click ( )
Randomize Timer
Num=Int(Rnd*6)+1
Label1.Caption=Num
End Sub
Funciones Matematicas
a) Int convierte un numero en un entero, truncando su parte decimal.
Ejemplo: Int(2.4)=2, Int(4.8)=4, Int(-4.6)= -5, Int(0.032)=0 .
b) Sqr es la funcion que calcula la raiz cuadrada de un numero:por ejemplo,
Sqr(4)=2, Sqr(9)=3.
c) Abs es la funcion que regresa el valor absoluto de un numero. Abs(-8) = 8
y Abs(8)= 8.
d) Exp de un nuero x es el valor de ex. Por ejemplo, Exp(1)=e1 =
2.7182818284590
e) Fix e Int son lo mismo, si el numero es positivo y ambos truncan la parte
decimalde el numero y regresan un entero.Pero cuando el numero es negativo
este regresa el entero mas pequeno. Por ejemplo , Fix(-6.34)= -6 mientras
Int(-6.34)=-7.
f) Round es la funcion que redondea un numero a un ciero numero de
decimales. El formato es Round (n, m) lo cual significa que redondea un
numeo n a m decimales. Por ejemplo, Round (7.2567, 2) =7.26
g) Log Es la funcion que regresa el logaritmo natural de un numero. Por ejemplo,
Log 10= 2.302585
Funciones Matematicas
Private Sub Form_Activate ()
n=1
Print " n", "      x", "Int(x)", "Fix(x)", "Round(x, 4)"
Do While n < 11
Randomize Timer
x = Round (Rnd * 7, 7)
Print n, x, Int(x), Fix(x), Round(x, 4)
n=n+1
Loop
End Sub
Las Funciones Trigonometricas
Sin, Cos, Tan y Atn
Private Sub Form_Activate ()
pi = 4 * Atn(1)
Print  "angle", "Sin x", "Cos x", "Tan x"
For degree = 0 To 360 Step 30
angle = degree * (pi / 180)
Print  degree, Round(Sin(angle), 4),
Round(Cos(angle), 4),
Round(Tan(angle), 4)
Next degree
End Sub
Las Funciones para Formatear texto
Tab, Space, y Format
Private Sub Form_Activate
         Print "I"; Tab(5); "like"; Tab(10); "to"; Tab(15); "learn"; Tab(20); "VB"
         Print
         Print Tab(10); "I"; Tab(15); "like"; Tab(20); "to"; Tab(25); "learn"; Tab(20);
"VB"
         Print
         Print Tab(15); "I"; Tab(20); ; "like"; Tab(25); "to"; Tab(30); "learn"; Tab(35);
“VB"
End sub

Private Sub Form_Activate()


Print "Visual"; Space(10); "Basic"
End Sub

Private Sub Form_Activate()


Print Format (8972.234, "General Number")
Print Format (8972.2, "Fixed")
Print Format (6648972.265, "Standard")
Print Format (6648972.265, "Currency")
Print Format (0.56324, "Percent")
Las Funciones que manipulan texto
Len, Right, Left, Mid, Trim, Ltrim, Rtrim, Ucase, Lcase, Instr, Val, Str  ,Chr y Asc.

Private sub Form_Activate ( )


X=sqr (16)
Y=1234
Z#=10#
Print Len(x), Len(y), and Len (z)
End Sub

Right (“Phrase”, n)
Left(“Phrase”, n)
Ltrim(“Phrase”)
Rtrim(“Phrase”)
Trim(“Phrase”)
Mid(phrase, position, n)
Instr (n, original phase, embedded phrase)
Ucase(“Visual Basic”) =VISUAL BASiC
Lcase(“Visual Basic”) =visual basic
Chr(charcode)
Asc(Character)
The Str is the function that converts a number to a string while the Val function converts
a string to a number.
Las Funciones de Hora/Fecha
Date, Date$ - Devuelve la fecha actual..

IsDate - Returns a value indicating whether of not a Variant argument can be converted to a
date.

Minute - Returns an integer between 0 and 59, inclusive, that represents the minute of the
hour corresponding to the time provided as an argument.

Month - Returns an integer between 1 and 12, inclusive, that represents the month of the
year for a date argument.

Now - Returns a date that represents the current date and time according to the setting of
the computer's system date and time.

Time, Time$ - Returns the current system time.

Timer - Returns the number of seconds that have elapsed since 12:00 a.m. (midnight).

Weekday - Returns an integer between 1 (Sunday) and 7 (Saturday) that represents the day
of the week for a date argument.

Year - Returns an integer between 100 and 9999, inclusive, that represents the year of a
date argument.
Las Funciones de Variable Conversion
CCur - Explicitly converts expressions to the Currency data type.

CDbl - Explicitly converts expressions to the Double data type.

CInt - Explicitly converts expressions to the Integer data type.

CLng - Explicitly converts expressions to the Long data type.

CSnd - Explicitly converts expressions to the Single data type.

CStr - Explicitly converts expressions to the String data type.

CVar - Explicitly converts expressions to the Variant data type.

CVDate - Converts an expression to a Variant of VarType 7 (Date).

You might also like