You are on page 1of 29

FUNDAMENTOS DE INFORMTICA

Tema 4 Programacin estructurada: Funciones y procedimientos


Departamento de Ingeniera de Sistemas y Automtica Universidad de Vigo

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Programacin estructurada: Funciones y procedimientos

Programacin estructurada
La divisin de un programa en unidades funcionales ms pequeas presenta, entre otras, las ventajas siguientes: Modularidad: Cada unidad tiene una funcionalidad concreta con un tamao y complejidad manejable. Puede ser individualmente depurada, utilizada muchas veces en un mismo programa o en otros programas. Menor tiempo de desarrollo: Al ser reutilizada, se reduce el tamao de los programas y se minimizan los errores. Independencia de datos y encapsulacin de informacin: Una funcin es capaz de mantener una gran independencia con el resto del programa. Tiene sus propios datos aislados del resto y define la interfaz o comunicacin con el resto del programa.
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica. Actualizacin Septiembre 2005 2

Programacin estructurada: Funciones y procedimientos

Programacin estructurada
Utilizaremos los siguientes tipos de mdulos: Mdulos de cdigo: los utilizamos para escribir las instrucciones y sentencias de nuestro programa. No tienen interfaz grfica. Tienen la extensin .bas. Mdulos de formulario: los utilizamos para escribir las instrucciones y sentencias asociadas a un formulario. Tienen interfaz grfica. Tienen la extensin .frm. Utilizaremos los siguientes tipos de unidades funcionales: Funciones Function que devuelven un valor. Procedimientos Sub que no devuelven ningn valor.
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica. Actualizacin Septiembre 2005 3

Programacin estructurada: Funciones y procedimientos

Funciones
La sintaxis relativa a la declaracin de funciones definidas por el usuario en Visual Basic es la siguiente:
Function nombre ([parmetros])[As tipo] [sentencias] [nombre = expresion] [Exit Function] [sentencias] [nombre = expresion] End Function

donde: nombre es el nombre que identifica la funcin; parmetros son los argumentos que son pasados cuando se llama a la funcin; tipo es el tipo de datos que devuelve la funcin (Integer, String, etc.).
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica. Actualizacin Septiembre 2005 4

Programacin estructurada: Funciones y procedimientos

Funciones
El nombre de la funcin acta como una variable dentro del cuerpo de la funcin. El valor de expresin que se le asigne es almacenado en el propio nombre de la funcin. Si no se efecta esta asignacin, se devuelve 0 en valores numricos y cadena vaca () en cadenas. Exit Function permite abandonar la funcin antes de que sta finalice normalmente y devolver as el control del programa a la sentencia inmediatamente a continuacin de la que efectu la llamada a la funcin. La sentencia End Function marca el final del cdigo de la funcin y, al igual que la anterior, devuelve el control del mismo modo. Es la forma normal de finalizar una funcin.

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Programacin estructurada: Funciones y procedimientos

Funciones
La llamada a una funcin puede hacerse de diversas formas, pero la ms usual es la siguiente:
variable = nombre ([argumentos])

donde argumentos es una lista de constantes, variables o expresiones, separadas por ,, que son pasadas a la funcin como parmetros para su ejecucin y variable recibe el dato retornado. El nmero de argumentos pasados debe ser igual al nmero de parmetros declarados en la funcin. Los tipos de los argumentos deben coincidir con los de los parmetros.

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Programacin estructurada: Funciones y procedimientos

Ejemplo de Funciones
El siguiente ejemplo corresponde a una funcin que devuelve como resultado la raz cuadrada de un nmero:
Function RaizCuadrada (numero As Double) As Double If numero < 0 Then Exit Function End If RaizCuadrada = Sqr(numero) End Function

La llamada a esta funcin, se hace de la forma siguiente:


Dim resultado As Double, numero As Double numero = InputBox("Introduce nmero para calcular la raz cuadrada") resultado = RaizCuadrada(numero) MsgBox resultado
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica. Actualizacin Septiembre 2005 7

Programacin estructurada: Funciones y procedimientos

Procedimientos
La sintaxis relativa a la declaracin de un procedimiento definido por el usuario en Visual Basic es la siguiente:
Sub nombre ([parmetros]) [sentencias] [Exit Sub] [sentencias] End Sub

donde: nombre es el nombre que identifica al procedimiento y parmetros son los argumentos que son pasados cuando se llama al procedimiento.

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Programacin estructurada: Funciones y procedimientos

Procedimientos
A diferencia de una funcin, un procedimiento no puede ser utilizado en una expresin pues no devuelve ningn valor en si mismo. Exit Sub permite abandonar el procedimiento antes de que finalice normalmente y devolver as el control del programa a la sentencia inmediatamente a continuacin de la que efectu la llamada al mismo. La sentencia End Sub marca el final de su cdigo y, al igual que la anterior, devuelve el control del mismo modo. Es la forma normal de finalizar un procedimiento

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

Programacin estructurada: Funciones y procedimientos

Procedimientos
Llamaremos a un procedimiento del siguiente modo:
Call nombre ([argumentos])

donde argumentos es una lista de constantes, variables o expresiones, separadas por comas (,), que son pasados a la funcin como parmetros para llevar a cabo su ejecucin. El nmero de argumentos pasados debe ser igual al nmero de parmetros declarados en la funcin. Los tipos de los argumentos tienen que coincidir con los de los parmetros.

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

10

Programacin estructurada: Funciones y procedimientos

Ejemplo de procedimientos
Procedimiento:
Sub muestralaraizcuadrada(numero As Double) If numero < 0 Then MsgBox ("No calculo raz cuadrada. " & numero & " es negativo.") Else MsgBox ("La raz cuadrada de " & numero & " es " & Sqr(numero)) End If End Sub

Llamada al procedimiento:
Dim numero As Double numero = InputBox("Introduce nmero para calcular la raz cuadrada") Call muestralaraizcuadrada(numero)

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

11

Programacin estructurada: Funciones y procedimientos

Pase de argumentos por valor y referencia


Pasar un argumento por referencia a una funcin o procedimiento implica que, en realidad, se le pasa la variable original, de modo que la funcin o procedimiento pueden modificar su valor. Pasar un argumento por valor implica crear una nueva variable dentro de la funcin o procedimiento y pasarle el valor de la variable externa. Si se modifica el valor de la variable copia, la variable original queda inalterada. Cuando en la llamada a una funcin o procedimiento se ponen como argumentos constantes numricas o expresiones, estos argumentos se pasan siempre por valor. En Visual Basic, por defecto, los argumentos se pasan por referencia y, por lo tanto, es posible devolver valores.
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica. Actualizacin Septiembre 2005 12

Programacin estructurada: Funciones y procedimientos

Ejemplo de Procedimientos
El siguiente ejemplo corresponde a un procedimiento que devuelve en un parmetro la raz cuadrada de un nmero:
Sub RaizCuadrada (ByVal numero As Double, resultado As Double) If numero < 0 Then resultado = -1 End If resultado = Sqr(numero) End Sub

La llamada a este procedimiento se hace de la forma siguiente:


Dim resultado As Double, numero As Double numero = InputBox("Introduce nmero para calcular la raiz cuadrada") Call RaizCuadrada(numero, resultado) MsgBox resultado
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica. Actualizacin Septiembre 2005 13

Programacin estructurada: Funciones y procedimientos

mbito de las constantes y variables en Visual Basic


Un programa en Visual Basic se puede componer de varios mdulos. Los mdulos a su vez suelen contener funciones y/o procedimientos: PROGRAMA
Mdulo 1 Funcin 1 Procedimiento Mdulo 2 Funcin 1 Procedimiento 2

Funcin 2

Procedimiento 1

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

14

Programacin estructurada: Funciones y procedimientos

mbito de las constantes y variables en Visual Basic


El mbito de una variable es la zona del programa informtico donde sta se puede utilizar. Cuando se utiliza una variable, Visual Basic buscar la declaracin ms cercana de esa variable. Puede haber dos variables diferentes, con el mismo nombre, en mbitos distintos. La tabla siguiente resume cmo debe declararse una variable en funcin de la zona del programa donde se quiere utilizar:
MBITO Local Mdulo Global DECLARACIN Dim (dentro de una funcin o procedimiento) Dim (dentro de la seccin de Declaraciones de un mdulo) Public (dentro de la seccin de Declaraciones de un mdulo)
Actualizacin Septiembre 2005 15

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic


Funcin Len Devuelve el nmero de caracteres contenido en una variable de caracteres.
nombre_variable = Len(expresion_de_cadena)

Funcin Left Devuelve los n caracteres de la expresin_de_cadena situados ms a la izquierda.


nombre_variable = Left(expresion_de_cadena,n)

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

16

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic


Funcin Right Devuelve los n caracteres de la expresin_de_cadena situados ms a la derecha.
nombre_variable = Right(expresion_de_cadena,n)

Funcin Mid Devuelve una subcadena de una cadena de caracteres.


nombre_variable = Mid(expresion_de_cadena,n[,m])

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

17

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic


Funcin InStr Devuelve la posicin del primer carcter de una subcadena en una cadena.
pos = InStr([n,]cadena,buscada)

Funcin String Devuelve una cadena de caracteres igual a un caracter dado.


cadena = String(n,caracter)

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

18

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic


Funcin Str Convierte una expresin numrica en una expresin de caracteres.
nombre_variable = Str(nmero)

Funcin Val Devuelve el valor numrico de una cadena de caracteres.


nmero = Val(expresion_de_cadena)

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

19

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic


Funcin Chr Devuelve el carcter ANSI correspondiente al cdigo de carcter especificado.
nombre_variable = Chr(cdigo_carcter)

Funcin Asc Devuelve el cdigo de carcter correspondiente al primer carcter de la cadena especificada.
cdigo_carcter = Asc(expresion_de_cadena)

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

20

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic


Funcin Now Devuelve la fecha-hora actuales de acuerdo a la configuracin de la fecha y la hora del sistema.
nombre_variable = now

