Vous êtes sur la page 1sur 4

Apuntes del Prof.

Hugo Cuello Mdulos: Funciones primitivas y definidas por el usuario

CLASE 4: Mdulos. Funciones: Primitivas y definidas por el usuario.

M d u l o s :
En la programacin modular, los programas se dividen en mdulos. Un mdulo es una unidad lgica de cdigo e independiente de otros mdulos, en el cual es posible analizar, codificar y probar por separado. Cada programa tiene un mdulo o bloque principal que acta como coordinador o controlador, el cual deriva el control a otros mdulos. A su vez un mdulo sub-mdulo- puede ceder el control temporalmente a otro mdulo, el cual una vez finalizado deber devolver el control al mdulo que lo invoc. Ya que, los mdulos son independientes unos de otros, una consecuencia de esto sera poder dividir el trabajo a distintos programadores a efectos de acelerar los tiempos. Adems a un mdulo se lo podr modificar, sin alterar a otros mdulos. Existen dos formatos de mdulos, a saber:

Funciones Procedimientos

Funciones: Una funcin es un mdulo que presenta las siguientes partes:


Una cabecera Un cuerpo

La cabecera presenta las siguientes partes:


El nombre de la funcin Una lista de parmetros, que podra estar vaca El tipo de valor simple- que devolver la funcin.

El cuerpo de la funcin es un bloque, dentro del cual se escriben las sentencias. Deber existir alguna sentencia que asigne al nombre de la funcin el resultado de una expresin que debe ser de igual tipo que el valor devuelto por la funcin. Al finalizar la funcin, el ltimo valor asignado, ser el valor que retorne. Una funcin la podemos ver como una caja negra no nos interesa saber su interior- o como una caja transparente si nos interesa saber su interior-. Para que una funcin pueda ser ejecutada, se deber llamarla o invocarla. Generalmente los parmetros formales aquellos que se definen en la cabecera de la funcin, son pasados por valor, en estos casos, se trabaja con una copia del valor pasado desde la invocacin, cualquier modificacin que se realice en los parmetros formales, no altera a los parmetros actuales los indicados en el momento de la invocacin-. Una funcin se la invoca en forma indirecta, es decir, como perteneciente a una sentencia, como p.e., la asignacin interna, o como formando parte de una condicin, etc.. Una funcin puede necesitar trabajar con variables internas a su mbito, en estos casos esas variables definidas dentro de la funcin son denominadas variables locales. Fuera de la funcin en que han sido definidas no existen, salvo en los caos en que la funcin invoque a un mdulo definido dentro de su mbito, all sern reconocidas. La comunicacin entre el mdulo que invoc a la funcin y la funcin invocada se Clase 4 AyE U.T.N. F.R.B.A. Pgina 1

Apuntes del Prof. Hugo Cuello Mdulos: Funciones primitivas y definidas por el usuario

establece por medio de los parmetros. Si bien una funcin puede devolver valores por medio de sus parmetros, por el momento no se emplearn. Estructura de una funcin: -definicinNomFunc (lst_par_formales : tipo1 ): tipo2 Sentencias NomFunc ! expresin R Llamada o invocacin a una funcin Ejemplo: Var ! NomFunc(lst_par_actuales) Observacin: Los parmetros en la invocacin tambin suelen llamarse argumentos. En estos casos los parmetros en la cabecera de los mdulos se los puede indicar como parmetros a secas. Funciones primitivas numricas: A continuacin se vern las funciones numricas predefinidas por el lenguaje Pascal, para nosotros sern cajas negras, debido a que solo sabremos el nombre de la funcin, los parmetros a pasar, de qu tipo han de ser c/u. de ellos y en que orden deben aparecer el tipo de valor retornado por la funcin y que tarea realiza la funcin, pero no sabremos nada acerca de cmo lo realiza. Abs(x):tipo_x: Retorna el valor absoluto de x, en donde x es cualquier valor de tipo numrico. El valor absoluto de x es x, si x >= 0 o es, x si x < 0, por lo tanto el valor retornado es siempre positivo. Sqrt(x:real):real: Retorna la raz cuadrada de x, en donde x es >= 0, el tipo de resultado es real. Sqr(x):tipo_x: Retorna el cuadrado de x, es decir, x * x. El tipo de resultado es del mismo tipo que el parmetro x. Sin(x:real):real: Retorna el seno de x. X expresa un ngulo en radianes. Para convertir grados a radianes, si x est expresado en grados, utilizar: radianes ! x * PI / 180. Cos(x:real):real: Retorna el coseno de x. X expresa un ngulo en radianes. Para convertir grados a radianes, si x est expresado en grados, utilizar: radianes ! x * PI / 180. Clase 4 AyE U.T.N. F.R.B.A. Pgina 2 Cuerpo Cabecera

