Professional Documents
Culture Documents
Facultad de Ingeniera
Direccin General de Estudios Bsicos y Generales
Coordinacin de Informtica
Programacin II
Teora de Subprogramas
Procedimientos en Visual Basic Net 2010
Prof. Hugo Hernndez
Junio de 2014
Versin 1.1 En revisin para
publicacin
Teora de Subprogramas
Tabla de contenido
Subprogramas en Visual Basic Net 2010 ............................................................................................. 3
Ventajas de la programacin modulada ......................................................................................... 4
Tipos de Subprogramas o Procedimientos.......................................................................................... 4
Subprogramas Tipo Procedimientos ............................................................................................... 5
Subprogramas Tipo Funciones........................................................................................................ 6
Parmetros ........................................................................................................................................ 8
Parmetros Formales ..................................................................................................................... 9
Parmetros Por valor (ByVal) .................................................................................................... 9
Parmetros Por Referencia (ByRef) ..........................................................................................10
Parmetros actuales .....................................................................................................................10
Llamado o invocacin de subprograma .............................................................................................12
Ejemplos demostrativos del proceso de modulacin y llamado de subprogramas .........................13
Ejercicio 1 rea de un tringulo ..............................................................................................13
Ejercicio 2 Determinacin de la Combinatoria de N en M........................................................19
Bibliografa .......................................................................................................................................24
Teora de Subprogramas
Subprograma
Un subprograma o procedimiento como se conoce en VB.Net, es una secuencia de
instrucciones orientadas a realizar una tarea especfica que se quiere generalizar
(Modular) para su uso posterior al ser invocado por otro procedimiento sin la necesidad
de tener que repetir las mismas lneas de instruccin.
Esto implica que existir un proceso principal, denominado programa principal(Ej. Main), el
cual establece cuando se le debe transferir el control de la ejecucin del programa a un
subprogramaen particular, para que est efecte una tarea solicitada.Para pasarle el control
al subprograma el programa principal invoca o llama al modulo con su nombre y se establece
con que valores este va a trabajar de requerirlo, una vez que terminen de efectuar las
instrucciones, el modulo le transfiere de nuevo el control a quien lo llam. Este proceso de
llamado se puede efectuar tantas veces sean necesario realizar en la ejecucin del trabajo
sin necesidad de escribir nuevamente el cdigo.
Como ya se ha dicho, en el momento de invocar un subprograma, si la actividad a realizar
requiere de valores o datospara poder ejecutarse, estos datos se transfieren con el uso de
parmetros. Los parmetros es la forma como se comunica el programa principal con el
modulo invocadodando la posibilidad delintercambio de informacin necesaria entre ellos.
Los subprogramas deberan ser cortos y para desarrollarlos se seguirn todas las
reglas, estructuras y herramientas de programacin habituales, centrndose en
resolver nicamente la tarea que se desea generalizar.
Teora de Subprogramas
b) Procedimientos Generales: son los procedimientos creados por el usuario, los cuales
pueden ser usados invocndolos por su nombre. Ej.
Sub LeerDatos( Parmetros )
3) Propiedades (Property): son subprogramas que realizan labores de acceso que permitan
devolver y asignar valores, as como establecer referencias a objetos.
Prof. Hugo Hernndez | Pgina 4 de 24
Teora de Subprogramas
Para fines del curso solo trabajaremos en la construccin de procedimientos tipo Sub y/o
Function, ya que los procedimientos tipo Property tiene sentido cuando se est realizando
una Programacin Orientado a Objetos, forma de programacin que se explica en una
siguiente asignatura de programacin.
Procedimientos
Es un subprograma cuya secuencia de instrucciones estn orientadas a realizar una tarea
especfica que se quiere generalizar (Modular), la cual puede o no devolver resultados.
Estos se desarrollan cuando la tarea a generalizar es referente a un proceso a seguir.
Teora de Subprogramas
Sub Nombre_procedimiento(Lista_de_parmetros)
Instrucciones a realizar
End Sub
Funcin
Es un subprograma cuya secuencia de instrucciones estn orientadas a realizar una tarea
especfica que se quiere generalizar (Modular), la cual devuelve un dato de un tipo en
particular. Este valor es devuelto por la misma funcin, es decir con su mismo nombre.
Prof. Hugo Hernndez | Pgina 6 de 24
Teora de Subprogramas
Al igual que para el caso delos procedimientos, entre la cabecera del subprograma y la
finalizacin se realizaran todas las actividades necesarias para determinar u obtener el valor
a devolver, pero a diferencia delos procedimientos entre estas instrucciones debe existir al
menos una instruccin donde se le asigne al nombre de la funcin el valor a devolver.
Nombre_Funcion = Resultado_a_devolver
End Function
Cuando se quiere invocar o llamar una funcin, estos son llamados dentro de una expresin
(ej. asignacin, comparacin, etc.), siempre y cuando dicha expresin es capaz de soportar el
tipo de dato que la funcin devuelve, y se realiza empleando el nombre de la funcin y entre
parntesis los valores o datos esta quiere para realizar el la tarea.
Cabe destacar que una funcin representara un procedimiento sub que
se haya diseado para generalizar un proceso que devuelva un valor en
particular. Por este motivo se establece que toda funcin puede ser
desarrollada como un procedimiento, pero no todo procedimiento puede
ser diseado como una funcin.
El llamado de una funcin no debe aparecer al lado derecho de una instruccin de
asignacin o dentro de las instrucciones a ejecutar el subprograma al momento de su
diseo. Esta ltima consideracin es debido a que llamar una funcin en s misma, es un
concepto que no iremos a manejar este curso, denominado Funciones Recursivas
se coloca,
Return Valor_a_Devolver
Teora de Subprogramas
Proceso que
generaliza
Forma del
llamado
Subprograma
Procedimiento (Sub)
Una actividad que de querer
regresa ningn, un valor o ms de
uno, dicho valor o valores son
devueltos empleando parmetros
del tipo por referencia.
Funcin (Function)
Una
actividad
de
clculo
o
interpretacin de valores que generan
un nico valor resultante, el cual se
este es devuelto por la funcin con su
nombre.
Parmetros
Un aspecto que tenemos que identificar en la generalizacin de una tarea es que
informacin o datos esta requiere para poder realizarse de manera genrica, para lograr
esto en un subprograma se deben establecer estos datos en forma de parmetros tanto en
la cabecera del mdulo como al momento de ser invocado.
Parmetros o Argumentos
Son variables intermedias propias del subprograma, que sirve de medio de comunicacin
entre el procedimiento que lo invoca y el modulo en s, haciendo posible pasar valores a los
subprogramas al momento de tener que utilizarlos en una aplicacin.
Teora de Subprogramas
Parmetros Formales
Como se dijo anteriormente, los parmetros son las variables que emplea el procedimiento
para generalizar un proceso, significa que estas variables tienen que ser definidas en algn
momento para que el mdulo que lo invoque reconozca que informacin va a ser
intercambiada, esto se realiza en el momento de definir elsubprogramadentro de los
parntesis colocados despus del nombre que posee l al momento de disear el mdulo.
Todas las variables definidas en la cabecera del subprograma se conocen como parmetros
formales
Parmetros Formales
Es la definicin de la informacin en forma de variables, que se debe intercambiar entre el
subprograma y el mdulo que lo invoca, al momento de ser este requerido su uso en el
programa. Esta definicin se establece al momento de disearse el subprograma y en
forma individual.
Al definir un parmetro formal del tipo por valor, se debe emplear la palabra reservada
ByVal, esta declaracin del parmetro significa que el procedimiento lo que quiere como
informacin es un valor particular (se establece como una Variable de entrada), el cual el
subprograma tomar una copia de ese valor para ser usado en las lneas de cdigo y si de
alguna forma las instrucciones que posee el mdulo realiza un cambio en el valor pasado,
dicho cambio no saldr del procedimiento al mdulo que lo invoco.
Bsicamente, cuando un procedimiento tiene parmetros 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.
Teora de Subprogramas
Un parmetro definido del tipo por valor (ByVal), crea una copia del valor pasado, este
valor puede provenir por un valor colocado constantes, del valor almacenado por una
variable o el valor resultante de evaluar una expresin
Parmetros actuales
Son los parmetros que se escriben al momento de realizar la llamada o invocacin a un
subprograma, donde esta lista de variables, constantes o expresin sern los valores que van
a ser pasados a los parmetros formales del mdulo, tambin estos parmetros se le
denominan argumentos.
Al momento de invocar o llamar a un subprograma la lista de argumentos a colocar
siempre debe coincidir en cantidad y en tipo, segn estos fueron definidos formalmente en
el momento en que se dise dicho mdulo.
Teora de Subprogramas
devolver es la raz cuadrada de un nmero especificado siendo este un dato tipo Double
tambin (ver imagen).
Por otro lado, la instruccin o procedimiento que se ha estado empleando para imprimir
mensajes al usuario por pantalla con o sin salto de pgina, tiene como ocurri en el caso de
la raz cuadrada, el uso de un llamado previo al nombre del procedimiento que en este caso
es el objeto consola o pantalla y es por eso que en su llamado se coloca el prefijo Console.
para luego nombrarla Write() o Writeline(), segn el tipo de impresin que se quiere
hacer. Ahora, en este caso el editor nos indique el procedimiento requiere un parmetro,
tipo String y al igual que el argumento que requiere recibir es del tipo por valor como
ocurri con la funcin raz cuadrada.
Teora de Subprogramas
A continuacin veamos varias formas como se ha trabajado para imprimir un mensaje por
pantalla.
En este caso, observe que el segundo parmetro a requerir el procedimiento est definido
del tipo por referencia, por este motivo el editor nos habla de que el argumento es
obligatorio y es una variable, ya que en ella se asignar el valor ledo del archivo.
Si un parmetro es establecido del tipo por valor, el argumento a emplear
puede ser una variable, constante o expresin que tenga por respuesta el
mismo tipo de dato especificado. Pero para el caso de haber sido definida
como un parmetro por referencia, el argumento solo podr ser una
variable declarada del mismo tipo que el parmetro formal.
Teora de Subprogramas
Elabore una aplicacin en VB2010 bajo consola que dada la base y la altura de un tringulo
determine e imprima el rea del tringulo.
Como ya todos sabemos lo primero que debemos hacer para desarrollar un programa es el
anlisis del problema que consiste en responder tres preguntas:
Teora de Subprogramas
Cul es el procedimiento que debe seguir la mquina para lograr obtener los
resultados deseados?, Proceso a desarrollar.
Sabemos que el programa tendr una estructura conocida como E P S, se solicitan
las Entradas de los datos, el siguiente paso es el de desarrollar los Procesos de
clculo, comparacin o desarrollo para obtener los resultados esperados y
finalmente mostrar o imprimir los resultados obtenidos (Salidas), en este caso en
particular seria:
-
A continuacin se muestra el cdigo formado a partir del anlisis previo realizado y los
resultados que se obtiene considerando a un tringulo que presenta las siguientes
caractersticas:
Base=12 uL
Altura= 5 uL
Donde, uL significa unidades de longitud.
'
'
'
'
Module Module1
Sub Main()
' Declaracin de variables
' Variables de entrada
Dim b As Single
Dim h As Single
' Variables de salida
Dim a As Single
' Proceso de lectura
Console.Write("Inserte el valor de la base del tringulo: ")
b = Console.ReadLine()
Console.Write("Inserte el valor de la Altura del tringulo: ")
h = Console.ReadLine()
' Determinacin del rea del tringulo
a = b * h / 2
Proceso
de
lectura
Teora de Subprogramas
Resultados obtenidos
SubPrograma (SP)
Lee un dato por teclado tipo single
Dato
(Single)
Teora de Subprogramas
Teora de Subprogramas
SubPrograma (SP)
Determina el rea del tringulo
Area
En este caso, podemos observar que nuevamente el mdulo a desarrollar puede ser
construido tanto como un procedimiento o una funcin, pero a diferencia que el caso
anterior, el proceso a generalizar, est orientado a realizar un clculo por ello se crear
como una funcin. Hay que recordar que una funcin devuelve el resultado con su nombre y
en este caso su resultado ser un valor tipo Single o real, por ello los parmetros que se
requieren son dos, la base y la altura del tringulo, de estos parmetros el proceso solo
requiere conocer cul es su valor inicial, y no se quiere que estos se modifiquen, por ello se
van a definir como parmetros del tipo por valor.
A continuacin se muestra el subprograma a construir
Al momento de requerir calcular el rea del tringulo, por ser este del tipo funcin, su
llamado se efecta dentro de una expresin, ej. en la expresin que se requiere para
asignarle el valor a la variable que guarde el rea, en este caso, la variable a, y los
argumentos que se emplean pueden ser una variable, constante o expresin que devuelva o
almacene un dato tipo Single.
A continuacin se presenta el Cdigo desarrollado con el empleo de los subprogramas antes
discutidos.
'
'
'
'
'
Module Module1
' Subprograma que lee por teclado un dato tipo single
Sub LeerDatoSingle(ByVal Mensaje As String, ByRef ValorLeido As Single)
Console.Write(Mensaje)
ValorLeido = Console.ReadLine()
EndSub
' Subprograma que determina el rea de un tringulo a partir de su
' base y la altura
Function AreaTriangulo(ByVal Base As Single, ByVal Altura As Single) As Single
AreaTriangulo = Base * Altura / 2
EndFunction
Sub Main()
' Declaracin de variables
' Variables de entrada
Dim b AsSingle
Teora de Subprogramas
Dim h As Single
' Variables de salida
Dim a As Single
' Proceso de lectura
LeerDatoSingle("Inserte el valor de la base del tringulo: ", b)
LeerDatoSingle("Inserte el valor de la Altura del tringulo: ", h)
' Determinacin del rea del tringulo
a = AreaTriangulo(b, h)
' Impresin de resultados
Console.WriteLine("El rea del tringulo es: "& a)
Console.ReadKey()
End Sub
End Module
Teora de Subprogramas
1) Un subprograma que dado un valor entero y positivo (N), determine el valor del
factorial de N (N!). Recuerde que l factorial de N se determina como la productoria
de todos los nmeros naturales del 1 hasta el N. Por otro lado, ya que el factorial de
un nmero crece de manera muy rpida, coloque que este valor es un resultado del
tipo real.
2) Un subprograma que dado dos valores enteros y positivos, N y M, donde se tiene que
cumplir que N>=M, determine la combinatoria de N en M
determinar la combinatoria es la siguiente:
. La expresin para
SubPrograma (SP)
Determina el Factorial de N
Factorial
Segn nuestro anlisis el tipo de subprograma que se va a desarrollar es una funcin debido
a que solo se quiere determinar el factorial de N, siendo este resultado un dato del tipo Real,
como se est establecido en el enunciado ej. Single.
Por otro lado, nos encontramos que la determinacin del factorial de un nmero es un poco
ms largo el procedimiento a realizar, que en el caso del desarrollo del rea de un tringulo
el cual fue evaluar una expresin. Ya que se tiene que desarrollar una productoria, implicara
que su determinacin requiere de una estructura cclica, as como de un acumulador.
Teora de Subprogramas
N, M
Combinatoria
SubPrograma (SP)
Lee un dato por teclado tipo Integer
Dato
(Integer)
Como se dijo en el anlisis que se realiz en el subprograma que lea un dato por teclado
tipo Single, este se puede construir tanto en forma de funcin as como un procedimiento.
La construccin del mismo lo realizaremos como un procedimiento quedando de la siguiente
manera:
Teora de Subprogramas
Cul es el procedimiento que debe seguir la mquina para lograr obtener los
resultados deseados?, Proceso a desarrollar.
Module Module1
' Funcin que determina el factorial de un Nmero
Function Factorial(ByVal N AsInteger) As Single
' Variable local
Dim F As Single = 1
' NOTA: Solo se puede inicializar si es la nica variable declarada
For I = 2 To N
F = F * I ' Pudo colocarse el operador combinado *=, es decir, F *= I
Next
Factorial = F
End Function
' Funcin que determina la combinatoria de N en M
Function Combinatoria(ByVal N As Integer, ByVal M As Integer) As Single
Combinatoria = Factorial(N) / (Factorial(M) * Factorial(N - M))
End Function
Teora de Subprogramas
Teora de Subprogramas
Teora de Subprogramas
Bibliografa
Alcala N., Introduccin a Visual Basic6.0, Instituto politcnico Santiago Mario,
Valencia Venezuela, 2002.
Garca Javier y otros, Aprenda Visual Basic 6.0 como si estuviera en primero,
Universidad de Navarra, San Sebastin Espaa, 1999.
Gua
de
programacin en
Visual Basic,
Versin:
Visual
Studio
2010,(http://msdn.microsoft.com/es-es/library/y4wf33f0%28v=vs.100%29.aspx), Revisado
el Junio 2014.
Hernndez H., Procedimientos, Universidad de Carabobo, Brbula Venezuela,
2012.
Material Instruccional del Curso Computacin II, Subprogramas en Pascal, Prof.
Fernndez Manuel 2000, Universidad de Carabobo- Venezuela.
Pacheco L., Sub Programas en Visual Basic, Universidad de Carabobo, Valencia
Venezuela, 2013.