Documentos de Académico
Documentos de Profesional
Documentos de Cultura
EN REVISIN
La idea de dividir un problema complejo en pequeos problemas o
subproblemas se conoce como programacin modular y consiste en
resolver de forma independiente los subproblemas resultantes de la
descomposicin de un problema, donde cada una de las soluciones a los
subproblemas constituye un subprograma o procedimiento. Esto
implica que existe un proceso principal, denominado programa
principal, que transferir el control y la informacin a los distintos
subprogramas para que efecten la tarea solicitada cuando sean
llamados, los cuales una vez que terminen de efectuar su tarea o
instrucciones definidas para alcanzarla, transferirn de nuevo el control
a quien lo llam; sea este el programa principal u otro subprograma o
procedimiento. Un subprograma es entonces un bloque de instrucciones
o sentencias que llevan a cabo una tarea bien especfica o definida y
que puede utilizarse en un programa varias veces sin necesidad de
reescribir el cdigo. Como representa una seccin de cdigo que se
ejecutar y establecer comunicacin con quien lo invoca o llama, esta
comunicacin o intercambio de informacin se realizar a travs de
variables, que se denominarn parmetros. En este documento
encontrar la definicin de subprograma, tipos, creacin y usos.
Adicionalmente por ser un elemento imprescindible la definicin de
parmetros, tipos, declaracin y uso apropiado.
Prof. Lisbeth Pacheco
09/10/2013
2013
menudo en la programacin es muy comn que un conjunto de instrucciones deban repetirse varias
veces dentro del mismo cdigo, esto ocurre cuando el mismo proceso tiene que realizarse varias veces
con diferentes variables, de manera que deben escribirse las mismas instrucciones varias veces solo
cambiando las variables. Un ejemplo de lo descrito anteriormente ocurre cuando se desea determinar el
nmero de combinaciones posibles para lo que debe utilizarse la siguiente frmula:
(
Si se desea realizar un programa que permita determinar el nmero de combinaciones C, usando dicha frmula,
el anlisis implica:
Cmo lo hago o cuales son las
Qu tengo o datos necesarios Qu me piden o cuales son las frmulas
o
expresiones,
para obtener C?
incgnitas?
restricciones y otros para obtener
las incognitas?
MyN
Inicio
Leer M
Leer N
Calcular el Factorial de N en la variable Fn
Calcular el Factorial de M en la variable Fm
Calcular el Factorial de M-N en la variable Fmn
Calcular C cmo Fn/(Fm * Fmn)
Escribir C
Fin
El factorial se determinar usando la definicin:
El factorial de n se define como el producto de todos los nmeros enteros positivos desde 1 hasta n.
2013
El cdigo necesario para un programa en VB que permita determinar el nmero de combinaciones c, sera:
Module Module1
Sub Main()
'Entradas o datos
Dim M, N As Integer
'Salidas, resultados o incognitas
Dim C As Single
'Variables de Proceso o necesarias para el calculo
Console.Write("Valor de M=")
M = Console.ReadLine
Console.Write("Valor de N=")
N = Console.ReadLine
'Calcular Factorial de M
fm = 1 'Acumulador Productoria
'Generacin de los nmeros naturales entre 1 y M
For i = 1 To M
fm = fm * i 'Productoria de los nmeros naturales entre 1 y M
Next
'Calcular Factorial de N
fn = 1 'Acumulador para la Productoria
'Generacin de los nmeros naturales entre 1 y N
For i = 1 To N
fn = fn * i 'Productoria de los nmeros naturales entre 1 y N
Next
'Calcular Factorial de M -N
Fm_n = 1 'Acumulador para la Productoria
'Generacin de los nmeros naturales entre 1 y M -N
For i = 1 To M - N
Fm_n = fm_n * i
Next
Observe que el
cdigo de los tres
recuadros es
prcticamente el
mismo, slo
cambian las
variables que
representan el fin
del ciclo o la
cantidad de
nmeros naturales a
generar y el
acumulador que
permite determinar
el factorial
C = fm / (fm_n*fn)
'Imprimir combinaciones
Para disminuir la cantidad de cdigo se puede generalizar la tarea de calcular el factorial escribindola como un
subprograma, esto permitira reutilizar el cdigo sin necesidad de escribirlo ms de una vez en el programa, de
tal manera que al llamar o usar el subprograma se suministrara el valor al cual se quiere determinar el factorial.
El cdigo para determinar el factorial de X, se transformar en una funcin para luego ser utilizada en el
programa como las funciones predefinidas que ud. ya utiliz en Computacin I.
'Calcular Factorial de X
f = 1 'Acumulador Productoria
'Generacin de los nmeros naturales entre 1 y X
For i = 1 To X
f = f * i
Next
2013
Module Module1
'El cdigo repetido se convierte en tarea, una funcin que dado X determina el factorial de X
For i = 1 To x
f = f * i 'Productoria de los nmeros naturales entre
Next
factorial = f 'Valor que se desea devuelva la funcin
End Function
1 y X
Sub Main()
'Entradas o datos
Dim M, N As Integer
'Salidas, resultados o incognitas
Dim C As Single
'Variables de Proceso o necesarias para el calculo
Console.Write("Valor de M=")
M = Console.ReadLine
Console.Write("Valor de N=")
N = Console.ReadLine
'Calcular Factorial de M
'Asignamos a fm el resultado de evaluar la funcin Factorial para el valor de M
fm = factorial(M) 'a fin de obtener M!
Observe que el
cdigo para
determinar el
factorial se escribe
de manera genrica
en el procedimiento
o subprograma tipo
function diseado,
una pieza del
rompecabezas, un
subproblema.
En el programa
principal ahora
'Calcular Factorial de N
'Asignamos a fn el resultado de evaluar la funcin Factorial para el valor de N
fn = factorial(N) 'a fin de obtener N!
'Calcular Factorial de M N
'Asignamos a fm_n el resultado de la funcin Factorial para el valor de M-N
fm_n = factorial(M - N) 'a fin de obtener (M N)!
C = fm /(fm_n * fn)
'Imprimir combinaciones
Console.WriteLine("Las combinaciones de {0} y {1} es {2}", M, N, C)
Console.ReadKey()
End Sub
End Module
empleamos la
funcin, al igual que
usbamos las
funciones
predefinidas,
asignando a una
variable el resultado
de determinar el
factorial de la
variable que
representa lo
requerido o a quien
se quiere determinar
el factorial
2013
definidas para alcanzarla, transferirn de nuevo el control a quien lo invoc o llam; sea este el programa
principal u otro subprograma o procedimiento.
Los subprogramas o procedimientos deberan ser cortos y para desarrollarlos se seguirn todas las reglas de
programacin, as mismo se podrn emplear todas las estructuras y herramientas de programacin habituales,
centrndose en resolver nicamente la tarea que se desea.
2013
o
y
2013
Parmetros Formales
Cuando se crea el procedimiento o subprograma en la
definicin o cabecera, se incluyen la lista de parmetros o
variables que permiten la comunicacin, datos de entrada
(necesarios para efectuar las instrucciones) y datos de salida
del subprograma (resultantes de los clculos o
instrucciones), estos se denominan parmetros formales o
ficticios. Ellos sirven para guardar la informacin de los
valores de las variables que invocan o llaman al
subprograma. Para el subprograma tipo funcin definido
para determinar el clculo del factorial de X, se tiene que X,
es el dato necesario para poder efectuar la tarea o clculo,
siendo X el parmetro formal.
Function factorial(ByVal x As Integer) As Integer
Parmetros Actuales
Los parmetros actuales, lo constituyen las variables que se
utilizan cuando se emplea o llama al subprograma o
procedimiento. Deben coincidir en nmero, orden y tipo con
los parmetros formales o ficticios definidos en la
declaracin o cabecera del subprograma. Para el ejemplo
se usa o llama la funcin factorial en el programa principal
tres veces, los llamados o usos se presentan a continuacin:
'Calcular Factorial de M
fm = factorial(M)
'Calcular Factorial de N
fn = factorial(N)
'Calcular Factorial de M N
fm_n = factorial(M - N)
'calcular factorial de (M N)
2013
Salidas:
Entradas/Salidas: Actan en los dos sentidos, tanto recibiendo datos del programa principal o subprograma
que llama o solicita la ejecucin del subprograma; como devolviendo resultados desde el
subprograma al programa o subprograma que llama o solicita la ejecucin del subprograma
Esta definicin puede ser til, pero no es suficiente para definir los parmetros formales, que tendr un
procedimiento o subprograma, por lo que debemos identificar los principales tipos de parmetros formales.
Un parmetro por valor no puede modificar los valores del parmetro actual, por lo que cualquier cambio del
valor del parmetro formal durante la ejecucin del subprograma se destruye cuando termina de ejecutarse el
subprograma, permaneciendo el valor original.
Para indicar que un parmetro es por Valor la sintaxis es: Byval
Versin 1.1. En revisin
Prof. Lisbeth Pacheco
Identificador as Tipo
8
2013
Parmetros por Referencia (ByRef)
En muchas ocasiones se requiere que los parmetros sirvan como salida, es decir
que devuelvan los resultados al programa o subprograma que lo llama. Para este
tipo de parmetro, el parmetro formal recibe la direccin de memoria del
parmetro actual. De esta forma una variable pasada como parmetro actual es
compartida; es decir, puede ser modificada directamente por el subprograma. Los
parmetros de este tipo corresponden con los entrada/salida o con los de salida si
hablamos de un subprograma tipo Sub.
El parmetro actual, debe ser una variable, ya que recibir el resultado del clculo
o de lo que se genere en las instrucciones definidas en la tarea.
Un parmetro por referencia puede modificar los valores del parmetro actual, por lo que cualquier cambio de
los parmetros formales durante la ejecucin del subprograma se refleja en los parmetros actuales cuando
termina de ejecutarse el subprograma.
Para indicar que un parmetro es por Valor la sintaxis es: ByRef
Identificador as Tipo
Si la informacin que se pasa al subprograma no tiene que ser devuelta fuera del
subprograma, el parmetro que representa puede ser un parmetro por valor.
Si se tiene que devolver la informacin al subprograma o programa llamador, el
parmetro formal que representa la informacin debe ser un parmetro por
referencia.
Si la informacin que se pasa al subprograma puede ser modificada y se debe
devolver el nuevo valor, el parmetro formal que representa la informacin debe
ser un parmetro por referencia.
2013
Procedimientos Function
Una funcin es un subprograma que recibe datos y devuelve un nico resultado a travs del nombre de la
funcin, el nombre de la funcin acta como una variable o direccin de memoria donde se almacenar el
resultado a devolver por la funcin.
Cabecera o encabezado
EJEMPLO
Function factorial(ByVal x As Integer) As Integer
'Variables internas del Subprograma
Dim f As Integer 'Acumulador para la productoria
'Calcular Factorial de M
f = 1 'Acumulador Productoria
'Generacin de los nmeros naturales entre 1 y X
For i = 1 To M
'Productoria de los nmeros naturales entre 1 y X
f = f * i
Next
factorial = f
End Function
tener
slo
10
2013
EJEMPLO
'Calcular Factorial de M
fm = factorial(M)
'Calcular Factorial de N
fn = factorial(N)
'Calcular Factorial de M N
fm_n = factorial(M - N)
'calcular factorial de (M N)
OTRO EJEMPLO
'Determinar la distancia entre punto p2 de coordenadas x2 y y2
'y el punto p3 de coordenadas x3,y3, usando la funcin distancia
D13=distancia(x2,y2,x3,y3)
'Cuando se ejecute la funcin distancia los parmetros actuales
pasarn a los formales
'el valor de x2 o parmetro actual, lo tomar el parmetro formal X1
'valor de y2 o parmetro actual, lo tomar el parmetro formal y1
'el valor de x3 o parmetro actual, lo tomar el parmetro formal X2
'valor de y3 o parmetro actual, lo tomar el parmetro formal y2
11
2013
Procedimientos Sub
Los procedimientos sub se usan generalmente para conseguir el suministro de informacin o lectura de datos,
mostrar o imprimir informacin o procesar y actualizar las variables o parmetros recibidos. Pueden devolver
ningn valor, uno o ms valores, pero lo que devuelve lo devuelve en variables o parmetros definidos en la
cabecera del procedimiento.
End Sub
EJEMPLO
'Desarrollaremos el subprograma de calcular el factorial de un
'Nmero como un Procedimiento Sub
For i = 1 To M
'Productoria de los nmeros naturales entre 1 y X
f = f * i
Next
End Sub
OTRO EJEMPLO
'Dadas las coordenadas de dos puntos determine la distancia entre ellos
'Cmo un Procedimiento Sub
12
2013
EJEMPLO
'Calcular Factorial de M
factorial(M, fm)
'Calcular Factorial de N
factorial(N, fn)
'Calcular Factorial de M N
factorial(M N, fm_n)
'calcular factorial de (M N)
OTRO EJEMPLO
'Determinar la distancia entre punto p2 de coordenadas x2 y y2
'y el punto p3 de coordenadas x3,y3, usando Sub distancia
distancia(x2,y2,x3,y3,D13)
'Cuando se ejecute el Sub distancia los parmetros actuales
'pasarn a los formales
'el valor de x2 o parmetro actual,lo tomar el parmetro formal X1
'valor de y2 o parmetro actual, lo tomar el parmetro formal y1
'el valor de x3 o parmetro actual, lo tomar el parmetro formal X2
'valor de y3 o parmetro actual, lo tomar el parmetro formal y2
NOTA IMPORTANTE:
No se puede colocar el llamado a un procedimiento
Sub del lado derecho de una instruccin de asignacin,
ni como parte de una expresin o frmula.
al
13
2013
14