Sei sulla pagina 1di 38

ALGORITMOS Y LENGUAJE DE

PROGRAMACION
UNIDAD 6
FUNCIONES
MAESTRA: SALAZAR DIVES LILIANA
ALUMNO: ZAMARRON CADENA PEDRO
NATANAEL
N CONTROL: 14071472
HORA: 1:00 2:00 PM

6.1 Introduccin
Subalgoritmo.
Se le llama as a cada una de las partes de un algoritmo ms general que resuelve
cada una de las tareas particulares necesarias para que dicho algoritmo general
alcance el objetivo para el que fue diseado, es decir resolver un problema.
Las variables locales: se declaran dentro de un mdulo o Subalgoritmo y slo
tienen utilidad dentro de ese mdulo, no se podr acceder a ellas desde otros
mdulos. Pueden existir variables locales con el mismo nombre siempre que estn
en mdulos diferentes.
Las variables globales: son declaradas de forma que puedan ser utilizadas
(consultada y/o modificada) desde cualquiera de los mdulos que forman el
programa. En este caso, no puede haber dos variables globales con el mismo
nombre, ya que esto producira una ambigedad que el compilador no podra
resolver.

Funcin.
Tambin 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 especfica. Algunos lenguajes de programacin, como
Visual Basic .NET o Fortran, utilizan el nombre funcin para referirse a subrutinas
que devuelven un valor.
Una subrutina al ser llamada dentro de un programa hace que el cdigo principal
se detenga y se dirija a ejecutar el cdigo de la subrutina, en cambio cuando se
llama a una macro, el compilador toma el cdigo de la macro y lo implanta donde
fue llamado, aumentando as el cdigo fuente y por consiguiente el objeto.
Una funcin puede llamarse mltiples veces e incluso llamarse a s misma (funcin
recurrente).

Elementos de la declaracin de una subrutina.


Las declaraciones de subrutinas generalmente son especificadas por:
Un nombre nico en el mbito: nombre de la funcin 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 ejecucin.
2

Una lista de parmetros: especificacin del conjunto de argumentos (pueden ser


cero, uno o ms) que la funcin debe recibir para realizar su tarea.
El cdigo u rdenes de procesamiento: conjunto de rdenes y sentencias que
debe ejecutar la subrutina
Las funciones en programacin generalmente son las que realizan los clculos
para retornar el valor correspondiente a una funcin matemtica.

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 funcin del programa y donde
termina.

6.2 Funciones Estandar


Tambin 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 especfica. Algunos lenguajes de programacin, como
Visual Basic .NET o Fortran, utilizan el nombre funcin para referirse a subrutinas
que devuelven un valor.

Una subrutina al ser llamada dentro de un programa hace que el cdigo principal
se detenga y se dirija a ejecutar el cdigo de la subrutina, en cambio cuando se
llama a una macro, el compilador toma el cdigo de la macro y lo implanta donde
fue llamado, aumentando as el cdigo 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 cdigo, en cmo se le
pasa los parmetros etc...
La diferencia fundamental con respecto a los procedimientos o subrutinas es que
estos, luego de ejecutar el cdigo 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 cdigo que contienen y luego mueren
por decirlo de alguna manera.

Para declarar o crear una funcin podramos escribir lo siguiente:


Private Function Total (Valor1 As Integer, Valor2 As Integer) As Long
Total = Valor1 + Valor2
End Function
Seguramente notaste que declaramos la funcin llamada Total, y al final de los
parmetros dice As Long , esto es por que como dijimos las funciones retornan o
devuelven un valor, o sea que en este caso la funcin 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 nmeros,
cadenas, fechas, arreglos y vectores
Para llamar a la funcin anterior podramos hacerlo de la siguiente manera:
Label1.caption = Total 502, 1478

En este caso el control Label1 llamara a la funcin Total , la funcin realizara la


suma de los valores pasados como parmetros y por ltimo el valor final de la
suma se lo asignara al control label1.
Funciones para el tratamiento de cadenas
4

