Teoría de algoritmos

Post on 05-Aug-2016

226 views 2 download

description

Teoría de Algoritmos

Transcript of Teoría de algoritmos

CENTRO UNIVERSITARIO SALINA CRUZ

LICENCIATURA EN INFORMÁTICA

OLGA MONSERRAT CADENA LÓPEZ

3ER CUATRIMESTRE

PROFESORA: JUANA PÉREZ VILLANUEVA

TEORÍA DE ALGORITMOS

CONTENIDO

Estructura de datos externos, archivo......…………………...……………………………….3

1.1 Conceptos y definiciones………………………………………………………………...3

1.2 Características………………………………..………………………………………….4

2.1.2 Residencia……………………………………………………………………………...4

2.2.2 Permanencia……………………………………...……………………………………4

2.2.3 Portabilidad……………………………………………………………………………4

1.2.3 Capacidad……………......……………………………………………………………..4

1.3 Clasificación……………………………………………………………………………..5

1.3.1 Permanentes…………………………………………………………………………...6

1.3.1.1 Constantes…………………………………………………………………………...6

1.3.1.2 Maestros……………………………………………………………………………..6

1.3.1.3 Históricos……………………………………………………………………………6

1.3.2 De movimiento………………………………………………………………………...6

1.3.3.De maniobra o trabajo…………..…………………………………………………….6

1.4 Organización……………………………………………………………………………6

1.4.1 Secuencia……………………………………………………………………………....7

1.4.2 Random o directo……………………………………………………………………...7

1.4.3 Indexada………………………………………………………………………………7

2 Búsqueda y ordenamiento………………………………………………………………....8

2.1 Algoritmo de búsqueda………………………………………………………………….8

2.1.1 Secuencial……………………………………………………………………………...9

2.1.2 Binaria………………………………………………………………………………....9

2.2 Ordenamiento………………………………………………………………………….11

2.2.1 Óptimo teórico para ordenamiento de tablas……………………………………….11

2.2.3 Algoritmo de burbuja………………………………………………………………..12

2.2.4 Shell sort……………………………………………………………………………...12

2.2.6 Tree sort o heap sort…………………………………………………………………13

2.2.7 Ordenamiento por intercalation…………………………………………………….13

2.2.8 Ordenamiento por distribución……………………………………………………...14

2.3 Ordenamiento externo………………………………………………………………....15

2.3.2 Intercalación con lotes, algoritmo balanceado……………………………………....15

2.3.3 El algoritmo polifase para intercalación por lotes…………………………………..15

2.3.4 El algoritmo de cascada……………………………………………………………...15

3 Programación de aplicaciones…………………………………………………………...17

3.1 Descripción del lenguaje a utilizar……………………………………………………17

3.1.1 Estructura de un programa y reglas sintácticas……………………………………..17

3.1.2 Palabras reservadas…………………………………………………………………..17

3.1.4.1 Operaciones primitivas………………………………………………………….....19

3.1.4.2 Estructuras de control……………………………………………………………...19

3.1.4.3 Operaciones aritméticas…………………………………………………………...19

3.1.4.4 Funciones matemáticas………………………………………………………….....19

3.1.4.5 Manejo de caracteres……………………………………………………………………….19

3.1.4.7 Estructura de datos…...……………………………………………………………………..20

3.1.4.8 Operaciones especiales……………………………….…………………………………….20

3.1.5 Subrutinas/procedimientos…………………………...………………………………………20

3.1.2 Funciones…………………………………..………………………………………………….20

1 ESTRUCTURA DE DATOS EXTERNOS, ARCHIVOS

1.1 CONCEPTOS Y DEFINICIONES

CONCEPTO

Una estructura de datos es una forma particular de organizar datos en una computadora para que pueda ser utilizado de manera eficiente. Diferentes tipos de estructuras de datos son adecuados para diferentes tipos de aplicaciones, y algunos son altamente especializados para tareas específicas.

Las estructuras de datos son un medio para manejar grandes cantidades de datos de manera eficiente para usos tales como grandes bases de datos y servicios de indización de Internet. Por lo general, las estructuras de datos eficientes son clave para diseñar algoritmos eficientes. Algunos métodos formales de diseño y lenguajes de programación destacan las estructuras de datos, en lugar de los algoritmos, como el factor clave de organización en el diseño de software.

