Procedimientos y Funciones - PowerPoint PPT Presentation

1 / 23
About This Presentation
Title:

Procedimientos y Funciones

Description:

En la etapa de diseno una estrategia muy til es dividir para conquistar. ... La lista de par metros pasada por referencia est precedida por la palabra reservada var. ... – PowerPoint PPT presentation

Number of Views:148
Avg rating:3.0/5.0
Slides: 24
Provided by: Maqu2
Category:

less

Transcript and Presenter's Notes

Title: Procedimientos y Funciones


1
Procedimientos y Funciones
  • El desarrollo de un programa es un proceso que
    requiere el uso de estrategias y herramientas.
  • En la etapa de diseno una estrategia muy útil es
    dividir para conquistar.
  • La estrategia consiste en dividir el problema en
    subproblemas más simples que puedan atacarse por
    separado.
  • Cada subproblema puede dividirse a su vez hasta
    alcanzar un nivel de complejidad razonable.

2
Procedimientos y Funciones
  • Esta materia está enfocada a la división en base
    a acciones.
  • En la etapa de diseno se divide el problema en
    problemas más simples identificando las acciones.
  • En la etapa de implementación cada subproblema
    quedará asociado a un subprograma.
  • Así la estructura del programa reflejará la
    estructura del problema identificada en la etapa
    de diseno.

3
Procedimientos y Funciones
  • Escribir un programa que lea dos fracciones,
    compute la suma y muestre el resultado como una
    fracción irreducible.

4
Procedimientos y Funciones
  • Leer la primera fracción
  • Leer la segunda fracción
  • Sumar las dos fracciones para generar la fracción
    resultado
  • Reducir la fracción resultado
  • Mostrar la fracción reducida

Representamos cada fracción como un par de
números enteros, numerador y denominador. El
denominador tiene que ser positivo.
5
Procedimientos y Funciones
program suma var num1,num2,nsum,nred,
den1,den2,dsum,dred integer ... begin
leerFraccion (num1,den1) leerFraccion
(num2,den2) sumarFracciones (num1,den1,num2,den
2, nsum,dsum) reducirFraccion
(nsum,dsum,nred,dred) mostrarFracción
(nred,dred) end.
La estructura del programa refleja la estructura
del problema
6
Procedimientos y Funciones
procedure leerFraccion (var num , den
integer) begin write (Ingrese el
numerador) readln (num) repeat write
(Ingrese el denominador) readln (den)
if (den lt 0) then writeln(Error en el
denominador) until (den gt 0) end
begin leerFraccion ( num1 , den1 )
leerFraccion ( num2 , den2 ) ... end.
7
Procedimientos y Funciones
  • El programa principal invoca al procedimiento
    mediante una instrucción de llamada y se
    suspende.
  • Cuando un procedimiento es invocado el control
    pasa al procedimiento.
  • El bloque de instrucciones del procedimiento se
    ejecuta y cuando termina el control retorna al
    programa principal.
  • El mismo procedimiento puede ser invocado en
    distintos puntos del programa.
  • En cada invocación o llamada el control retorna a
    la instrucción siguiente.

8
Procedimientos y Funciones
programa principal
invoca y se suspende
leerfraccion
retorna
reanuda
invoca y se suspende
leerfraccion
retorna
reanuda
9
Procedimientos y Funciones
  • El procedimiento se comunica con el exterior a
    través del pasaje de parámetros.
  • En la invocación se incluye una lista de
    parámetros llamados argumentos o parámetros
    actuales.
  • En la definición se incluye una lista de
    parámetros llamados parámetros formales.
  • Los parámetros formales incluyen el tipo de dato
    y el tipo de pasaje.

10
Procedimientos y Funciones
  • El tipo de pasaje puede ser por valor o por
    referencia.
  • Si los valores computados por el procedimiento
    deben comunicarse hacia el exterior, el pasaje de
    parámetros es por referencia.
  • La lista de parámetros pasada por referencia está
    precedida por la palabra reservada var.
  • El pasaje de parámetros es por valor cuando los
    valores de los parámetros no van a ser
    modificados o la modificación no tiene que
    afectar al exterior del procedimiento.

