0% encontró este documento útil (0 votos)
16 vistas18 páginas

SUBPROGRAMAS 2018 Final

Cargado por

Daniel Fuentes
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
16 vistas18 páginas

SUBPROGRAMAS 2018 Final

Cargado por

Daniel Fuentes
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Subprogramas

Computación I
Descripción breve
La idea de dividir un problema complejo en pequeños problemas o subproblemas se conoce como
“programación modular” y consiste en resolver de forma independiente los subproblemas
resultantes de la descomposición 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 información a los
distintos subprogramas para que efectúen la tarea solicitada cuando sean llamados, los cuales
una vez que terminen de efectuar su tarea o instrucciones definidas para alcanzarla, transferirán
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 específica o definida y que puede utilizarse en un programa varias veces sin
necesidad de reescribir el código. Como representa una sección de código que se ejecutará y
establecerá comunicación con quien lo invoca o llama, esta comunicación o intercambio de
información se realizará a través de variables, que se denominarán parámetros. En este
documento encontrará la definición de subprograma, tipos, creación y usos. Adicionalmente por
ser un elemento imprescindible la definición de parámetros, tipos, declaración y uso apropiado.

Prof. Lisbeth Pacheco.


lpachecos@[Link]
SUBPROGRAMAS

Contenido

Definiendo Subprogramas o Procedimientos ..................................................................... 1


Divide el problema y lo resolverás .................................................................................... 3
Ventajas de desarrollar Subprogramas ............................................................................. 4
Subprogramas o Procedimientos en Visual Basic .............................................................. 5
Definiendo que son Parámetros o Argumentos.................................................................. 5
Parámetros Formales ......................................................................................................... 6
Parámetros Actuales .......................................................................................................... 6
Más acerca de los Parámetros Formales ............................................................................... 7
Tipos de Parámetros Formales .......................................................................................... 8
Parámetros por Valor (ByVal) .............................................................................................. 8
Parámetros por Referencia (ByRef) ...................................................................................... 9
¿Cuándo usar parámetros por valor o por referencia? .......................................................... 10
Procedimientos Function ................................................................................................. 10
Sintaxis de Procedimientos Function .................................................................................. 10
Uso o llamada de un Procedimiento tipo Function ................................................................ 11
Procedimientos Sub ........................................................................................................ 12
Sintaxis de Procedimientos Sub ......................................................................................... 12
Uso o llamada de un Procedimiento Sub ............................................................................. 13
¿Cuándo usar un parámetro por valor ByVal o por referencia ByRef en un Procedimiento
Sub? ................................................................................................................................ 15
¿Cómo enfrentar un problema? ....................................................................................... 15
SUBPROGRAMAS

Definiendo Subprogramas o Procedimientos

A
menudo en la programación es muy común que un conjunto de instrucciones deba
repetirse varias veces dentro del mismo código, 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 número de combinaciones posibles,
para lo que debe utilizarse la siguiente fórmula:

( )
Si se desea realizar un programa que permita determinar el número de combinaciones C, usando
dicha fórmula, el análisis implica:

¿Cómo lo hago? o ¿cuáles son


¿Qué tengo? o ¿cuáles son ¿Qué me piden? o
las fórmulas o expresiones,
los datos necesarios para ¿cuáles son las
restricciones y otros para
obtener C? incógnitas?
obtener las incógnitas?

MyN C
( )
ALGORITMO BASICO PARA RESOLVER EL PROBLEMA
1. Inicio
2. Leer M
3. Leer N
4. Calcular el Factorial de N en la variable Fn
5. Calcular el Factorial de M en la variable Fm
6. Calcular el Factorial de M-N en la variable Fm_n
7. Calcular C cómo Fn / (Fm * Fm_n)
8. Escribir C
IMPORTANTE
9. Fin
Como no existe ninguna función
predefinida en el lenguaje que
DEFINICIÓN DE FACTORIAL permita determinar el factorial,
éste deberá determinarse por
definición.

El factorial de n se define como el


producto de todos los números
enteros positivos desde 1 hasta n.

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 1


SUBPROGRAMAS