Las funciones de cadena, como su nombre lo indica, se utilizan para trabajar y


tratar las cadenas de caracteres.
A continuacin las ms importantes de ellas.

Funcin Lcase y Ucase


Estas dos funciones se utilizan para convertir cadenas de texto a minscula y
mayscula.
La funcin Lcase cambia o convierte una cadena de texto a minscula y un
ejemplo de como utilizarla sera as:
Lcase (cadena que queremos convertir a minsculas)

Ejemplo:
Dim cadena As String
cadena = "HOLA MUNDO"
'Convertimos
cadena = LCase(cadena)
'La variable cadena ahora vale "hola mundo"

La funcin Ucase funciona de la misma manera que Lcase pero convierte el


contenido de una cadena a maysculas.
Por ejemplo, si tenemos un control Label1 que contiene un texto que dice:
"Porcentaje de sueldos", escribiendo la siguiente lnea:
Label1 = Ucase (Label1)

El control Label1 pasara a mostrar o mejor dicho contener en su propiedad


caption:"PORCENTAJE DE SUELDOS".

Funcin Trim, LTrim y RTrim


5

Estas tres funciones se utilizan para eliminar los espacios vacos de una cadena.
LTrim elimina los espacios vacos 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 vacos de la izquierda haramos lo siguiente:
ciudad = LTrim(ciudad)

Si en un TextBox quisieramos borrar todos los espacios vacos de la parte derecha


de la cadena:
MiText = RTrim(MiText)

La Funcin Trim elimina todos los espacios vacos de ambos lados de la cadena.
Ejemplo:
Pais = " Argentina
Pas = Trim(Pais)

"

Ahora el valor de Pas es igual a: "Argentina".

Funcin Len
La funcin Len nos permite conocer la cantidad de caracteres que tiene una
determinada cadena. O sea que esta funcin nos devuelve un nmero.

Ejemplo:
Len (Aqu va la cadena que queremos averiguar su tamao)

Como la funcin Len devuelve un nmero debemos asignar ese nmero devuelto
en una variable de tipo numrica.
Ejemplo:
Dim TamanoCadena As Long
Dim MiCadena As String
MiCadena = "Me Llamo Eustaquio"
TamanoCadena = Len(MiCadena)
El valor de la variable TamanoCadena pasara a valer 18.
Hay que tener en cuenta que la funcin Len tambin toma en cuenta los espacios
vacos.

Funcin Asc y Chr


La funcin Asc nos permite obtener el cdigo ASCII de un de terminado caracter.
Ejempos:
Si queremos obtener el cdigo ASCII del caracter "a", que es el nmero 97
podramos hacer lo siguiente:
Dim num As Integer
num = Asc("a")
En definitiva la funcin Asc lleva un solo parmetro de tipo String del cual
queremos obtener dicho nmero.
La Funcin Chr acta a la inversa de la funcin Asc, esto quiere decir, que a partir
de un determinado nmero nos devolver el caracter ASCII.
Obviamente que en vez de pasarle a la funcin un parmetro String es decir la
letra, debemos pasarle un nmero ASCII y nos devolver el carcter asociado.
Ejemplo:

Dim letra As String


letra = Chr(97)
La variable pasa a valer en este caso el caracter "a"

Funcin InsTr
La funcin InStr se utiliza para buscar una cadena o parte de una cadena dentro
de otra cadena.
Si la funcin encuentra la cadena a buscar devuelve un nmero que representa la
posicin donde encontr la cadena, si no la encuentra devuelve un 0.
Los parmetros que lleva esta funcin son:
InStr (comienzo, Cadena donde buscar, La Cadena a buscar)
Como esta funcin devuelve un nmero debemos almacenarla en una variable de
tipo numrica para utilizarla.
Ejemplo:
Dim posicion As Integer
posicion = InStr("Estoy tomando mate", "mate")

