Sunteți pe pagina 1din 41

6.

1 Introducción
Subalgoritmo.
Se le llama así a cada una de las partes de un algoritmo más general que resuelve cada una
de las tareas particulares necesarias para que dicho algoritmo general alcance el objetivo
para el que fue diseñado, es decir resolver un problema.
Las variables locales: se declaran dentro de un módulo o Subalgoritmo y sólo tienen
utilidad dentro de ese módulo, no se podrá acceder a ellas desde otros módulos. Pueden
existir variables locales con el mismo nombre siempre que estén en módulos diferentes.
Las variables globales: son declaradas de forma que puedan ser utilizadas (consultada y/o
modificada) desde cualquiera de los módulos que forman el programa. En este caso, no
puede haber dos variables globales con el mismo nombre, ya que esto produciría una
ambigüedad que el compilador no podría resolver.

Función.
También conocido como una subrutina o subprograma, como idea general, se presenta
como un Subalgoritmo 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.
Una función puede llamarse múltiples veces e incluso llamarse a sí misma (función
recurrente).

Elementos de la declaración de una subrutina.


Las declaraciones de subrutinas generalmente son especificadas por:
Un nombre único en el ámbito: nombre de la función con el que se identifica y se distingue
de otras.
Un tipo de dato de retorno: tipo de dato del valor que la subrutina devolverá al terminar su
ejecución.
Una lista de parámetros: especificación del conjunto de argumentos (pueden ser cero, uno
o más) que la función debe recibir para realizar su tarea.
El código u órdenes de procesamiento: conjunto de órdenes y sentencias que debe ejecutar
la subrutina
1
Las funciones en programación generalmente son las que realizan los cálculos para retornar
el valor correspondiente a una función matemática.

Por ejemplo un seudocodigo puede ser:


Private Sub cmdregre_Click() (programa principal)
Unload Me
End Sub
Sub Sumar(ByRef Valor As Long)
Valor = Valor + 100
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 ( fin del programa)
Donde se puede ver claramente donde inicia la función del programa y donde termina.

2
6.2 Funciones Estandar
También conocido como una subrutina o subprograma, como idea general, se presenta
como un Subalgoritmo 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:

Label1.caption = Total 502, 1478

3
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:

Label1 = Ucase (Label1)

4
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 quisieramos 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(Pais)

Ahora el valor de País es igual a: "Argentina".

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)

5
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.

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)

6
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 :

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.

7
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ó"

Este Otro ejemplo usa la función Mid para realizar un simple efecto tipo máquina de
escribir.

10
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
Caracter = Mid(Frase, i, 1)
' texto actual
texto = texto & Caracter
Destino.Print texto ' Imprimi e/ dibuja el texto

11
' 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"

Funciones para el tratamiento de números

Visual Basic posee muchas funciones para tratar números. A continuación las principales
funciones.

12
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()

15
Me.Caption = FormatDateTime(Now, vbGeneralDate)
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:

16
 GeneralNumber: Devuelve el número sin formato.
 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.

17
6.3 Entrada y Salida de datos
Entrada/salida, también abreviado E/S o I/O (del original en inglés input/output), es la
colección de interfaces que usan las distintas unidades funcionales (subsistemas) de un
sistema de procesamiento de información para comunicarse unas con otras, o lasseñales
(información) enviadas a través de esas interfaces.

Las entradas son las señales recibidas por la unidad, mientras que las salidas son las señales
enviadas por ésta.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.

Entrada de datos

InputBox

InputBox presenta un mensaje al usuario, permitiéndole ingresar un valor en una caja de


texto:

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.

18
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

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.

19
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.

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
20
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:

Print "1 2 3"


Print "123457890123456789012345678901234"
a=5
Print a; aˆ2; a * (-5)
Print a, aˆ2; a * (-5)
Print "FIN DEL PROCESO"

6.4 FUNCIONES DEFINIDAS POR EL USUARIO

21
Al igual que las funciones en los lenguajes de programación, las funciones definidas por el
usuario de MicrosoftSQL Server son rutinas que aceptan parámetros, realizan una acción,
como un cálculo complejo, y devuelven el resultado de esa acción como un valor. El valor
devuelto puede ser un valor escalar único o un conjunto de resultados.

Ventajas de las funciones definidas por el usuario.

Las ventajas de utilizar las funciones definidas por el usuario en SQL Server son:

• Permiten una programación modular.

Puede crear la función una vez, almacenarla en la base de datos y llamarla desde el
programa tantas vecescomo desee. Las funciones definidas por el usuario se pueden
modificar, independientemente del código de origen del programa.

• Permiten una ejecución más rápida.

Al igual que los procedimientos almacenados, las funciones definidas por el usuario
Transact-SQL reducen el costo de compilación del código Transact-SQL almacenando los
planes en la caché y reutilizándolos para ejecuciones repetidas. Esto significa que no es
necesario volver a analizar y optimizar la función definida por el usuario con cada uso, lo
que permite obtener tiempos de ejecución mucho más rápidos.

Las funciones CLR ofrecen una ventaja de rendimiento importante sobre las funciones
Transact-SQL para tareas de cálculo, manipulación de cadenas y lógica empresarial. Las
funciones Transact-SQL se adecuan mejor a la lógica intensiva del acceso a datos.

• Pueden reducir el tráfico de red.

Una operación que filtra datos basándose en restricciones complejas que no se puede
expresar en una sola expresión escalar se puede expresar como una función. La función se
puede invocar en la cláusula WHERE para reducir el número de filas que se envían al
cliente.

Componentes de una función definida por el usuario

22
Las funciones definidas por el usuario se pueden escribir en Transact-SQL, o en cualquier
lenguaje de programación .NET. Para obtener más información acerca del uso de lenguajes
.NET en funciones, vea Funciones CLR definidas por el usuario.

Todas las funciones definidas por el usuario tienen la misma estructura de dos partes: un
encabezado y un cuerpo. La función toma cero o más parámetros de entrada y devuelve un
valor escalar o una tabla.

El encabezado define:

• Nombre de función con nombre de propietario o esquema opcional

• Nombre del parámetro de entrada y tipo de datos

• Opciones aplicables al parámetro de entrada

• Tipo de datos de parámetro devueltos y nombre opcional

• Opciones aplicables al parámetro devuelto

El cuerpo define la acción o la lógica que la función va a realizar. Contiene:

• Una o más instrucciones Transact-SQL que ejecutan la lógica de la función

• Una referencia a un ensamblado .NET

En el siguiente ejemplo se muestra una función Transact-SQL simple definida por el


usuario y se identifican los principales componentes de la función. La función evalúa una
fecha proporcionada y devuelve un valor que designa la posición de esa fecha en una
semana.

En Visual Basic 6.0, para mostrar una fecha en formato corto o largo, utiliza el
especificador de formato "ddddd" o "dddddd". Los especificadores DayOfWeek ("w") y
WeekOfYear ("ww") muestran el primer día de la semana y la primera semana del año,
respectivamente. El carácter en minúscula "m" muestra el mes con un número sin cero a la
izquierda. El especificador Quarter ("q") muestra el trimestre del año con un número del 1
al 4.

Para mostrar los minutos como un número con o sin ceros iniciales, utiliza el especificador
de formato "Nn" o "N". Los caracteres "Hh" muestran la hora como un número con ceros
iniciales, y "ttttt" muestra la hora completa. Para mostrar las letras "A" o "P" en mayúscula

23
o minúscula con una hora anterior o posterior al mediodía, utiliza "AM/PM", "am/pm",
"A/P", "a/p" o "AMPM.".

El especificador de fecha y hora abreviado ("c") muestra una fecha y hora en el formato
"ddddd ttttt".

En Visual Basic 6.0, la función Format convierte las cadenas en números, si es necesario,
antes de asignarles un formato. Format muestra un separador decimal final si no hay parte
fraccionaria.

Visual Basic 6.0 admite cuatro secciones en la cadena de formato. Estas secciones están
separadas mediante puntos y coma (;) y especifican el formato de los valores positivos,
negativos, cero y nulos, respectivamente. Los números negativos con una sección negativa
vacía en la cadena de formato muestran una cadena vacía.

El formato de notación científica permite que se incluyan los marcadores de posición de


dígitos "0" y "#" después del exponente.

En Visual Basic 6.0, puede crear expresiones para las cadenas de formato definidas por el
usuario con los especificadores @, &, <, > y !.

24
6.5 Pase por Valor