Las estructuras de datos se basan generalmente en la capacidad de un ordenador para recuperar y almacenar datos en cualquier lugar de su memoria.

DEFINICIÓN

Un archivo es una estructura de datos con dos propiedades especiales, se presenta principalmente sobre un dispositivo de almacenamiento secundario, su tiempo de vida puede comprender un mayor alcance de tiempo que el del programa que lo creó. Los archivos secuenciales son los más comunes, pero muchos lenguajes también proporcionan archivos de acceso directo y archivos secuenciales indirectos. Se ven dos usos generales para los archivos: para entrada y salida de datos de un ambiente operativo externo y como un almacenamiento y para borrar temporal para datos cuando no se dispone de suficiente memoria de alta velocidad.

Para poder acceder a determinada información en cualquier momento, se necesitará que ella esté depositada en soportes físicos los cuales la almacenan en forma permanente. Este es el caso de la memoria externa o auxiliar como ser disquete, disco duro, cinta

magnética, etc.-, en las cuales sin necesidad de estar conectadas a la corriente eléctrica, la información permanece allí. La forma de guardar los datos en estos dispositivos auxiliares es mediante unas estructuras llamadas archivos o ficheros.

1.2 CARACTERÍSTICAS

* Residen en soporte de almacenamiento externo.

* La información se almacena de forma permanente.

* Alta capacidad de almacenamiento de datos.

* Independencia de la información que guardan respecto a los programas que los usan.

2.2.1 RESIDENCIA

La forma de guardar los datos en estos dispositivos auxiliares es mediante unas estructuras llamadas archivos o ficheros.

2.2.2 PERMANENCIA

Para poder acceder a determinada información en cualquier momento, se necesitará que ella esté depositada en soportes físicos los cuales la almacenan en forma permanente.

2.2.3 PORTABILIDAD

Este es el caso de la memoria externa o auxiliar como ser disquete, disco duro, cinta magnética, etc.-, en las cuales sin necesidad de estar conectadas a la corriente eléctrica, la información permanece allí. La forma de guardar los datos en estos dispositivos auxiliares es mediante unas estructuras llamadas archivos o ficheros.

1.2.3 CAPACIDAD

La capacidad de almacenamiento de los discos duros ha ido aumentando a través de los años, desde unos cuantos megabytes hasta llegar en la actualidad a estandarizarse en varios cientos de gigabytes e incluso terabytes.

1.3 CLASIFICACIÓN

Los datos de tipo simple tienen una representación conocida en términos de espacio de memoria. Sin embargo, cuando nos referimos a datos estructurados, esta correspondencia puede no ser tan directa; por ello vamos a hacer una primera clasificación de los datos estructurados en: Contiguos y enlazados.

Las estructuras contiguas o físicas son aquellas que al representarse en el hardware del ordenador, lo hacen situando sus datos en áreas adyacentes de memoria; un dato en una estructura contigua se localiza directamente calculando su posición relativa al principio del área de memoria que contiene la estructura. Los datos se relacionan por su vecindad o por su posición relativa dentro de la estructura.

Las estructuras enlazadas son estructuras cuyos datos no tienen por qué situarse de forma contigua en la memoria; en las estructuras enlazadas los datos se relacionan unos con otros mediante punteros (un tipo de dato que sirve para “apuntar” hacia otro dato y por tanto para determinar cuál es el siguiente dato de la estructura). La localización de un dato no es inmediata sino que se produce a través de los punteros que relacionan unos datos con otros.

Los datos estructurados se pueden clasificar también según la variabilidad de su tamaño durante la ejecución del programa en: estáticos y dinámicos.

Las estructuras estáticas son aquellas en las que el tamaño ocupado en memoria se define con anterioridad a la ejecución del programa que los usa, de forma que su dimensión no puede modificarse durante la misma, aunque no necesariamente se tenga que utilizar toda la memoria reservada al inicio (en todos los lenguajes de programación, las estructuras estáticas se representan en memoria de forma contigua). Por el contrario, ciertas estructuras de datos pueden crecer o decrecer en tamaño durante la ejecución, dependiendo de las necesidades de la aplicación, sin que el programador pueda o deba determinarlo previamente, son las llamadas estructuras dinámicas; las estructuras dinámicas no tiene teóricamente limitaciones en su tamaño, salvo la única restricción de la memoria disponible en el computador.

