Está en la página 1de 11

ALGORITMOS Y LENGUAJES DE PROGRAMACIÓN

INGENIERÍA INDUSTRIAL

TEMA 6. FUNCIONES

Contenido

6.1 Introducción.

6.2 Funciones estándar.

6.3 Entrada y Salida de datos.

6.4 Funciones definidas por el usuario.

6.5 Pase por valor.

6.6 Pase por referencia.

6.7 Elaboración de programas.


6.1 INTRODUCCIÓN

La resolución de problemas complejos se facilita considerablemente si se dividen en


problemas más pequeños (subproblemas).

La solución de estos subproblemas se realiza con subalgoritmos.

El uso de subalgoritmos permite al programador desarrollar programas de problemas


complejos utilizando el método descendente o top down.

Una función es un tipo de subprograma que calcula como resultado un valor simple y
único a partir de otros valores dados como argumentos.

En líneas generales, una función se asemeja bastante a la idea matemática de


función con argumentos.

Definición de funciones:

• El primer paso en el manejo de una función es declarar su interfaz. Esta


declaración incluye su nombre, los argumentos que necesita con el
correspondiente tipo para cada uno de ellos, y el tipo de resultado que
proporciona.
• Cabecera de función:PROCEDURE Nombre( Argumentos: Tipo; ...) :
TipoResultado

Es frecuente que los lenguajes de programación utilicen la palabra PROCEDURE


para designar procedimientos, y la palabra FUNCTION para designar funciones.
MODULA-2 es un caso especial, y utiliza la palabra PROCEDURE para designar
cualquiera de las dos clases de subprogramas.

Estas cabeceras representan la interfaz entre la definición de la función y su


utilización posterior.

Los nombres de los argumentos son formales, esto quiere decir, que no son
variables del programa, sino solo nombres simbólicos que sirven para formalizar la
definición posterior de la función, permitiendo hacer referencia a los argumentos en
la definición de los cálculos.

2
Estas cabeceras representan la interfaz entre la definición de la función y su
utilización posterior. Los nombres de los argumentos son formales, esto quiere decir
que no son variables del programa, sino solo nombres simbólicos que sirven para
formalizar la definición posterior de la función, permitiendo hacer referencia a los
argumentos en la definición de los cálculos.

La definición completa de una función se compone de la cabecera, seguida de un


cuerpo que tiene la misma estructura que un bloque de programa completo. Este
bloque comienza con una parte declarativa y continua con una parte ejecutiva
introducida con la palabra clave BEGIN. En la parte declarativa se declaran las
constantes y variable para el uso local de la función.

La parte ejecutiva estará constituida por una secuencia de sentencias. La función


finalizará con la palabra clave END y a continuación nuevamente el nombre de la
función seguida de un punto y coma ( ; ).

En las sentencias que constituyen la función se puede y se debe hacer uso de los
argumentos formales declarados en su interfaz. Esto permite parametrizar los
cálculos de la función para valores particulares de los argumentos.

Ejemplo:

PROCEDURE Potencia(x: REAL; n: CARDINAL): REAL;


VAR k : CARDINAL;
p : REAL;
BEGIN
P: = 1.0;
FOR k: = 1 TO n DO
P: = p * x
END;
RETURN p
END Potencia;

3
Uso de funciones

Para usar una función en los cálculos de un programa se invoca dicha función
escribiendo su nombre y a continuación, entre paréntesis, los valores concretos de
los argumentos, separados por comas.

Esta invocación de la función representa un valor del tipo de la función, que podrá
ser usado como operando en una expresión aritmética o en cualquier parte del
programa en que sea válido escribir una expresión de ese tipo. Al invocar una
función es obligatorio que los valores suministrados para los argumentos
correspondan en número y tipo con los argumentos en la definición.

La correspondencia de tipo significa que el tipo del argumento en la invocación sea


compatible en asignación con el tipo de argumento formal. El efecto de la invocación
de una función puede describirse en forma simplificada de la siguiente manera:

• Se evalúan las expresiones de los valores de los argumentos


• Se asignan dichos valores a los correspondientes argumentos formales
• Se ejecuta el código de la definición de la función, hasta alcanzar una
sentencia de retorno
• El valor retornado se usa en el punto donde se invocó la función.

Funciones predefinidas:

• ABS (X): Valor Absoluto de un numero


• CAP (C): Carácter convertido a mayúscula
• CHR (X): Carácter de la tabla de caracteres en la posición X
• FLOAT (X): X convertido a valor Real
• MAX (T): Valor máximo del tipo T
• MIN (T): Valor mínimo del tipo T
• ODD (X): Devuelve TRUE cuando el valor de X es impar
• ORD (X): Posición que ocupa X en la lista de valores de su tipo
• TRUNC (R): Valor de R (REAL) truncado a entero
• VAL (T;X): X convertido al tipo T

En los argumentos simbólicos, X representa un valor numérico, C un carácter, y T un


