tema 4 modulos y subrutinas

29
Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 1 Tema 4 Programación estructurada: Funciones y procedimientos FUNDAMENTOS DE INFORMÁTICA Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo

Upload: emz-emz

Post on 27-Oct-2015

29 views

Category:

Documents


1 download

TRANSCRIPT

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 1

Tema 4Programación estructurada: Funciones y procedimientos

FUNDAMENTOS DE INFORMÁTICA

Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 2

ProgramaciProgramacióón estructuradan estructuradaLa división de un programa en unidades funcionales más pequeñas presenta, entre otras, las ventajas siguientes:

• Modularidad: Cada unidad tiene una funcionalidad concreta con un tamaño y complejidad manejable. Puede ser individualmente depurada, utilizada muchas veces en un mismo programa o en otrosprogramas.

• Menor tiempo de desarrollo: Al ser reutilizada, se reduce el tamaño de los programas y se minimizan los errores.

• Independencia de datos y encapsulación de información: Una función es capaz de mantener una gran independencia con el resto del programa. Tiene sus propios datos aislados del resto y define la interfaz o comunicación con el resto del programa.

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 3

ProgramaciProgramacióón estructuradan estructurada

Utilizaremos los siguientes tipos de unidades funcionales:

• Funciones Function que devuelven un valor.

• Procedimientos Sub que no devuelven ningún valor.

Programación estructurada: Funciones y procedimientos

Utilizaremos los siguientes tipos de módulos:

• Módulos de código: los utilizamos para escribir las instrucciones y sentencias de nuestro programa. No tienen interfaz gráfica. Tienen la extensión “.bas”.

• Módulos de formulario: los utilizamos para escribir las instrucciones y sentencias asociadas a un formulario. Tienen interfaz gráfica. Tienen la extensión “.frm”.

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 4

FuncionesFunciones

La sintaxis relativa a la declaración de funciones definidas por el usuario en Visual Basic es la siguiente:

Function nombre ([parámetros])[As tipo][sentencias][nombre = expresion][Exit Function][sentencias][nombre = expresion]

End Function

donde: nombre es el nombre que identifica la función; parámetrosson los argumentos que son pasados cuando se llama a la función; tipo es el tipo de datos que devuelve la función (Integer, String, etc.).

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 5

FuncionesFunciones

El nombre de la función actúa como una variable dentro del cuerpo de la función. El valor de expresión que se le asigne es almacenado en el propio nombre de la función. Si no se efectúa esta asignación, se devuelve 0 en valores numéricos y cadena vacía (“”) en cadenas.

Exit Function permite abandonar la función antes de que ésta finalice normalmente y devolver así el control del programa a la sentencia inmediatamente a continuación de la que efectuó la llamada a la función.

La sentencia End Function marca el final del código de la función y, al igual que la anterior, devuelve el control del mismo modo. Es la forma normal de finalizar una función.

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 6

FuncionesFunciones

La llamada a una función puede hacerse de diversas formas, pero la más usual es la siguiente:

variable = nombre ([argumentos])

donde argumentos es una lista de constantes, variables o expresiones, separadas por “,”, que son pasadas a la función como parámetros para su ejecución y variable recibe el dato retornado.

El número de argumentos pasados debe ser igual al número de parámetros declarados en la función.

Los tipos de los argumentos deben coincidir con los de los parámetros.

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 7

Ejemplo de FuncionesEjemplo de Funciones

El siguiente ejemplo corresponde a una función que devuelve como resultado la raíz cuadrada de un número:

Function RaizCuadrada (numero As Double) As DoubleIf numero < 0 Then

Exit FunctionEnd IfRaizCuadrada = Sqr(numero)

End Function

La llamada a esta función, se hace de la forma siguiente:Dim resultado As Double, numero As Double

numero = InputBox("Introduce número para calcular la raíz cuadrada")resultado = RaizCuadrada(numero)MsgBox resultado

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 8

ProcedimientosProcedimientos

La sintaxis relativa a la declaración de un procedimiento definido por el usuario en Visual Basic es la siguiente:

Sub nombre ([parámetros])[sentencias][Exit Sub][sentencias]

End Sub

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

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 9

ProcedimientosProcedimientos

A diferencia de una función, un procedimiento no puede ser utilizado en una expresión pues no devuelve ningún 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 continuación de la que efectuó la llamada al mismo.

La sentencia End Sub marca el final de su código y, al igual que la anterior, devuelve el control del mismo modo. Es la forma normal de finalizar un procedimiento

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 10

ProcedimientosProcedimientos

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 función como parámetros para llevar a cabo su ejecución.

El número de argumentos pasados debe ser igual al número de parámetros declarados en la función.

Los tipos de los argumentos tienen que coincidir con los de los parámetros.

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 11

Ejemplo de procedimientosEjemplo de procedimientos