PROGRAMA EN VISUAL BASIC


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
Dim fm, fn, fm_n As Integer
'Lectura de los datos
[Link]("Valor de M=")
M = [Link]
[Link]("Valor de N=")
N = [Link]
'Calcular Factorial de M
fm = 1 'Acumulador Productoria
'Generación de los números naturales entre 1 y M
For i = 1 To M
Observe que el código
'Productoria de los números naturales entre 1 y M de los tres recuadros
fm = fm * i
Next es prácticamente el
mismo, sólo cambian
'Calcular Factorial de N
fn = 1 'Acumulador para la Productoria las variables: La que
'Generación de los números naturales entre 1 y N
For i = 1 To N representa el fin del
'Productoria de los números naturales entre 1 y N ciclo for (la cantidad
fn = fn * i
Next de números naturales a
generar) y el
'Calcular Factorial de M -N
Fm_n = 1 'Acumulador para la Productoria acumulador de los
'Generación de los números naturales entre 1 y M -N
For i = 1 To M - N
números generados
'Productoria de los números naturales entre 1 y M-N (productoria) que
Fm_n = fm_n * i
Next permite determinar el
'Calcular el número de Combinaciones posibles factorial
C = fm / (fm_n*fn)
'Imprimir combinaciones
[Link]("Combinaciones de {0} y {1} es de {2}", M, N, C)
[Link]()
End Sub
End Module

Para disminuir la cantidad de código se puede generalizar la tarea de calcular el factorial


escribiéndola como un subprograma, esto permitiría reutilizar el código sin necesidad de
escribirlo más de una vez en el programa, de tal manera que al llamar o usar el subprograma se
suministraría el valor al
cual se quiere determinar el CÓDIGO PARA CALCULAR EL FACTORIAL DE X
factorial.
f = 1 'Acumulador Productoria
'Generación de los números naturales entre 1 y X
For i = 1 To X
f = f * i 'Productoria de los números naturales entre 1 y X
Next

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 2


SUBPROGRAMAS

El código para calcular el factorial de X, se transformará en una función para luego ser
utilizada en el programa como las funciones predefinidas del lenguaje que ya se han utilizado.

PROGRAMA EN VISUAL BASIC USANDO SUBPROGRAMAS


Module Module1
'El código repetido se convierte en tarea, una función que dado X determina el factorial de X
Function factorial(ByVal x As Integer) As Integer
Dim f As Integer
'Calcular Factorial de X
f = 1 'Acumulador Productoria
'Generación de los números naturales entre 1 y X
For i = 1 To x
'Productoria de los números naturales entre 1 y X
Observe que el código para
f = f * i
Next determinar el factorial se
factorial = f 'Valor que se desea devuelva la función escribe de manera genérica
End Function como procedimiento o
'PROGRAMA PRINCIPAL subprograma tipo
Sub Main()
'Entradas o datos function, una pieza del
Dim M, N As Integer rompecabezas,
'Salidas, resultados o incognitas
Dim C As Single
'Variables de Proceso o necesarias para el calculo
Dim fm, fn, fm_n As Integer
'Lectura de los datos
un subproblema.
[Link]("Valor de M=")
M = [Link]
[Link]("Valor de N=") En el programa principal
N = [Link]
'Calcular Factorial de M
ahora se emplea la función,
'Asignamos a fm el resultado de evaluar la función Factorial para el valor de M
fm = factorial(M) 'a fin de obtener M!
'Calcular Factorial de N
'Asignamos a fn el resultado de evaluar la función Factorial para el valor de N
fn = factorial(N) 'a fin de obtener N! al igual que las funciones
'Calcular Factorial de M –N predefinidas, asignando a
'Asignamos a fm_n el resultado de la función Factorial para el valor de M-N
fm_n = factorial(M - N) 'a fin de obtener (M – N)!
una variable el resultado,
'Calcular el número de Combinaciones posibles en este caso determinar el
C = fm /(fm_n * fn) factorial de la variable que
'Imprimir combinaciones
[Link]("Las combinaciones de {0} y {1} es {2}", M, N, C) representa lo requerido o a
[Link]() quien se quiere determinar
End Sub
el factorial
End Module