1.3.1 PERMANENTES

Su información varía poco en el tiempo

1.3.1.1 CONSTANTES

Consultas. Baja o nula modificación (Códigos Postales).

1.3.1.2 MAESTROS

Estos contienen información que varía poco. En algunos casos es preciso actualizarlos periódicamente.

1.3.1.3 HISTÓRICOS

Nunca se modifican (Rentas de años anteriores)

1.3.2 DE MOVIMIENTO

Información para actualizar ficheros permanentes (compra-ventas diarias).

1.3.3 DE MANIOBRA O TRABAJO

Tienen una vida limitada, normalmente menor que la duración de la ejecución de un programa. Su utilizan como auxiliares de los anteriores.

1.4 ORGANIZACIÓN

Organización de Archivos: La organización de un archivo define la forma en la que los registros se disponen sobre el soporte de almacenamiento, o también se define la organización como la forma en que se estructuran los datos en un archivo. En general, se consideran tres organizaciones fundamentales:

•Organización secuencial

•Organización directa o aleatoria (random)

•Organización secuencial indexada

1.4.1 SECUENCIA

Organización secuencial no es más que una sucesión de registros almacenados en forma consecutiva sobre un soporte externo. Los registros están ubicados físicamente en una secuencia usualmente fijada por uno o más campos de control contenidos dentro de cada registro, en forma ascendente o descendente. Esta organización tiene el último registro en particular, contiene una marca (en general un asterisco) de fin de archivo, la cual se detecta con funciones tipo EOF (end of file) o FDA (Fin de Archivo).

1.4.2 RANDOM O DIRECTO

Los datos se colocan y se acceden aleatoriamente mediante su posición, es decir, indicando el lugar relativo que ocupan dentro del conjunto de posiciones posibles.

1.4.3 INDEXADA

Un archivo con esta organización consta de tres áreas: Área de índices Área primaria Área de excedentes (overflow)

Ventaja:

a) Rápido acceso, y, además, el sistema se encarga de relacionar la posición de cada registro con su contenido por medio del área de índices.

b) Gestiona las áreas de índices y excedentes.

Desventajas:

a) Necesidad de espacio adicional para el área de índices.

b) el desaprovechamiento de espacio que resulta al quedar huecos intermedios libres después de sucesivas actualizaciones.

2 BÚSQUEDA Y ORDENAMIENTO

2.1 ALGORITMO DE BÚSQUEDA

Con mucha frecuencia los programadores trabajan con grandes cantidades de datos almacenados en arrays y registros, y por ello será necesario determinar si un array contiene un valor que coincida con un cierto valor clave. El proceso de encontrar un elemento específico de un array se denomina búsqueda. En esta sección se examinarán dos técnicas de búsqueda: búsqueda lineal o secuencial, la técnica más sencilla, y búsqueda binaria o dicotómica, la técnica más eficiente.

Es aquel que está diseñado para localizar un elemento con ciertas propiedades dentro de una estructura de datos; por ejemplo, ubicar el registro correspondiente a cierta persona en una base de datos, o el mejor movimiento en una partida de ajedrez.

2.1.1 SECUENCIAL

Se utiliza cuando el vector no está ordenado o no puede ser ordenado previamente. Consiste en buscar el elemento comparándolo secuencialmente (de ahí su nombre) con cada elemento del vector hasta encontrarlo, o hasta que se llegue al final. La existencia se puede asegurar cuando el elemento es localizado, pero no podemos asegurar la no existencia hasta no haber analizado todos los elementos del vector.

2.1.2 BINARIA

Se utiliza cuando el vector en el que queremos determinar la existencia de un elemento está previamente ordenado. Este algoritmo reduce el tiempo de búsqueda considerablemente, ya que disminuye exponencialmente el número de iteraciones necesarias.

Está altamente recomendado para buscar en arrays de gran tamaño. Por ejemplo, en uno conteniendo 50.000.000 elementos, realiza como máximo 26 comparaciones (en el peor de los casos).

Para implementar este algoritmo se compara el elemento a buscar con un elemento cualquiera del array (normalmente el elemento central): si el valor de éste es mayor que el

del elemento buscado se repite el procedimiento en la parte del array que va desde el inicio de éste hasta el elemento tomado, en caso contrario se toma la parte del array que va desde el elemento tomado hasta el final. De esta manera obtenemos intervalos cada vez más pequeños, hasta que se obtenga un intervalo indivisible. Si el elemento no se encuentra dentro de este último entonces se deduce que el elemento buscado no se encuentra en todo el array.

