Академический Документы
Профессиональный Документы
Культура Документы
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.
.
lpachecos@gmail.com
SUBPROGRAMAS
Contenido
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:
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.
MATERIAL DE COMPUTACIÓN I 1
SUBPROGRAMAS
MATERIAL DE COMPUTACIÓN I 2
SUBPROGRAMAS
El código para calcular el factorial de X, se transformará en una función para luego ser
MATERIAL DE COMPUTACIÓN I 3
SUBPROGRAMAS
utilizada en el programa como las funciones predefinidas del lenguaje que ya se han utilizado.
MATERIAL DE COMPUTACIÓN I 4
SUBPROGRAMAS
Los Procedimientos Sub, se utilizan para realizar una 1.- Los datos necesarios se pasan al
subprograma (Cada dato una
tarea, pueden recibir datos a través de parámetros y
variable o parámetro)
pueden devolver resultados a través de parámetros.
Un parámetro o argumento es una variable que 3.- El subprograma una vez ejecutada
representa un dato que se pasa al subprograma y que la tarea regresa el resultado generado
es necesario para ejecutar las instrucciones definidas al programa o subprograma que lo
en la tarea, o que se devuelve del subprograma por ser llamó o pidió su ejecución (Cada dato
lo que se desea determinar.
MATERIAL DE COMPUTACIÓN I 5
SUBPROGRAMAS
Parámetros Formales
'Variable local, acumulador para calcular x!
Dim f As Integer
Cuando se crea el procedimiento o subprograma en 'Calcular Factorial de X
la definición o cabecera, se incluyen la lista de f = 1 'Acumulador Productoria
'Generación de los números de 1 a X
parámetros o variables que permiten la For i = 1 To x
comunicación, datos de entrada (necesarios para 'Productoria de los números
f = f * i
efectuar las instrucciones) y datos de salida del Next
subprograma (resultantes de los cálculos o Parámetro
factorial = f 'Valor a devolver
instrucciones que se requieren para procesos Formal
End Function
posteriores), estos se denominan parámetros 'PROGRAMA PRINCIPAL
Sub Main()
formales o ficticios. Ellos sirven para guardar la
'Entradas o datos
información de los valores de las variables que Dim M, N As Integer
invocan o llaman al subprograma. Si lo vemos como 'Salidas, resultados o incognitas
Dim C As Single
una obra de teatro, cuando se escribe o crea, los 'Variables de Proceso
parámetros formales son los personajes de la obra. Dim fm, fn, fm_n As Integer
'Lectura de los datos
Para el subprograma definido para el cálculo del
Console.Write("Valor de M=")
factorial de X, se tiene que X, es el dato necesario M = Console.ReadLine
para poder efectuar la tarea o cálculo, siendo X el Console.Write("Valor de N=")
N = Console.ReadLine
parámetro formal, la cabecera del subprograma es la
siguiente: 'Calcular Factorial de M
fm = factorial(M)
Function factorial(ByVal x As Integer) As Integer
'Calcular Factorial de N
Parámetros Actuales fn = factorial(N)
veces:
'Calcular Factorial de M
fm = factorial(M) 'a fin de obtener el Factorial de M
'Calcular Factorial de N
fn = factorial(N) 'a fin de obtener el factorial de N
'Calcular Factorial de M –N
fm_n = factorial(M - N) 'calcular factorial de (M – N)
Observe que en cada llamada sólo se coloca el nombre de la función y la variable a la que se desea
calcular el factorial, esa variable es el parámetro actual, o valor que se asignará a la variable X,
parámetro formal del subprograma para realizar las instrucciones 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 7
SUBPROGRAMAS
MATERIAL DE COMPUTACIÓN I 8
SUBPROGRAMAS
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 9
SUBPROGRAMAS
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
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 10
SUBPROGRAMAS
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
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
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 11
SUBPROGRAMAS
MATERIAL DE COMPUTACIÓN I 12
SUBPROGRAMAS
Ejemplo de llamado para la Función que determina la Distancia entre dos puntos
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.
MATERIAL DE COMPUTACIÓN I 13
SUBPROGRAMAS
IMPORTANTE
MATERIAL DE COMPUTACIÓN I 14
SUBPROGRAMAS
IMPORTANTE
MATERIAL DE COMPUTACIÓN I 15
SUBPROGRAMAS
'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
Console.Write("Valor de M=")
M = Console.ReadLine
Console.Write("Valor de N=")
N = Console.ReadLine
'Calcular Factorial de M
factorial(M, fm)
'Calcular Factorial de N
factorial(N, fn)
'Calcular Factorial de M –N
factorial(M - N, fm_n)
MATERIAL DE COMPUTACIÓN I 16
SUBPROGRAMAS
MATERIAL DE COMPUTACIÓN I 17
SUBPROGRAMAS
MATERIAL DE COMPUTACIÓN I 18