Divide el problema y lo resolverás


La idea de dividir un problema complejo en pequeños
problemas o subproblemas se conoce como
“programación modular” y consiste en resolver de
forma independiente los subproblemas resultantes de la
descomposición del problema original, cada una de las

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 3


SUBPROGRAMAS

soluciones a los subproblemas constituye un subprograma o procedimiento. Trabajar de esta forma


implica que existe un proceso principal, denominado programa principal, que transferirá el
control y la información (datos necesarios) a los distintos subprogramas o procedimientos para que
efectúen la tarea solicitada cuando sean invocados o llamados, los cuales una vez que terminen de
efectuar su tarea, instrucciones definidas para alcanzarla, transferirán de nuevo el control a quien
lo invocó o llamó; sea este el programa principal u otro subprograma o procedimiento.

Los subprogramas o procedimientos deberían ser cortos y para desarrollarlos se seguirán todas las
reglas de programación, así mismo se podrán emplear todas las estructuras y herramientas de
programación habituales, centrándose en resolver únicamente la tarea que se desea.

Un subprograma es un bloque de
instrucciones o sentencias que llevan a
cabo una tarea bien específica o definida y
que puede utilizarse en un programa varias
veces sin necesidad de reescribir el código.
Como representa una sección de código
que se ejecutará y establecerá
comunicación con quien lo invoca o llama,
esta comunicación o intercambio de
información se realizará a través de
variables, que se denominarán
parámetros.

Ventajas de desarrollar Subprogramas


 Permiten eliminar líneas repetidas en el código. Sólo se escribirán
una vez, aunque se requiera realizar varias veces la misma tarea
para la solución del problema completo, pero se ejecutarán en el
programa cada vez que se necesite.
 Permite que los programas sean más legibles o fácilmente
comprensibles. Un programa dividido en varias partes más
pequeñas es más fácil de entender.
 Simplifican el desarrollo del programa. Los programas separados
en unidades lógicas o subproblemas son más fáciles de diseñar,
escribir y depurar.
 Se pueden volver a utilizar en otros proyectos o soluciones,
permitiendo el ahorro de tiempo. Los procedimientos o
subprogramas desarrollados pueden incorporarse en un módulo
estándar en otros proyectos, permitiendo así poder usarlos como
los que están predefinidos en el lenguaje.
 Varios programadores pueden trabajar simultáneamente,
repartiéndose los distintos subproblemas, ya que son módulos
independientes, que luego se engranan.
 Se podrá modificar un módulo o subproblema, sin afectar a los demás.

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 4


SUBPROGRAMAS

Subprogramas o
Procedimientos en Visual Basic Subprograma o procedimiento
Visual Basic posee dos tipos de subprogramas o son un conjunto de instrucciones
procedimientos principales: Procedimientos Function que permiten realizar una tarea de
y Procedimientos Sub. manera generalizada, que puede
ser utilizada, sin reescribir el
Los Procedimientos Function (Función) se utilizan código, varias veces en el
generalmente para cálculos, pueden recibir datos a programa o subprograma que lo
través de parámetros y siempre devuelven el requiera; establecen comunicación
resultado a través del nombre de la función. con quien lo llame o requiera a
Los Procedimientos Sub, se utilizan para realizar una través de variables especiales
tarea, pueden recibir datos a través de parámetros y denominadas parámetros.
pueden devolver resultados a través de parámetros.

Definiendo que son