En este ejemplo la funcin encontr la cadena "mate" en la posicin 15, o sea que
la variable posicin pasa a valer 15.
Si observamos bien, la funcin en el primer parmetro, denominado comienzo, nos
pide que le digamos desde que posicin comenzar a buscar. En nuestro ejemplo,
este parmetro lo obviamos, esto quiere decir que comenzar desde la posicin 0
de la cadena a buscar. Pero podramos especificar una posicin en particular, por
ejemplo desde la 5 , 10 etc..., segn lo que necesitemos hacer.
Otro ejemplo de InsTr :
Este ejemplo, muestra como buscar dentro de un control TextBox, el cual tiene dos
opciones, un botn para buscar la primera frase, y otro que sigue buscando a
partir de donde est ubicda la seleccin.

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. Tambin colocar dos CommandButtonCommand1 y
Command2

Colocar el siguiente cdigo 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 pocicin
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: tambin hay una funcin similar a Instr llamada InstrRev , y lo que hace es
devolver la posicin de la primera concurrencia de una cadena dentro de otra
cadena, pero comenzando por el extremo derecho de la misma.
10

Funcin Left, Right y Mid


Estas funciones son utilizadas para extraer partes de una cadena.
La funcin Left:
tiene 2 parmetros: El primero es la cadena de la cual se extraern caracteres, y
el segundo un nmero 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, sera igual a: "Ya es la"

Funcin Right:
Es igual que la funcin Left pero comienza a extraer caracteres desde el lado
derecho de la cadena.
La funcin Mid:
Tiene la misma funcin que las anteriores pero posee tres parmetros. Su sintaxis
es:
Mid (cadena, inicio, longitud)
El parmetro cadena es la cadena a extraer caracteres. El parmetro Inicio es
donde comenzar y el parmetro 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 sera igual a: "perdi"

11

Este Otro ejemplo usa la funcin Mid para realizar un simple efecto tipo mquina
de escribir.
Colocar en un formulario un CommandButton y el siguiente cdigo 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
12

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

Funcin Str y Val


La funcin Val convierte una cadena en un nmero yla funcin Str un nmero en
una cadena.
Ejemplos:
cadena = "123456"
cadena = Val(cadena)
'Ahora cadena vale 123456
cadena2 = 123456
cadena2 = Str(cadena2)
'Ahora cadena2 vale "123456"

13

Funciones para el tratamiento de nmeros


Visual Basic posee muchas funciones para tratar nmeros. A continuacin las
principales funciones.

Funcin Round
La funcin Round se utiliza para redondear un nmero decimal, devolviendo un
nmero entero.
Ejemplo:
Dim Mimumero As Long
Minumero = Round(245.8) '(La funcin devuelve 246)
Minumero = Round(245.3) '(La funcin devuelve 245)
Minumero = Round(245.5) '(La funcin devuelve 245)
Round posee un parmetro opcional por si queremos incluir los dgitos decimales.

Rnd y Randomize - Nmeros aleatorios


Para generar nmeros aleatorios, Visual Basic incluye 2 funciones: Rnd y
Randomize.
La funcin Rnd devuelve un nmero aleatorio, y esta posee un solo parmetro.
Ejemplo :
Rnd (nmero)
Pero para poder generar dichos nmeros aleatorios, debemos utilizar previamente
la funcin Randomize con la siguiente frmula:
Dim LimiteInferior As Integer
Dim LimiteSuperior As Integer
LimiteInferior = 20
LimiteSuperior = 40
MsgBox Int((LimiteInferior - LimiteSuperior + 1) * Rnd + LimiteInferior)

14

Funciones de formato
Visual Basic posee varias funciones para darle formato a distintos tipos de datos e
informacin. A continuacin se ve algunos ejemplos de las principales funciones:

FormatCurrency: Esta funcin se utiliza para trabajar con nmeros


con formato en dinero. Ejemplo:
si tenemos un nmero 3 y utilizamos la funcin nos devolvera
"$3".

FormatPercent: Esta funcin es utilizada para trabajar con


porcentajes. Ejemplo:
si tendramos un nmero 321, nos devolvera: "32,1%" .

