viernes, 23 de octubre de 2015

MODULO O FUNCIONES


II.FUNCIÓN

Una función es un subprograma que tiene un valor de retorno, el cual puede ser utilizado dentro de la evaluación de una expresión. El diagrama sintáctico para la declaración de una función es el siguiente:

 Ejemplo:

function Tan( angulo : real) : real;         { Cabecera de función }

     begin

           Tan := sin(angulo)/cos(angulo)           { Bloque }

     end;

 2.1TIPOS DE FUNCIONES
2.1.1FUNCIONES  INTERNAS:

Las funciones predefinidas, también llamadas estándar, son las que el propio lenguaje pone a disposición del programador.    Se las  llama palabra reservadas
Ejemplo:

sin(x:real)
seno de x
cos(x:real)
coseno de x
sqr(x:real)
cuadrado de x
sqrt(x:real)
raíz cuadrada de x
abs(x:real)
valor absoluto de x
ln(x:real)
logaritmo neperiano de x
int(x:real)
parte entera de x
frac(x:real)
parte decimal de x
pred(x:tipo ordinal)
predecesor de x
succ(x:tipo ordinal)
sucesor de x
pi (*no args.*)
valor de la constante pi
odd(x:integer)
si x es o no impar

 2.1.2FUNCIONES CREADAS  POR EL USUARIO:
 Estas  funciones  son las  que diseña  el programadora  para  calcular un valor  dentro de  sus el programa   las  misma  cuenta  con  los principios de declaración  que  están
Función nombre (parámetros): tipo
(Declaración de variables locales)
begin
            <cuerpo de la función>
            Nombre de la función:= valor de la función
End;

2.2  COMPONENTES
2.2.1. Declaración
Declaración de funciones La declaración de una función tiene la siguiente forma:
Ejemplos:
Función Nombre (p1, p2,...): tipo {declaraciones locales y subprogramas}
 begin
<Cuerpo de la función>
 Nombre:= valor de la función
end;
p1, p2,... lista de parámetros formales tipo  de dato del resultado que devuelve la función
Función verifica: boolean;
Función sin parámetros formales}
Función cambia (Var valor_1, valor_2: real): real;
 Función potencia (base, exponente: real): r;

 2.2.3 ARGUMENTO O PARAMETRO
Es una variable utilizada para recibir valores de entrada en una rutina o subrutina. Dichos valores, que serán enviados desde la rutina invocante, son llamados argumentos. La subrutina usa los valores asignados a sus parámetros para alterar su comportamiento en tiempo de ejecución. La mayor parte de los lenguajes de programación pueden definir subrutinas que aceptan cero o más argumentos.
Paso por valor
El paso de parámetros por valor consiste en copiar el contenido de la variable que queremos pasar en otra dentro del ámbito local de la subrutina, consiste pues en copiar el contenido de la memoria del argumento que se quiere pasar a otra dirección de memoria, correspondiente al argumento dentro del ámbito de dicha subrutina. Se tendrán dos valores duplicados e independientes, con lo que la modificación de uno no afecta al otro.
Paso por referencia
El paso de parámetros por referencia consiste en proporcionar a la subrutina a la que se le quiere pasar el argumento la dirección de memoria del dato. En este caso se tiene un único valor referenciado (o apuntado) desde dos puntos diferentes, el programa principal y la subrutina a la que se le pasa el argumento, por lo que cualquier acción sobre el parámetro se realiza sobre la misma posición de memoria.
Paso por valor resultado
Es un tipo poco usado en los lenguajes de programación actuales. Se basa en que dentro de la función se trabaja como si los argumentos hubieran sido pasados por valor pero al acabar la función los valores que tengan los argumentos serán copiados a las variables que pertenecían.
2.3 INVOCACIÓN Y RETORNO DE LA FUNCION

Para llamar a una función basta con hacer referencia a su nombre y si la misma requiere de parámetros estos deberán indicarse dentro de paréntesis. Para llamar a una función que no requiera de parámetros se deberá indicar el nombre de la misma seguida de paréntesis vacíos.
Las funciones se invocan de la siguiente manera:
<Nombre función> (parámetros locales);
Parámetros locales es una lista de variables y/o constantes separadas por comas. La existencia de parámetros locales dependerá de que existan parámetros formales en la declaración de la función.