2.2 ORDENAMIENTO

2.2.1 ÓPTIMO TEÓRICO PARA ORDENAMIENTO DE TABLAS

A la hora de tratar datos, muchas veces nos conviene que estén ordenados. Estos métodos nos pueden resultar eficientes cuando hacemos las búsquedas. Consiste en organizar un conjunto de datos en un orden determinado según un criterio.

La ordenación puede ser interna o externa:

• Interna: La hacemos en memoria con arryas. Es muy rápida.

• Externa: La hacemos en dispositivos de almacenamiento externo con ficheros.

Para determinar lo bueno que es un algoritmo de ordenación hay que ver la complejidad del algoritmo (cantidad de trabajo de ese algoritmo), se mide en el número de operaciones básicas que realiza un algoritmo. La operación básica de un algoritmo es la operación fundamental, que es la comparación.

Existen diferentes algoritmos de ordenación elementales o básicos cuyos detalles de implementación se pueden encontrar en diferentes libros de algoritmos. La enciclopedia de referencia es [KNUTH 1973]1 y sobre todo la 2.a edición publicada en el año 1998 [KNUTH 1998]2. Los algoritmos presentan diferencias entre ellos que los convierten en más o menos eficientes y prácticos según sea la rapidez y eficiencia demostrada por cada uno de ellos. Los algoritmos básicos de ordenación más simples y clásicos son:

• Ordenación por selección.

• Ordenación por inserción.

• Ordenación por burbuja.

Los métodos más recomendados son: selección e inserción, aunque se estudiará el método de burbuja, por aquello de ser el más sencillo aunque a la par también es el más ineficiente; por esta causa no recomendamos su uso, pero sí conocer su técnica.

Los datos se pueden almacenar en memoria central o en archivos de datos externos guardados en unidades de almacenamiento magnético (discos, cintas, disquetes, CD-ROM, DVD, discos flash USB, etc.) Cuando los datos se guardan en listas y en pequeñas cantidades, se suelen almacenar de modo temporal en arrays y registros; estos datos se almacenan exclusivamente para tratamientos internos que se utilizan en gestión masiva de datos y se guardan en arrays de una o varias dimensiones.

Los datos, sin embargo, se almacenan de modo permanente en archivos y bases de datos que se guardan en discos y cintas magnéticas.

2.2.3 ALGORITMO DE LA BURBUJA

Es un sencillo algoritmo de ordenamiento. Funciona revisando cada elemento de la lista que va a ser ordenada con el siguiente, intercambiándolos de posición si están en el orden equivocado. Es necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, lo cual significa que la lista está ordenada. Este algoritmo obtiene su nombre de la forma con la que suben por la lista los elementos durante los intercambios, como si fueran pequeñas burbujas. También es conocido como el método del intercambio directo. Dado que solo usa comparaciones para operar elementos, se lo considera un algoritmo de comparación, siendo el más sencillo de implementar.

2.2.4 SHELL SORT

El Shell sort es una generalización del ordenamiento por inserción, teniendo en cuenta dos observaciones: El ordenamiento por inserción es eficiente si la entrada está "casi ordenada” y el ordenamiento por inserción es ineficiente, en general, porque mueve los valores sólo una posición cada vez.

El algoritmo Shell sort mejora el ordenamiento por inserción comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga "pasos

más grandes" hacia su posición esperada. Los pasos múltiples sobre los datos se hacen con tamaños de espacio cada vez más pequeños. El último paso del Shell sort es un simple ordenamiento por inserción, pero para entonces, ya está garantizado que los datos del vector están casi ordenados.

El algoritmo Shell es una mejora de la ordenación por inserción, donde se van comparando elementos distantes, al tiempo que se los intercambian si corresponde. A medida que se aumentan los pasos, el tamaño de los saltos disminuye; por esto mismo, es útil tanto como si los datos desordenados se encuentran cercanos, o lejanos.

Es bastante adecuado para ordenar listas de tamaño moderado, debido a que su velocidad es aceptable y su codificación es bastante sencilla. Su velocidad depende de la secuencia de valores con los cuales trabaja, ordenándolos.

2.2.6 TREE SORT O HEAP SORT