FormatDateTime: Esta funcin trabaja con fechas y horas.

FormatNumber: Formatea expresiones nmeros

Resultado
=
FormatPercent(321)
'devuelve:
"32.100,00%"
Resultado
=
FormatCurrency(3)
'devuelve:
"$3,00"
Resultado = FormatDateTime("6-8-1978") 'La funcin devolvera: "06/08/1978"

NumDigitsAfterDecimal: Parmetro de tipo opcional. Este indicar cuantos


nmeros decimales devolver la funcin:
Ejemplo
cadena = FormatCurrency(325, 3) 'Devuelve: "$325,000"

Ejemplo de la funcin FormatDateTime


15

Esta funcin, en el primer parmetro se le debe pasar la fecha u hora a formatear,


y el segundo parmetro es el tipo de formato, pueden ser 5 tipos.

vbGeneralDate, vbLongDate, vbShortDate, vbLongTime y vbShortTime.


Este parmetro es de tipo opcional. al colocar la coma dentro de la funcin , visual
basic despliega la lista de constanetas mencionadas, como muestra el grfico:

Un ejemplo para ver estos formatos utilizando FormatDateTime: Colocar cinco


option Button, cada botn de opcin mostrar los diferentes formatos en el caption
del formulario, es decir en la barra de ttulo.

16

Cdigo 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)
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)

17

End Sub

Funcin Format:
La funcin Format es mas completa que las anteriores funciones, porque puede
manejar mas tipos de datos, y no devuelve solo cadenas, esta tambin puede
devolver nmeros y fechas.
La funcin Format posee dos parmetros:
Format (Expresin, formato)

En el primero debemos colocar cualquier expresin vlida. El segundo es opcional


y a continuacin veremos una descripcin de los formatos de VB:

GeneralNumber: Devuelve el nmero sin formato.

Currency: Devuelve el nmero en formato moneda, con el smbolo


"$" y 2 decimales a las derecha.

Fixed: Devuelve como mnimo un dgito a la izquierda y 2 ala


derecha del decimal.

Standar: Similar a Fixed pero incluye un separador de miles.

Percent: Multiplica el nmero por cien y le agrega el smbolo "%"

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 parmetro es entre comillas.


18

Ejemplo:
cadena = Format(75, "Currency") ' Devolvera: "$75,00"

Nota: Si ingresamos un nmero decimal, debemos utilizar el "." y no la coma "," ya


que la coma determina el comienzo de otro parmetro dentro de la funcin y
Visual basic dara error de sintaxis.

6.3 Entrada y Salida de datos


Entrada/salida, tambin abreviado E/S o I/O (del original en ingls input/output), es
la coleccin de interfaces que usan las distintas unidades funcionales
(subsistemas) de un sistema de procesamiento de informacin para comunicarse
unas con otras, o lasseales (informacin) enviadas a travs de esas interfaces.
Las entradas son las seales recibidas por la unidad, mientras que las salidas son
las seales 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 funcin inputbox
visualiza una caja de dialogo presentando informacin o resultados.

Entrada de datos
InputBox
InputBox presenta un mensaje al usuario, permitindole ingresar un valor en una
caja de texto:

Como se dijo la funcin InputBox presenta un cuadro de dilogo donde el usuario


puede ingresar un texto y luego aceptar o cancelar dicho cuadro de dilogo.
Los parmetros principales de esta funcin son:
19

InputBox (Promt,Title, Default)

El parmetro Prompt especfica la leyenda que mostrar la caja de


mensajes.

El parmetro Title especifica el ttulo que llevar el cuadro de dilogo.

El parmetro 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 especfica 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 funcin MsgBox, que ya se vi varias veces en distintos ejemplos, es muy fcil
de usar y se utiliza para mostrar distintos tipos de mensajes.
Ejemplos de mensajes o cajas de texto con la funcin MsgBox que podemos
mostrar:

20

Como se ve en los grficos anteriores, con MsgBox podemos tener variedad a la