tipo.

4
6.2 FUNCIONES ESTÁNDAR

Las funciones definidas en módulos estándar se denominan funciones estándar y


pueden ser utilizadas sin necesidad de escribir su definición, pero hay que indicar
expresamente que se van a utilizar dichas funciones mediante una declaración
IMPORT del módulo que las contenga.

En lo referente a funciones matemáticas, se dispone de un módulo estándar llamado


MathLib0.

Las funciones matemáticas disponibles en este módulo son las siguientes:

• Exp (x): Exponencial


• Ln (x): Logaritmo neperiano de X
• Sin (x): Seno de X
• Cos (x): Coseno de X
• Arctan (x): Arcotangente de X
• sqrt (x): Raiz cuadrada de X
• Entier (x): Mayor entero de x

Todas estas funciones tienen un argumento REAL y devuelven un valor REAL,


excepto entier, que devuelve un valor INTEGER.

Procedimientos:

Un procedimiento es un subprograma que realiza una determinada acción. A


diferencia de las funciones, un procedimiento no tiene como objetivo devolver un
valor obtenido por cálculo. Un procedimiento es una forma de subprograma que
agrupa una sentencia o grupo de sentencias que realizan una acción, y permiten
darles un nombre por el que se puedan identificar posteriormente.

Estas sentencias se pueden parametrizar mediante una serie de argumentos.

5
6.3 ENTRADA Y SALIDA DE DATOS

En un programa los datos de entrada son los que la computadora va a procesar.


Los datos de salida son datos derivados, es decir, obtenidos a partir de los datos
de entrada. Por esta razón, a los datos de salida se les considera más
significativos que a los datos de entrada. Ambos tipos de datos
son información (textos, imágenes, sonidos, vídeos) que maneja la computadora.
Sin embargo, en un sentido más filosófico, a los datos de entrada se les considera
la materia prima de los datos de salida, considerados estos como la verdadera
información.

En computación, entrada/salida, también abreviado E/S o I/O, es la colección


de interfaces que usan las distintas unidades funcionales (subsistemas) de
un sistema de procesamiento de información para comunicarse unas con otras, o las
señales (información) enviadas a través de esas interfaces. Las entradas son las
señales recibidas por la unidad, mientras que las salidas son las señales enviadas
por ésta.

El término puede ser usado para describir una acción; "realizar una entrada/salida"
se refiere a ejecutar una operación de entrada o de salida. Los dispositivos de E/S
los usa una persona u otro sistema para comunicarse con una computadora. De
hecho, a los teclados y ratones se los considera dispositivos de entrada de una
computadora, mientras que los monitores e impresoras son vistos como dispositivos
de salida de una computadora. Los dispositivos típicos para la comunicación entre
computadoras realizan las dos operaciones, tanto entrada como salida, y entre otros
se encuentran los módems y tarjetas de red.

Es importante notar que la designación de un dispositivo, sea de entrada o de salida,


cambia al cambiar la perspectiva desde el que se lo ve. Los teclados y ratones
toman como entrada el movimiento físico que el usuario produce como salida y lo
convierten a una señal eléctrica que la computadora pueda entender. La salida de
estos dispositivos son una entrada para la computadora. De manera análoga, los
monitores e impresoras toman como entrada las señales que la computadora
produce como salida.

6
6.4 FUNCIONES DEFINIDAS POR EL USUARIO

Las funciones de usuario son, como su nombre indica, las que el propio usuario
declara, de igual manera que declara procedimientos. Las funciones nacen con el
propósito de ser subprogramas que siempre tienen que devolver algún valor.

Las dos principales diferencias entre procedimientos y funciones son:

• Las funciones siempre devuelven un valor al programa que las invocó.


• Para llamar a un procedimiento se escribe su nombre en el cuerpo del
programa, y si los necesita, se incluyen los parámetros entre paréntesis. Para
invocar una función es necesario hacerlo en una expresión.
• Existen cuatro formas de pasar un argumento a una función (subrutina)
o procedimiento: por valor, por referencia, por valor-resultado y por nombre.

6.5 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.

6.6 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.
.

7
Punteros

Un puntero es un tipo simple que siempre está asociado a otro tipo (punteros a
enteros, a reales, a registros, etc.).

Se pueden ver los punteros como variables que almacenan direcciones de memoria;
de aquí se deduce:

Un puntero es un medio para acceder al contenido “real” apuntado por la variable. La


declaración de un puntero no implica que exista contenido apuntado por el misma.
Es necesario crear y destruir explícitamente el contenido apuntado por punteros. Se
puede establecer una analogía entre los punteros y las direcciones postales: Una
dirección postal permite acceder al lugar físico indicado.

El hecho de disponer de una dirección postal no garantiza que el lugar exista. Para
declarar variables de tipo puntero en la notación algorítmica se utiliza la sintaxis
siguiente:

variable puntero a tipo