El paso de parámetros por valor consiste en copiar el contenido de la variable que queremos
pasar en otra dentro del ámbito local de la subrutina, consiste pues en copiar el contenido
de la memoria del argumento que se quiere pasar a otra dirección de memoria,
correspondiente al argumento dentro del ámbito de dicha subrutina. Se tendrán dos valores
duplicados e independientes, con lo que la modificación de uno no afecta al otro.

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:

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

25
Ejemplo pase por valor:

Código:

Private Sub cmdregre_Click()

Unload Me

End Sub

Sub sumar(ByVal Valor As Long)

Valor = Valor + 100

End Sub

Private Sub cmdByVal_Click()

Dim Un_Valor As Long

Un_Valor = 100

Call sumar(Un_Valor)

MsgBox Un_Valor

End Sub

26
6.6 Pase por Referencia
El paso de parámetros por referencia consiste en proporcionar a la subrutina a la que se le
quiere pasar el argumento la dirección de memoria del dato. En este caso se tiene un único
valor referenciado (o apuntado) desde dos puntos diferentes, el programa principal y la
subrutina a la que se le pasa el argumento, por lo que cualquier acción sobre el parámetro se
realiza sobre la misma posición de memoria.

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

27
Ejemplo pase por referencia:

Código:

Private Sub cmdregre_Click()

Unload Me

End Sub

Sub Sumar(ByRef Valor As Long)

Valor = Valor + 100

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

28
6.7 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 un tipo simple que siempre está asociado a otro tipo (punteros a enteros, a
reales, a registros, etc.)
Se pueden ver los punteros como variables que almacenan direcciones de memoria; de aquí
se deduce:

Un puntero es un medio para acceder al contenido “real” apuntado por la variable. La


declaración de un puntero no implica que exista contenido apuntado por el misma. Es
necesario crear y destruir explícitamente el contenido apuntado por punteros. Se puede

29
establecer una analogía entre los punteros y las direcciones postales: Una dirección postal
permite acceder al lugar físico indicado.

El hecho de disponer de una dirección postal no garantiza que el lugar exista. Para declarar
variables de tipo puntero en la notación algorítmica se utiliza la sintaxis siguiente: variable
puntero a tipo

Por ejemplo:

Puntero a real

Una vez se declara un puntero pueden llevarse a cabo dos acciones básicas sobre el mismo:
Asignarle memoria para almacenar un dato del tipo al que apunta:

Crear
Eliminar la memoria que tiene asignada y con ella el dato apuntado:
Destruir
Crear (variable puntero)
Destruir (variable puntero)

Es posible asignar a un puntero el contenido de otro; para hacer Esto es necesario que la
variable a la que vamos a asignar un Valor no apunte a ningún dato pues en ese caso el dato
original Quedaría inaccesible. Así pues, sólo deberíamos asignar un puntero a otro si el
Puntero asignado no tiene memoria reservada

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

30
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

31
6.8 Elaboración de Programas
La programación es el proceso de diseñar, escribir, depurar y mantener el
código fuente de programas computacionales. El código fuente es escrito en
un lenguaje de programación. El propósito de la programación es crear
programas que exhiban un comportamiento deseado. El proceso de escribir
código requiere frecuentemente conocimientos en varias áreas distintas,
además del dominio del lenguaje a utilizar, algoritmos especializados y lógica
formal. Programar no involucra necesariamente otras tareas tales como el
análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí
suelen estar fusionadas en el desarrollo de pequeñas aplicaciones.Para crear un
programa, y que la computadora interprete y ejecute las instrucciones escritas
en él, debe usarse un Lenguaje de programación.

En sus inicios las computadoras interpretaban sólo instrucciones en un


lenguaje específico, del más bajo nivel, conocido como código máquina,
siendo éste excesivamente complicado para programar. De hecho sólo consiste
en cadenas de números 1 y 0 (Sistema binario).

Para facilitar el trabajo de programación, los primeros científicos que


trabajaban en el área decidieron reemplazar las instrucciones, secuencias de
unos y ceros, por palabras o letras provenientes del inglés; codificándolas así y
creando un lenguaje de mayor nivel, que se conoce como Assembly o lenguaje
ensamblador. Por ejemplo, para sumar se usa la letra A de la palabra inglesa
add (sumar). En realidad escribir en lenguaje ensamblador es básicamente lo
mismo que hacerlo en lenguaje máquina, pero las letras y palabras son
bastante más fáciles de recordar y entender que secuencias de números
binarios.

A medida que la complejidad de las tareas que realizaban las computadoras