Parámetros o Argumentos
Una de las características importantes de los
subprogramas es la posibilidad de comunicarse con el
programa principal u otros subprogramas. Esta
1.- Los datos necesarios se pasan al
comunicación se realiza a través de variables
subprograma (Cada dato una
denominadas parámetros, dicho de otra manera
variable o parámetro)
cuando un programa llama o usa un subprograma, la
información se transmite entre ambos a través de
variables que se denominan parámetros,
constituyéndose en la manera de pasar información o
valores a variables, del programa principal al
subprograma y viceversa.
Un parámetro o argumento es una variable que
representa un dato que se pasa al subprograma y que
es necesario para ejecutar las instrucciones definidas 2.- El subprograma efectúa la tarea,
siguiendo las instrucciones definidas
en la tarea, o que se devuelve del subprograma por ser
lo que se desea determinar.
Un parámetro entonces, puede ser una variable cuyo
valor debe ser proporcionado al subprograma una vez
invocado, o una variable cuyo valor debe ser devuelto
desde el subprograma porque se genera o calcula
mediante las instrucciones definidas para la tarea.
3.- El subprograma una vez ejecutada
Los parámetros según su uso se clasifican en la tarea regresa el resultado generado
parámetros formales o parámetros actuales. al programa o subprograma que lo
llamó o pidió su ejecución (Cada dato
una variable o parámetro)

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 5


SUBPROGRAMAS

Parámetros Formales PROGRAMA EN VISUAL BASIC


