Subdirección Académica
Departamento de sistemas y Computación.
Semestre Agosto-Diciembre 2011.
Ingenieria industrial
ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN 3IN4
Funciones
UNIDAD 6
Nombre: Gonzalez Samaniego Jose Ernesto
Num control: 10210036
Profra: Talia Beatriz Tellez Bolaños
Fecha de entrega: 07 Diciembre del 2011
INDICE
Introducción………………………………………………………………………..1
6.1.-Funciones………………………………………………..……………………2
6.2.-Funciones estándar…………………………………………………………5
6.3Entrada y salida de datos…………………………………………………..16
6.4Funciones definidas por el usuario……………………………………….20
6.5Pase por valor…………………………………………………………………20
6.6Pase por referencia…………………………………………………………..21
6.7Punteros……………................................................................................22
6.8 Ejemplos de pase por valor y referencia…………………………………23
6.9 Conclusión……………………………………………………………………..26
1
INTRODUCCION
También conocido como una subrutina o subprograma, como idea general, se
presenta como un Sub algoritmo que forma parte del algoritmo principal, el cual
permite resolver una tarea específica. Algunos lenguajes de programación, como
Visual Basic .NET o Fortran, utilizan el nombre función para referirse a subrutinas
que devuelven un valor.
Los sub algoritmos están diseñados para ejecutar alguna tarea específica. Estas
funciones y procedimientos se escriben solamente una vez, pero pueden ser
referenciados en diferentes puntos de un programa de modo que se puede evitar
la duplicación innecesaria del código.
La resolución de problemas complejos se facilita considerablemente si se dividen
en problemas más pequeños (sub problemas).La solución de estos sub problemas
se realiza con sub algoritmos. El uso de sub algoritmos permite al programador
desarrollar programas de problemas complejos utilizando el método descendente
o top Down.
2
Funciones
También conocido como una subrutina o subprograma, como idea general, se
presenta como un Sub algoritmo que forma parte del algoritmo principal, el cual
permite resolver una tarea específica. Algunos lenguajes de programación, como
Visual Basic .NET o Fortran, utilizan el nombre función para referirse a subrutinas
que devuelven un valor.
Una subrutina al ser llamada dentro de un programa hace que el código principal
se detenga y se dirija a ejecutar el código de la subrutina, en cambio cuando se
llama a una macro, el compilador toma el código de la macro y lo implanta donde
fue llamado, aumentando así el código fuente y por consiguiente el objeto.
Las funciones son casi exactamente iguales que los procedimientos con respecto
a la forma en que se los llama y se los crea o declara en el código, en cómo se le
pasa los parámetros etc...
La diferencia fundamental con respecto a los procedimientos o subrutinas es que
estos, luego de ejecutar el código que tengan en su interior, al final retornan un
valor, y este valor luego lo podemos utilizar para una determinada tarea. En
cambio los procedimientos, solo ejecutan el código que contienen y luego mueren
por decirlo de alguna manera.
Para declarar o crear una función podríamos escribir lo siguiente:
Private Function Total (Valor1 As Integer, Valor2 As Integer) As Long
Total = Valor1 + Valor2
End Function
Seguramente notaste que declaramos la función llamada Total, y al final de los
parámetros dice As Long, esto es por que como dijimos las funciones retornan o
devuelven un valor, o sea que en este caso la función es de tipo Long, o mejor
dicho devolverá un valor de tipo Long., y luego ese valor devuelto lo podemos
utilizar en otra parte del programa.
Las Funciones pueden retornar casi cualquier tipo de datos, como números,
cadenas, fechas, arreglos y vectores
Para llamar a la función anterior podríamos hacerlo de la siguiente manera:
3
Label1.caption = Total 502, 1478
En este caso el control Label1 llamaría a la función Total , la función realizaría la
suma de los valores pasados como parámetros y por último el valor final de la
suma se lo asignaría al control label1.
Funciones para el tratamiento de cadenas
Las funciones de cadena, como su nombre lo indica, se utilizan para trabajar y
tratar las cadenas de caracteres.
A continuación las más importantes de ellas.
Función Lcase y Ucase
Estas dos funciones se utilizan para convertir cadenas de texto a minúscula y
mayúscula.
La función Lcase cambia o convierte una cadena de texto a minúscula y un
ejemplo de como utilizarla sería así:
Lcase (cadena que queremos convertir a minúsculas)
Ejemplo:
Dim cadena As String
cadena = "HOLA MUNDO"
'Convertimos
cadena = LCase(cadena)
'La variable cadena ahora vale "hola mundo"
La función Ucase funciona de la misma manera que Lcase pero convierte el
contenido de una cadena a mayúsculas.
Por ejemplo, si tenemos un control Label1 que contiene un texto que dice:
"Porcentaje de sueldos", escribiendo la siguiente línea:
4
Label1 = Ucase (Label1)
El control Label1 pasaría a mostrar o mejor dicho contener en su propiedad
caption:"PORCENTAJE DE SUELDOS".
Función Trim, LTrim y RTrim
Estas tres funciones se utilizan para eliminar los espacios vacíos de una cadena.
LTrim elimina los espacios vacíos de la parte izquierda de la cadena, RTrim de la
parte derecha y Trim de ambas partes.
Ejemplos:
Tenemos una variable llamada ciudad con el valor " Barcelona". Para eliminar los
espacios vacíos de la izquierda haríamos lo siguiente:
ciudad = LTrim(ciudad)
Si en un TextBox quisiéramos borrar todos los espacios vacíos de la parte derecha
de la cadena:
MiText = RTrim(MiText)
La Función Trim elimina todos los espacios vacíos de ambos lados de la cadena.
Ejemplo:
Pais = " Argentina "
País = Trim(País)
Ahora el valor de País es igual a: "Argentina".
5
Función Len
La función Len nos permite conocer la cantidad de caracteres que tiene una
determinada cadena. O sea que esta función nos devuelve un número.
Ejemplo:
Len (Aquí va la cadena que queremos averiguar su tamaño)
Como la función Len devuelve un número debemos asignar ese número devuelto
en una variable de tipo numérica.
Ejemplo:
Dim TamanoCadena As Long
Dim MiCadena As String
MiCadena = "Me Llamo Eustaquio"
TamanoCadena = Len(MiCadena)
El valor de la variable TamanoCadena pasaría a valer 18.
Hay que tener en cuenta que la función Len también toma en cuenta los espacios
vacíos.
Función Asc y Chr
La función Asc nos permite obtener el código ASCII de un de terminado caracter.
Ejempos:
Si queremos obtener el código ASCII del caracter "a", que es el número 97
podríamos hacer lo siguiente:
Dim num As Integer
num = Asc("a")
En definitiva la función Asc lleva un solo parámetro de tipo String del cual
queremos obtener dicho número.
6
La Función Chr actúa a la inversa de la función Asc, esto quiere decir, que a partir
de un determinado número nos devolverá el caracter ASCII.
Obviamente que en vez de pasarle a la función un parámetro String es decir la
letra, debemos pasarle un número ASCII y nos devolverá el carácter asociado.
Ejemplo:
Dim letra As String
letra = Chr(97)
La variable pasa a valer en este caso el caracter "a"
Función InsTr
La función InStr se utiliza para buscar una cadena o parte de una cadena dentro
de otra cadena.
Si la función encuentra la cadena a buscar devuelve un número que representa la
posición donde encontró la cadena, si no la encuentra devuelve un 0.
Los parámetros que lleva esta función son:
InStr (comienzo, Cadena donde buscar, La Cadena a buscar)
Como esta función devuelve un número debemos almacenarla en una variable de
tipo numérica para utilizarla.
Ejemplo:
Dim posicion As Integer
posicion = InStr("Estoy tomando mate", "mate")
En este ejemplo la función encontró la cadena "mate" en la posición 15, o sea que
la variable posición pasa a valer 15.
Si observamos bien, la función en el primer parámetro, denominado comienzo, nos
pide que le digamos desde que posición comenzar a buscar. En nuestro ejemplo,
este parámetro lo obviamos, esto quiere decir que comenzará desde la posición 0
de la cadena a buscar. Pero podríamos especificar una posición en particular, por
ejemplo desde la 5 , 10 etc..., según lo que necesitemos hacer.
Otro ejemplo de InsTr :
7
Este ejemplo, muestra como buscar dentro de un control TextBox, el cual tiene
dos opciones, un botón para buscar la primera frase, y otro que sigue buscando a
partir de donde esté ubicda la selección.
Para armar el ejemplo colocar un Textbox llamado Text_Buscar que es donde se
ingresará la frase y otro TextBox llamado Text1 que tendrá el texto. Este ultimo
con la propiedad Multiline en True. También colocar dos
CommandButtonCommand1 y Command2
8
Colocar el siguiente código fuente en el formulario:
Option Explicit
Private m_Pos As Integer
Sub buscar_cadena(ByVal Posicion As Integer)
Dim p As Integer, Frase As String
Frase = txt_Buscar
p = InStr(Posicion, Text1, Frase)
If p > 0 Then
m_Pos = p
With Text1
.SelStart = m_Pos - 1
.SelLength = Len(Frase)
.SetFocus
End With
Else
MsgBox "No se encontró la frase", vbInformation
Text1.SetFocus
End If
End Sub
Private Sub Command1_Click()
'Busca a pratir de la primera pocición
Call buscar_cadena(1)
End Sub
Private Sub Command2_Click()
'Busca a partir del valor que tenga m_Pos
Call buscar_cadena(m_Pos + 1)
End Sub
Private Sub Form_Load()
Command1.Caption = "Buscar"
Command2.Caption = "Buscar siguiente"
Me.Caption = "Ejemplo de InStr "
End Sub
Nota: también hay una función similar a Instr llamada InstrRev , y lo que hace es
devolver la posición de la primera concurrencia de una cadena dentro de otra
cadena, pero comenzando por el extremo derecho de la misma.
9
Función Left, Right y Mid
Estas funciones son utilizadas para extraer partes de una cadena.
La función Left:
tiene 2 parámetros: El primero es la cadena de la cual se extraerán caracteres, y
el segundo un número desde el cual comenzar a extraer caracteres desde la parte
izquierda.
Ejemplo:
Dim Cadena As String
Cadena = Left("Ya es la madrugada", 9)
'Cadena, que es un string, sería igual a: "Ya es la"
Función Right:
Es igual que la función Left pero comienza a extraer caracteres desde el lado
derecho de la cadena.
La función Mid:
Tiene la misma función que las anteriores pero posee tres parámetros. Su sintaxis
es:
Mid (cadena, inicio, longitud)
El parámetro cadena es la cadena a extraer caracteres. El parámetro Inicio es
donde comenzar y el parámetro longitud, es la cantidad de caracteres a extraer
de la cadena de caracteres
Ejemplos:
Dim nombre As String
nombre = Mid("River perdió la copa", 7, 6)
'La variable nombre sería igual a: "perdió"
10
Este Otro ejemplo usa la función Mid para realizar un simple efecto tipo máquina
de escribir.
Colocar en un formulario un CommandButton y el siguiente código fuente en el
form.
Option Explicit
Sub Pausa(Segundos As Double)
Dim inicio As Double
' Devuelve la cantidad de segundos desde que inicio windows
inicio = Timer
Do While (Timer - inicio) < Segundos
' pausa
DoEvents
Loop
End Sub
Private Sub Command1_Click()
Dim texto As String
texto = "... Hola mundo --->>> "
Call MostrarTexto(texto, 0.1, Me)
End Sub
Private Sub MostrarTexto(Frase As String, _
Segundos As Double, _
Destino As Object)
Dim LenFrase As Integer
Dim i As Integer
Dim Caracter As String
Dim texto As String
LenFrase = Len(Frase)
Do While i <= LenFrase
Destino.Cls
DoEvents
i = i + 1
' Obtiene el siguiente caracter
11
Caracter = Mid(Frase, i, 1)
' texto actual
texto = texto & Caracter
Destino.Print texto ' Imprimi e/ dibuja el texto
' pausa o delay
Pausa Segundos
DoEvents
Loop
End Sub
Private Sub Form_Load()
Me.FontSize = 12
Me.Font.Bold = True
Me.ForeColor = vbRed
Command1.Caption = " Efecto de texto con mid "
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Función Str y Val
La función Val convierte una cadena en un número yla función Str un número en
una cadena.
Ejemplos:
cadena = "123456"
cadena = Val(cadena)
'Ahora cadena vale 123456
cadena2 = 123456
cadena2 = Str(cadena2)
'Ahora cadena2 vale "123456"
12
Funciones para el tratamiento de números
Visual Basic posee muchas funciones para tratar números. A continuación las
principales funciones.
Función Round
La función Round se utiliza para redondear un número decimal, devolviendo un
número entero.
Ejemplo:
Dim Mimumero As Long
Minumero = Round(245.8) '(La función devuelve 246)
Minumero = Round(245.3) '(La función devuelve 245)
Minumero = Round(245.5) '(La función devuelve 245)
Round posee un parámetro opcional por si queremos incluir los dígitos decimales.
Rnd y Randomize - Números aleatorios
Para generar números aleatorios, Visual Basic incluye 2 funciones: Rnd y
Randomize.
La función Rnd devuelve un número aleatorio, y esta posee un solo parámetro.
Ejemplo :
Rnd (número)
Pero para poder generar dichos números aleatorios, debemos utilizar previamente
la función Randomize con la siguiente fórmula:
Dim LimiteInferior As Integer
Dim LimiteSuperior As Integer
LimiteInferior = 20
LimiteSuperior = 40
MsgBox Int((LimiteInferior - LimiteSuperior + 1) * Rnd + LimiteInferior)
13
Funciones de formato
Visual Basic posee varias funciones para darle formato a distintos tipos de datos e
información. A continuación se ve algunos ejemplos de las principales funciones:
FormatCurrency: Esta función se utiliza para trabajar con
números con formato en dinero. Ejemplo:
si tenemos un número 3 y utilizamos la función nos devolvería "$3".
FormatPercent: Esta función es utilizada para trabajar con
porcentajes. Ejemplo:
si tendríamos un número 321, nos devolvería: "32,1%" .
FormatDateTime: Esta función trabaja con fechas y horas.
FormatNumber: Formatea expresiones números
Resultado = FormatPercent(321) 'devuelve: "32.100,00%"
Resultado = FormatCurrency(3) 'devuelve: "$3,00"
Resultado = FormatDateTime("6-8-1978") 'La función devolvería:
"06/08/1978"
NumDigitsAfterDecimal: Parámetro de tipo opcional. Este indicará cuantos
números decimales devolverá la función:
Ejemplo
Cadena = FormatCurrency (325, 3) 'Devuelve: "$325,000"
Ejemplo de la función FormatDateTime
Esta función, en el primer parámetro se le debe pasar la fecha u hora a formatear,
y el segundo parámetro es el tipo de formato, pueden ser 5 tipos.
vbGeneralDate, vbLongDate, vbShortDate, vbLongTime y vbShortTime.
Este parámetro es de tipo opcional. al colocar la coma dentro de la función , visual
basic despliega la lista de constanetas mencionadas, como muestra el gráfico:
14
Un ejemplo para ver estos formatos utilizando FormatDateTime: Colocar cinco
option Button, cada botón de opción mostrará los diferentes formatos en el caption
del formulario, es decir en la barra de título.
Código en el formulario:
Private Sub Form_Load()
Option1.Caption = " vbGeneralDate "
Option2.Caption = " vbLongDate "
Option3.Caption = " vbShortDate "
Option4.Caption = " vbLongTime "
Option5.Caption = " vbShortTime "
End Sub
Private Sub Option1_Click()
Me.Caption = FormatDateTime(Now, vbGeneralDate)
15
End Sub
Private Sub Option2_Click()
Me.Caption = FormatDateTime(Now, vbLongDate)
End Sub
Private Sub Option3_Click()
Me.Caption = FormatDateTime(Now, vbShortDate)
End Sub
Private Sub Option4_Click()
Me.Caption = FormatDateTime(Now, vbLongTime)
End Sub
Private Sub Option5_Click()
Me.Caption = FormatDateTime(Now, vbShortTime)
End Sub
Función Format:
La función Format es mas completa que las anteriores funciones, porque puede
manejar mas tipos de datos, y no devuelve solo cadenas, esta también puede
devolver números y fechas.
La función Format posee dos parámetros:
Format (Expresión, formato)
En el primero debemos colocar cualquier expresión válida. El segundo es opcional
y a continuación veremos una descripción de los formatos de VB:
GeneralNumber: Devuelve el número sin formato.
16
Currency: Devuelve el número en formato moneda, con el símbolo
"$" y 2 decimales a las derecha.
Fixed: Devuelve como mínimo un dígito a la izquierda y 2 ala
derecha del decimal.
Standar: Similar a Fixed pero incluye un separador de miles.
Percent: Multiplica el número por cien y le agrega el símbolo "%"
True/False: Devuelve Verdadero para un valor distinto de 0,y
Falso para 0.
On/OFF: Devuelve "Activado" para un valor distinto de 0, y
"Desactivado" para 0.
La forma de pasar el parámetro es entre comillas.
Ejemplo:
cadena = Format(75, "Currency") ' Devolvería: "$75,00"
Nota: Si ingresamos un número decimal, debemos utilizar el "." y no la coma "," ya
que la coma determina el comienzo de otro parámetro dentro de la función y
Visual basic daría error de sintaxis.
Entrada y Salida de datos3
Las cajas de dialogo son ventanas con controles que podemos visualizar en el
instante que necesitemos hacer una entrada o salida de datos. Visual Basic tiene
cajas de dialogo predefinidas que nos permiten realizar opciones de E/S con muy
poco esfuerzo. Por ejemplo, la función inputbox visualiza una caja de dialogo
presentando información o resultados.
Entra de datos
InputBox
InputBox presenta un mensaje al usuario, permitiéndole ingresar un valor en una
caja de texto:
17
Como se dijo la función InputBox presenta un cuadro de diálogo donde el usuario
puede ingresar un texto y luego aceptar o cancelar dicho cuadro de diálogo.
Los parámetros principales de esta función son:
InputBox (Promt,Title, Default)
El parámetro Prompt específica la leyenda que mostrará la caja de
mensajes.
El parámetro Title especifica el título que llevará el cuadro de diálogo.
El parámetro Default es el texto que mostrará la caja de texto.
El aspecto mas importante de InputBox es que nos devuelve una cadena con lo
que haya ingresado el usuario en la caja de texto. Luego podemos realizar una
tarea específica dependiendo del valor devuelto.
Ejemplo:
Dim retorno As String
retorno = InputBox("Ingrese algo en la caja de texto", "Ejemplo")
MsgBox "Usted ingresó:" & retorno
18
MsgBox
La función MsgBox, que ya se vió varias veces en distintos ejemplos, es muy fácil
de usar y se utiliza para mostrar distintos tipos de mensajes.
Ejemplos de mensajes o cajas de texto con la función MsgBox que podemos
mostrar:
Como se ve en los gráficos anteriores, con MsgBox podemos tener variedad a la
hora de mostrar un determinado mensaje, utilizando para ello las diferentes
constantes que incorpora la función.
Los parámetros mas importantes son:
Title : Es la leyenda que aparecerá en el título del mensaje.
Texto : Es el Texto que mostrará el mensaje.
Botones: En este parámetro se colocan las constantes que determinarán si
la caja tiene uno o varios botones y el tipo de mensaje: informativo, de
exclamación de alerta etc... Cuando escribimos la coma dentro de la
función en el parámetro botones, Visual Basic despliega una lista con las
opciones o constantes que podemos utilizar.
19
Salida de datos
Según hemos visto, el método Print visualiza datos en un formulario (objeto Form).
Así mismo, permite visualizar datos en la ventana inmediato (a través del objeto
Debug), en una caja de imagen (Control PictureBox) o en una impresora
(utilizando el objeto Printer). Su sintaxis es
objeto.Print lista_de_expresiones
donde objeto, que es opcional, especifica uno de los objetos mencionados
anteriormente, y lista de expresiones es un conjunto de expresiones numéricas y
alfanuméricas separadas por comas, espacios en blanco o puntos y comas. Si se
utiliza como separador un espacio en blanco, Visual Basic lo sustituye
automaticamente por un punto y coma. Las constantes de caracteres (literales)
deben ponerse entre comillas. Cuando un objeto se omite, los datos se omiten
sobre el objeto al que pertenece el procedimiento que invica a Print.
Las siguientes sentencias muestran algunos ejemplos de la utilización del
métodoPrint:
Print a +5, a * b / 2, c$, "Fin"
Print x; y +5; w
Print n; m
Print "LISTADO DE RESULTADOS"
Si se omite la lista de expresiones, se visualiza una línea en blanco. En cambio, si
se incluye la lista de expresiones, se visualizan los valores de las expresiones en
el objeto correspondiente. Por ejemplo:
a = 1000: b = 2000: c = 500
Print "El valor de a es"; a
Print 'línea en blanco
Print "El valor de "; b; "+"; c; "="; b + c
El resultado que se obtiene al ejecutar las sentencias anteriores es:
El valor de a es 1000
El valor de 2000 + 500 = 2500
La posición de cada elemento a visualizar está determinada por la puntuación
utilizada para separar los elementos en la lista de expresiones. Visual Basic divide
la línea en zonas de 14 espacios cada una, cuando se utiliza como separador una
coma. En la lista de expresiones, una coma produce la visualización de la
expresión, inmediatamente después de la última visualizada. Por ejemplo:
20
Print "1 2 3"
Print "123457890123456789012345678901234"
a = 5
Print a; aˆ2; a * (-5)
Print a, aˆ2; a * (-5)
Print "FIN DEL PROCESO"
Funciones definidas por el usuario
Son funciones que el usuario crea para cubrir necesidades que están fuera del
alcance de las funciones estándar. Cada función tiene una misión muy concreta,
de modo que nunca tiene un número de líneas excesivo y siempre se mantiene
dentro de un tamaño manejable. Es muy frecuente que al hacer una modificación
para añadir una funcionalidad o corregir un error, se introduzcan nuevos errores
en partes del programa que antes funcionaban correctamente.
Además, una misma puede ser llamada muchas veces en un mismo programa, e
incluso puede ser reutilizada por otros programas. Una función es capaz de
mantener una gran independencia con el resto del programa.
Pase por valor y por referencia ( ByVal y ByRef )
Los parámetros en las funciones y procedimientos, se pueden enviar de dos
maneras: por Valor y por Referencia.
Si están declarados como ByVal, los mismos serán por valor, si se declaran como
ByRef serán por referencia.
Pase por valor
La diferencia entre uno y otro método de paso de parámetros, es que en ByVal se
envía una copia de la variable, y de esta manera si se efectúa un cambio en el
procedimiento, solo tendrá efecto dentro del procedimiento o función, una vez que
termine y finalice el mismo, la variable original pasará a valer el dato que tenía, es
decir no se modifica.
Ejemplo de envío de parámetros por Valor ( ByVal )
Código de ejemplo
21
Private Sub Command1_Click()
Dim Un_Valor As Long
Un_Valor = 100
'Se envía la variable por Valor ( ByVal )
Call Sumar(Un_Valor)
'Muestra el valor que es 100, ( no se modificó en la función Sumar )
MsgBox Un_Valor
End Sub
Sub Sumar(ByVal Valor As Long)
'Modifica la variable
Valor = Valor + 100
End Sub
Pase por referencia
En los parámetros enviados por Referencia, lo que se hace es enviar un puntero
de la variable original. Entonces, si en la función o procedimiento se cambia el
valor de la variable, el cambio seguirá manteniéndose una vez que finalice la
ejecución del procedimiento o función.
Ejemplo de envío de parámetros por Referencia ( ByRef )
Este ejemplo es igual que el anterior, pero en la Sub sumar, la variable Valor se
declara con ByRef ( por Referencia )
Código
Private Sub Command1_Click()
Dim Un_Valor As Long
Un_Valor = 100
'Se envía la variable por Referencia ( ByRef ) con el valor 100
Call Sumar(Un_Valor)
'Muestra el valor que ahora es 200, ( ya que se modificó en la Sub Sumar)
MsgBox Un_Valor
End Sub
Sub Sumar(ByRef Valor As Long)
'Modifica la variable
Valor = Valor + 100
End Sub
22
Punteros
Al declarar una variable estamos diciendo al ordenador que reserve una parte de
la memoria RAM para almacenarla. Cada vez que ejecutemos el programa la
variable se almacenará en un sitio diferente; eso no lo podemos controlar pues
depende de la memoria que esté disponible en el momento en que ejecutamos el
programa.
La variable se almacena en un lugar determinado de la memoria y ese lugar no
cambia mientras se ejecuta el programa.
Cuando finaliza el programa todo el espacio reservado queda libre.
Tamaño de almacenamiento
Definición de puntero
Un puntero es una variable que nos permite almacenar direcciones de memoria.
En un puntero podemos tener guardada la dirección de una variable.
Memoria Declaración de variables Numero=43 punt=00003
23
Cuando un puntero tiene la dirección de una variable se dice que ese puntero
apunta a esa variable. La declaración de un puntero depende del tipo de dato al
que queramos apuntar. En general, la declaración es: tipo_de_dato
*nombre_del_puntero
Ejemplo de pase por valor y por referencia
Pase por valor
Código:
Private Sub cmdregre_Click()
Unload Me
End Sub
Sub sumar(ByVal Valor As Long)
Valor = Valor + 100
End Sub
24
Private Sub cmdByVal_Click()
Dim Un_Valor As Long
Un_Valor = 100
Call sumar(Un_Valor)
MsgBox Un_Valor
End Sub
Pase por Referencia
Código:
Private Sub cmdregre_Click()
Unload Me
End Sub
Sub Sumar(ByRef Valor As Long)
Valor = Valor + 100
25
End Sub
Private Sub cmdByRef_Click()
Dim Un_Valor As Long
Un_Valor = 100
Call Sumar(Un_Valor)
MsgBox Un_Valor, vbInformation, "Modifica la variable"
End Sub
26
Conclusión
Las funciones son una herramienta que nos facilita el trabajo en cuanto a la
programación haciendo que muchas de las tareas sean más simples de realizar
reduciendo largas horas de trabajo que si lo hiciéramos a mano, el poder contar
con un programa ya diseñado ahorrara el trabajo que se puede presentar más
adelante si no se contara con esta herramienta, ya que cuando se cuenta con el
programa solo es cuestión de insertar ciertos datos y el programa se encargara
del resto.
Una vez que se ha aprendido a programar y se conoce cada una de las distintas
funciones el usuario será capaz de realizar sus propios programas para realizar
cualesquier programación con las diferentes funciones.

