Subprogramas y Procedimeintos
-
Upload
jose-camacho -
Category
Documents
-
view
11 -
download
1
Transcript of Subprogramas y Procedimeintos
Procedimientos
1
5 de may.
Procedimientos Definición de procedimientos, tipos de
procedimientos. Tipos de parámetros.
Una de las fallas que se tenia al principio de la
programación estructurada era el hecho que los
programas se hacían largos debido a la repetición de
instrucciones en procesos de lectura, escritura o
cálculos que se tenían que realizar empleando variables
diferentes. Gracias a la necesidad de ahorrar tiempo de
diseño y espacio de memoria surge la técnica de
modulación de procesos o elaboración de
subprogramas, que ha fines de VB lo denominan
Procedimientos. La técnica de modulación consiste en
dividir un programa muy grande en una serie de
módulos muchos más pequeños y manejables
(subprogramas), orientados a realizar una actividad en
particular en forma generalizada. A continuación se
mostrará la forma de modular un programa en VB.Net,
y como se realizan los diferentes llamados a un
procedimiento, además la forma como se pasan los
parámetros al momento de ser invocados.
Prof. Hugo Hernández
05/05/2010
Publicación Pendiente
Procedimientos
1
5 de may.
Contenido
Subprogramas o procedimientos ........................................................................................................2
Tipos de procedimientos .................................................................................................................3
Definición de Procedimientos Sub .......................................................................................................3
Definición de Procedimientos Function ...............................................................................................4
Parámetros .........................................................................................................................................6
Parámetros Formales ..........................................................................................................................6
Parámetros Por valor (ByVal) ..........................................................................................................7
Parámetros Por Referencia (ByRef) .................................................................................................7
Parámetros actuales ...........................................................................................................................7
Bibliografía .........................................................................................................................................8
Procedimientos
5 de may.
2
Subprogramas o procedimientos
Un subprograma o procedimiento como se conoce en VB.Net, es una secuencia de
instrucciones orientadas a realizar una tarea específica que se quiere generalizar (Modular) para su
uso posterior al ser invocado por otro procedimiento sin la necesidad de tener que repetir las
mismas líneas de instrucción.
La generalización de una tarea nos da la ventaja de realizar aplicaciones más pequeñas en
tamaño y legibles, ya que no se necesita escribir varias veces las mismas instrucciones, sino solo
nombrar la actividad que se quiere ejecutar, haciendo que sea fácil de interpretar las tareas que
realiza la aplicación y dándonos como consecuencia un ahorro de memoria y tiempo de desarrollo
del mismo. Además, en el momento que se necesite modificar una aplicación que funciona
correctamente, dicha modificación daría una menor probabilidad de agregar errores fatales al
código, permitiendo que sea más fácil le detección de fallas. Ej.
While EOF(1)
LeerPunto(P1)
LeerPunto(P2)
LeerPunto(P3)
D12 = Distancia(P1, P2)
D13 = Distancia(P1, P3)
D23 = Distancia(P2, P3)
ImprimirTipoTriangulo(D12, D13, D23)
End While
Como se muestra en el ejemplo, claramente se entiende que la aplicación realiza la lectura
de un conjunto de tres puntos de un archivo a los que se les determina la distancia entre los tres
puntos y por ultimo imprime el tipo de triangulo que se formaría entre esos.
Hasta los momentos hemos estado trabajando en el modulo de consola (Module Module1) y
el procedimiento de arranque (Sub Main) y en el procedimiento de Main, se ha estado colocando
todas las instrucciones necesarias para realizar la aplicación a diseñar, observándose en forma
general que tenemos actividades que realizamos varias veces solo cambiando las variables que se
necesitan aplicar, si hablamos para el caso del ejemplo anterior tendríamos: el procesos de lectura
de los tres puntos, el calculo de distancias entre tres puntos, además de todo el procedimiento que
se tendría que realizar para clasificar que tipo de triangulo se formaría. Gracias al proceso de
modulación, estas actividades se realizan fácilmente con la invocación de los procedimientos
LeerPunto, Distancia e ImprimirTipoTriangulo.
Observemos que los procedimientos LeerPunto e ImprimirTipoTriangulo, sus invocaciones se
realizan como si fuese una sentencia en cambio el procedimiento distancia se aplicó dentro de una
expresión de asignación.
Procedimientos
5 de may.
3
Tipos de procedimientos
En Visual Basic Net disponemos de los siguientes tipos de procedimientos:
1) Sub: son subprogramas que al ser invocados realizan una actividad sin devolver un valor al punto
de llamado. Estos procedimientos se encuentran clasificados en:
a) Procedimientos de eventos: son los que se ejecutan como respuesta a un evento y están
asociados a un objeto. Ej. Sub Button2_Click( Parametros ) Handles Botton2.Click
b) Procedimientos Generales: son los procedimientos creados por el usuario, los cuales pueden
ser usados invocándolos por su nombre. Ej. Sub LeerPunto( Parametros )
2) Function: es un subprograma que sus instrucciones a realizar están orientado a devolver un
resultado de un tipo de dato en particular, el cual entrega utilizando su propio nombre y se
clasifican en:
a) Intrínsecos: Funciones que están predeterminados o provistas por el lenguaje. Ej. Rdn(),
Int(x), etc.
b) Simbólicas: Creado por el usuario cuando el lenguaje no provea una función específica o
especial. Ej. Function Distancia( Parametros ) As Single
3) Property: son subprogramas que realizan labores de acceso que permitan devolver y asignar
valores, así como establecer referencias a objetos.
Para fines del curso solo trabajaremos en la construcción de procedimientos tipo Sub y/o
Function, ya que los procedimientos tipo Property tiene sentido cuando se este realizando una
Programación Orientado a Objetos, forma de programación que se explica en la asignatura
Computación Avanzada.
Definición de Procedimientos Sub
La definición de un procedimiento, sin
importar cual sea, se realiza entre la zona de Module
Module1 y Sub Main(), de igual forma que para el
caso de la definición de las estructuras.
Para el caso del procedimiento Sub, su
definición se realiza con la palabra reservada Sub,
luego el identificador que se le quiere dar al
subprograma y entre paréntesis la lista de parámetros
que se requieren pasar para que el subprograma
realice las actividades a generalizar. El procedimiento
finaliza con las palabras reservadas End Sub. Entre la
cabecera del procedimiento y su finalización se
colocan todas las instrucciones que debe ejecutar el
subprograma para lograr realizar la actividad a generalizar.
Module Module1
‘ Zona empleada para definir
‘ Estructuras y procedimientos
Sub Main()
‘ Instrucciones a realizar
End Sub
End Module
Procedimientos
5 de may.
4
En el ejemplo que se presenta a
continuación se muestra la definición de un
procedimiento que lee del archivo (1) la información
de dos coordenadas de un punto y la guarda en una
variable tipo Punto.
Cabe destacar que en el lenguaje de
programación Visual Basic Net, no se permite la
construcción de subprogramas anidados, es decir
procedimientos definidos dentro de otros
procedimientos, sino se podría es crear subrutinas internas. Para fines del curso no se realizaran
dichas subrutinas entre otras cosas ya que esto rompería con el concepto de ser un lenguaje
estructurado, además que es una actividad poco recomendada.
Al definir un subprograma Sub, se hizo una generalización de un proceso que realiza una
actividad en particular, al momento de querer emplear éste, su invocación o llamado se realiza
utilizando su propio nombre y entre paréntesis las variables o datos que se quiere que utilice al
momento de realizar las instrucciones que posee, a este proceso se le llama el paso de parámetros al
procedimiento, situación que estaremos discutiendo más adelante.
Ej.
‘ Empleo del procedimiento de lectura de un punto
‘ Cabe destacar que la variable P1 se tuvo que haber declarado como del tipo Punto
LeerPunto( P1 )
Definición de Procedimientos Function
La definición de un procedimiento tipo Función (Function), se realiza con la palabra reservada
Function, luego el identificador que se le quiere dar al subprograma, entre paréntesis la lista de
parámetros que se requieren pasar para que el subprograma realice el cálculo a generalizar y
finalmente el tipo de resultado que va a devolver. El tipo de dato a devolver puede ser un dato
primitivo o una estructura. El procedimiento finaliza con las palabras reservadas End Function. Al
Sub Nombre_procedimiento ( Lista de parámetros )
‘ Instrucciones a realizar
…
End Sub
Sub LeerPunto ( ByRef P As Punto )
With P
Input(1, .X)
Input(1, .Y)
End With
End Sub
Procedimientos
5 de may.
5
igual que para el caso del procedimiento Sub, entre la cabecera del subprograma y la finalización se
realizaran todas las actividades necesarias para realizar el calculo a generalizar, pero a diferencia de
el procedimiento Sub entre las instrucciones a realizar debe haber aunque sea una donde se le asigne
al nombre del procedimiento el valor a devolver.
En el ejemplo que se
presenta a continuación se
muestra la definición de
una función capaz de
determinar la distancia
entre las coordenadas de
dos puntos, la información
de dos coordenadas de los
dos punto será entregada
con la utilización de dos
variables tipo Punto.
Cuando se quiere invocar o llamar una función en un procedimiento, estos llamados se realizan
dentro de una expresión, capaz de soportar el tipo de dato que la función devuelve, y se realiza
empleando el nombre del procedimiento y entre paréntesis las Variable o datos que se quieren
utilizar en el cálculo.
‘ Empleo de la función distancia, cabe destacar que para que esta invocación sea correcta
‘ las variables P1 y P2 deben ser del tipo Punto y la variable Dist del tipo Single.
Dist = Distancia ( P1, P2 )
Tabla comparativa entre Procedimientos Sub y Function
Aspecto Procedimiento
Sub Function
Proceso que generaliza Una actividad que de querer regresa
un valor o más de uno, lo devuelve
empleando parámetros del tipo por
referencia.
Una actividad de cálculo de un
valor, el cual devuelve con su
nombre.
Forma del llamado En forma de Sentencia. En forma de variable a emplear en
una expresión.
Function Nombre_procedimiento ( Lista de parámetros ) As Tipo_de_salida
‘ Instrucciones a realizar
…
Nombre_procedimiento = Resultado_a_devolver
End Function
Function Distancia ( ByVal P1 As Punto, _
ByVal P2 As Punto ) As Single
With P1
Distancia = Math.sqrt( (P2.X - .X)^2+(P2.Y - .Y)^2 )
End With
End Sub
Procedimientos
5 de may.
6
Cabe destacar, que toda función puede ser diseñada como un procedimiento Sub, pero no
todo Sub puede ser pasado a procedimiento Function. Ej. La función distancia vista anteriormente se
puede diseñar como un procedimiento Sub el cual tendría la siguiente definición:
‘ Diseño del procedimiento Sub que calcula la distancia entre dos puntos
Sub Distancia( ByVal P1 As Punto, ByVal P2 As Punto, ByRef Distancia12 As Single)
With P1
Distancia12 = Math.sqrt( (P2.X - .X)^2+(P2.Y - .Y)^2 )
End With
End Sub
…
‘ Al se llamado en este caso por ser del tipo Sub sería:
Distancia( P1, P2, Dist )
Parámetros
Es la forma como se pueden generalizar procesos al momento de definir subprogramas, los
cuales se comportan como variables propias del procedimiento así como también, será el medio de
comunicación entre el procedimiento y el modulo que lo invoque, haciendo posible pasar valores a
los subprogramas al momento de tener que utilizarlos en una aplicación.
En VB.Net, los parámetros se clasifican en dos tipos:
a) Parámetros Formales: Son las variables que emplea el procedimiento para generalizar un
proceso y se definen al momento de diseñar el procedimiento. Los parámetros formales
puedes ser: Por Valor (ByVal), Por Referencia (ByRef) o del tipo Opcional (Optional). Para
fines del curso solo estaremos trabajando con parámetros del tipo por valor y por referencia.
b) Parámetros Actuales: Son las variables, Constantes o Expresiones que se emplean al
momento de invocar el procedimiento, para así el procedimientos saber con que valores va
ha trabajar.
Parámetros Formales
Como se dijo anteriormente, los parámetros son las variables que va emplear el procedimiento
para generalizar un proceso, estas variables van a ser definidas en la cabecera del procedimiento
dentro de los paréntesis después del nombre que posee el subprograma. Esta definición se
diferenciará de la manera en que estamos acostumbrados a declarar una variable en el hecho que no
se empleará la palabra reservada Dim, sino según vaya a ser el parámetros se utilizara la palabra
ByVal o ByRef.
Estas variables definidas en la cabecera del subprograma, así tengan el mismo identificador de
una variable empleada en otro procedimiento( Main ej. ), será una variable diferente y le pertenece
al ámbito del subprograma a definir.
Procedimientos
5 de may.
7
Parámetros Por valor (ByVal)
Al definir un parámetro del tipo formal por valor, se debe emplear la palabra reservada ByVal,
esta declaración del parámetro significa que el procedimiento lo que quiere de la variable es solo su
valor (Variable de entrada), el cual será usado dentro del procedimiento y si este es cambiado, dicho
cambio no saldrá del procedimiento al modulo que lo invoco.
Básicamente, cuando un procedimiento tiene parámetros por valor, al momento de ser
invocados los datos son pasados al subprograma en forma de copia, es decir la maquina genera una
nueva variable que toma una copia del valor pasado.
Parámetros Por Referencia (ByRef)
Para el caso de definir un parámetro por referencia, se debe emplear la palabra reservada
ByRef, esta declaración significa que el procedimiento no solamente necesita el valor inicial que
posee la variable, sino que de ser modificado el parámetro, su valor resultante saldrá al modulo que
lo invocó o llamó (Variable de Entrada - Salida).
Cuando se están definiendo los parámetros formales que va a emplear en un procedimiento,
se declarará por valor o por referencia según la respuesta a la siguiente interrogante, ¿El
procedimiento necesita solo el valor inicial que posee la variable o que se cambie su valor? Si la
respuesta es solo necesita su valor, se definirá como un parámetro por valor, caso contrario será del
tipo por referencia.
Parámetros actuales
Son los parámetros que se escriben al momento de realizar la llamada a un procedimiento,
donde esta lista de variables, constantes o expresión serán los valores que van a ser pasados a los
parámetros formales del procedimiento.
Esta lista de parámetros a emplear en el llamado del procedimiento, deben coincidir en
cantidad y en el tipo que poseen estos con respecto a las definiciones formales realizadas al
momento de definir el procedimiento.
Para el caso particular de que el parámetro formal haya sido por valor, el parámetro actual
puede ser una variable, constante o expresión que tenga por respuesta el mismo tipo de dato. Pero
para el caso de haber sido definida como un parámetro por referencia, el parámetro actual será
siempre una variable declarada del mismo tipo que el parámetro formal.
Procedimientos
5 de may.
8
Bibliografía
� Material Instruccional del Curso Computación II, Subprogramas en Pascal, Fernández Manuel
2000, Universidad de Carabobo- Venezuela.
� García Javier y otros, “Aprenda Visual Basic 6.0 como si estuviera en primero”, Universidad
de Navarra, San Sebastián – España, 1999
� Alcala Nelson, “Introducción a Visual Basic 6.0”, Instituto politécnico Santiago Mariño,
Valencia – Venezuela, 2002
� Ayuda en Línea Visual Basic 2008 Express (http://msdn.microsoft.com/es-
ve/vbasic/default.aspx)