Cuando se crea el procedimiento o subprograma en la USANDO SUBPROGRAMAS
definición o cabecera, se incluyen la lista de
IDENTIFICANDO PARÁMETROS
parámetros o variables que permiten la comunicación, Module Module1
datos de entrada (necesarios para efectuar las 'El código repetido se convierte en tarea, una
'función que dado X determina el factorial de X
instrucciones) y datos de salida del subprograma
(resultantes de los cálculos o instrucciones que se Parámetro
requieren para procesos posteriores), estos se Formal
Function factorial(ByVal x As Integer)
denominan parámetros formales o ficticios. Ellos As Integer
sirven para guardar la información de los valores de 'Variable local, acumulador para calcular x!
las variables que invocan o llaman al subprograma. Si Dim f As Integer
lo vemos como una obra de teatro, cuando se escribe 'Calcular Factorial de X
o crea, los parámetros formales son los personajes de f = 1 'Acumulador Productoria
'Generación de los números de 1 a X
la obra. Para el subprograma definido para el cálculo For i = 1 To x
del factorial de X, se tiene que X, es el dato necesario 'Productoria de los números
para poder efectuar la tarea o cálculo, siendo X el f = f * i
Next
parámetro formal, la cabecera del subprograma es la
factorial = f 'Valor a devolver
siguiente: End Function
Function factorial(ByVal x As Integer) As Integer 'PROGRAMA PRINCIPAL
Sub Main()
'Entradas o datos
Parámetros Actuales Dim M, N As Integer
'Salidas, resultados o incognitas
Los parámetros actuales, lo constituyen las variables Dim C As Single
'Variables de Proceso
que se utilizan cuando se emplea o llama al
Dim fm, fn, fm_n As Integer
subprograma o procedimiento, las variables que 'Lectura de los datos
representan los datos en el momento; volviendo al [Link]("Valor de M=")
M = [Link]
tema de la obra de teatro, cuando se interpreta o [Link]("Valor de N=")
pone en escena la obra, se ejecuta, cada personaje es N = [Link]
interpretado por un actor, el que toque en ese Parámetro
'Calcular Factorial de M
momento. Los parámetros actuales deben coincidir en fm = factorial(M) Actual
número, orden y tipo con los parámetros formales o
ficticios definidos en la declaración o cabecera del 'Calcular Factorial de N Parámetro
fn = factorial(N)
subprograma. Para el ejemplo se usa o llama la Actual
función factorial en el programa principal tres veces: 'Calcular Factorial de M –N
'Calcular Factorial de M fm_n = factorial(M - N)
Parámetro
fm = factorial(M) 'a fin de obtener el Factorial de M
'Calcular Factorial de N Actual
fn = factorial(N) 'a fin de obtener el factorial de N
'Calcular Factorial de M –N
'Calcular número de Combinaciones posibles
fm_n = factorial(M - N) 'calcular factorial de (M – N)
C = fm /(fm_n * fn)
'Imprimir combinaciones
Observe que en cada llamada sólo se coloca el
[Link]("Las combinaciones de
nombre de la función y la variable a la que se desea {0} y {1} es {2}", M, N, C)
calcular el factorial, esa variable es el parámetro [Link]()
actual, o valor que se asignará a la variable X, End Sub
End Module
parámetro formal del subprograma para realizar las
instrucciones del subprograma.

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 6


SUBPROGRAMAS

Más acerca de los Parámetros Formales


Existen diferentes formas de transmisión o paso de parámetros a subprogramas, por lo que pueden
ser clasificados de acuerdo a ello, como:

Entradas: Permiten únicamente la transmisión o paso de datos desde el programa o


subprograma que llama o solicita la ejecución del subprograma.

Salidas: Sólo devuelven resultados desde el subprograma al programa o


subprograma que llama o solicita la ejecución del subprograma.

Entradas/Salidas: Actúan en los dos sentidos, tanto recibiendo datos del programa principal o
subprograma que llama o solicita la ejecución del subprograma; como
devolviendo resultados desde el subprograma al programa o subprograma
que llama o solicita la ejecución del subprograma

Esta definición puede ser útil, pero no es suficiente para definir los parámetros formales, que
tendrá un procedimiento o subprograma, por lo que debemos identificar los principales tipos de
parámetros formales.

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 7


SUBPROGRAMAS

Tipos de Parámetros Formales


Visual Basic posee dos tipos de parámetros principales para la transmisión de datos entre un
subprograma y el programa o subprograma que lo utiliza o llama.

Parámetros por Valor (ByVal)


Para este tipo de parámetro, el parámetro formal
recibe como valor inicial una copia del parámetro
actual y con ellos se ejecutan las instrucciones
descritas en el subprograma, por lo tanto los
cambios que se produzcan en ellos por las
instrucciones del subprograma no podrán afectar a
los parámetros actuales porque no se devolverá la
información al programa o subprograma llamador.
Estos se corresponden con los parámetros definidos
como entradas.

El parámetro actual, puede ser una variable,


constante o expresión, ya que sólo el valor
resultante es el que se asigna al parámetro formal.

Un parámetro por valor no puede modificar los valores del parámetro actual, por
lo que cualquier cambio del valor del parámetro formal durante la ejecución del
subprograma se destruye cuando termina de ejecutarse el subprograma,
permaneciendo el valor original.

Para indicar que un parámetro es por Valor la sintaxis es: Byval Identificador as Tipo

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 8


SUBPROGRAMAS

Parámetros por Referencia (ByRef)


En muchas ocasiones se requiere que los parámetros sirvan
como salida, es decir que devuelvan los resultados al programa
o subprograma que lo llama. Para este tipo de parámetro, el
parámetro formal recibe la dirección de memoria del parámetro
actual. De esta forma una variable pasada como parámetro
actual es compartida; es decir, puede ser modificada
directamente por el subprograma. Los parámetros de este tipo
corresponden con los de entrada/salida o con los de salida si
hablamos de un subprograma tipo Sub.

El parámetro actual, debe ser una variable, ya que recibirá el resultado del cálculo o de lo
que se genere en las instrucciones definidas en la tarea.

Un parámetro por referencia puede modificar los valores del parámetro actual,
por lo que cualquier cambio de los parámetros formales durante la ejecución del
subprograma se refleja en los parámetros actuales cuando termina de ejecutarse
el subprograma.

Para indicar que un parámetro es por Valor la sintaxis es: ByRef Identificador as Tipo

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 9


SUBPROGRAMAS

¿Cuándo usar parámetros por valor o por referencia?


Algunas reglas a seguir para utilizar uno u otro tipo de parámetro son:

 Si la información que se pasa al subprograma no tiene que ser


devuelta fuera del subprograma, el parámetro que representa
puede ser un parámetro por valor.
 Si se tiene que devolver la información al subprograma o
programa llamador, el parámetro formal que representa la
información debe ser un parámetro por referencia.
 Si la información que se pasa al subprograma puede ser
modificada y se debe devolver el nuevo valor, el parámetro
formal que representa la información debe ser un parámetro por referencia.

Procedimientos Function
Un procedimiento function es un subprograma que recibe datos y devuelve un único
resultado a través del nombre de la función, el nombre de la función actúa como una
variable o dirección de memoria donde se almacenará el resultado a devolver por la
función.

Sintaxis de Procedimientos Function


La sintaxis básica de una función es la siguiente:
SINTAXIS
Function FunctionName( Parámetros o argumentos) as Type ‘Cabecera o encabezado
‘Declaración de Variables internas o auxiliares del calculo
Dim identificador as tipo
‘Instrucciones a ejecutar, cuerpo del subprograma

FunctionName = Valor a devolver ‘Puede sustituirse por Return Valor a devolverr


End Function
IMPORTANTE
 FunctionName es el nombre de la función que está creando, actuará como la variable
donde se devolverá el resultado.
 As Type permite especificar el tipo de resultado que devuelve la función, en otras palabras
especifica el tipo de dato se puede guardar o se guardará en FunctionName, que se
comporta como una variable.
 Parámetros o argumentos, lista de parámetros o datos que se pasarán a la función para
que efectúe los cálculos o instrucciones.
 FunctionName = Valor a devolver , asigna el valor a regresar al nombre de la función;
puede abreviarse escribiendo Return Valor a devolver, con esto se indica que devuelva
Valor a devolver al subprograma o programa que llama y cuál es ese valor, sin embargo,
debe cuidarse al utilizarla ya que cuando se ejecuta la instrucción Return, la función
termina su ejecución, así que si hay instrucciones después de ella no se ejecutarán.

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 10


SUBPROGRAMAS

EJEMPLO DE PROCEDIMIENTO TIPO Las funciones siempre devuelven el valor


FUNCTION EN VISUAL BASIC
al programa, subprograma o
Cálculo del Factorial de X procedimiento que lo llama o solicita su
ejecución en el nombre de la función.
Function factorial(ByVal x As Integer) Por esta razón la última instrucción en una
As Integer
función es generalmente de asignación
'Variable local, acumulador para calcular x!
que coloca el resultado a del cálculo final
Dim f As Integer
que de la función en la variable
'Calcular Factorial de X
FunctionName o nombre de la función.
f = 1 'Acumulador Productoria
'Generación de los números de 1 a X
El nombre de la función no debe aparecer
For i = 1 To x
'Productoria de los números del lado derecho de una instrucción de
f = f * i asignación en las instrucciones a ejecutar
Next dentro del subprograma o procedimiento.
factorial = f 'Valor a devolver
End Function Una función debería tener sólo
parámetros por valor

EJEMPLO DE FUNCIONE EN VISUAL BASIC

Cálculo de la distancia entre dos puntos


'Dadas las coordenadas de dos puntos determine la distancia entre ellos
Function distancia(ByVal x1 As single, ByVal y1 As single,
ByVal x2 As single, ByVal y2 As single)
As Single
'Valor que debe devolver la función
distancia = [Link]((x2-x1)^2 - (y2-y1)^2)
End Function

Uso o llamada de un Procedimiento tipo Function


Para ejecutar, invocar, llamar o solicitar la
Revise en la página 6
ejecución de una función se coloca el nombre PROGRAMA EN VISUAL BASIC USANDO
de la función seguido de los parámetros SUBPROGRAMAS
actuales o argumentos del lado derecho de IDENTIFICANDO PARÁMETROS
una asignación o como parte de una
'Calcular Factorial de M
expresión o formula. fm = factorial(M)
'Calcular Factorial de N
Los parámetros actuales o argumentos deben fn = factorial(N)
estar entre paréntesis y si son varios, 'Calcular Factorial de M –N
fm_n = factorial(M - N)
separados por comas.

Si observamos el problema de la página 6, vemos el llamado del subprograma factorial,


donde los parámetros actuales son para cada llamada respectivamente M, N y el resultado
de evaluar la expresión M-N.

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 11


SUBPROGRAMAS

Ejemplo de llamado para la Función que determina la Distancia entre dos puntos

'Determinar la distancia entre punto p2 de coordenadas x2 y y2


'y el punto p3 de coordenadas x3,y3, usando la función distancia
D13=distancia(x2,y2,x3,y3)
'Cuando se ejecute la función distancia los parámetros actuales
‘pasarán a los formales
'el valor de x2 o parámetro actual, lo tomará el parámetro formal X1
'valor de y2 o parámetro actual, lo tomará el parámetro formal y1
'el valor de x3 o parámetro actual, lo tomará el parámetro formal X2
'valor de y3 o parámetro actual, lo tomará el parámetro formal y2

Procedimientos Sub
Los procedimientos sub se usan generalmente para conseguir el suministro de
información o lectura de datos, mostrar o imprimir información o procesar y actualizar las
variables o parámetros recibidos. Pueden devolver ningún valor, uno o más valores, pero
lo que devuelve lo devuelve en variables o parámetros definidos en la cabecera del
procedimiento.

Sintaxis de Procedimientos Sub


La sintaxis básica de un procedimiento sub es el siguiente:

SINTAXIS
Sub ProcedureName( Parámetros o argumentos) ‘Cabecera o encabezado
‘Declaración de Variables internas o auxiliares del calculo
Dim identificador as tipo
‘Instrucciones a ejecutar, cuerpo del subprograma
End Sub

IMPORTANTE

 ProcedureName es el nombre del procedimiento Sub que está creando.


 Parámetros o argumentos, lista de parámetros o datos que se pasarán a la función
para que efectúe los cálculos o instrucciones.

Sí se modifican las variables o parámetros del procedimiento sub durante la ejecución de


las instrucciones del procedimiento sub, los valores actualizados no se pasarán al
programa o subprograma que pide su ejecución a menos que estos parámetros se
definan como parámetro por referencia, utilizando la palabra clave ByRef.

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 12


SUBPROGRAMAS

EJEMPLO DE PROCEDIMIENTO TIPO SUB EN


VISUAL BASIC

Cálculo del Factorial de X


'Desarrollaremos el subprograma de calcular el factorial de
'un Número como un Procedimiento Sub
Sub factorial(ByVal x As Integer 'Entrada o dato, Observe que al cambiar el
procedimiento de Function a
ByRef F As Integer 'Resultado o salida)
Sub, se agrega un parámetro
'Variables internas del Subprograma formal que corresponde con el
dato que se desea regresar y
'Calcular Factorial de M que el mismo se define como
f = 1 'Acumulador Productoria ByRef o parámetro por
'Generación de los números naturales entre 1 y X
referencia.
For i = 1 To M
'Productoria de los números naturales entre 1 y X
f = f * i
Next
End Sub

EJEMPLO DE PROCEDIMIENTO TIPO SUB EN VISUAL BASIC

Cálculo de la distancia entre dos puntos


'Dadas las coordenadas de dos puntos determine la distancia entre ellos
'Cómo un Procedimiento Sub
Sub distancia2(ByVal x1 As single, ByVal y1 As single,
ByVal x2 As single, ByVal y2 As single,
ByRef distancia As single)
'Valor que debe devolver la función
distancia = [Link]((x2-x1)^2 - (y2-y1)^2)
End Sub

Uso o llamada de un Procedimiento Sub


Para ejecutar, invocar, llamar o solicitar la ejecución de un procedimiento Sub se coloca el
nombre del procedimiento seguido de los parámetros actuales o argumentos cómo
una instrucción de código.

Los parámetros actuales o argumentos IMPORTANTE


deben estar entre paréntesis y si son
varios, separados por comas. No se puede colocar el llamado a un
procedimiento Sub del lado derecho de
una instrucción de asignación, ni como
parte de una expresión o fórmula.

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 13


SUBPROGRAMAS

PROGRAMA EN VISUAL BASIC USANDO PROCEDIMIENTOS SUB


Calculando el número de combinaciones
Module Module1
'Dado M y N determine el número de combinaciones posibles
' empleando la formula que dice que C= M!/(N!*(M-N)!)
' consideramos aquí que M es mayor que N
Sub factorial(ByVal x As Integer, ByRef f As Integer)

'Variable local para este código no existe

'Calcular Factorial de X
f = 1 'Acumulador Productoria
'Generación de los números de 1 a X
For i = 1 To x
'Productoria de los números
f = f * i
Next

End Sub
'PROGRAMA PRINCIPAL
Sub Main()
'Entradas o datos
Dim M, N As Integer
'Salidas, resultados o incognitas
Dim C As Single
'Variables de Proceso
Dim fm, fn, fm_n As Integer
'Lectura de los datos, no se están validando
[Link]("Valor de M=")
M = [Link]
[Link]("Valor de N=")
N = [Link]
'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 número de Combinaciones posibles
C = fm / (fm_n * fn)
'Imprimir combinaciones
[Link]("Las combinaciones de {0} y {1} es {2}", M, N, C)
[Link]()
End Sub
End Module

Sí una heladeria ofrece los 4 sabores que se muestran¿Cúantas


combinaciones de helados de dos sabores se pueden hacer?

Las combinaciones posibles son: 1)Chocolate-Frutilla, 2)Chocolate-Vainilla,