Unidad6 funciones

  • 1.
    Subdirección Académica Departamento desistemas y Computación. Semestre Agosto-Diciembre 2011. Ingenieria industrial ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN 3IN4 Funciones UNIDAD 6 Nombre: Gonzalez Samaniego Jose Ernesto Num control: 10210036 Profra: Talia Beatriz Tellez Bolaños Fecha de entrega: 07 Diciembre del 2011
  • 2.
    INDICE Introducción………………………………………………………………………..1 6.1.-Funciones………………………………………………..……………………2 6.2.-Funciones estándar…………………………………………………………5 6.3Entrada ysalida de datos…………………………………………………..16 6.4Funciones definidas por el usuario……………………………………….20 6.5Pase por valor…………………………………………………………………20 6.6Pase por referencia…………………………………………………………..21 6.7Punteros……………................................................................................22 6.8 Ejemplos de pase por valor y referencia…………………………………23 6.9 Conclusión……………………………………………………………………..26
  • 3.
    1 INTRODUCCION También conocido comouna subrutina o subprograma, como idea general, se presenta como un Sub algoritmo que forma parte del algoritmo principal, el cual permite resolver una tarea específica. Algunos lenguajes de programación, como Visual Basic .NET o Fortran, utilizan el nombre función para referirse a subrutinas que devuelven un valor. Los sub algoritmos están diseñados para ejecutar alguna tarea específica. Estas funciones y procedimientos se escriben solamente una vez, pero pueden ser referenciados en diferentes puntos de un programa de modo que se puede evitar la duplicación innecesaria del código. La resolución de problemas complejos se facilita considerablemente si se dividen en problemas más pequeños (sub problemas).La solución de estos sub problemas se realiza con sub algoritmos. El uso de sub algoritmos permite al programador desarrollar programas de problemas complejos utilizando el método descendente o top Down.
  • 4.
    2 Funciones También conocido comouna subrutina o subprograma, como idea general, se presenta como un Sub algoritmo que forma parte del algoritmo principal, el cual permite resolver una tarea específica. Algunos lenguajes de programación, como Visual Basic .NET o Fortran, utilizan el nombre función para referirse a subrutinas que devuelven un valor. Una subrutina al ser llamada dentro de un programa hace que el código principal se detenga y se dirija a ejecutar el código de la subrutina, en cambio cuando se llama a una macro, el compilador toma el código de la macro y lo implanta donde fue llamado, aumentando así el código fuente y por consiguiente el objeto. Las funciones son casi exactamente iguales que los procedimientos con respecto a la forma en que se los llama y se los crea o declara en el código, en cómo se le pasa los parámetros etc... La diferencia fundamental con respecto a los procedimientos o subrutinas es que estos, luego de ejecutar el código que tengan en su interior, al final retornan un valor, y este valor luego lo podemos utilizar para una determinada tarea. En cambio los procedimientos, solo ejecutan el código que contienen y luego mueren por decirlo de alguna manera. Para declarar o crear una función podríamos escribir lo siguiente: Private Function Total (Valor1 As Integer, Valor2 As Integer) As Long Total = Valor1 + Valor2 End Function Seguramente notaste que declaramos la función llamada Total, y al final de los parámetros dice As Long, esto es por que como dijimos las funciones retornan o devuelven un valor, o sea que en este caso la función es de tipo Long, o mejor dicho devolverá un valor de tipo Long., y luego ese valor devuelto lo podemos utilizar en otra parte del programa. Las Funciones pueden retornar casi cualquier tipo de datos, como números, cadenas, fechas, arreglos y vectores Para llamar a la función anterior podríamos hacerlo de la siguiente manera:
  • 5.
    3 Label1.caption = Total502, 1478 En este caso el control Label1 llamaría a la función Total , la función realizaría la suma de los valores pasados como parámetros y por último el valor final de la suma se lo asignaría al control label1. Funciones para el tratamiento de cadenas Las funciones de cadena, como su nombre lo indica, se utilizan para trabajar y tratar las cadenas de caracteres. A continuación las más importantes de ellas. Función Lcase y Ucase Estas dos funciones se utilizan para convertir cadenas de texto a minúscula y mayúscula. La función Lcase cambia o convierte una cadena de texto a minúscula y un ejemplo de como utilizarla sería así: Lcase (cadena que queremos convertir a minúsculas) Ejemplo: Dim cadena As String cadena = "HOLA MUNDO" 'Convertimos cadena = LCase(cadena) 'La variable cadena ahora vale "hola mundo" La función Ucase funciona de la misma manera que Lcase pero convierte el contenido de una cadena a mayúsculas. Por ejemplo, si tenemos un control Label1 que contiene un texto que dice: "Porcentaje de sueldos", escribiendo la siguiente línea:
  • 6.
    4 Label1 = Ucase(Label1) El control Label1 pasaría a mostrar o mejor dicho contener en su propiedad caption:"PORCENTAJE DE SUELDOS". Función Trim, LTrim y RTrim Estas tres funciones se utilizan para eliminar los espacios vacíos de una cadena. LTrim elimina los espacios vacíos de la parte izquierda de la cadena, RTrim de la parte derecha y Trim de ambas partes. Ejemplos: Tenemos una variable llamada ciudad con el valor " Barcelona". Para eliminar los espacios vacíos de la izquierda haríamos lo siguiente: ciudad = LTrim(ciudad) Si en un TextBox quisiéramos borrar todos los espacios vacíos de la parte derecha de la cadena: MiText = RTrim(MiText) La Función Trim elimina todos los espacios vacíos de ambos lados de la cadena. Ejemplo: Pais = " Argentina " País = Trim(País) Ahora el valor de País es igual a: "Argentina".
  • 7.
    5 Función Len La funciónLen nos permite conocer la cantidad de caracteres que tiene una determinada cadena. O sea que esta función nos devuelve un número. Ejemplo: Len (Aquí va la cadena que queremos averiguar su tamaño) Como la función Len devuelve un número debemos asignar ese número devuelto en una variable de tipo numérica. Ejemplo: Dim TamanoCadena As Long Dim MiCadena As String MiCadena = "Me Llamo Eustaquio" TamanoCadena = Len(MiCadena) El valor de la variable TamanoCadena pasaría a valer 18. Hay que tener en cuenta que la función Len también toma en cuenta los espacios vacíos. Función Asc y Chr La función Asc nos permite obtener el código ASCII de un de terminado caracter. Ejempos: Si queremos obtener el código ASCII del caracter "a", que es el número 97 podríamos hacer lo siguiente: Dim num As Integer num = Asc("a") En definitiva la función Asc lleva un solo parámetro de tipo String del cual queremos obtener dicho número.
  • 8.
    6 La Función Chractúa a la inversa de la función Asc, esto quiere decir, que a partir de un determinado número nos devolverá el caracter ASCII. Obviamente que en vez de pasarle a la función un parámetro String es decir la letra, debemos pasarle un número ASCII y nos devolverá el carácter asociado. Ejemplo: Dim letra As String letra = Chr(97) La variable pasa a valer en este caso el caracter "a" Función InsTr La función InStr se utiliza para buscar una cadena o parte de una cadena dentro de otra cadena. Si la función encuentra la cadena a buscar devuelve un número que representa la posición donde encontró la cadena, si no la encuentra devuelve un 0. Los parámetros que lleva esta función son: InStr (comienzo, Cadena donde buscar, La Cadena a buscar) Como esta función devuelve un número debemos almacenarla en una variable de tipo numérica para utilizarla. Ejemplo: Dim posicion As Integer posicion = InStr("Estoy tomando mate", "mate") En este ejemplo la función encontró la cadena "mate" en la posición 15, o sea que la variable posición pasa a valer 15. Si observamos bien, la función en el primer parámetro, denominado comienzo, nos pide que le digamos desde que posición comenzar a buscar. En nuestro ejemplo, este parámetro lo obviamos, esto quiere decir que comenzará desde la posición 0 de la cadena a buscar. Pero podríamos especificar una posición en particular, por ejemplo desde la 5 , 10 etc..., según lo que necesitemos hacer. Otro ejemplo de InsTr :
  • 9.
    7 Este ejemplo, muestracomo buscar dentro de un control TextBox, el cual tiene dos opciones, un botón para buscar la primera frase, y otro que sigue buscando a partir de donde esté ubicda la selección. Para armar el ejemplo colocar un Textbox llamado Text_Buscar que es donde se ingresará la frase y otro TextBox llamado Text1 que tendrá el texto. Este ultimo con la propiedad Multiline en True. También colocar dos CommandButtonCommand1 y Command2
  • 10.
    8 Colocar el siguientecódigo fuente en el formulario: Option Explicit Private m_Pos As Integer Sub buscar_cadena(ByVal Posicion As Integer) Dim p As Integer, Frase As String Frase = txt_Buscar p = InStr(Posicion, Text1, Frase) If p > 0 Then m_Pos = p With Text1 .SelStart = m_Pos - 1 .SelLength = Len(Frase) .SetFocus End With Else MsgBox "No se encontró la frase", vbInformation Text1.SetFocus End If End Sub Private Sub Command1_Click() 'Busca a pratir de la primera pocición Call buscar_cadena(1) End Sub Private Sub Command2_Click() 'Busca a partir del valor que tenga m_Pos Call buscar_cadena(m_Pos + 1) End Sub Private Sub Form_Load() Command1.Caption = "Buscar" Command2.Caption = "Buscar siguiente" Me.Caption = "Ejemplo de InStr " End Sub Nota: también hay una función similar a Instr llamada InstrRev , y lo que hace es devolver la posición de la primera concurrencia de una cadena dentro de otra cadena, pero comenzando por el extremo derecho de la misma.
  • 11.
    9 Función Left, Righty Mid Estas funciones son utilizadas para extraer partes de una cadena. La función Left: tiene 2 parámetros: El primero es la cadena de la cual se extraerán caracteres, y el segundo un número desde el cual comenzar a extraer caracteres desde la parte izquierda. Ejemplo: Dim Cadena As String Cadena = Left("Ya es la madrugada", 9) 'Cadena, que es un string, sería igual a: "Ya es la" Función Right: Es igual que la función Left pero comienza a extraer caracteres desde el lado derecho de la cadena. La función Mid: Tiene la misma función que las anteriores pero posee tres parámetros. Su sintaxis es: Mid (cadena, inicio, longitud) El parámetro cadena es la cadena a extraer caracteres. El parámetro Inicio es donde comenzar y el parámetro longitud, es la cantidad de caracteres a extraer de la cadena de caracteres Ejemplos: Dim nombre As String nombre = Mid("River perdió la copa", 7, 6) 'La variable nombre sería igual a: "perdió"
  • 12.
    10 Este Otro ejemplousa la función Mid para realizar un simple efecto tipo máquina de escribir. Colocar en un formulario un CommandButton y el siguiente código fuente en el form. Option Explicit Sub Pausa(Segundos As Double) Dim inicio As Double ' Devuelve la cantidad de segundos desde que inicio windows inicio = Timer Do While (Timer - inicio) < Segundos ' pausa DoEvents Loop End Sub Private Sub Command1_Click() Dim texto As String texto = "... Hola mundo --->>> " Call MostrarTexto(texto, 0.1, Me) End Sub Private Sub MostrarTexto(Frase As String, _ Segundos As Double, _ Destino As Object) Dim LenFrase As Integer Dim i As Integer Dim Caracter As String Dim texto As String LenFrase = Len(Frase) Do While i <= LenFrase Destino.Cls DoEvents i = i + 1 ' Obtiene el siguiente caracter
  • 13.
    11 Caracter = Mid(Frase,i, 1) ' texto actual texto = texto & Caracter Destino.Print texto ' Imprimi e/ dibuja el texto ' pausa o delay Pausa Segundos DoEvents Loop End Sub Private Sub Form_Load() Me.FontSize = 12 Me.Font.Bold = True Me.ForeColor = vbRed Command1.Caption = " Efecto de texto con mid " End Sub Private Sub Form_Unload(Cancel As Integer) End End Sub Función Str y Val La función Val convierte una cadena en un número yla función Str un número en una cadena. Ejemplos: cadena = "123456" cadena = Val(cadena) 'Ahora cadena vale 123456 cadena2 = 123456 cadena2 = Str(cadena2) 'Ahora cadena2 vale "123456"
  • 14.
    12 Funciones para eltratamiento de números Visual Basic posee muchas funciones para tratar números. A continuación las principales funciones. Función Round La función Round se utiliza para redondear un número decimal, devolviendo un número entero. Ejemplo: Dim Mimumero As Long Minumero = Round(245.8) '(La función devuelve 246) Minumero = Round(245.3) '(La función devuelve 245) Minumero = Round(245.5) '(La función devuelve 245) Round posee un parámetro opcional por si queremos incluir los dígitos decimales. Rnd y Randomize - Números aleatorios Para generar números aleatorios, Visual Basic incluye 2 funciones: Rnd y Randomize. La función Rnd devuelve un número aleatorio, y esta posee un solo parámetro. Ejemplo : Rnd (número) Pero para poder generar dichos números aleatorios, debemos utilizar previamente la función Randomize con la siguiente fórmula: Dim LimiteInferior As Integer Dim LimiteSuperior As Integer LimiteInferior = 20 LimiteSuperior = 40 MsgBox Int((LimiteInferior - LimiteSuperior + 1) * Rnd + LimiteInferior)
  • 15.
    13 Funciones de formato VisualBasic posee varias funciones para darle formato a distintos tipos de datos e información. A continuación se ve algunos ejemplos de las principales funciones: FormatCurrency: Esta función se utiliza para trabajar con números con formato en dinero. Ejemplo: si tenemos un número 3 y utilizamos la función nos devolvería "$3". FormatPercent: Esta función es utilizada para trabajar con porcentajes. Ejemplo: si tendríamos un número 321, nos devolvería: "32,1%" . FormatDateTime: Esta función trabaja con fechas y horas. FormatNumber: Formatea expresiones números Resultado = FormatPercent(321) 'devuelve: "32.100,00%" Resultado = FormatCurrency(3) 'devuelve: "$3,00" Resultado = FormatDateTime("6-8-1978") 'La función devolvería: "06/08/1978" NumDigitsAfterDecimal: Parámetro de tipo opcional. Este indicará cuantos números decimales devolverá la función: Ejemplo Cadena = FormatCurrency (325, 3) 'Devuelve: "$325,000" Ejemplo de la función FormatDateTime Esta función, en el primer parámetro se le debe pasar la fecha u hora a formatear, y el segundo parámetro es el tipo de formato, pueden ser 5 tipos. vbGeneralDate, vbLongDate, vbShortDate, vbLongTime y vbShortTime. Este parámetro es de tipo opcional. al colocar la coma dentro de la función , visual basic despliega la lista de constanetas mencionadas, como muestra el gráfico:
  • 16.
    14 Un ejemplo paraver estos formatos utilizando FormatDateTime: Colocar cinco option Button, cada botón de opción mostrará los diferentes formatos en el caption del formulario, es decir en la barra de título. Código en el formulario: Private Sub Form_Load() Option1.Caption = " vbGeneralDate " Option2.Caption = " vbLongDate " Option3.Caption = " vbShortDate " Option4.Caption = " vbLongTime " Option5.Caption = " vbShortTime " End Sub Private Sub Option1_Click() Me.Caption = FormatDateTime(Now, vbGeneralDate)
  • 17.
    15 End Sub Private SubOption2_Click() Me.Caption = FormatDateTime(Now, vbLongDate) End Sub Private Sub Option3_Click() Me.Caption = FormatDateTime(Now, vbShortDate) End Sub Private Sub Option4_Click() Me.Caption = FormatDateTime(Now, vbLongTime) End Sub Private Sub Option5_Click() Me.Caption = FormatDateTime(Now, vbShortTime) End Sub Función Format: La función Format es mas completa que las anteriores funciones, porque puede manejar mas tipos de datos, y no devuelve solo cadenas, esta también puede devolver números y fechas. La función Format posee dos parámetros: Format (Expresión, formato) En el primero debemos colocar cualquier expresión válida. El segundo es opcional y a continuación veremos una descripción de los formatos de VB: GeneralNumber: Devuelve el número sin formato.
  • 18.
    16 Currency: Devuelve elnúmero en formato moneda, con el símbolo "$" y 2 decimales a las derecha. Fixed: Devuelve como mínimo un dígito a la izquierda y 2 ala derecha del decimal. Standar: Similar a Fixed pero incluye un separador de miles. Percent: Multiplica el número por cien y le agrega el símbolo "%" True/False: Devuelve Verdadero para un valor distinto de 0,y Falso para 0. On/OFF: Devuelve "Activado" para un valor distinto de 0, y "Desactivado" para 0. La forma de pasar el parámetro es entre comillas. Ejemplo: cadena = Format(75, "Currency") ' Devolvería: "$75,00" Nota: Si ingresamos un número decimal, debemos utilizar el "." y no la coma "," ya que la coma determina el comienzo de otro parámetro dentro de la función y Visual basic daría error de sintaxis. Entrada y Salida de datos3 Las cajas de dialogo son ventanas con controles que podemos visualizar en el instante que necesitemos hacer una entrada o salida de datos. Visual Basic tiene cajas de dialogo predefinidas que nos permiten realizar opciones de E/S con muy poco esfuerzo. Por ejemplo, la función inputbox visualiza una caja de dialogo presentando información o resultados. Entra de datos InputBox InputBox presenta un mensaje al usuario, permitiéndole ingresar un valor en una caja de texto:
  • 19.
    17 Como se dijola función InputBox presenta un cuadro de diálogo donde el usuario puede ingresar un texto y luego aceptar o cancelar dicho cuadro de diálogo. Los parámetros principales de esta función son: InputBox (Promt,Title, Default) El parámetro Prompt específica la leyenda que mostrará la caja de mensajes. El parámetro Title especifica el título que llevará el cuadro de diálogo. El parámetro Default es el texto que mostrará la caja de texto. El aspecto mas importante de InputBox es que nos devuelve una cadena con lo que haya ingresado el usuario en la caja de texto. Luego podemos realizar una tarea específica dependiendo del valor devuelto. Ejemplo: Dim retorno As String retorno = InputBox("Ingrese algo en la caja de texto", "Ejemplo") MsgBox "Usted ingresó:" & retorno
  • 20.
    18 MsgBox La función MsgBox,que ya se vió varias veces en distintos ejemplos, es muy fácil de usar y se utiliza para mostrar distintos tipos de mensajes. Ejemplos de mensajes o cajas de texto con la función MsgBox que podemos mostrar: Como se ve en los gráficos anteriores, con MsgBox podemos tener variedad a la hora de mostrar un determinado mensaje, utilizando para ello las diferentes constantes que incorpora la función. Los parámetros mas importantes son: Title : Es la leyenda que aparecerá en el título del mensaje. Texto : Es el Texto que mostrará el mensaje. Botones: En este parámetro se colocan las constantes que determinarán si la caja tiene uno o varios botones y el tipo de mensaje: informativo, de exclamación de alerta etc... Cuando escribimos la coma dentro de la función en el parámetro botones, Visual Basic despliega una lista con las opciones o constantes que podemos utilizar.
  • 21.
    19 Salida de datos Segúnhemos visto, el método Print visualiza datos en un formulario (objeto Form). Así mismo, permite visualizar datos en la ventana inmediato (a través del objeto Debug), en una caja de imagen (Control PictureBox) o en una impresora (utilizando el objeto Printer). Su sintaxis es objeto.Print lista_de_expresiones donde objeto, que es opcional, especifica uno de los objetos mencionados anteriormente, y lista de expresiones es un conjunto de expresiones numéricas y alfanuméricas separadas por comas, espacios en blanco o puntos y comas. Si se utiliza como separador un espacio en blanco, Visual Basic lo sustituye automaticamente por un punto y coma. Las constantes de caracteres (literales) deben ponerse entre comillas. Cuando un objeto se omite, los datos se omiten sobre el objeto al que pertenece el procedimiento que invica a Print. Las siguientes sentencias muestran algunos ejemplos de la utilización del métodoPrint: Print a +5, a * b / 2, c$, "Fin" Print x; y +5; w Print n; m Print "LISTADO DE RESULTADOS" Si se omite la lista de expresiones, se visualiza una línea en blanco. En cambio, si se incluye la lista de expresiones, se visualizan los valores de las expresiones en el objeto correspondiente. Por ejemplo: a = 1000: b = 2000: c = 500 Print "El valor de a es"; a Print 'línea en blanco Print "El valor de "; b; "+"; c; "="; b + c El resultado que se obtiene al ejecutar las sentencias anteriores es: El valor de a es 1000 El valor de 2000 + 500 = 2500 La posición de cada elemento a visualizar está determinada por la puntuación utilizada para separar los elementos en la lista de expresiones. Visual Basic divide la línea en zonas de 14 espacios cada una, cuando se utiliza como separador una coma. En la lista de expresiones, una coma produce la visualización de la expresión, inmediatamente después de la última visualizada. Por ejemplo:
  • 22.
    20 Print "1 23" Print "123457890123456789012345678901234" a = 5 Print a; aˆ2; a * (-5) Print a, aˆ2; a * (-5) Print "FIN DEL PROCESO" Funciones definidas por el usuario Son funciones que el usuario crea para cubrir necesidades que están fuera del alcance de las funciones estándar. Cada función tiene una misión muy concreta, de modo que nunca tiene un número de líneas excesivo y siempre se mantiene dentro de un tamaño manejable. Es muy frecuente que al hacer una modificación para añadir una funcionalidad o corregir un error, se introduzcan nuevos errores en partes del programa que antes funcionaban correctamente. Además, una misma puede ser llamada muchas veces en un mismo programa, e incluso puede ser reutilizada por otros programas. Una función es capaz de mantener una gran independencia con el resto del programa. Pase por valor y por referencia ( ByVal y ByRef ) Los parámetros en las funciones y procedimientos, se pueden enviar de dos maneras: por Valor y por Referencia. Si están declarados como ByVal, los mismos serán por valor, si se declaran como ByRef serán por referencia. Pase por valor La diferencia entre uno y otro método de paso de parámetros, es que en ByVal se envía una copia de la variable, y de esta manera si se efectúa un cambio en el procedimiento, solo tendrá efecto dentro del procedimiento o función, una vez que termine y finalice el mismo, la variable original pasará a valer el dato que tenía, es decir no se modifica. Ejemplo de envío de parámetros por Valor ( ByVal ) Código de ejemplo
  • 23.
    21 Private Sub Command1_Click() DimUn_Valor As Long Un_Valor = 100 'Se envía la variable por Valor ( ByVal ) Call Sumar(Un_Valor) 'Muestra el valor que es 100, ( no se modificó en la función Sumar ) MsgBox Un_Valor End Sub Sub Sumar(ByVal Valor As Long) 'Modifica la variable Valor = Valor + 100 End Sub Pase por referencia En los parámetros enviados por Referencia, lo que se hace es enviar un puntero de la variable original. Entonces, si en la función o procedimiento se cambia el valor de la variable, el cambio seguirá manteniéndose una vez que finalice la ejecución del procedimiento o función. Ejemplo de envío de parámetros por Referencia ( ByRef ) Este ejemplo es igual que el anterior, pero en la Sub sumar, la variable Valor se declara con ByRef ( por Referencia ) Código Private Sub Command1_Click() Dim Un_Valor As Long Un_Valor = 100 'Se envía la variable por Referencia ( ByRef ) con el valor 100 Call Sumar(Un_Valor) 'Muestra el valor que ahora es 200, ( ya que se modificó en la Sub Sumar) MsgBox Un_Valor End Sub Sub Sumar(ByRef Valor As Long) 'Modifica la variable Valor = Valor + 100 End Sub
  • 24.
    22 Punteros Al declarar unavariable estamos diciendo al ordenador que reserve una parte de la memoria RAM para almacenarla. Cada vez que ejecutemos el programa la variable se almacenará en un sitio diferente; eso no lo podemos controlar pues depende de la memoria que esté disponible en el momento en que ejecutamos el programa. La variable se almacena en un lugar determinado de la memoria y ese lugar no cambia mientras se ejecuta el programa. Cuando finaliza el programa todo el espacio reservado queda libre. Tamaño de almacenamiento Definición de puntero Un puntero es una variable que nos permite almacenar direcciones de memoria. En un puntero podemos tener guardada la dirección de una variable. Memoria Declaración de variables Numero=43 punt=00003
  • 25.
    23 Cuando un punterotiene la dirección de una variable se dice que ese puntero apunta a esa variable. La declaración de un puntero depende del tipo de dato al que queramos apuntar. En general, la declaración es: tipo_de_dato *nombre_del_puntero Ejemplo de pase por valor y por referencia Pase por valor Código: Private Sub cmdregre_Click() Unload Me End Sub Sub sumar(ByVal Valor As Long) Valor = Valor + 100 End Sub
  • 26.
    24 Private Sub cmdByVal_Click() DimUn_Valor As Long Un_Valor = 100 Call sumar(Un_Valor) MsgBox Un_Valor End Sub Pase por Referencia Código: Private Sub cmdregre_Click() Unload Me End Sub Sub Sumar(ByRef Valor As Long) Valor = Valor + 100
  • 27.
    25 End Sub Private SubcmdByRef_Click() Dim Un_Valor As Long Un_Valor = 100 Call Sumar(Un_Valor) MsgBox Un_Valor, vbInformation, "Modifica la variable" End Sub
  • 28.
    26 Conclusión Las funciones sonuna herramienta que nos facilita el trabajo en cuanto a la programación haciendo que muchas de las tareas sean más simples de realizar reduciendo largas horas de trabajo que si lo hiciéramos a mano, el poder contar con un programa ya diseñado ahorrara el trabajo que se puede presentar más adelante si no se contara con esta herramienta, ya que cuando se cuenta con el programa solo es cuestión de insertar ciertos datos y el programa se encargara del resto. Una vez que se ha aprendido a programar y se conoce cada una de las distintas funciones el usuario será capaz de realizar sus propios programas para realizar cualesquier programación con las diferentes funciones.