Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Trabajo de Computacion 8-8-16
Trabajo de Computacion 8-8-16
Trabajo de Computacion 8-8-16
Integrantes
Escuela: 47
Seccin: A
Llamadas de una funcin en el programa
principal
Las funciones, para poder ser ejecutadas, han de
ser llamadas o invocadas. Cualquier expresin puede
contener una llamada a una funcin que redirigir el
control del programa a la funcin nombrada. Normalmente
la llamada a una funcion se realizar desde la funcin
principal main ( ), aunque naturalmente tambin podr ser
desde otra funcin.
Se debe tener en cuenta que la funcin que llama a otra
funcin se denomina funcin llamadora y la funcin
controlada se denomina funcin llamada.
La funcin llamada que recibe el control del programa se
ejecuta desde el principio y cuando termina (se alcanza la
sentencia return, o la llave de cierre (}) si se omite return)
el control del programa vuelve y retorna a la funcin main (
) o a la funcin llamadora si no es main.
#include <iostream.h>
void func1 (void)
{
cout<<"segunda funcin /n" ;
return;
}
void func2 (void)
{
cout << " Tercera funcin/ n";
return;
}
main()
{
cout<<"Primera funcin llamada main()/n ";
func1(); //segunda funcin llamada
func2(); //tercera funcin llamada
cout<<"main se termina ";
return0; // Se devuelve el control a DOS
}
La salida de este programa es:
Primera funcin llamada main()
Segunda funcin
Tercera funicio
main se termina
Llamadas de un procedimiento en el
programa principal
La llamada desde el programa est dada por: P(a,b,c) x,y,z
son los parmetros formales del procedimiento, a,b,c son
los parmetros reales para el procedimiento y 2 y 5 son los
valores de los argumentos de a y b, respectivamente, antes
de la ejecucin de las instrucciones del procedimiento.
Tenemos entonces que x es un parmetro formal de
entrada que le corresponde el valor de a=2, y es un
parmetro formal de entrada/salida que le corresponde b=5
y z es un parmetro formal de salida, inicializado en la
declaracin, cuyo valor al final de la ejecucin del
procedimiento ser copiado por el parmetro real c. Es,
entonces, x,y,z un parmetro por valor, por referencia y por
valor resultado, respectivamente. Para ilustrar mejor los
valores iniciales y finales de los parmetros del
procedimiento, veremos como se encuentran asignados en
memoria, como cambian y cual es su estado final. Cada
cuadro representa una direccin de memoria, las flechas
son las referencias a las direcciones de memoria.
1. Momento de la llamada: a = 2 b = 5 c = 0 a -----> 2 b
-----> 5 c -----> 0 P(a,b,c) a -----> 2 b -----> 5 <----- y c -
----> 0 2 <----- x 0 <----- z Vemos que: [x, y := a,b]
Durante la ejecucin del procedimiento:
a -----> 2
b -----> 7 <----- y
c -----> 0
2 <----- x
3 <----- z
Vemos que los parmetros formales se modifican
3. Final de la ejecucin del procedimiento (vuelta al
programa llamador):
a -----> 2
b -----> 7 <----- y
c -----> 3
Vemos que [b,c := y,z]
Vemos que como x y z son parmetros por valor, lo que se
copia en el parmetro correspondiente es
el valor a y c, es decir, se pasa el valor y no la direccin de
memoria. y es un parmetro por
referencia, por lo que se pasa la direccin de memoria de
b.
Utilizaremos estos conceptos para analizar las reglas de
correctitud de procedimientos. Es
importante notar las sustituciones textuales que se hacen
en el momento de la llamada y al momento
de finalizar la ejecucin del procedimiento.
function creaMensaje() {
var mensaje = Mensaje de prueba;
}
creaMensaje();
alert(mensaje);
El ejemplo anterior define en primer lugar una funcin
llamada creaMensaje que crea una variable llamada
mensaje. A continuacin, se ejecuta la funcin mediante la
llamada creaMensaje(); y seguidamente, se muestra
mediante la funcin alert() el valor de una variable
llamada mensaje.
function creaMensaje() {
var mensaje = Mensaje de prueba;
alert(mensaje);
}
creaMensaje();
Adems de variables locales, tambin existe el concepto
de variable global, que est definida en cualquier punto
del programa (incluso dentro de cualquier funcin).
function muestraMensaje() {
alert(mensaje);
}
El cdigo anterior es el ejemplo inverso al mostrado
anteriormente. Dentro de la funcin muestraMensaje() se
quiere hacer uso de una variable llamada mensaje y que
no ha sido definida dentro de la propia funcin. Sin
embargo, si se ejecuta el cdigo anterior, s que se muestra
el mensaje definido por la variable mensaje.
function creaMensaje() {
mensaje = "Mensaje de prueba";
}
creaMensaje();
alert(mensaje);
conceptualmente objetos.
Diferencia entre funciones y
procedimientos
*PROCEDIMIENTOS
La declaracin de un procedimiento definido por el usuario
se debe hacer en el bloque de declaraciones de
procedimientos del mdulo desde el cual ser invocado, y
consta del encabezamiento y los bloques de declaraciones y
de instrucciones (cuerpo del subprograma). El
encabezamiento est formado por la palabra PROCEDURE
seguida del nombre o identificador del procedimiento y,
opcionalmente, una lista de parmetros.
procedure A_Mayusculas;
begin
longitud := length(cadena);
for carcter := 1 to longitud do
cadena[carcter] := UpCase(cadena[carcter]);
end; { A_Mayusculas }
*FUNCIONES
Una funcin es similar a un procedimiento, pero a
diferencia de ste, una funcin se usa para devolver un solo
valor de tipo simple a su punto de llamada. Esta llamada
puede hacerse dentro de una expresin como si fuera una
variable ordinaria de tipo simple. El nombre de una funcin
puede ir seguido de uno o ms parmetros actuales
encerrados entre parntesis y separados por coma.
program factorial;
var
numero : real;
function fac(n : Integer) : real;
var
i : integer;
acum : real;
begin
acum := 1;
for i := 2 to trunc(n) do
acum := acum * i;
begin
Repeat
Write('Numero a calcular su factorial ?');
Readln(numero);
Writeln(fac(numero):40:0);
Until numero = 0;
end.
Ejemplos
fact n = fact' n 1
fact' 0 acum = acum
fact' n acum = fact' (n-1) (n*acum)
long [] = 0
long (x:xs) = 1 + long xs
Ntese que la distincin de casos se hace en base a si la lista
es vaca o no. Sabemos que la definicin termina porque en
cada llamada recursiva se reduce en una unidad la longitud
de la lista, por lo que en algn momento llegar a estar
vaca.