aumentaba, se hizo necesario disponer de un método sencillo para programar.

Entonces, se crearon los lenguajes de alto nivel. Mientras que una tarea tan
trivial como multiplicar dos números puede necesitar un conjunto de
instrucciones en lenguaje ensamblador, en un lenguaje de alto nivel bastará
con solo una.

Una vez que se termina de escribir un programa, sea en ensamblador o en un


lenguaje de alto nivel, es necesario compilarlo, es decir, traducirlo a lenguaje
máquina.

32
Léxico y programación

La programación se rige por reglas y un conjunto más o menos reducido de


órdenes, expresiones, instrucciones y comandos que tienden a asemejarse a
una lengua natural acotada (en inglés); y que además tienen la particularidad
de una reducida ambigüedad. Cuanto menos ambiguo es un lenguaje de
programación, se dice, es más potente. Bajo esta premisa, y en el extremo,
el lenguaje más potente existente es el binario, con ambigüedad nula (lo cual
lleva a pensar así del lenguaje ensamblador).

En los lenguajes de programación de alto nivel se distinguen diversos


elementos entre los que se incluyen el léxico propio del lenguaje y las reglas
semánticas y sintácticas.

Programas y algoritmos

Un algoritmo es una secuencia no ambigua, finita y ordenada de instrucciones


que han de seguirse para resolver un problema. Un programa normalmente
implementa (traduce a un lenguaje de programación concreto) uno o más
algoritmos.

Un algoritmo puede expresarse de distintas maneras: En forma gráfica, como


un diagrama de flujo, en forma de código como en pseudocódigo o un
lenguaje de programación, en forma explicativa, etc.

Los programas suelen subdividirse en partes menores, llamadas módulos, de


modo que la complejidad algorítmica de cada una de las partes sea menor que
la del programa completo, lo cual ayuda al desarrollo del programa. Esta es
una práctica muy utilizada y se conoce como "refino progresivo".

Según Niklaus Wirth, un programa está formado por los algoritmos y la


estructura de datos.

Se han propuesto diversas técnicas de programación cuyo objetivo es mejorar


tanto el proceso de creación de software como su mantenimiento. Entre ellas,
se pueden mencionar las siguientes:

33
ß programación estructurada

ß programación modular

ß programación orientada a objetos (POO)

ß programación declarativa

Compilación

El programa escrito en un lenguaje de programación (fácilmente comprensible


por el programador) es llamado programa fuente y no se puede ejecutar
directamente en una computadora. La opción más común es compilar el
programa obteniendo un módulo objeto, aunque también puede ejecutarse en
forma más directa a través de un intérprete informático.

El código fuente del programa se debe someter a un proceso de traducción


para convertirlo en lenguaje máquina, código éste directamente ejecutable por
el procesador. A este proceso se le llama compilación.

Normalmente la creación de un programa ejecutable (un típico.exe para


Microsoft Windows o DOS) conlleva dos pasos. El primer paso se llama
compilación (propiamente dicho) y traduce el código fuente escrito en un
lenguaje de programación almacenado en un archivo a código en bajo nivel
(normalmente en código objeto, no directamente a lenguaje máquina). El
segundo paso se llama enlazado en el cual se enlaza el código de bajo nivel
generado de todos los ficheros y subprogramas que se han mandado compilar
y se añade el código de las funciones que hay en las bibliotecas del
compilador para que el ejecutable pueda comunicarse directamente con el
sistema operativo, traduciendo así finalmente el código objeto a código
máquina, y generando un módulo ejecutable.

Estos dos pasos se pueden hacer por separado, almacenando el resultado de la


fase de compilación en archivos objetos (un típico.obj para Microsoft
Windows, DOS o para Unix); para enlazarlos en fases posteriores, o crear
directamente el ejecutable; con lo que la fase de compilación se almacena sólo
temporalmente. Un programa podría tener partes escritas en varios lenguajes
(por ejemplo C, C++ yensamblador), que se podrían compilar de forma

34
independiente y luego enlazar juntas para formar un único módulo ejecutable.

Programación e ingeniería del software

Existe una tendencia a identificar el proceso de creación de un programa


informático con la programación, que es cierta cuando se trata de programas
pequeños para uso personal, y que dista de la realidad cuando se trata de
grandes proyectos.

El proceso de creación de software, desde el punto de vista de la ingeniería,