6.8 ELABORACIÓN DE PROGRAMAS

El desarrollo de un programa o de un conjunto de aplicaciones se basa en un


concepto llamado ciclo de vida. Son una serie de etapas o fases que hay que seguir
secuencialmente.

Las fases o etapas son:

1. Análisis
2. Diseño
3. Codificación o construcción
4. Implantación
5. Mantenimiento.

8
1. ANÁLISIS

En esta fase se establece el producto a desarrollar, siendo necesario especificar los


procesos y estructuras de datos que se van a emplear. Debe existir una gran
comunicación entre el usuario y el analista para poder conocer todas las
necesidades que precisa la aplicación.

En el caso de falta de información por parte del usuario se puede recurrir al


desarrollo de prototipos para saber con más precisión sus requerimientos.

En el análisis estructurado se pueden emplear varias técnicas como:

I. Diagramas de flujo de datos: Sirven para conocer el comportamiento del


sistema mediante representaciones gráficas.

II. Modelos de datos: Sirven para conocer las estructuras de datos y sus
características. (Entidad relación y formas normales)

III. Diccionario de datos: Sirven para describir todos los objetos utilizados en
los gráficos, así como las estructuras de datos.

IV. Definición de los interfaces de usuario: Sirven para determinar la


información de entrada y salida de datos.

2. DISEÑO

En esta fase se alcanza con mayor precisión una solución optima de la aplicación,
teniendo en cuenta los recursos físicos del sistema (tipo de ordenador, periféricos,
comunicaciones, etc…) y los recursos lógicos. (Sistema operativo., programas de
utilidad, bases de datos, etc).

En el diseño estructurado se pueden definir estas etapas:

I. Diseño externo: Se especifican los formatos de información de entrada y


salida. (Pantalla y listados)
II. Diseño de datos: Establece las estructuras de datos de acuerdo con su
soporte físico y lógico. (Estructuras en memoria, ficheros y hojas de datos)

9
III. Diseño modular: Es una técnica de representación en la que se refleja de
forma descendente la división de la aplicación en módulos. Está basado en
diagramas de flujo de datos obtenidos en el análisis.
IV. Diseño procedimental: Establece las especificaciones para cada modulo,
escribiendo el algoritmo necesario que permita posteriormente una rápida
codificación.

3. CODIFICACIÓN

Consiste en traducir los resultados obtenidos a un determinado lenguaje de


programación, teniendo en cuenta las especificaciones obtenidas en el cuaderno de
carga. Se deben de realizar las pruebas necesarias para comprobar la calidad y
estabilidad del programa.

Las pruebas se pueden clasificar en:

I. Pruebas unitarias: Sirven para comprobar que cada módulo realice bien su
tarea.
II. Pruebas de interconexión: Sirven para comprobar en el programa el buen
funcionamiento en conjunto de todos sus módulos.
III. Pruebas de integración: Sirven para comprobar el funcionamiento correcto
del conjunto de programas que forman la aplicación. (el funcionamiento de
todo el sistema)

4. IMPLANTACIÓN

En esta fase se realiza la implantación de la aplicación en el sistema o sistemas


físicos donde van a funcionar habitualmente y su puesta en marcha para comprobar
el buen funcionamiento.

Actividades a tener en cuenta o realizar:

1. Instalación del/los programa/s.


• Pruebas de aceptación al nuevo sistema.
10
• Conversión de la información del antiguo sistema al nuevo (si
hay una aplicación antigua)
• Eliminación del sistema anterior.

Al final de esta fase se debe de completar la información al usuario respecto al


nuevo sistema y su uso. Así como facilitarle toda la documentación necesaria para
una correcta explotación del sistema (manual de ayuda, manual de uso, guía de la
aplicación, etc.)

5. MANTENIMIENTO

Esta es la fase que completa el ciclo de vida y en ella nos encargaremos de


solventar los posibles errores o deficiencias de la aplicación. Existe la posibilidad de
que ciertas aplicaciones necesiten reiniciar el ciclo de vida.

Tipos de mantenimiento:

I. Mantenimiento correctivo: Consiste en corregir errores no detectados en


pruebas anteriores y que aparezcan con el uso normal de la aplicación. Este
mantenimiento puede estar incluido en la garantía o mantenimiento de la
aplicación.
II. Mantenimiento adaptativo: Consiste en modificar el programa a causa de
cambio de entorno gráfico y lógico en el que estén implantados. (nuevas
generaciones de ordenadores, nuevas versiones del sistema operativo, etc.)
III. Mantenimiento perfectivo: Consiste en una mejora sustancial de la aplicación
al recibir por parte de los usuarios propuestas sobre nuevas posibilidades y
modificaciones de las existentes.

Los tipos de mantenimiento adaptativo y perfectivo reinician el ciclo de vida,


debiendo proceder de nuevo al desarrollo de cada una de sus fases para obtener un
nuevo producto.

11

También podría gustarte