COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por...

19
COMPUTACIÓN I COMPUTACIÓN I TEMA 5. TEMA 5. Subprogramas o funciones. Subprogramas o funciones. Alcance de variables. Pasaje Alcance de variables. Pasaje de parámetros por valor de parámetros por valor Prof. Mireya Morales Prof. Mireya Morales

Transcript of COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por...

Page 1: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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

Page 2: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. 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.

Page 3: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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

Page 4: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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.

Page 5: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

Importancia del uso de subalgoritmos o Importancia del uso de subalgoritmos o subprogramassubprogramas

Problema

SP1 SP2 SP3

Page 6: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

El programa principal invoca al subprogramaEl programa principal invoca al subprograma

Programa Subprograma

Primera Llamada

Retorno 1

Segunda Llamada

Retorno 2

Page 7: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

Diferentes niveles de subprogramasDiferentes niveles de subprogramas

Programa

Subprograma1

Subprograma2

Subprograma 1.1

Page 8: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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.

Page 9: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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):

Page 10: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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

Page 11: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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

Page 12: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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

Page 13: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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.

Page 14: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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)]

Page 15: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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

Page 16: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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

Page 17: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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.

Page 18: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

A

B

C

DE

F

Page 19: COMPUTACIÓN I TEMA 5. Subprogramas o funciones. Alcance de variables. Pasaje de parámetros por valor Prof. Mireya Morales.

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.