Este algoritmo consiste en almacenar todos los elementos del vector a ordenar en un montículo (heap), y luego extraer el nodo que queda como nodo raíz del montículo (cima) en sucesivas iteraciones obteniendo el conjunto ordenado. Basa su funcionamiento en una propiedad de los montículos, por la cual, la cima contiene siempre el menor elemento (o el mayor, según se haya definido el montículo) de todos los almacenados en él. El algoritmo, después de cada extracción, recoloca en el nodo raíz o cima, la última hoja por la derecha del último nivel. Lo cual destruye la propiedad heap del árbol. Pero, a continuación realiza un proceso de "descenso" del número insertado de forma que se elige a cada movimiento el mayor de sus dos hijos, con el que se intercambia. Este intercambio, realizado sucesivamente "hunde" el nodo en el árbol restaurando la propiedad montículo del árbol y dejando paso a la siguiente extracción del nodo raíz.

2.2.7 ORDENAMIENTO POR INTERCALATION

En este método de ordenamiento existen dos archivos con llaves ordenadas, los cuales se mezclan para formar un solo archivo.

1.-La longitud de los archivos puede ser diferente.

2.-El proceso consiste en leer un registro de cada archivo y compararlos, el menor es almacenando en el archivo de resultado y el otro se compara con el siguiente elemento del archivo si existe. El proceso se repite hasta que alguno de los archivos quede vacío y los elementos del otro archivo se almacenan directamente en el archivo resultado.

2.2.8 ORDENAMIENTO POR DISTRIBUCIÓN

Un problema que se presenta con frecuencia es el siguiente: "Ordenar un archivo con N registros cuyas llaves son enteros comprendidos entre 0 y M-1". SiM no es muy grande, se puede usar el algoritmo de distribución por conteo. La idea básica es contar el número de veces que se repite cada llave diferente y en una segunda pasada utilizar el conteo para posicionar los registros en el archivo.

2.3 ORDENAMIENTO EXTERNO

Es un término genérico para los algoritmos de ordenamiento que pueden manejar grandes cantidades de información. El ordenamiento externo se requiere cuando la información que se tiene que ordenar no cabe en la memoria principal de una computadora (típicamente la RAM) y un tipo de memoria más lenta (típicamente un disco duro) tiene que utilizarse en el proceso.

2.3.2 INTERCALACIÓN CON LOTES, ALGORITMO BALANCEADO

Los árboles AVL están siempre equilibrados de tal modo que para todos los nodos, la altura de la rama izquierda no difiere en más de una unidad de la altura de la rama derecha o viceversa. Gracias a esta forma de equilibrio (o balanceo), la complejidad de una búsqueda en uno de estos árboles se mantiene siempre en orden de complejidad O (log n).

2.3.3 EL ALGORITMO POLIFASE PARA INTERCALACIÓN POR LOTES

Es un proceso utilizado en sistema de actualización, y en casos en que es necesario varias listas ordenadas. También es la única forma que hay para el ordenamiento de archivos, debido a la imposibilidad de almacenarlos en memoria y a limitaciones en el tiempo, por la cantidad de elementos a ordenar.

El método de ordenación por intercalación es utilizado por los jugadores de cartas o naipes para ordenar sus barajas. Consiste en mirar las cartas una a una y cuando se ve cada nueva carta se inserta en el lugar adecuado. Para desarrollar el algoritmo imaginemos que las cartas se encuentran situadas en una fila encima del tapete; a medida que se ve una carta nueva, ésta se compara con la fila y se debe empujar alguna de ellas a la derecha para dejar espacio e insertar la nueva.

2.3.4 EL ALGORITMO DE CASCADA

En numerosos casos en el desarrollo de la solución de problemas, encontramos que luego de tomar una decisión y marcar el camino correspondiente a seguir, es necesario tomar otra decisión. Luego de evaluar las condiciones, se señala nuevamente la rama

correspondiente a seguir y nuevamente podemos tener que tomar otra decisión. El proceso puede repetirse numerosas veces. En el siguiente ejemplo tenemos una estructura selectiva SI ENTONCES que contiene dentro de ella otra estructura selectiva SI ENTONCES / SINO.

3 PROGRAMACIÓN DE APLICACIONES

3.1 DESCRIPCIÓN DEL LENGUAJE A UTILIZAR