incluye los siguientes pasos:

1. Reconocer la necesidad de un programa para solucionar un problema o


identificar la posibilidad de automatización de una tarea.

2. Recoger los requisitos del programa. Debe quedar claro qué es lo que debe
hacer el programa y para qué se necesita.

3. Realizar el análisis de los requisitos del programa. Debe quedar claro cómo
debe realizar el programa las cosas que debe hacer. Las pruebas que
comprueben la validez del programa se pueden especificar en esta fase.

4. Diseñar la arquitectura del programa. Se debe descomponer el programa en


partes de complejidad abordable.

5. Implementar el programa. Consiste en realizar un diseño detallado,


especificando completamente todo el funcionamiento del programa, tras lo
cual la codificación debería resultar inmediata.

6. Implantar (instalar) el programa. Consiste en poner el programa en


funcionamiento junto con los componentes que pueda necesitar (bases de
datos, redes de comunicaciones, etc.).

La ingeniería del software se centra en los pasos de planificación y diseño del


programa, mientras que antiguamente (programación artesanal) la realización
de un programa consistía únicamente en escribir el código.

35
5 programas con funciones definidas por el
programador

Ejemplo #1 Pseudo código para demostrar el uso de funciones

<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Función de ejemplo.\n";
return $valordevuelto;
}
?>

Ejemplo #2 Funciones condicionales

<?php

$haceralgo = true;

/* No podemos llamar a foo() desde aquí


ya que no existe aún,
pero podemos llamar a bar() */

bar();

if ($haceralgo) {
function foo()
{
echo "No existo hasta que la ejecución del programa llegue hasta mí.\
n";
}
}

/* Ahora podemos llamar de forma segura a foo()


ya que $haceralgo se evaluó como verdadero */

36
if ($haceralgo) foo();

function bar()
{
echo "Existo desde el momento inmediato que comenzó el programa.\n";
}

?>

Ejemplo #3 Funciones dentro de funciones

<?php
function foo()
{
function bar()
{
echo "No existo hasta que se llame a foo().\n";
}
}

/* No podemos llamar aún a bar()


ya que no existe. */

foo();

/* Ahora podemos llamar a bar(),


el procesamiento de foo()
la ha hecho accesible. */

bar();

?>

37
Ejemplo #4 Funciones recursivas

<?php
function recursividad($a)
{
if ($a < 20) {
echo "$a\n";
recursividad($a + 1);
}
}
?>

Ejemplo #5

#include <iostream.h>
#include <stdlib.h>

double square(double numero); /* Prototipo de la funcion*/

int main()
{
/* Este programa es solo un ejemplo de la definicion y uso
de una funcion definida por el programador*/

double x,y,z;

cin>>x>>y;

z = square(x); /* Llamado a la funcion*/


z = z * y;

cout<<"\n";
cout<<z;
cout<<"\n";

system("PAUSE");
return 0;
}

/* Esta funcion calcula el cuadrado de un numero*/

38
double square(double numero)
{
double cuadrado;

cuadrado = numero * numero;


return cuadrado;
}

39
Conclusión
En conclusión, conocer las funciones nos da la oportunidad de desarrollar el manejo y la
elaboración de programas porque nos permite subdividir los programas en funciones y asi
de esta forma podemos dividir tareas grandes de computación en más y más pequeñas, para
que dicho algoritmo alcance el objetivo para el que fue diseñado, lo cual da como resultado
que el programa sea de mayor facilidad de uso y de entendimiento para poder manejarlo
mas eficientemente para la comodidad del usuario.

40
REFERENCIAS

http://www.scribd.com/doc/75420482/UNIDAD-6

https://sites.google.com/site/algoritmosgonzalezsamaniego/unidad-6-
funciones

https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbW
Fpbnxwcm9ncmFtYWNpb25lZGdhcnp1bmlnYXxneDo0MWI4YzQ1NDQy
NWU2MWE1

https://sites.google.com/site/algoritmosy/unidad

https://docs.google.com/viewer?a=v&pid=sites&srcid=ZGVmYXVsdGRvbW
FpbnxjYXJsb3NwYWxtZXJpbjIwfGd4OjM0NjdhNzg5MDY2YjMwMDU

http://lenguajecmasmas.wordpress.com/2007/10/01/creacion-de-funciones-
definidad-por-el-usuario/

http://www.php.net/manual/es/functions.user-defined.php

41