11
Procedimientos y Funciones
procedure leerFraccion (var num , den
integer) begin write (Ingrese el
numerador) readln (num) repeat write
(Ingrese el denominador) readln (den)
if (den lt 0) then writeln(Error en el
denominador) until (den gt 0) end
begin leerFraccion ( num1 , den1 ) ... end.
12
Procedimientos y Funciones
procedure leerFraccion (var num , den
integer) begin write (Ingrese el
numerador) readln (num) repeat write
(Ingrese el denominador) readln (den)
if (den lt 0) then writeln(Error en el
denominador) until (den gt 0) end
begin leerFraccion ( num1 , den1 )
leerFraccion ( num2 , den2 ) ... end.
13
Procedimientos y Funciones
procedure sumaFraccion (num1 , den1
num2 , den2 integer
var nsum, dsum integer ) begin
nsum num1den2 num2den1 dsum den1
den2 end
begin ... sumaFraccion (num1, den1, num2,
den2, nsum, nden) ... end.
14
Procedimientos y Funciones
  • El procedimiento sumaFraccion recibe dos
    fracciones y genera una tercera fracción.
  • Cada fracción está asociada a dos variables
    enteras.
  • Las cuatro variables que mantienen a los
    operandos de la suma no van a ser modificadas,
    usamos pasaje de parámetros por valor.
  • Los valores de las dos variables que mantienen el
    resultado de la suma se computan en el
    procedimiento y deben ser comunicados al programa
    principal, el pasaje de parámetros es por
    referencia.

15
Procedimientos y Funciones
program suma var num1,num2,nsum,nred,
den1,den2,dsum,dred integer ... begin
leerFraccion (num1,den1) leerFraccion
(num2,den2) sumarFracciones (num1,den1,num2,den2
, nsum,dsum) reducirFraccion ( nsum ,
dsum , nred , dred ) mostrarFracción
(nred,dred) end.
16
Procedimientos y Funciones
  • El procedimiento reducirFraccion recibe una
    fracciones y genera otra.
  • Cada fracción está asociada a dos variables
    enteras.
  • Las dos variables que representan a la fracción
    recibida no van a cambiar de valor, el pasaje de
    parámetros es por valor.
  • Los valores de las dos variables que mantienen el
    resultado de la suma se computan en el
    procedimiento y deben ser comunicados al programa
    principal, el pasaje de parámetros es por
    referencia.

17
Procedimientos y Funciones
procedure reducirFraccion (num , den integer
var nred, dred
integer ) begin nred num div mcd
(num,den) dred den div mcd (num,den) end
begin ... reducirFraccion (nsum,dsum,nred,dred
) ... end.
18
Procedimientos y Funciones
  • El procedimiento reducirFraccion invoca a la
    función mcd que debe ser definida por el
    programador.
  • La función se invoca en el contexto del cómputo
    de una expresión.
  • Cuando la función es invocada el control pasa al
    bloque de instrucciones de la función.
  • El bloque de instrucciones de la función se
    ejecuta y cuando termina el control retorna al
    cómputo de la expresión
  • Al retornar se espera que la función haya
    computado un valor.

19
Procedimientos y Funciones
function mcd (n,m integer) integer var r
integer begin mayorPrimero (n,m) while (n mod
m ltgt 0) do begin r n mod m n
m m r end mcd n end
20
Procedimientos y Funciones
  • La invocación incluye la lista de parámetros
    actuales o argumentos, sobre los que se aplica la
    función.
  • La definición incluye la lista de parámetros
    formales cada uno acompanado de un tipo de dato y
    un tipo de pasaje
  • Aunque los parámetros de una función pueden pasar
    por referencia, por el momento adoptaremos la
    convención de que el pasaje sea por valor.

21
Procedimientos y Funciones
function mcd (n,m integer) integer var r
integer begin mayorPrimero (n,m) while (n mod
m ltgt 0) do begin r n mod m n
m m r end mcd n end
22
Procedimientos y Funciones
procedure mostrarFraccion (num , den
integer) begin writeln (num, /,den) end
begin ... sumaFraccion (num1, den1, num2,
den2, nsum, nden) reducirFraccion
(nsum,dsum,nred,dred) mostrarFraccion
(nred,dred) end.
23
Procedimientos y Funciones
program suma ... procedure leerFraccion (var
num,den integer) begin ... end procedure
sumarFracciones (num1,den1,
num2,den2 integer
var nsum,dsum integer ) begin
... end procedure reducirFraccion ( num,den
integer var
nred,dred integer) begin ... end begin
... end.
Write a Comment
User Comments (0)
About PowerShow.com