Subprogramas y Procedimeintos

9
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

Transcript of Subprogramas y Procedimeintos

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

Page 2: Subprogramas y Procedimeintos

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

Page 3: Subprogramas y Procedimeintos

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.

Page 4: Subprogramas y Procedimeintos

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

Page 5: Subprogramas y Procedimeintos

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

Page 6: Subprogramas y Procedimeintos

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

Page 7: Subprogramas y Procedimeintos

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.

Page 8: Subprogramas y Procedimeintos

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.

Page 9: Subprogramas y Procedimeintos

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)