2.4 ÁMBITO O ALCANCE  DE LAS VARIABLES

Las variables se clasifican en LOCALES y GLOBALES. Una variable LOCAL es una variable declarada dentro de un subprograma, y el significado de dicha variable se limita a ese subprograma y a los módulos que éste contiene. Cuando otro subprograma utiliza el mismo nombre de variable, se crea una variable diferente en otra posición de la memoria. Por eso, si un subprograma asigna un valor a una de las variables locales, tal valor no es accesible a los otros subprogramas.
Cuando se desea que otros subprogramas tengan acceso al valor de una variable, ésta debe declararse como GLOBAL, lo cual se logra declarándola en el módulo que abarca a dichos subprogramas.
Para tener la seguridad de que una variable va a tener un alcance GLOBAL, conviene declararla en el módulo principal.

2.5 PASO DE PARÁMETROS


Al invocar a un subprograma se le pueden pasar parámetros, los cuales pueden consistir de valores de variables declaradas en el módulo invocador. El paso de tales parámetros puede hacerse de dos maneras:


         Por valor

         Por referencia

2.5 1PASO POR VALOR


El paso de parámetros por valor consiste en enviar una COPIA del valor de la variable al módulo invocado. De esta manera se asegura que el valor de la variable sólo puede ser modificado por el módulo que la declaró.

Si la palabra Var no aparece delante del parámetro formal en un procedimiento, Turbo Pascal supone que el parámetro formal es un parámetro por valor.

Ejemplo:

Program Suma_por_Valor;


{El siguiente programa realiza la suma de dos números}

Uses Crt;


Var


A, B,C:integer;

procedure suma(A,B,C :integer);

begin

C:= A + B

end;

begin


ClrScr; C:=10; A:=10; B:=10; suma (A, B, C);

WriteLn (A,',', B,',', C); ReadKey; ClrScr end.

El resultado de la ejecución del programa sería: 10, 10,10

2.5.2PASO POR REFERENCIA


En el caso de que se requiera que el valor de una variable sea modificado por el módulo invocado, debe hacerse el paso de parámetro por referencia, por medio del cual el módulo invocado tiene acceso a la dirección en que se guarda el valor a modificar.

Para aclarar los conceptos de paso por valor y paso por referencia, analicemos el programa de suma y Multiplicación de matrices dado en las secciones anteriores. Observamos que las invocaciones a subprogramas son similares en los casos de paso por valor y paso por referencia.

Por ejemplo, las invocaciones a los procedimientos imprimen y suma quedan de la siguiente manera:

imprime('C',mat_c,ren_a,col_b); suma(mat_a,mat_b,mat_c,ren_a, col_a); y sus respectivas declaraciones son :

procedure imprime(nmat:char;mat_f:mat;ren_f,col_f:integer); procedure suma(mat_f_a,mat_f_b:mat;Var mat_f_c:mat;ren_f,col_f:integer);


Vemos que en la declaración del procedimiento suma existe la parte: Var mat_f_c: mat la cual significa lo siguiente:

"La variable mat_f_c contiene la dirección de la variable correspondiente en la invocación (mat_c), y es de tipo mat”

Esto significa que el paso del parámetro mat_c se hizo por referencia, y que el procedimiento invocado.

(Suma) puede modificar el valor de mat_c. Ejemplo:

Program Suma_por_Referencia; {El siguiente programa realiza la suma de dos números}

Uses Crt;

Var


A, B, C: integer; procedure suma(A, B: integer;

Var C: integer);

 begin

C:= A + B

end;


begin


ClrScr;


C:=10; A:=10; B:=10;

 Suma(A, B, C);

WriteLn (A,',',B,',',C); ReadKey;

ClrScr end.

El resultado de la ejecución del programa sería: 10, 10,20
ACTIVIDADES

1 . EJEMPLO DE  ARGUMENTO POR  VALOR  Y REFERENCIA




 EJEMPLO  2  DE  ARGUMENTO  POR  VALOR  Y REFERENCIA







 EJEMPLO DE  FUNCIONES  INTERNAS 





No hay comentarios:

Publicar un comentario