SlideShare una empresa de Scribd logo
1 de 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 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

Similar a 04 - Módulos. Funciones.doc

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

Funciones en c++
Funciones en c++Funciones en c++
Funciones en c++
 
Algoritmos y lenjuage de programacion
Algoritmos y  lenjuage de programacionAlgoritmos y  lenjuage de programacion
Algoritmos y lenjuage de programacion
 
8448148681
84481486818448148681
8448148681
 
Presentacion
PresentacionPresentacion
Presentacion
 
05 - Funciones en lenguaje C
05 - Funciones en lenguaje C05 - Funciones en lenguaje C
05 - Funciones en lenguaje C
 
Funciones lenguaje c modulo4
Funciones lenguaje c modulo4Funciones lenguaje c modulo4
Funciones lenguaje c modulo4
 
Elemento 4
Elemento 4Elemento 4
Elemento 4
 
Funciones
FuncionesFunciones
Funciones
 
FUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE CFUNCIONES EN LENGUAJE C
FUNCIONES EN LENGUAJE C
 
Metodos funciones
Metodos funcionesMetodos funciones
Metodos funciones
 
Actividad grupal
Actividad grupalActividad grupal
Actividad grupal
 
Funciones
FuncionesFunciones
Funciones
 
Recursión
RecursiónRecursión
Recursión
 
Capítulo 3 Algoritmos recursivos.pdf
Capítulo 3 Algoritmos recursivos.pdfCapítulo 3 Algoritmos recursivos.pdf
Capítulo 3 Algoritmos recursivos.pdf
 
Script de Punteros a Funciones
Script de Punteros a FuncionesScript de Punteros a Funciones
Script de Punteros a Funciones
 
Diseño de la logica
Diseño de la logicaDiseño de la logica
Diseño de la logica
 
Tema 7
Tema 7Tema 7
Tema 7
 
Funciones en C
Funciones en CFunciones en C
Funciones en C
 
FUNCIONES LENGUAJE C
FUNCIONES LENGUAJE CFUNCIONES LENGUAJE C
FUNCIONES LENGUAJE C
 
Funciones en lenguage c
Funciones en lenguage cFunciones en lenguage c
Funciones en lenguage c
 

Último

codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinavergarakarina022
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIACarlos Campaña Montenegro
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzprofefilete
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...JAVIER SOLIS NOYOLA
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxOscarEduardoSanchezC
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxinformacionasapespu
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADOJosé Luis Palma
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para eventoDiegoMtsS
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.José Luis Palma
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.DaluiMonasterio
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfMARIAPAULAMAHECHAMOR
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxjosetrinidadchavez
 

Último (20)

Sesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdfSesión de clase: Defendamos la verdad.pdf
Sesión de clase: Defendamos la verdad.pdf
 
codigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karinacodigos HTML para blogs y paginas web Karina
codigos HTML para blogs y paginas web Karina
 
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIARAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
RAIZ CUADRADA Y CUBICA PARA NIÑOS DE PRIMARIA
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyzel CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
el CTE 6 DOCENTES 2 2023-2024abcdefghijoklmnñopqrstuvwxyz
 
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
LA ECUACIÓN DEL NÚMERO PI EN LOS JUEGOS OLÍMPICOS DE PARÍS. Por JAVIER SOLIS ...
 
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptxPPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
PPT GESTIÓN ESCOLAR 2024 Comités y Compromisos.pptx
 
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptxPRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
PRIMER SEMESTRE 2024 ASAMBLEA DEPARTAMENTAL.pptx
 
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADODECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
DECÁGOLO DEL GENERAL ELOY ALFARO DELGADO
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
programa dia de las madres 10 de mayo para evento
programa dia de las madres 10 de mayo  para eventoprograma dia de las madres 10 de mayo  para evento
programa dia de las madres 10 de mayo para evento
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020Razonamiento Matemático 1. Deta del año 2020
Razonamiento Matemático 1. Deta del año 2020
 
Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.Clasificaciones, modalidades y tendencias de investigación educativa.
Clasificaciones, modalidades y tendencias de investigación educativa.
 
EXPECTATIVAS vs PERSPECTIVA en la vida.
EXPECTATIVAS vs PERSPECTIVA  en la vida.EXPECTATIVAS vs PERSPECTIVA  en la vida.
EXPECTATIVAS vs PERSPECTIVA en la vida.
 
Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.Defendamos la verdad. La defensa es importante.
Defendamos la verdad. La defensa es importante.
 
Herramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdfHerramientas de Inteligencia Artificial.pdf
Herramientas de Inteligencia Artificial.pdf
 
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptxOLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
OLIMPIADA DEL CONOCIMIENTO INFANTIL 2024.pptx
 

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