3)Chocolate-Menta, 4)Frutilla-Vainilla, 5)Frutilla-Menta y 6)Vainilla-Menta

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 14


SUBPROGRAMAS

¿Cuándo usar un parámetro por


valor ByVal o por referencia ByRef
en un Procedimiento Sub?
 Utilice Byval cuando no quiera que el procedimiento
modifique una variable que está pasando al procedimiento
 Utilice ByRef cuando quiera que un procedimiento modifique una variable que está pasando
al procedimiento
 Utilice ByRef cuando la variable o parámetro se determine dentro del subprograma.
 Utilice ByRef cuando la variable o parámetro se lean dentro del subprograma.
 Cuando tenga dudas use ByVal, ya que no se modificará el contenido de la variable

¿Cómo enfrentar un problema?


 Analice el problema e identifique los datos necesarios, las
incognitas o salida deseada y los procesos que permitan efectuar
dicha tarea.
 Establezca los procesos, tareas o subproblemas que se aplicarían
en el problema a resolver, separe cada subproblema y resuélvalo
por separado.

 Diseñe la solución a cada subproblema considerando


exclusivamente la tarea solicitada, los datos que se
necesitan, si no pueden generarse, deben entrar al
subprograma y serán por tanto parámetros en primera
instancia por valor o ByVal. Lo que necesita calcular,
determinar o devolver será parámetro ByRef, a menos
que sea una función en cuyo caso se devolverá en el
nombre de la función.

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 15


