Upload
gregorio-carmona-dominguez
View
260
Download
0
Embed Size (px)
Citation preview
COMPUTACIÓN ICOMPUTACIÓN ITEMA 5. TEMA 5.
Subprogramas o funciones. Alcance de Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por variables. Pasaje de parámetros por
valorvalor
Prof. Mireya MoralesProf. Mireya Morales
CONTENIDOCONTENIDO
Importancia del uso de subalgoritmos o Importancia del uso de subalgoritmos o subprogramassubprogramas
Definición de FuncionesDefinición de Funciones Definición de ProcedimientosDefinición de Procedimientos Alcance de las variables: Globales y Alcance de las variables: Globales y
LocalesLocales Comunicación de subprogramas a través Comunicación de subprogramas a través
del pasaje de parámetros.del pasaje de parámetros. Paso de parámetros por valor y por Paso de parámetros por valor y por
referencia.referencia.
Importancia del uso de subalgoritmos o Importancia del uso de subalgoritmos o subprogramassubprogramas
• Los subalgoritmos permiten a los programadores desarrollar soluciones de problemas complejos, a través del método descendente (top-down).
• Representan unidades de programas diseñados para ejecutar una tarea específica.
• Los subprogramas se escriben 1 sola vez, pero pueden ser referenciados en diferentes puntos de un programa
Importancia del uso de subalgoritmos o Importancia del uso de subalgoritmos o subprogramassubprogramas
• Con el uso de los subprogramas se facilita la localización de un error.
• Los programas son más fáciles de comprender, debido a la independencia entre las unidades de programas.
Importancia del uso de subalgoritmos o Importancia del uso de subalgoritmos o subprogramassubprogramas
Problema
SP1 SP2 SP3
El programa principal invoca al subprogramaEl programa principal invoca al subprograma
Programa Subprograma
Primera Llamada
Retorno 1
Segunda Llamada
Retorno 2
Diferentes niveles de subprogramasDiferentes niveles de subprogramas
Programa
Subprograma1
Subprograma2
Subprograma 1.1
FuncionesFunciones Representan rutinas de programas Representan rutinas de programas
que son invocadas desde algún otro que son invocadas desde algún otro programa.programa.
Son referenciadas a través de un Son referenciadas a través de un nombre y una lista de parámetros nombre y una lista de parámetros actuales o reales.actuales o reales.
Declaración de FuncionesDeclaración de Funciones<tipo de resultado> función <nom_fun> (lista de <tipo de resultado> función <nom_fun> (lista de
parámetros)parámetros)
[declaraciones locales][declaraciones locales]
inicioinicio
<acciones> /*cuerpo de la función*/<acciones> /*cuerpo de la función*/
devolver (<expresion>)devolver (<expresion>)
fin_funciónfin_función
La llamada es mediante una instrucción con la siguiente La llamada es mediante una instrucción con la siguiente estructura:estructura:
X=nombre_función(lista de parámetros):X=nombre_función(lista de parámetros):
Ejemplo Declaración de FuncionesEjemplo Declaración de Funciones
f(x)=x/(1 +x*x)f(x)=x/(1 +x*x)
<real> función F(x)<real> función F(x)
inicioinicio
devolver (x/(1+x*x))devolver (x/(1+x*x))
fin_funcionfin_funcion
Ejemplo: Valor absoluto de un númeroEjemplo: Valor absoluto de un número
Algoritmo Calculo_valor_absolutoAlgoritmo Calculo_valor_absoluto
var X,Y enterovar X,Y entero
inicioinicio
leer Xleer X
Y=valor_absoluto(X)Y=valor_absoluto(X)
escribir El valor absoluto de X es Yescribir El valor absoluto de X es Y
finfin
Ejemplo: Valor absoluto de un númeroEjemplo: Valor absoluto de un número
entero valor_aboluto(entero:N)entero valor_aboluto(entero:N)var Z enterovar Z enteroInicioInicio si N<0 entoncessi N<0 entonces Z= N*(-1)Z= N*(-1) sinosino Z=NZ=N fin_sifin_si devolver Zdevolver Zfin_funcionfin_funcion
ProcedimientosProcedimientos
Es un subprograma que ejecuta un Es un subprograma que ejecuta un proceso específico.proceso específico.
Ningún valor está asociado con el nombre Ningún valor está asociado con el nombre del procedimiento.del procedimiento.
Cuando un procedimiento es invocado se Cuando un procedimiento es invocado se ejecutan las acciones que lo definen y ejecutan las acciones que lo definen y luego se devuelve el control a la luego se devuelve el control a la instrucciones siguiente a la llamada.instrucciones siguiente a la llamada.
A diferencia de las funciones no A diferencia de las funciones no devuelven valores.devuelven valores.
ProcedimientoProcedimiento
Procedimiento nombre [(lista de parámetros Procedimiento nombre [(lista de parámetros formales)]formales)]
<acciones><acciones>
Fin_procedimientoFin_procedimiento
La llamada es mediante una instrucción con la La llamada es mediante una instrucción con la siguiente estructura:siguiente estructura:
[llamar_a] nombre [(lista de parámetros)][llamar_a] nombre [(lista de parámetros)]
Procedimiento. Cálculo de la división Procedimiento. Cálculo de la división de dos números para obtener cociente de dos números para obtener cociente
y restoy resto
Algoritmo calculo_cociente_restoAlgoritmo calculo_cociente_resto
Var M,N,P,Q entero Var M,N,P,Q entero
inicioinicio
leer Mleer M
leer N leer N
llamar division (M,N,P,Q) llamar division (M,N,P,Q)
finfin
Procedimiento. Cálculo de la división Procedimiento. Cálculo de la división de dos números para obtener cociente de dos números para obtener cociente
y restoy resto
Procedimiento division(entero:D,d,C,R)Procedimiento division(entero:D,d,C,R)
inicioinicio
C = D div dC = D div d
R = D-C*dR = D-C*d
escribir C,Rescribir C,R
fin_procedimientofin_procedimiento
Alcance de VariablesAlcance de Variables Variables localesVariables locales: Es aquella declarada dentro : Es aquella declarada dentro
de un subprograma y es distinta de las de un subprograma y es distinta de las variables que tengan el mismo nombre en variables que tengan el mismo nombre en cualquier parte del programa principal. Cuando cualquier parte del programa principal. Cuando se hace referencia a una variable con el mismo se hace referencia a una variable con el mismo nombre que otra dentro de un programa, se nombre que otra dentro de un programa, se refiere a una posición diferente de memoria.refiere a una posición diferente de memoria.
Variables GlobalesVariables Globales: Es aquella que está : Es aquella que está declarada en el programa principal y se puede declarada en el programa principal y se puede referenciar desde cualquier parte del programa, referenciar desde cualquier parte del programa, inclusive desde otros subprogramas.inclusive desde otros subprogramas.
A
B
C
DE
F
Paso de ParámetrosPaso de Parámetros
Por valorPor valor: Se pasa una copia del parámetro : Se pasa una copia del parámetro original al subprograma llamado. Los cambios original al subprograma llamado. Los cambios a la copia no afectan el valor de la variable a la copia no afectan el valor de la variable original en el lugar donde se hace la llamada.original en el lugar donde se hace la llamada.
Por referenciaPor referencia: El invocador le da al : El invocador le da al subprograma llamado la capacidad de acceder subprograma llamado la capacidad de acceder directamente a la posición de memoria donde directamente a la posición de memoria donde se encuentra el dato y modificarlo si se desea.se encuentra el dato y modificarlo si se desea.