Procedimiento:

Sub muestralaraizcuadrada(numero As Double)If numero < 0 Then

MsgBox ("No calculo raíz cuadrada. " & numero & " es negativo.")Else

MsgBox ("La raíz cuadrada de " & numero & " es " & Sqr(numero))End IfEnd Sub

Programación estructurada: Funciones y procedimientos

Llamada al procedimiento:

Dim numero As Double

numero = InputBox("Introduce número para calcular la raíz cuadrada")Call muestralaraizcuadrada(numero)

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 12

Pase de argumentos por valor y referenciaPase de argumentos por valor y referencia

Pasar un argumento por referencia a una función o procedimiento implica que, en realidad, se le pasa la variable original, de modo que la función o procedimiento pueden modificar su valor.

Pasar un argumento por valor implica crear una nueva variabledentro de la función o procedimiento y pasarle el valor de la variableexterna. Si se modifica el valor de la variable copia, la variable original queda inalterada.

Cuando en la llamada a una función o procedimiento se ponen como argumentos constantes numéricas o expresiones, estos argumentos se pasan siempre por valor.

En Visual Basic, por defecto, los argumentos se pasan por referenciay, por lo tanto, es posible devolver valores.

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 13

Ejemplo de ProcedimientosEjemplo de Procedimientos

El siguiente ejemplo corresponde a un procedimiento que devuelveen un parámetro la raíz cuadrada de un número:

Sub RaizCuadrada (ByVal numero As Double, resultado As Double)If numero < 0 Then

resultado = -1End Ifresultado = 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 número para calcular la raiz cuadrada")Call RaizCuadrada(numero, resultado)MsgBox resultado

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 14

Un programa en Visual Basic se puede componer de varios módulos.

Los módulos a su vez suelen contener funciones y/o procedimientos:

ÁÁmbito de las constantes y variables en Visual Basicmbito de las constantes y variables en Visual Basic

PROGRAMA

Módulo 1

Función 1

Función 2

Procedimiento

Módulo 2

Función 1

Procedimiento 1

Procedimiento 2

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 15

El ámbito de una variable es la zona del programa informático donde ésta se puede utilizar.

Cuando se utiliza una variable, Visual Basic “buscará” la declaración más cercana de esa variable. Puede haber dos variables diferentes, con el mismo nombre, en ámbitos distintos.

La tabla siguiente resume cómo debe declararse una variable en función de la zona del programa donde se quiere utilizar:

ÁÁmbito de las constantes y variables en Visual Basicmbito de las constantes y variables en Visual Basic

ÁMBITO DECLARACIÓN Local Dim

(dentro de una función o procedimiento) Módulo Dim

(dentro de la sección de Declaraciones de un módulo) Global Public

(dentro de la sección de Declaraciones de un módulo)

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 16

Procedimientos intrProcedimientos intríínsecos de Visual Basicnsecos de Visual Basic

Función Len

Devuelve el número de caracteres contenido en una variable de caracteres.

nombre_variable = Len(expresion_de_cadena)

Función Left

Devuelve los n caracteres de la expresión_de_cadena situados más a la izquierda.

nombre_variable = Left(expresion_de_cadena,n)

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 17

Procedimientos intrProcedimientos intríínsecos de Visual Basicnsecos de Visual Basic

Función Right

Devuelve los n caracteres de la expresión_de_cadena situados más a la derecha.

nombre_variable = Right(expresion_de_cadena,n)

Función Mid

Devuelve una subcadena de una cadena de caracteres.nombre_variable = Mid(expresion_de_cadena,n[,m])

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 18

Procedimientos intrProcedimientos intríínsecos de Visual Basicnsecos de Visual Basic

Función InStr

Devuelve la posición del primer carácter de una subcadena en una cadena.

pos = InStr([n,]cadena,buscada)

Función String

Devuelve una cadena de caracteres igual a un caracter dado.cadena = String(n,caracter)

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 19

Procedimientos intrProcedimientos intríínsecos de Visual Basicnsecos de Visual Basic

Función Str

Convierte una expresión numérica en una expresión de caracteres.nombre_variable = Str(número)

Función Val

Devuelve el valor numérico de una cadena de caracteres. número = Val(expresion_de_cadena)

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 20

Procedimientos intrProcedimientos intríínsecos de Visual Basicnsecos de Visual Basic

Función Chr

Devuelve el carácter ANSI correspondiente al código de carácter especificado.

nombre_variable = Chr(código_carácter)

Función Asc

Devuelve el código de carácter correspondiente al primer carácter de la cadena especificada.

código_carácter = Asc(expresion_de_cadena)

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 21

Procedimientos intrProcedimientos intríínsecos de Visual Basicnsecos de Visual Basic

Función Now

Devuelve la fecha-hora actuales de acuerdo a la configuración de la fecha y la hora del sistema.