hora de mostrar un determinado mensaje, utilizando para ello las diferentes
constantes que incorpora la funcin.
Los parmetros mas importantes son:

Title : Es la leyenda que aparecer en el ttulo del mensaje.

Texto : Es el Texto que mostrar el mensaje.

Botones: En este parmetro se colocan las constantes que determinarn si


la caja tiene uno o varios botones y el tipo de mensaje: informativo, de
exclamacin de alerta etc... Cuando escribimos la coma dentro de la
funcin en el parmetro botones, Visual Basic despliega una lista con las
opciones o constantes que podemos utilizar.

Salida de datos
Segn hemos visto, el mtodo Print visualiza datos en un formulario (objeto Form).
As mismo, permite visualizar datos en la ventana inmediato (a travs 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
21

donde objeto, que es opcional, especifica uno de los objetos mencionados


anteriormente, y lista de expresiones es un conjunto de expresiones numricas y
alfanumricas 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 utilizacin del
mtodoPrint:
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 lnea 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 'lnea 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 posicin de cada elemento a visualizar est determinada por la puntuacin
utilizada para separar los elementos en la lista de expresiones. Visual Basic divide
la lnea en zonas de 14 espacios cada una, cuando se utiliza como separador una
coma. En la lista de expresiones, una coma produce la visualizacin de la
expresin, inmediatamente despus de la ltima visualizada. Por ejemplo:
Print "1 2 3"
Print "123457890123456789012345678901234"
a=5
22

Print a; a2; a * (-5)


Print a, a2; a * (-5)
Print "FIN DEL PROCESO"

6.4 FUNCIONES DEFINIDAS POR EL USUARIO

Al igual que las funciones en los lenguajes de programacin, las funciones


definidas por el usuario de MicrosoftSQL Server son rutinas que aceptan
parmetros, realizan una accin, como un clculo complejo, y devuelven el
resultado de esa accin 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 programacin modular.

Puede crear la funcin 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 cdigo de origen del programa.
Permiten una ejecucin ms rpida.
Al igual que los procedimientos almacenados, las funciones definidas por el
usuario Transact-SQL reducen el costo de compilacin del cdigo Transact-SQL
almacenando los planes en la cach y reutilizndolos para ejecuciones repetidas.
Esto significa que no es necesario volver a analizar y optimizar la funcin definida
por el usuario con cada uso, lo que permite obtener tiempos de ejecucin mucho
ms rpidos.
Las funciones CLR ofrecen una ventaja de rendimiento importante sobre las
funciones Transact-SQL para tareas de clculo, manipulacin de cadenas y lgica
empresarial. Las funciones Transact-SQL se adecuan mejor a la lgica intensiva
del acceso a datos.
Pueden reducir el trfico de red.

23

Una operacin que filtra datos basndose en restricciones complejas que no se


puede expresar en una sola expresin escalar se puede expresar como una
funcin. La funcin se puede invocar en la clusula WHERE para reducir el
nmero de filas que se envan al cliente.

Componentes de una funcin definida por el usuario


Las funciones definidas por el usuario se pueden escribir en Transact-SQL, o en
cualquier lenguaje de programacin .NET. Para obtener ms informacin 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 funcin toma cero o ms parmetros de
entrada y devuelve un valor escalar o una tabla.
El encabezado define:
Nombre de funcin con nombre de propietario o esquema opcional
Nombre del parmetro de entrada y tipo de datos

Opciones aplicables al parmetro de entrada


Tipo de datos de parmetro devueltos y nombre opcional
Opciones aplicables al parmetro devuelto

El cuerpo define la accin o la lgica que la funcin va a realizar. Contiene:


Una o ms instrucciones Transact-SQL que ejecutan la lgica de la funcin
Una referencia a un ensamblado .NET

En el siguiente ejemplo se muestra una funcin Transact-SQL simple definida por


el usuario y se identifican los principales componentes de la funcin. La funcin
evala una fecha proporcionada y devuelve un valor que designa la posicin de
esa fecha en una semana.

24

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 da de la semana y la primera
semana del ao, respectivamente. El carcter en minscula "m" muestra el mes
con un nmero sin cero a la izquierda. El especificador Quarter ("q") muestra el
trimestre del ao con un nmero del 1 al 4.
Para mostrar los minutos como un nmero con o sin ceros iniciales, utiliza el
especificador de formato "Nn" o "N". Los caracteres "Hh" muestran la hora como
un nmero con ceros iniciales, y "ttttt" muestra la hora completa. Para mostrar las
letras "A" o "P" en mayscula o minscula con una hora anterior o posterior al
medioda, 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 funcin Format convierte las cadenas en nmeros, 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 estn separadas mediante puntos y coma (;) y especifican el formato de
los valores positivos, negativos, cero y nulos, respectivamente. Los nmeros

negativos con una seccin negativa vaca en la cadena de formato muestran una
cadena vaca.
El formato de notacin cientfica permite que se incluyan los marcadores de
posicin de dgitos "0" y "#" despus del exponente.
En Visual Basic 6.0, puede crear expresiones para las cadenas de formato
definidas por el usuario con los especificadores @, &, <, > y !.

6.5 Pase por Valor


El paso de parmetros 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
direccin de memoria, correspondiente al argumento dentro del mbito de dicha
subrutina. Se tendrn dos valores duplicados e independientes, con lo que la
modificacin de uno no afecta al otro.

25

La diferencia entre uno y otro mtodo de paso de parmetros, es que en ByVal se


enva una copia de la variable, y de esta manera si se efecta un cambio en el
procedimiento, solo tendr efecto dentro del procedimiento o funcin, una vez que
termine y finalice el mismo, la variable original pasar a valer el dato que tena, es
decir no se modifica.
Ejemplo de envo de parmetros por Valor ( ByVal )
Cdigo de ejemplo:
Private Sub Command1_Click()
Dim Un_Valor As Long
Un_Valor = 100
'Se enva la variable por Valor ( ByVal )
Call Sumar(Un_Valor)
'Muestra el valor que es 100, ( no se modific en la funcin Sumar )
MsgBox Un_Valor
End Sub
Sub Sumar(ByVal Valor As Long)
'Modifica la variable
Valor = Valor + 100
End Sub

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

26

Un_Valor = 100
Call sumar(Un_Valor)
MsgBox Un_Valor
End Sub

6.6 Pase por Referencia


El paso de parmetros por referencia consiste en proporcionar a la subrutina a la
que se le quiere pasar el argumento la direccin 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 accin sobre el parmetro se realiza sobre la misma posicin
de memoria.
En los parmetros enviados por Referencia, lo que se hace es enviar un puntero
de la variable original. Entonces, si en la funcin o procedimiento se cambia el
valor de la variable, el cambio seguir mantenindose una vez que finalice la
ejecucin del procedimiento o funcin.

Ejemplo de envo de parmetros por Referencia ( ByRef )


Este ejemplo es igual que el anterior, pero en la Sub sumar, la variable Valor se
declara con ByRef ( por Referencia )
Cdigo:
Private Sub Command1_Click()
Dim Un_Valor As Long
Un_Valor = 100
'Se enva 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

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

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.

Tamao de almacenamiento

28

Definicin 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 declaracin de un puntero no implica que exista contenido apuntado por el
misma. Es necesario crear y destruir explcitamente el contenido apuntado por
punteros. Se puede establecer una analoga entre los punteros y las direcciones
postales: Una direccin postal permite acceder al lugar fsico indicado.
El hecho de disponer de una direccin postal no garantiza que el lugar exista. Para
declarar variables de tipo puntero en la notacin algortmica 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 bsicas 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)
29

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 ningn dato pues en
ese caso el dato original Quedara inaccesible. As pues, slo deberamos 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 direccin de una variable.

Memoria

Declaracin de variables

Numero=43 punt=00003

Cuando un puntero tiene la direccin de una variable se dice que ese puntero
apunta a esa variable. La declaracin de un puntero depende del tipo de dato al
que queramos apuntar. En general, la declaracin es: tipo_de_dato
*nombre_del_puntero

6.8 Elaboracin de Programas


La programacin es el proceso de disear, escribir, depurar y mantener el cdigo
fuente de programas computacionales. El cdigo fuente es escrito en un lenguaje
de programacin. El propsito de la programacin es crear programas que
exhiban un comportamiento deseado. El proceso de escribir cdigo requiere
frecuentemente conocimientos en varias reas distintas, adems del dominio del
lenguaje a utilizar, algoritmos especializados y lgica
formal. Programar no involucra necesariamente otras tareas tales como el anlisis
y diseo de la aplicacin (pero s el diseo del cdigo), aunque s suelen estar
fusionadas en el desarrollo de pequeas aplicaciones. Para crear un programa, y
que la computadora interprete y ejecute las instrucciones escritas en l, debe
usarse un Lenguaje de programacin.

30

En sus inicios las computadoras interpretaban slo instrucciones en un lenguaje


especfico, del ms bajo nivel, conocido como cdigo mquina, siendo ste
excesivamente complicado para programar. De hecho, slo consiste en cadenas
de nmeros 1 y 0 (Sistema binario).
Para facilitar el trabajo de programacin, los primeros cientficos que trabajaban en
el rea decidieron reemplazar las instrucciones, secuencias de unos y ceros, por
palabras o letras provenientes del ingls; codificndolas 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 bsicamente lo mismo que hacerlo
en lenguaje mquina, pero las letras y palabras son bastante ms fciles de
recordar y entender que secuencias de nmeros binarios.
A medida que la complejidad de las tareas que realizaban las computadoras
aumentaba, se hizo necesario disponer de un mtodo sencillo para programar.
Entonces, se crearon los lenguajes de alto nivel. Mientras que una tarea tan trivial
como multiplicar dos nmeros 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
mquina.
Lxico y programacin
La programacin se rige por reglas y un conjunto ms o menos reducido de
rdenes, expresiones, instrucciones y comandos que tienden a asemejarse a
una lengua natural acotada (en ingls); y que adems tienen la particularidad
de una reducida ambigedad. Cuanto menos ambiguo es un lenguaje de
programacin, se dice, es ms potente. Bajo esta premisa, y en el extremo,
el lenguaje ms potente existente es el binario, con ambigedad nula (lo cual
lleva a pensar as del lenguaje ensamblador).
En los lenguajes de programacin de alto nivel se distinguen diversos elementos
entre los que se incluyen el lxico propio del lenguaje y las reglas
semnticas y sintcticas.
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 programacin concreto) uno o ms
algoritmos.

