School Work, temas, y funciones">
Nothing Special   »   [go: up one dir, main page]

Unidad 6 "Funciones" Algoritmos y Lenguajes de Programación

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 42

1

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.
Una lista de parmetros: especificacin del conjunto de argumentos (pueden ser cero, uno
o ms) que la funcin debe recibir para realizar su tarea.
2

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.









3



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

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

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

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

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

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























9

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"

Este Otro ejemplo usa la funcin Mid para realizar un simple efecto tipo mquina de
escribir.
11

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

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


Funciones para el tratamiento de nmeros
Visual Basic posee muchas funciones para tratar nmeros. A continuacin las principales
funciones.
13


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



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.



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

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

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

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









18

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

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:





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

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

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
21


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
Print a; a2; a * (-5)
Print a, a2; a * (-5)
Print "FIN DEL PROCESO"














6.4 FUNCIONES DEFINIDAS POR EL USUARIO

22

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

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

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














25

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






26


Ejemplo pase por valor:


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
Un_Valor = 100
Call sumar(Un_Valor)
MsgBox Un_Valor
End Sub
27


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







28



Ejemplo pase por referencia:




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

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










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:

30

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)

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





31


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


















32


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.

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.

33

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.

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




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, 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
35

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



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";
}
}
37


/* 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();

/* Ahora podemos llamar a bar(),
el procesamiento de foo()
la ha hecho accesible. */

bar();
38


?>

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;
39

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;
}


















40














Conclusin

En conclusin, conocer las funciones nos da la oportunidad de desarrollar el manejo y la
elaboracin de programas porque nos permite subdividir los programas en funciones y asi
de esta forma podemos dividir tareas grandes de computacin en ms y ms pequeas, para
que dicho algoritmo alcance el objetivo para el que fue diseado, 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.









41


























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

42

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

También podría gustarte