nombre_variable = now

Esta función devuelve un valor de tipo Date que se corresponde con una cadena de caracteres de la forma:“dd/mm/aa HH:MM:SS”(día/mes/año hora:minuto:segundo)

Para visualizar esta fecha y hora según diversos patrones, utilizar la función Format con los símbolos especiales d, m, y, h, m y s. (consultar la ayuda de esta función en la MSDN).

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 22

Procedimientos intrProcedimientos intríínsecos de Visual Basicnsecos de Visual Basic

Función DateDevuelve la fecha actual del sistema en una cadena de caracteres.

cadena = Date

Instrucción DatePermite establecer la fecha actual del sistema.

Date = fecha

Función TimeDevuelve la hora actual del sistema en una cadena de caracteres.

cadena = Time

Instrucción TimePermite establecer la hora actual del sistema.

Time = hora

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 23

Procedimientos intrProcedimientos intríínsecos de Visual Basicnsecos de Visual BasicFunción LCase

Convierte una cadena de caracteres a letras minúsculas.cadena = LCase(expresión_de_cadena)

Función UCaseConvierte una cadena de caracteres a letras mayúsculas.

cadena = Ucase(expresión_de_cadena)Funciónes LTrim

Devuelve expresión_de_cadena sin espacios en blanco a la izquierdacadena = LTrim(expresión_de_cadena)

Funciónes RTrimDevuelve expresión_de_cadena sin espacios en blanco a la derecha

cadena = RTrim(expresión_de_cadena)Función Trim

Devuelve expresión_de_cadena sin espacios en blanco a la derecha ni a la izquierda

cadena = Trim(expresión_de_cadena)

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 24

Procedimientos intrProcedimientos intríínsecos de Visual Basicnsecos 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(expresión)

Exp da como resultado el valor del número e elevado a la expresión.variable = Exp(expresión)

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 25

Procedimientos intrProcedimientos intríínsecos de Visual Basic. nsecos de Visual Basic. Funciones de conversiFunciones de conversióónn

CBool(expresión)conversión a un valor de tipo BooleanCByte(expresión)conversión a un valor de tipo ByteCCur(expresión) conversión a un valor de tipo CurrencyCDate(expresión)conversión a un valor de tipo DateCDbl(expresión) conversión a un valor de tipo DoubleCDec(expresión) conversión a un valor de tipo DecimalCInt(expresión) conversión a un valor de tipo IntegerCLng(expresión) conversión a un valor de tipo LongCSng(expresión) conversión a un valor de tipo SingleCStr(expresión) conversión a un valor de tipo StringCVar(expresión) conversión a un valor de tipo Variant

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 26

Procedimientos intrProcedimientos intríínsecos de Visual Basicnsecos de Visual Basic

Función Fix

Devuelve el número entero resultante de truncar el valor de la expresión numérica.

variable = Fix(expresión_numérica)

Función Int

Devuelve el mayor número entero que sea menor o igual que el valor de expresión_numérica.

variable = Int(expresión_numérica)

La diferencia entre Int y Fix es que si el número es negativo, Intdevuelve el primer entero negativo menor o igual a número, mientras que Fix devuelve el primer entero negativo mayor o igual a número. Por ejemplo, Int convierte -8.4 en -9 y Fix convierte -8.4 a -8.

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 27

Procedimientos intrProcedimientos intríínsecos de Visual Basicnsecos de Visual BasicFunción Abs

Da como resultado el valor absoluto de la expresión.variable = Abs(expresión_numérica)

Función SgnDa como resultado un entero (1, -1 ó 0) indicando el signo del valor de una expresión numérica.

variable = Sgn(expresión_numérica)

Función SqrDa como resultado la raíz cuadrada de una expresión numérica.

variable = Sqr(expresión_numérica)

Función RoundDevuelve un número redondeado en el número especificado de lugares decimales.

variable = Round(expresión[,numlugaresdecimales])

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 28

Procedimientos intrProcedimientos intríínsecos de Visual Basicnsecos de Visual BasicFunción Rnd

Devuelve un número al azar, de tipo Single, mayor o igual que 0 y menor que 1.

variable = Rnd[(expresión)]

Si:expresión < 0 devuelve siempre el mismo número.expresión > 0 (defecto) devuelve el siguiente nº aleatorio.expresión = 0 devuelve el último nº generado.

Sentencia RandomizeActiva el generador de números aleatorios a partir de un número determinado (llamado semilla).

Randomize[n]

donde n es una expresión entera que se utiliza para activar una secuencia aleatoria.

Programación estructurada: Funciones y procedimientos

Fundamentos de Informática. Departamento de Ingeniería de Sistemas y Automática. Actualización Septiembre 2005 29

Tema 4Programación estructurada: Funciones y procedimientos

FUNDAMENTOS DE INFORMÁTICA

Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo