SlideShare una empresa de Scribd logo
Apuntes del Prof. Hugo Cuello Módulos: Funciones primitivas y definidas por el usuario
Clase 4 AyE U.T.N. F.R.B.A. Página 1
CLASE 4: Módulos. Funciones: Primitivas y definidas por el usuario.
M
Mó
ód
du
ul
lo
os
s:
:
En la programación modular, los programas se dividen en módulos. Un módulo
es una unidad lógica de código e independiente de otros módulos, en el cual es posible
analizar, codificar y probar por separado. Cada programa tiene un módulo o bloque
principal que actúa como coordinador o controlador, el cual deriva el control a otros
módulos. A su vez un módulo –sub-módulo- puede ceder el control temporalmente a
otro módulo, el cual una vez finalizado deberá devolver el control al módulo que lo
invocó. Ya que, los módulos son independientes unos de otros, una consecuencia de
esto sería poder dividir el trabajo a distintos programadores a efectos de acelerar los
tiempos. Además a un módulo se lo podrá modificar, sin alterar a otros módulos.
También un módulo puede ser invocado desde distintos puntos del algoritmo y con
distintos valores de argumentos, permitiendo de esta manera la reusabilidad del código.
Existen dos formatos de módulos, a saber:

 F
Fu
un
nc
ci
io
on
ne
es
s
 P
Pr
ro
oc
ce
ed
di
im
mi
ie
en
nt
to
os
s
Funciones:
Una función es un módulo que presenta las siguientes partes:

 U
Un
na
a c
ca
ab
be
ec
ce
er
ra
a
 U
Un
n c
cu
ue
er
rp
po
o
La cabecera presenta las siguientes partes:

 E
El
l n
no
om
mb
br
re
e d
de
e l
la
a f
fu
un
nc
ci
ió
ón
n

 U
Un
na
a l
li
is
st
ta
a d
de
e p
pa
ar
rá
ám
me
et
tr
ro
os
s,
, q
qu
ue
e p
po
od
dr
rí
ía
a e
es
st
ta
ar
r v
va
ac
cí
ía
a
 E
El
l t
ti
ip
po
o d
de
e v
va
al
lo
or
r –
–s
si
im
mp
pl
le
e-
- q
qu
ue
e d
de
ev
vo
ol
lv
ve
er
rá
á l
la
a f
fu
un
nc
ci
ió
ón
n.
.
El cuerpo de la función es un bloque, dentro del cual se escriben las sentencias.
Deberá existir alguna sentencia que asigne al nombre de la función el resultado de una
expresión que debe ser de igual tipo que el valor devuelto por la función. Al finalizar la
función, el último valor asignado, será el valor que retorne. Una función 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 función pueda ser ejecutada, se deberá
llamarla o invocarla. Generalmente los parámetros formales –aquellos que se definen
en la cabecera de la función, son pasados por valor, en estos casos, se trabaja con una
copia del valor pasado desde la invocación, cualquier modificación que se realice en los
parámetros formales, no altera a los parámetros actuales –los indicados en el momento
de la invocación-. Una función se la invoca en forma indirecta, es decir, como
perteneciente a una sentencia, como p.e., la asignación interna, o como formando parte
de una condición, etc..
Una función puede necesitar trabajar con variables internas a su ámbito, en estos
casos esas variables definidas dentro de la función son denominadas variables locales.
Fuera de la función en que han sido definidas no existen, salvo en los caos en que la
función invoque a un módulo definido dentro de su ámbito, allí serán reconocidas. La
comunicación entre el módulo que invocó a la función y la función invocada se
establece por medio de los parámetros. Si bien una función puede devolver valores por
medio de sus parámetros, por el momento no se emplearán, además, en las últimas
Apuntes del Prof. Hugo Cuello Módulos: Funciones primitivas y definidas por el usuario
Clase 4 AyE U.T.N. F.R.B.A. Página 2
versiones de Turbo Pascal, una función también puede ser invocada en forma directa,
pero esta variante se tratará de evitar su uso.
Estructura de una función: -definición-
Cabecera
Cuerpo
Llamada o invocación a una función
Ejemplo:
Observación: Los parámetros en la invocación también suelen llamarse
a
ar
rg
gu
um
me
en
nt
to
os
s. En estos casos los parámetros en la cabecera de los módulos se los puede
indicar como p
pa
ar
rá
ám
me
et
tr
ro
os
s a secas.
F
Fu
un
nc
ci
io
on
ne
es
s p
pr
ri
im
mi
it
ti
iv
va
as
s n
nu
um
mé
ér
ri
ic
ca
as
s:
A continuación se verán las funciones numéricas predefinidas por el lenguaje
Pascal, para nosotros serán cajas negras, debido a que solo sabremos el nombre de la
función, los parámetros 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 función y que tarea realiza la función,
pero no sabremos nada acerca de cómo lo realiza.
Abs(x):tipo_x: Retorna el valor absoluto de x, en donde x es cualquier valor de tipo
numérico. 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 raíz 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 parámetro 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.
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.
NomFunc (lst_par_formales : tipo1 ): tipo2
Sentencias
NomFunc  expresión
R
Var  NomFunc(lst_par_actuales)
Apuntes del Prof. Hugo Cuello Módulos: Funciones primitivas y definidas por el usuario
Clase 4 AyE U.T.N. F.R.B.A. Página 3
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
función 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 más
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 número irracional π = 3.1415926535897932385
Random:real
Random(x:longint):longint: Retorna un número al azar.
Random sin argumento genera un número al azar –en realidad pseudoaleatorio- en
el intervalo semicerrado [0; 1).
Random con argumento genera un número 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 generarán las mismas
secuencias de valores. Por esa razón si queremos generar valores aleatorios para que en
distintas ejecuciones se generen distintas secuencias de valores, debemos utilizar
randomize al comienzo del programa; esto prepara al algoritmo de generación de
números aleatorios para que la semilla, -así se denomina al punto inicial para la
generación de los valores aleatorios- quede preparada con un valor de arranque, que será
distinto en cada nueva ejecución del programa.
F
Fu
un
nc
ci
io
on
ne
es
s d
de
ef
fi
in
ni
id
da
as
s p
po
or
r e
el
l u
us
su
ua
ar
ri
io
o
Como se vio en párrafos previos, una función está formada por una cabecera que
contiene el nombre de la función, eventualmente una lista de parámetros y el tipo de
valor devuelto y el cuerpo en donde se indican las acciones a realizar, en donde, al
Apuntes del Prof. Hugo Cuello Módulos: Funciones primitivas y definidas por el usuario
Clase 4 AyE U.T.N. F.R.B.A. Página 4
menos una de estas acciones se debe asignar al nombre de la función el resultado de una
expresión del mismo tipo definido en la cabecera. Siguiendo estos pasos el usuario
podrá definir sus propias funciones. A continuación se desarrollan algunas de estas
funciones, de tratamiento numérico.
Aplicación: Dados dos valores enteros a y b, encontrar la fracción irreducible de a / b.
Mcd( x, y : longint) : longint
Nombre de
la función
Lista de
parámetros
formales
Tipo de valor
retornado por
la función
y <> 0
resto  x mod y
x  y
y  resto
Mcd  x
R
Cabecera
de la
función
Cuerpo de
la función
Valor que
retorna
a  24
b  18
a,’/’,b,’=’, a/maxdiv,’/’,b/maxdiv
maxdiv  mcd(a,b)
C
F
Invocación
a la función

Más contenido relacionado

PPTX
Módulo 4 (sin estilo)
PPTX
PPTX
PPTX
Funciones
PDF
Funciones con vectores y matrices1
PDF
vectores y matrices
PPT
FUNCIONES LENGUAJE C
PPT
Funciones en C
Módulo 4 (sin estilo)
Funciones
Funciones con vectores y matrices1
vectores y matrices
FUNCIONES LENGUAJE C
Funciones en C

Similar a 04 - Módulos. Funciones.doc (20)

DOCX
FUNCIONES EN LENGUAJE C
DOCX
Funciones lenguaje c modulo4
PDF
Capítulo 6 funciones y procedimiento
PPTX
Actividad 20
PPT
Funcionesenlenguaje c
PDF
Programación 1: funciones en C
PPT
11funciones 1231096290787715-2
PPTX
Presen iii 26 funciones
DOCX
Elemento 4
DOCX
Unidad 2
DOCX
ODP
Fundamentos de programación en scilab
PDF
CLASE 04.pdf
PPT
Metodología y Tecnología de la Programación I (II Bimestre)
PDF
PDF
CLASE 01.pdf
PPTX
Funciones en c++
FUNCIONES EN LENGUAJE C
Funciones lenguaje c modulo4
Capítulo 6 funciones y procedimiento
Actividad 20
Funcionesenlenguaje c
Programación 1: funciones en C
11funciones 1231096290787715-2
Presen iii 26 funciones
Elemento 4
Unidad 2
Fundamentos de programación en scilab
CLASE 04.pdf
Metodología y Tecnología de la Programación I (II Bimestre)
CLASE 01.pdf
Funciones en c++
Publicidad

Último (20)

PDF
ciencias-1.pdf libro cuarto basico niños
PDF
Lección 6 Escuela Sab. A través del mar rojo.pdf
PDF
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
PDF
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
DOCX
V UNIDAD - SEGUNDO GRADO. del mes de agosto
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
PDF
biología es un libro sobre casi todo el tema de biología
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
PDF
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PDF
Fundamentos_Educacion_a_Distancia_ABC.pdf
DOCX
V UNIDAD - PRIMER GRADO. del mes de agosto
PDF
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
PDF
Metodologías Activas con herramientas IAG
PDF
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
PPT
Cosacos y hombres del Este en el Heer.ppt
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
ciencias-1.pdf libro cuarto basico niños
Lección 6 Escuela Sab. A través del mar rojo.pdf
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
Crear o Morir - Andres Oppenheimer Ccesa007.pdf
V UNIDAD - SEGUNDO GRADO. del mes de agosto
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
biología es un libro sobre casi todo el tema de biología
Punto Critico - Brian Tracy Ccesa007.pdf
Tarea De El Colegio Coding For Kids 1 y 2
TRAUMA_Y_RECUPERACION consecuencias de la violencia JUDITH HERMAN
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
Fundamentos_Educacion_a_Distancia_ABC.pdf
V UNIDAD - PRIMER GRADO. del mes de agosto
La Evaluacion Formativa en Nuevos Escenarios de Aprendizaje UGEL03 Ccesa007.pdf
Metodologías Activas con herramientas IAG
Romper el Circulo de la Creatividad - Colleen Hoover Ccesa007.pdf
Cosacos y hombres del Este en el Heer.ppt
Escuela Sabática 6. A través del Mar Rojo.pdf
Publicidad

04 - Módulos. Funciones.doc

  • 1. Apuntes del Prof. Hugo Cuello Módulos: Funciones primitivas y definidas por el usuario Clase 4 AyE U.T.N. F.R.B.A. Página 1 CLASE 4: Módulos. Funciones: Primitivas y definidas por el usuario. M Mó ód du ul lo os s: : En la programación modular, los programas se dividen en módulos. Un módulo es una unidad lógica de código e independiente de otros módulos, en el cual es posible analizar, codificar y probar por separado. Cada programa tiene un módulo o bloque principal que actúa como coordinador o controlador, el cual deriva el control a otros módulos. A su vez un módulo –sub-módulo- puede ceder el control temporalmente a otro módulo, el cual una vez finalizado deberá devolver el control al módulo que lo invocó. Ya que, los módulos son independientes unos de otros, una consecuencia de esto sería poder dividir el trabajo a distintos programadores a efectos de acelerar los tiempos. Además a un módulo se lo podrá modificar, sin alterar a otros módulos. También un módulo puede ser invocado desde distintos puntos del algoritmo y con distintos valores de argumentos, permitiendo de esta manera la reusabilidad del código. Existen dos formatos de módulos, a saber:   F Fu un nc ci io on ne es s  P Pr ro oc ce ed di im mi ie en nt to os s Funciones: Una función es un módulo que presenta las siguientes partes:   U Un na a c ca ab be ec ce er ra a  U Un n c cu ue er rp po o La cabecera presenta las siguientes partes:   E El l n no om mb br re e d de e l la a f fu un nc ci ió ón n   U Un na a l li is st ta a d de e p pa ar rá ám me et tr ro os s, , q qu ue e p po od dr rí ía a e es st ta ar r v va ac cí ía a  E El l t ti ip po o d de e v va al lo or r – –s si im mp pl le e- - q qu ue e d de ev vo ol lv ve er rá á l la a f fu un nc ci ió ón n. . El cuerpo de la función es un bloque, dentro del cual se escriben las sentencias. Deberá existir alguna sentencia que asigne al nombre de la función el resultado de una expresión que debe ser de igual tipo que el valor devuelto por la función. Al finalizar la función, el último valor asignado, será el valor que retorne. Una función 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 función pueda ser ejecutada, se deberá llamarla o invocarla. Generalmente los parámetros formales –aquellos que se definen en la cabecera de la función, son pasados por valor, en estos casos, se trabaja con una copia del valor pasado desde la invocación, cualquier modificación que se realice en los parámetros formales, no altera a los parámetros actuales –los indicados en el momento de la invocación-. Una función se la invoca en forma indirecta, es decir, como perteneciente a una sentencia, como p.e., la asignación interna, o como formando parte de una condición, etc.. Una función puede necesitar trabajar con variables internas a su ámbito, en estos casos esas variables definidas dentro de la función son denominadas variables locales. Fuera de la función en que han sido definidas no existen, salvo en los caos en que la función invoque a un módulo definido dentro de su ámbito, allí serán reconocidas. La comunicación entre el módulo que invocó a la función y la función invocada se establece por medio de los parámetros. Si bien una función puede devolver valores por medio de sus parámetros, por el momento no se emplearán, además, en las últimas
  • 2. Apuntes del Prof. Hugo Cuello Módulos: Funciones primitivas y definidas por el usuario Clase 4 AyE U.T.N. F.R.B.A. Página 2 versiones de Turbo Pascal, una función también puede ser invocada en forma directa, pero esta variante se tratará de evitar su uso. Estructura de una función: -definición- Cabecera Cuerpo Llamada o invocación a una función Ejemplo: Observación: Los parámetros en la invocación también suelen llamarse a ar rg gu um me en nt to os s. En estos casos los parámetros en la cabecera de los módulos se los puede indicar como p pa ar rá ám me et tr ro os s a secas. F Fu un nc ci io on ne es s p pr ri im mi it ti iv va as s n nu um mé ér ri ic ca as s: A continuación se verán las funciones numéricas predefinidas por el lenguaje Pascal, para nosotros serán cajas negras, debido a que solo sabremos el nombre de la función, los parámetros 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 función y que tarea realiza la función, pero no sabremos nada acerca de cómo lo realiza. Abs(x):tipo_x: Retorna el valor absoluto de x, en donde x es cualquier valor de tipo numérico. 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 raíz 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 parámetro 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. 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. NomFunc (lst_par_formales : tipo1 ): tipo2 Sentencias NomFunc  expresión R Var  NomFunc(lst_par_actuales)
  • 3. Apuntes del Prof. Hugo Cuello Módulos: Funciones primitivas y definidas por el usuario Clase 4 AyE U.T.N. F.R.B.A. Página 3 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 función 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 más 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 número irracional π = 3.1415926535897932385 Random:real Random(x:longint):longint: Retorna un número al azar. Random sin argumento genera un número al azar –en realidad pseudoaleatorio- en el intervalo semicerrado [0; 1). Random con argumento genera un número 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 generarán las mismas secuencias de valores. Por esa razón si queremos generar valores aleatorios para que en distintas ejecuciones se generen distintas secuencias de valores, debemos utilizar randomize al comienzo del programa; esto prepara al algoritmo de generación de números aleatorios para que la semilla, -así se denomina al punto inicial para la generación de los valores aleatorios- quede preparada con un valor de arranque, que será distinto en cada nueva ejecución del programa. F Fu un nc ci io on ne es s d de ef fi in ni id da as s p po or r e el l u us su ua ar ri io o Como se vio en párrafos previos, una función está formada por una cabecera que contiene el nombre de la función, eventualmente una lista de parámetros y el tipo de valor devuelto y el cuerpo en donde se indican las acciones a realizar, en donde, al
  • 4. Apuntes del Prof. Hugo Cuello Módulos: Funciones primitivas y definidas por el usuario Clase 4 AyE U.T.N. F.R.B.A. Página 4 menos una de estas acciones se debe asignar al nombre de la función el resultado de una expresión del mismo tipo definido en la cabecera. Siguiendo estos pasos el usuario podrá definir sus propias funciones. A continuación se desarrollan algunas de estas funciones, de tratamiento numérico. Aplicación: Dados dos valores enteros a y b, encontrar la fracción irreducible de a / b. Mcd( x, y : longint) : longint Nombre de la función Lista de parámetros formales Tipo de valor retornado por la función y <> 0 resto  x mod y x  y y  resto Mcd  x R Cabecera de la función Cuerpo de la función Valor que retorna a  24 b  18 a,’/’,b,’=’, a/maxdiv,’/’,b/maxdiv maxdiv  mcd(a,b) C F Invocación a la función