31

Un algoritmo puede expresarse de distintas maneras: En forma grfica, como un


diagrama de flujo, en forma de cdigo como en pseudocdigo o un lenguaje de
programacin, en forma explicativa, etc.
Los programas suelen subdividirse en partes menores, llamadas mdulos, de
modo que la complejidad algortmica de cada una de las partes sea menor que
la del programa completo, lo cual ayuda al desarrollo del programa. Esta es
una prctica muy utilizada y se conoce como "refino progresivo".
Segn Niklaus Wirth, un programa est formado por los algoritmos y la estructura
de datos.
Se han propuesto diversas tcnicas de programacin cuyo objetivo es mejorar
tanto el proceso de creacin de software como su mantenimiento. Entre ellas,
se pueden mencionar las siguientes:

programacin estructurada
programacin modular
programacin orientada a objetos (POO)
programacin declarativa
Compilacin
El programa escrito en un lenguaje de programacin (fcilmente comprensible
por el programador) es llamado programa fuente y no se puede ejecutar
directamente en una computadora. La opcin ms comn es compilar el programa
obteniendo un mdulo objeto, aunque tambin puede ejecutarse en forma ms
directa a travs de un intrprete informtico.
El cdigo fuente del programa se debe someter a un proceso de traduccin para
convertirlo en lenguaje mquina, cdigo ste directamente ejecutable por el
procesador. A este proceso se le llama compilacin.
Normalmente la creacin de un programa ejecutable (un tpico.exe para Microsoft
Windows o DOS) conlleva dos pasos. El primer paso se llama compilacin
(propiamente dicho) y traduce el cdigo fuente escrito en un lenguaje de
programacin almacenado en un archivo a cdigo en bajo nivel (normalmente en
cdigo objeto, no directamente a lenguaje mquina). El
segundo paso se llama enlazado en el cual se enlaza el cdigo de bajo nivel
generado de todos los ficheros y subprogramas que se han mandado compilar y
se aade el cdigo de las funciones que hay en las bibliotecas del compilador para
que el ejecutable pueda comunicarse directamente con el sistema operativo,
32