Esta funcin devuelve un valor de tipo Date que se corresponde con una cadena de caracteres de la forma:
dd/mm/aa HH:MM:SS(da/mes/ao hora:minuto:segundo)

Para visualizar esta fecha y hora segn diversos patrones, utilizar la funcin Format con los smbolos especiales d, m, y, h, m y s. (consultar la ayuda de esta funcin en la MSDN).

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

21

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic


Funcin Date Devuelve la fecha actual del sistema en una cadena de caracteres.
cadena = Date

Instruccin Date Permite establecer la fecha actual del sistema.


Date = fecha

Funcin Time Devuelve la hora actual del sistema en una cadena de caracteres.
cadena = Time

Instruccin Time Permite establecer la hora actual del sistema.


Time = hora
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica. Actualizacin Septiembre 2005 22

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic


Funcin LCase Convierte una cadena de caracteres a letras minsculas.
cadena = LCase(expresin_de_cadena)

Funcin UCase Convierte una cadena de caracteres a letras maysculas.


cadena = Ucase(expresin_de_cadena)

Funcines LTrim Devuelve expresin_de_cadena sin espacios en blanco a la izquierda


cadena = LTrim(expresin_de_cadena)

Funcines RTrim Devuelve expresin_de_cadena sin espacios en blanco a la derecha


cadena = RTrim(expresin_de_cadena)

Funcin Trim Devuelve expresin_de_cadena sin espacios en blanco a la derecha ni a la izquierda


cadena = Trim(expresin_de_cadena)
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica. Actualizacin Septiembre 2005 23

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic


Funciones Sin, Cos, Tan, Atn dan como resultado los valores del seno, coseno, tangente y arco tangente, respectivamente.
valor = Sin(ngulo) valor = Cos(ngulo) valor = Tan(ngulo) valor = Atn(ngulo)

Log da como resultado el logaritmo neperiano.


variable = Log(expresin)

Exp da como resultado el valor del nmero e elevado a la expresin.


variable = Exp(expresin)

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

24

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic. Funciones de conversin


CBool(expresin)conversin a un valor de tipo Boolean CByte(expresin) conversin a un valor de tipo Byte CCur(expresin) conversin a un valor de tipo Currency CDate(expresin) conversin a un valor de tipo Date CDbl(expresin) conversin a un valor de tipo Double CDec(expresin) conversin a un valor de tipo Decimal CInt(expresin) conversin a un valor de tipo Integer CLng(expresin) conversin a un valor de tipo Long CSng(expresin) conversin a un valor de tipo Single CStr(expresin) conversin a un valor de tipo String CVar(expresin) conversin a un valor de tipo Variant
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica. Actualizacin Septiembre 2005 25

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic


Funcin Fix Devuelve el nmero entero resultante de truncar el valor de la expresin numrica.
variable = Fix(expresin_numrica)

Funcin Int Devuelve el mayor nmero entero que sea menor o igual que el valor de expresin_numrica.
variable = Int(expresin_numrica)

La diferencia entre Int y Fix es que si el nmero es negativo, Int devuelve el primer entero negativo menor o igual a nmero, mientras que Fix devuelve el primer entero negativo mayor o igual a nmero. Por ejemplo, Int convierte -8.4 en -9 y Fix convierte -8.4 a -8.
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica. Actualizacin Septiembre 2005 26

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic


Funcin Abs Da como resultado el valor absoluto de la expresin.
variable = Abs(expresin_numrica)

Funcin Sgn Da como resultado un entero (1, -1 0) indicando el signo del valor de una expresin numrica.
variable = Sgn(expresin_numrica)

Funcin Sqr Da como resultado la raz cuadrada de una expresin numrica.


variable = Sqr(expresin_numrica)

Funcin Round Devuelve un nmero redondeado en el nmero especificado de lugares decimales.


variable = Round(expresin[,numlugaresdecimales])
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica. Actualizacin Septiembre 2005 27

Programacin estructurada: Funciones y procedimientos

Procedimientos intrnsecos de Visual Basic


Funcin Rnd Devuelve un nmero al azar, de tipo Single, mayor o igual que 0 y menor que 1.
variable = Rnd[(expresin)]

Si: expresin < 0 devuelve siempre el mismo nmero. expresin > 0 (defecto) devuelve el siguiente n aleatorio. expresin = 0 devuelve el ltimo n generado. Sentencia Randomize Activa el generador de nmeros aleatorios a partir de un nmero determinado (llamado semilla).
Randomize[n]

donde n es una expresin entera que se utiliza para activar una secuencia aleatoria.
Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica. Actualizacin Septiembre 2005 28

FUNDAMENTOS DE INFORMTICA
Tema 4 Programacin estructurada: Funciones y procedimientos
Departamento de Ingeniera de Sistemas y Automtica Universidad de Vigo

Fundamentos de Informtica. Departamento de Ingeniera de Sistemas y Automtica.

Actualizacin Septiembre 2005

29

You might also like