SUBPROGRAMAS

 Cuando diseñe un subprograma, sí alguna tarea a realizar en el mismo se


encuentra previamente creada en un subprograma, use el subprograma de
acuerdo al tipo, especificando los parámetros o variables que representan
los datos o información que se suministrará al subprograma y las variables
o parámetros donde devolverá los resultados en caso de ser un
procedimiento Sub.
 Si el subprograma a diseñar es de lectura o impresión, debería ser Procedimiento Sub.
 En los subprogramas de lectura, todo lo que se lea y se desee devolver debe ser parámetro
ByRef
 En los subprogramas de impresión, los valores de las variables generalmente no se alteran
por lo que deberán ser parámetros ByVal
 Diseñados los subprogramas solicitados, desarrolle el
programa principal, leyendo el problema a resolver,
identifique las entradas o datos y las salidas o resultados,
cada uno representará una variable, seleccione el nombre
apropiado.
 Establezca la estructura que le permitirá leer la información y
de manera general los pasos para resolver el problema, para
cada paso revise si tiene un subprograma que haga el cálculo
o tarea, de ser así use el subprograma apropiadamente,
especificando los parámetros o variables que representan los
datos o información que se suministrará al subprograma y las
variables o parámetros donde devolverá los resultados en
caso de ser un procedimiento Sub, al unir todas las partes del
rompecabezas tendrá la solución a su problema.

Recuerde el Programa principal es el que


indicará que tarea o subprograma se debe
ejecutar y con qué valores. Ud. es el que
dirige las acciones así que el éxito de la
tarea es suya

MATERIAL DE COMPUTACIÓN I – PROF. LISBETH PACHECO 16

También podría gustarte