Vous êtes sur la page 1sur 4

Universidad Tecnológica Nacional Algoritmos y Estructuras de Datos

Facultad Regional Buenos Aires Proyecto CoViE – Comunidad Virtual Educativa


Ingeniería en Sistemas de Información Funciones

Funciones

Introducción

Una función es un subprograma que realiza una tarea específica y retorna un único
valor a través de su identificador, a diferencia de los procedimientos, los cuales sólo pueden
hacerlo a través de parámetros de salida o entrada/salida.

Dado que el identificador de la función referencia un valor, es imprescindible definir el


tipo de dato que retornará.

La invocación a un subprograma función se realiza desde una expresión: la de una


asignación, la condición de una estructura de decisión simple, la expresión booleana de un
ciclo, la expresión a evaluar en una estructura de decisión múltiple, el argumento de otro
subprograma o una expresión de salida, por ejemplo.

Del mismo modo que con los procedimientos, las funciones deben estar definidas
antes de ser invocadas por el programa principal u otro subprograma.

La definición incluye:

• la palabra reservada FUNCTION,

• el identificador de la función,

• entre paréntesis, la lista de parámetros separados por punto y coma, la cual incluye
todos y cada uno de los parámetros con su tipo (IdParametro : TIPO; . . . )

• el tipo del dato que devuelve la función, y

• el cuerpo de la función.

Al igual que en los procedimientos, los argumentos de la invocación y los


parámetros de la cabecera deben coincidir en cantidad, tipo y orden, es decir, el tipo del
primer argumento debe ser el mismo que el del primer parámetro, el tipo del segundo
argumento igual al del segundo parámetro y así sucesivamente.

Es aconsejable definir identificadores semejantes para los argumentos del módulo de


llamada y los parámetros, aunque no idénticos, para una mayor legibilidad.

Si bien los parámetros de una función pueden ser de cualquier tipo, se recomienda no
incluir en la lista parámetros de salida, los que permitirían retornar otros valores al módulo
de llamada, ya que esto desvirtuaría la finalidad de un subprograma función.

Existen autores que consideran que la implementación de una función que devuelve
más de un resultado implica un claro error conceptual. Una función, dada su naturaleza, sólo
debe devolver un resultado, a través de su identificador.

Veamos un ejemplo sencillo:

Dados 15 números que se ingresan por teclado, determinar y mostrar cuántos de ellos
son pares y cuántos impares.

Página 1 de 4
Universidad Tecnológica Nacional Algoritmos y Estructuras de Datos
Facultad Regional Buenos Aires Proyecto CoViE – Comunidad Virtual Educativa
Ingeniería en Sistemas de Información Funciones

Algoritmo del Módulo o Programa Principal

C
Invocación a ContPares <-- 0
una función

ContImpares <-- 0 Identificador


de la función

LeerNumeros
Num
I
Argumento/s
1 15 EsPar(Num)

INC(ContPares) INC(ContImpares)

MostrarParesEImpares
ContPares, ContImpares

F
Esquema de Datos

E/S IDENTIFICADOR TIPO BYTES


E Num INTEGER 2
S ContPares INTEGER 2
S ContImpares INTEGER 2

Algoritmo del Procedimiento LeerNumero

PROCEDURE LeerNumero
VAR PNum:integer
Definición del
procedimiento PNum

Página 2 de 4
Universidad Tecnológica Nacional Algoritmos y Estructuras de Datos
Facultad Regional Buenos Aires Proyecto CoViE – Comunidad Virtual Educativa
Ingeniería en Sistemas de Información Funciones

Algoritmo de la Función EsPar


Nombre o identificador
Definición de una función de la función

Cabecera de FUNCTION EsPar


función (PNum: integer) :boolean

Lista de
Parámetros
(PNum MOD 2) = 0
Cuerpo de la
función
esPar <-- TRUE esPar <-- FALSE

Asignación del
resultado al
R Asignación del
resultado al
identificador de la identificador de la
función función

Algoritmo del Procedimiento MostrarParesEImpares

PROCEDURE MostrarParesEImpares
PContPares, PContImpares: integer

Definición del PContPares,


procedimiento PContImpares

Codificación del Programa en Pascal

PROGRAM CantidadDeParesEImpares;

VAR
Num, ContPares, ContImpares : INTEGER;

PROCEDURE LeerNumero(VAR PNum : INTEGER);


Tipo de dato que
BEGIN retorna la función
WRITELN(‘Ingrese un número’);
READLN(PNum)
END;

FUNCTION EsPar(PNum : INTEGER):BOOLEAN; Cabecera de la función


BEGIN
IF ((PNum MOD 2) = 0) THEN
EsPar := TRUE Parámetros de entrada.
Cuerpo de la
ELSE Cuando se invoca la función desde
función
EsPar := FALSE algún módulo, se copian los valores
END; de los argumentos en los parámetros.

Página 3 de 4
Universidad Tecnológica Nacional Algoritmos y Estructuras de Datos
Facultad Regional Buenos Aires Proyecto CoViE – Comunidad Virtual Educativa
Ingeniería en Sistemas de Información Funciones

PROCEDURE MostrarParesEImpares(PContPares, PContImpares : INTEGER);


BEGIN
WRITELN(‘La cantidad de números pares encontrados es:’, PContPares);
WRITELN(‘La cantidad de números impares encontrados es:’, PContImpares)
END;

BEGIN
ContPares:=0;
ContImpares:=0;
FOR I := 1 TO 15 DO
BEGIN
LeerNumero(Num);
IF EsPar(Num) THEN
Inc(ContPares)
ELSE
Inc(ContImpares);
END;
MostrarParesEImpares (ContPares, ContImpares)
END.

Estructura de una Función

Una función tiene la misma estructura que un programa principal, por lo tanto, dentro de su
definición se pueden incluir entidades locales: declarar variables, definir constantes, definir
tipos de datos del usuario y definir procedimientos y/o funciones, teniendo en cuenta que éstas
tendrán validez exclusivamente dentro del entorno de ejecución de la función.

FUNCTION NombreDeLaFuncion (<lista_de_parámetros>) : tipo_valor_de_retorno; Cabecera


CONST . . . ;

TYPE . . . ;

PROCEDURE ... ; Zona de declaración de variables, definición de


constantes, tipos de datos, procedimientos y
FUNCTION ... ; funciones locales

VAR . . . ;

BEGIN Cuerpo de la función:


sentencias secuencia de sentencias
END;

Página 4 de 4

Vous aimerez peut-être aussi