traduciendo as finalmente el cdigo objeto a cdigo mquina, y generando un


mdulo ejecutable.
Estos dos pasos se pueden hacer por separado, almacenando el resultado de la
fase de compilacin en archivos objetos (un tpico.obj para Microsoft Windows,
DOS o para Unix); para enlazarlos en fases posteriores, o crear
directamente el ejecutable; con lo que la fase de compilacin se almacena slo
temporalmente. Un programa podra tener partes escritas en varios lenguajes
(por ejemplo C, C++ yensamblador), que se podran compilar de forma
independiente y luego enlazar juntas para formar un nico mdulo ejecutable.
Programacin e ingeniera del software
Existe una tendencia a identificar el proceso de creacin de un programa
informtico con la programacin, que es cierta cuando se trata de programas
pequeos para uso personal, y que dista de la realidad cuando se trata de
grandes proyectos.
El proceso de creacin de software, desde el punto de vista de la ingeniera,
incluye los siguientes pasos:
1. Reconocer la necesidad de un programa para solucionar un problema o
identificar la posibilidad de automatizacin 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 anlisis de los requisitos del programa. Debe quedar claro cmo
debe realizar el programa las cosas que debe hacer. Las pruebas que
comprueben la validez del programa se pueden especificar en esta fase.
4. Disear la arquitectura del programa. Se debe descomponer el programa en
partes de complejidad abordable.
5. Implementar el programa. Consiste en realizar un diseo detallado,
especificando completamente todo el funcionamiento del programa, tras lo cual la
codificacin debera 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 ingeniera del software se centra en los pasos de planificacin y diseo del
programa, mientras que antiguamente (programacin artesanal) la realizacin
de un programa consista nicamente en escribir el cdigo.
33

5 programas con funciones definidas por el programador


Ejemplo #1 Pseudo cdigo para demostrar el uso de funciones
<?php
function foo($arg_1, $arg_2, /* ..., */ $arg_n)
{
echo "Funcin de ejemplo.\n";
return $valordevuelto;
}
?>

Ejemplo #2 Funciones condicionales


<?php
$haceralgo = true;
/* No podemos llamar a foo() desde aqu
ya que no existe an,
pero podemos llamar a bar() */
bar();
if ($haceralgo) {
function foo()
{
echo "No existo hasta que la ejecucin del programa llegue hasta m.\n";
}
34

}
/* Ahora podemos llamar de forma segura a foo()
ya que $haceralgo se evalu como verdadero */
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 an a bar()
ya que no existe. */
foo();

35

/* Ahora podemos llamar a bar(),


el procesamiento de foo()
la ha hecho accesible. */
bar();
?>

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);
z = z * y;

/* Llamado a la funcion*/

36

cout<<"\n";
cout<<z;
cout<<"\n";
system("PAUSE");
return 0;
}
/* Esta funcion calcula el cuadrado de un numero*/
double square(double numero)
{
double cuadrado;
cuadrado = numero * numero;
return cuadrado;
}

Bibliografa

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=ZGVmYXVsdGRvbWFpbnxwcm9ncmFtYWNpb25lZGdhcnp1
bmlnYXxneDo0MWI4YzQ1NDQyNWU2MWE1

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

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

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

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

38

Potrebbero piacerti anche