Apuntes del Prof. Hugo Cuello Mdulos: Funciones primitivas y definidas por el usuario

ArcTan(x:real):real: Retorna el arco tangente o tg-1 de x. El resultado es la medida del ngulo expresado en radianes. Para convertir de radianes a grados, utilizar: grados ! arctan(x) * 180 / PI. Ln(x:real):real: Retorna el logaritmo natural de x, con x > 0. Para obtener el logaritmo de otra base, utilizar: log10 ! ln(x) / ln(10), log4 ! ln(x) / ln(4), es decir, se divide el ln(x) sobre el ln de la base a pasar. Exp(x:real):real: Retorna el exponencial o antilogaritmo o ln-1 de x. Exp(x) = ex. Exp(1) = e. Para convertir la base e a otra base, utilizar: expo ! exp(x * ln(b)), es decir, multiplicar el valor de x por el ln de la base b, a pasar, y a este resultado aplicar la funcin exponencial. Int(x:real):real: Retorna la parte entera de x, es decir, x redondeado hacia cero; el resultado es de tipo real, con la parte decimal cero. Trunc(x:real):longint: Retorna la parte entera de x, es decir, x redondeado hacia cero, pero a diferencia de int, el tipo de resultado es de tipo longint. Ocurrir un error si el resultado no est dentro del intervalo de un longint. Round(x:real):longint: Retorna la parte entera de x redondeado al entero ms cercano, el tipo de resultado es de tipo longint. Ocurrir un error si el resultado no est dentro del intervalo de un longint. round(x) = trunc(x+0.5) si x >= 0 y round(x) = trunc(x-0.5) si x < 0. round(3.2) = 3 round(5.7) = 6 round(-451.3) = -451 round(-2.7) = -3 Frac(x:real):real: Retorna la parte decimal o fraccionaria de x, esto es: frac(x) = x int(x). Frac(23.79) = 0.79. frac(-12.43) = -0.43. Odd(x:longint):boolean: Retorna true si x es impar o false si x es par. Pi:real: Retorna el nmero irracional = 3.1415926535897932385 Random:real Random(x:longint):longint: Retorna un nmero al azar. Random sin argumento genera un nmero al azar en realidad pseudoaleatorio- en el intervalo semicerrado [0; 1). Random con argumento genera un nmero al azar en el intervalo [0; x 1]. Random(6) + 1, generar un valor en el intervalo [1; 6] Random(b a + 1) + a, con a <= b, generar un valor en el intervalo [a; b] Randomize Procedimiento-: Los valores generados por random son pseudoaleatorios, debido a que, en distintas ejecuciones se generarn las mismas secuencias de valores. Por esa razn si queremos generar valores aleatorios para que en Clase 4 AyE U.T.N. F.R.B.A. Pgina 3

Apuntes del Prof. Hugo Cuello Mdulos: Funciones primitivas y definidas por el usuario

distintas ejecuciones se generen distintas secuencias de valores, debemos utilizar randomize al comienzo del programa; esto prepara al algoritmo de generacin de nmeros aleatorios para que la semilla, -as se denomina al punto inicial para la generacin de los valores aleatorios- quede preparada con un valor de arranque, que ser distinto en cada nueva ejecucin del programa.

Funciones definidas por el usuario


Como se vi en prrafos previos, una funcin est formada por una cabecera que contiene el nombre de la funcin, eventualmente una lista de parmetros y el tipo de valor devuelto y el cuerpo en donde se indican las acciones a realizar, en donde, al menos una de estas acciones se debe asignar al nombre de la funcin el resultado de una expresin del mismo tipo definido en la cabecera. Siguiendo estos pasos el usuario podr definir sus propias funciones. A continuacin se desarrollan algunas de estas funciones, de tratamiento numrico.
Lista de parmetros formales Tipo de valor retornado por la funcin

Nombre de la funcin Cabecera de la funcin

Mcd( x, y : longint) : longint y <> 0 resto ! x mod y

Cuerpo de la funcin

x!y y ! resto

Valor que retorna

Mcd ! x R

Aplicacin: Dados dos valores enteros a y b, encontrar la fraccin irreducible de a / b. C a ! 24 b ! 18 maxdiv ! mcd(a,b) a,/,b,=, a/maxdiv,/,b/maxdiv F Clase 4 AyE U.T.N. F.R.B.A. Pgina 4
Invocacin a la funcin

Vous aimerez peut-être aussi