La interfaz de programación de aplicaciones, abreviada como API (del inglés: Aplication Programming interface). Es el conjunto de subrutinas, funciones y procedimientos (o métodos, en la programación orientada a objetos) que ofrece cierta biblioteca para ser utilizado por otro software como una capa de abstracción.

3.1.1 ESTRUCTURA DE UN PROGRAMA Y REGLAS SINTÁCTICAS

Un programa es un conjunto de instrucciones que al ser ejecutadas resuelven un problema.

3.1.2 PALABRAS RESERVADAS

Las Palabras clave son palabras “reservadas” para utilizar dentro del lenguaje que tienen un significado especial y no pueden ser utilizadas como nombres de variables o identificadores (salvo que se fuerce mediante la utilización de corchetes “[ ] “).

Rem: Nos permite incluir comentarios sobre el programa en medio del código, la sintaxis es:

Además, se puede conseguir lo mismo sin necesidad de escribir Rem, utilizando la comilla simple, es decir, la anterior orden es equivalente a:

Observaremos como el editor de código reconoce los comentarios ya que les aplica como color del texto el verde.

Exit Sub: Nos permite acabar la ejecución del procedimiento en el que lo pongamos, y en punto del mismo donde se halle situado.

End: Nos permite acabar la ejecución del programa en el punto del mismo donde se halle situado.

3.1.4.1 OPERACIONES PRIMITIVAS

Operaciones primitivas elementales. Son las acciones básicas que la computadora “sabe hacer”, y que se ejecutan sobre los datos para darles entrada, transformarlos y darles salida convertidos en información.

3.1.4.2 ESTRUCTURAS DE CONTROL

Estructuras de control. Son las formas lógicas de funcionamiento de la computadora mediante las que se dirige el orden en que deben ejecutarse las instrucciones del programa. Las estructuras de control son: La secuenciación, que es la capacidad de ejecutar instrucciones secuenciales una tras otra. La selección es la capacidad de escoger o seleccionar si algo se ejecuta o no, optar por una de dos o más alternativas, y la repetición, que es la capacidad de realizar en más de una ocasión (es decir, varias veces) una acción o conjunto de acciones.

3.1.4.3 OPERACIONES ARITMÉTICAS

Una expresión es una combinación de constantes, variables, signos de operación, paréntesis y nombres especiales (nombres de funciones estándar), con un sentido unívoco y definido y de cuya evaluación resulta un único valor.

3.1.4.4 FUNCIONES MATEMÁTICAS

Son funciones matemáticas diferentes de las operaciones básicas pero que se incorporan al lenguaje y que se consideran estándar. Dependen del lenguaje. Normalmente se encuentran en la librería de matemáticas del lenguaje de programación.

3.1.4.5 MANEJO DE CARACTERES

En principio se programaba todo con 0 y 1, pero como esto costaba mucho, apareció la necesidad de crear un lenguaje semejante al humano para entendernos más fácilmente con la computadora, y para ello aparecen los juegos de caracteres.

El juego de caracteres es una especie de alfabeto que usa la máquina.

3.1.4.7 ESTRUCTURA DE DATOS

Son las formas de representación interna de la computadora. Los hechos reales, representados en forma de datos, pueden estar organizados de diferentes maneras llamadas estructuras de datos.

3.1.4.8 OPERACIONES ESPECIALES

Son tipos de datos muy especiales, ya que se trata de caracteres arreglados con un orden específico para formar las palabras. Por este motivo es que muchos lenguajes de programación dedican una serie de operaciones muy especiales para manejar estas cadenas de caracteres, en los manuales de usuario de cada lenguaje explican si disponen de funciones especiales para el manejo de este tipo de variables.

3.1.5 SUBRUTINAS/PROCEDIMIENTOS

La programación modular es una de las técnicas fundamentales de la programación. Se apoya en el diseño descendente y en la filosofía de “divide y vencerás”, es decir se trata de dividir el problema dado, en problemas más simples en que cada uno de los cuales lo implementaremos en un módulo independiente. A cada uno de estos módulos es a lo que llamamos sub algoritmos o subprogramas.

3.1.2 FUNCIONES

Desde el punto de vista matemático, una función es una operación que toma uno o varios operando, y devuelve un resultado. Y desde el punto de vista algorítmico, es un subprograma que toma uno o varios parámetros como entrada y devuelve a la salida un único resultado.