You are on page 1of 23

ALGORITMOS Y ESTRUCTURA DE DATOS. APUNTE TEORICO Estructuras fundamentales de datos e introduccin a la algoritmia.

Clasificacin de los datos. Enteros Numricos Reales punto flotante Carcter Alfanumricos Simples Lgicos Puntero Constantes Variables Continentes Campos Contenidos Estticas Registros Arreglos Ficheros secuenciales Estructurados Ficheros secuenciales Dinmicas Densas Cola Listas Encadenadas O Enlazadas Simple Doble Circulares Pila Cadena punto fijo

Datos

Arboles

Estructuras estticas: son aquellas cuyo tamao y estructura queda fijado en tiempo de definicin y permanecen inalterables durante la ejecucin del proceso en el que fueron declaradas. Estructuras dinmicas: son aquellas cuyo tamao u estructura puede variar en tiempo de ejecucin y su nica limitacin (tamao mximo) est dado por el tamao de la memoria que la soporta.

Accin. Es un acontecimiento producido por un actor (ejecutante) que tiene lugar durante un periodo de tiempo finito y produce un resultado bien definido y previsto. Comienza con dato y termina con un resultado, todo lo que se puede detectar en los estados intermedios se denomina informacin. DATOS ----- INFORMACION ----- RESULTADOS Los resultados son una transformacin de los datos.

Proceso. Es un conjunto de fenmenos organizados en el tiempo y concebido como activo. Tambin se lo puede definir como un conjunto de acciones. Tipos de proceso. 1- secuencial: cuando una accion no puede empezar antes de que la accionen curso est completamente terminada. 2- Paralelo: no existe continuidad. Se pueden ejecutar dos o mas acciones al mismo tiempo.

Esquema. Es una descripcin o una representacin mental reducida a los rasgos esenciales (de un objeto, de un proceso). Lenguaje natural. Esquema diagramas (grficos). Pseudocdigo.

Algoritmo. Es una secuencia ordenada de acciones primitivas que pueden ser ejecutadas por un procesador y que lleve a la solucin de un problema dado. Maquina. Mecanismo capaz de generar acciones q tienen lugar segn un esquema determinado. Tipos de mq.

1- abstractas: destinadas a facilitar el anlisis de los problemas. Nos permite


llevar a cabo la solucion de algun problema a nivel algoritmico.

2- Real: destinadas a la solucin de los problemas, para lo cual se traducen las


soluciones a algun lenguaje de programacin. Para estas mq. Consideramos el programa. Anlisis descendente. Estudio de los problemas de alto nivel a los reales, por descomposicin sucesiva en soluciones de nivel de detalle cada vez mas elevado. Parte de las acciones de las maq. abstractas para llegar a soluciones de maq. reales. Anlisis ascendente.

Parte de las acciones de las maq reales y procura construir maq cada vez mas abstractas hasta poder realizar una sntesis de alto nivel.

Programa. Algoritmo destinado a gobernar una maq real. Un lenguaje de programacin es un conj de reglas, smbolos y palabras especiales usadas para construir un programa. Reglas de formulacin de un lenguaje: Sintaxis: reglas formales para la construccion de sentencias vlidas en un lenguaje. Semntica: reglas que dan el significado de una sentencia del lenguaje.

Resolucin de problemas. Cuatro etapas.

1- formulacin o enunciacin del problema. Debe ser formulado en forma correcta,


precisa, completa y sin ambigedades. 2- Eleccin de un mtodo o procedimiento. 3- Codificacin. Expresar el mtodo o procedimiento elegido de forma tal que pueda ser comprendido por el procesador que va a utilizarse. 4- Ejecucin.

Procesador. Entidad capaz de comprender un enunciado y ejecutar el trabajo indicado por el mismo. Ambiente. Conjunto de todos los recursos necesarios para la ejecucin de un trabajo, es especfico del trabajo a ejecutar. Una accin es un evento que modifica el ambiente, desde un estado inicial (Ei), hasta un estado final (Ef). El procesador debe respetar la secuencia de las acciones. Para un procesador una accion puede ser: Primitiva: si su enunciado es suficiente, para q pueda ejecutarla sin informacin adicional. No Primitiva: debe ser descompuesta en acciones primitivas.

Condicin. No es una accin, ya q no modifica el ambiente, es una afirmacin lgica q puede ser cierta o falsa, en el momento de la observacin. Formalizacin de algoritmos. las computadoras no pueden ejecutar directamente los algoritmos, es necesario un lenguaje apropiado que llamaremos lenguaje de programacin. Formalizacin del ambiente de un problema. Es el primer paso para l resolucin de un problema, consiste en describir, con precisin y sin ambigedad los objetos del universo del problema.

1- si queremos citar diferentes objetos, damos una lista de sus nombres, cada
obj. tiene un tipo particular q indica las caractersticas comunes a todos los estados posibles del objeto. 2- Otra caracterstica de los obj. es el valor. En cada instante, todo objeto del ambiente tiene un valor, el cual puede cambiar, para algunos obj. despus de la ejecucin de una accin.

Prueba de un algoritmo. Una manera de comprobar el funcionamiento de un algoritmo es ejecutndolo a mano, usando datos representativos y anotando los valores q van tomando los obj. en cada paso, es decir accin por accin, este procedimiento se llama PRUEBA DE ESCRITORIO. Si cumple las caractersticas del algoritmo Prueba uso de consignas correctas (pseudocd. sin y sem) Propiedades de los algoritmos. Los pasos de un algoritmo deben ser simples y exentos de ambigedad. Deben ser efectivos, o sea q deben resolver en un nmero finito de pasos 0 (datos) N 0 (resultados) M finitud

Estructura de acciones. Asignacin. Es la accin de transferir un contenido. En toda transferencia existe un emisor y un receptor. RECEPTOR := EMISOR Solo una variable puede ser receptor. El emisor puede ser constante, variable o expresin. El valor q asigna a la variable debe ser del mismo tipo q la variable. Expresin. Es la reunin de datos (constantes y variables) relacionados mediante operadores. Pueden ser unimodales o bimodales. Expresiones aritmticas. +, -, *, /. Bimodales: DIV, MOD. Precedencia de operadores. Reglas de precedencia. o Los operadores q tienen mayor precedencia se procesan primero, y despus se contina de izq a der con los operadores que tienen la misma precedencia. o Si hay parntesis en una expresin, primero evaluamos la expresin entre parntesis, stos pueden hacer variar las reglas: 1. ** (potencia) 2. +, - (operadores de signo, se aplican de izq a der). 3. *, /, DIV, MOD (de izq a der). 4. +, - (suma y resta, de izq a der).

Funciones internas. Operadores especiales. Tienen una alta prioridad cuando aparecen en una expresin, superior la del operador de potencia. ABSO SQRT LN LOG EXP TRUNC REDOND Valor absoluto Raz cuadrada Log natural Log base 10 E a la la pot de x X truncado Redondeo de x

SQR SIN COS TAN

Cuadrado de x Seno Coseno Tangente

Expresiones lgicas o Booleanas. una expresin booleana puede ser: 1. una variable booleana. 2. una expresin seguida de un operador relacional seguida de una expresin. 3. una expresin booleana seguida de un operador booleano seguida de una expresin booleana. Variable booleana: variable declarada de tipo lgico, puede ser V o F. Operadores relacionales: mediante la comparacin de dos valores, son: =, <>, <, >, , . Operadores bolanos: son los smbolos especiales Y (conjuncion); O (disyuncion); y NO (negacion), los cuales se definen solo para las expresiones booleanas. Los operadores relacionales pueden combinarse con los bolanos.

Precedencia de todos los operadores. Los operadores relacionales tienen una precedencia menor q todos los dems operadores. 1. 2. 3. 4. NO. *, /, DIV, MOD, Y. +, -, O. =, <>, <, >, , .

Accin elemental. es la ejecucin de un acontecimiento elemental, aparece en un algoritmo por su nombre, el cual se interpreta como provocar el acontecimiento asociado a ese nombre. Acciones estructuradas.

o Simple. Es la ejecucin condicional de una accin.


SI condicin ENTONCES Accin; FIN SI. Primero se observa la certeza de la condicin, si sta conduce a una respuesta cierta, la accin es ejecutada a continuacin de la observacin, la cual finaliza la ejecucin.

o Alternativa. Es la ejecucin alternativa de una entre dos acciones.


SI condicin ENTONCES Accin1; SINO Accin2; FIN SI. Primero se observa la certeza de la condicin, la cual es seguida de la accin1 si la condicin es cierta, o de la accin 2 si la condicin es falsa.

o Seleccin mltiple. Es la ejecucin condicional de una entre varias acciones.


SEGN indicador HACER Valor1: accin1; Valorn: accinn; Otros: accin n+1; FIN SEGN. La ejecucin del texto provoca la bsqueda en la lista de los valores de aqul que corresponde al valor observado por el indicador. Se ejecutar una de entre todas las acciones enumeradas. La accin n+1 se asocia en todos los casos en los cuales el indicador no pertenece al conjunto de todos los n valores explcitamente enumerados.

o Repetitivas. Es la ejecucin mltiple de una sola accin. 1. Repetir. (post-test)


REPETIR Accin; HASTA QUE condicion. la ejecucin de este texto provoca sucesivamente la ejecucin de la accin, a continuacin la observacin de la condicin y ejecuta la accin hasta que la condicin sea falsa. La accin se ejecuta por lo menos una vez.

2. Mientras. (pre-test)
MIENTRAS condicin HACER Accin; FIN MIENTRAS. La accin se ejecuta mientras la condicion sea verdadera. La accin se ejecuta como mnimo 0 (mientras) N.

3. Manejada por contador.


PARA Vc := Vi HASTA Vf , I HACER Accin; FIN PARA. Vc es una variable de tipo numrico llamada variable de control. Vi, Vf e I son variables de tipo numrico, constantes de tipo num o expresiones aritmticas. Vi recibe el nombre de valor inicial, Vf valor final e I es el incremento que se expresa cuando es distinto de 1, ste puede ppsitivo o negativo, pero no cero. Si el incremento es positivo: Vi < Vf. Si el incremento es negativo: Vi > Vf. Dentro del para no es correcto modificar el valor de la variable de control. Cuando finaliza el para, Vc queda indefinido. En el mientras e el repetir la variable condicional debe ser alterada dentro del ciclo por instruccin del algoritmo, a diferencia del para que no puede ser alterada dentro del ciclo. Tratamiento de secuencias.

Nocin de secuencia. Un conjunto de objetos est organizado en forma de secuencia, si es posible definir las nociones siguientes:

o Primer objeto de la secuencia: un objeto del conjunto, llamado primero se distingue


de los dems. El acceso a este elemento, permite el acceso a todos los dems elementos de la fila. o Relacin de sucesin entre los objetos: todos objeto de la secuencia (salvo el elemento final) precede a uno de los dems objetos (su sucesor). Esta relacin permite construir el acceso a todos los elementos de la secuencia. Esta enumeracin termina con el acceso al elemento final. o Caracterizacin del fin de la secuencia: debe estar definido un indicador de fin de secuencia: caracteriza el elemento final, y permite detener la enumeracin de la secuencia por observacin de la caracterstica del ltimo elemento. Acceso secuencial: acceso a los elementos de una secuencia. Se accede por el primero, y para llegar al elemento i-simo se deber recorrer sucesivamente los i-1 elementos que le preceden. Tratamiento secuencial: es el tratamiento de secuencias.

La mquina de caracteres. es una procesadora de tiras de carateres. Contiene los siguientes elementos: Una ventana. Dos botones indicativos: ARRANCAR (ARR: inicio de la cinta) AVANZAR (AVZ: carcter siguiente) Las dos acciones anteriores permitirn acceder al primer elemento. Enumeracin de secuencias, bsqueda asociativa. Toda iteracin puede ser interpretada como la enumeracin de alguna secuencia. En tal enumeracin, se accede a cada uno de los objetos de la secuencia una vez y solo una, y para cada uno de ellos se aplica un tratamiento nico. o Tratamiento en curso: es el correspondiente a cada uno de los objetos distintos del ltimo de una secuencia. o Tratamiento final: es el que corresponde al objeto final de la secuencia. Ciertas enumeraciones son particulares por el hecho de que el tratamiento en curso es vaco y de que no se enumera toda la secuencia: la enumeracin se detiene en el primer elemento de la secuencia que tiene una caracterstica dada, a esto le llamaremos bsqueda asociativa (del primer elemento de la secuencia que verifica una propiedad dada). La designamos asociativa porque lo que caracteriza al elemento buscado es una propiedad y no el lugar en donde se encuentra. Esquema 1: el tratamiento final <> al trat en curso. Esquema 2: el tratamiento final = al trat en curso. Interna: cambia el tratar elemento. Bsqueda Externa o extrada: comparte prioridad En condicin de fin = bsqueda asociativa

Enumeracin Secuencia

(trat cero). Una vez encontrado el elto. no hace falta seguir buscando.

Esquemas de enumeracin de secuencias. Se basan en las siguientes hiptesis: El tratamiento de los elementos de la secuencia. Tratar elemento: describe el tratamiento en curso. Tratar elemento final: describe el trat del elto final. Inicializar tratamiento: describe el conjunto de las operaciones que deben efectuarse antes de que empiece la enumeracin para que el encadenamiento de los trat (en curso y final) proporcione el resultado esperado.

o Esquema 1: el trat final es lgicamente distinto del trat en curso.


ACCION esquema 1 ES Inicializar tratamiento; Inicializar adquisicin; Obtener elto sigte; MIENTRAS elto no final HACER Tratar elto; Obtener elto sigte; FIN MIENTRAS; Tratar elto final; FIN ACCION. Inicializar trat: puede ser, por ejemplo, poner los contadores y acumuladores a cero. Inicializar adquisicin: ARRANCAR. Obtener elto sigte: AVANZAR.

o Esquema 2: el trat final es idntico al trat en curso. Su principio es agrupar los


trat de todos los eltos, comprendido el ltimo, dentro de la iteracin. La condicin de fin es el encuentro del ltimo elto, pero la observacin de esta condicin se realiza despus de tratar el elto. ACCION esquema_2 ES Inicializar trat; Inicializar adquisicin; REPETIR Obtener elto sigte; Tratar elto; HASTA QUE elto final FIN ACCION.

Secuencias puras: son aquellas en las que no existe condicion de fin, para stas usamos el esquema 2. Secuencias con marcas (impuras): usamos el esquema 1, en secuencias vacas con marca no existe tratamiento.

Esquema de bsqueda. Se desea pasar de un elto al sigte hasta que se produzca una de las dos condiciones: o Se ha encontrado el elto que tiene la propiedad buscada. o Se ha encontrado el elto final antes de haber encontrado el elto deseado, puede ser que el elto buscado sea el final, si no es as la bsqueda no ha tenido xito. Para expresar por medio de un esquema tomamos las sigtes convenciones: o elto hallado : describe el conjunto de operaciones que deben ser ejecutadas una vez encontrado el elto.

tratar ausencia: describe el conjunto de operaciones que deben efectuarse en caso de la bsqueda no tenga xito.

ACCION bsqueda_asociativa ES Inicializar adquisicin; Obtener elto sigte; MIENTRAS (elto no hallado) y (elto no final) HACER Obtener elto sigte; FIN MIENTRAS; SI elto no hallado ENTONCES Tratar elto hallado; SINO Tratar ausencia; FIN SI; FIN ACCION.

Esquema avanzado de secuencia. ACCION ejemplo ES Ambiente Variables S: secuencia de caracteres; C, ca: carcter; < otras variables >; Algoritmo ARR (s); AVZ (s,c); < inicializar gral >; MIENTRAS NO FDS (s) HACER SI < cond > ENTONCES < inicializar parcial >; REPETIR < trato1 >; AVZ (s,c); HASTA QUE (<no><cond>) o (FDS (s)) <trato 2>; SINO AVZ (s;c); FIN SI FIN MIENTRAS; < trato final >; CERRAR (s); FIN ACCION.

Tratamiento de secuencias de registros.

Campo: es una agrupacin de datos simples con un objetivo (aportar mayor informacin), cada campo tiene que recibir un nombre y tendr su tipo y tamao propio. Campo continente: es un campo formado por contenido. Hay que dar el contenido.

Campo contenido: requiere que se le de tamao y tipo. Depende de un campo mayor.

Registro: es un agrupamiento de campos continentes y contenidos. Estructura compuesta de un nmero fijo de componentes llamados campos, donde cada uno de ellos viene definidos por su nombre y su tipo (no necesariamente deben ser todos de un mismo tipo). La menor unidad de informacin de un registro se denomina casmpo. Representacin de un registro.

o Lineal, grfica o esquemtica: consiste en la continuidad de celdas, donde cada


dato tiene su rectngulo. La continuidad determina la relacin lgica que existe entre los campos. o Jerrquica o arbrea: es puramente grfica, se utiliza en diseos globales y viene por traslado de la representacin de los sistemas. Trabaja con nodos de informacin. Nodos: son rectngulos que representan una entidad fsica lgica.

o Por nivel o literario: es la representacin jerrquica de los datos donde cada


nodo o cada elemento ocupa un rengln de escritura y las relaciones de dependencia y subordinacin se nota mediante el uso de sangra. Describimos a continuacin el ambiente. Alumno = registro Legajo 6N; Ape_nbre AN40; Fe_nac fecha; FIN REGISTRO. De esta forma vamos a definir un registro en el ambiente. Para poder acceder a las componentes de una variable registro, utilizamos una expresin llamada selector de campo. Esta expresin est formada por el nombre de la variable registro y el nombre del campo al cual queremos acceder, separado por un punto. Esquema general para el tratamiento de registros. ACCION ejemplo ES AMBIENTE TIPO Reg = registro C1: T1; C2: T2; Cn: Tn; Fin registro; VARIABLES Arch: archivo de reg; Ra: reg; (otras variables);

10

ALGORITMO Abrir (arch); leer (arch,ra); <inicializar variables>; MIENTRAS NO FDA (Arch) HACER CON Ra HACER <trato>; FIN CON; Leer (Arch,ra); FIN MIENTRAS; <Emitir>; Cerrar (Arch); FIN ACCION.

La estructura de fichero secuencial.

Fichero. Es una coleccin de datos que est almacenado en una memoria externa permanente. Su estructura se caracteriza porque su cardinalidad es infinita, por lo que no hace falta dar la longitud del fichero. Estructura de datos que consta de una secuencia de componentes que son todos del mismo tipo. ABRIR (F) LEER (F,R) CREAR

o Procesos con ficheros.

genrico Individual Corte de control Procesos Actualizacin Mltiple Mezcla Indirecta directa Apareo

o Individual.
Interviene un solo fichero de entrada, pudiendo haber o no uno de salida. El control de finalizacin de proceso va a estar dado por el fin de fichero de entrada.

o Mltiple.
Por lo menos dos ficheros de entrada, pudiendo existir varios ficheros de salida. La finalizacin de proceso se maneja con la tcnica de apareo. El apareo

11

de ficheros requiere que aunque los ficheros de entrada tengan estructuras distintas deben tener en su estructura un elto comn, conocido como clave de apareo, la cual debe ser nica.

Mezcla o apareo. Proceso en el cual intervienen por lo menos dos ficheros de entrada, que deben ser combinados para obtener uno de salida. Puede ser:

o directa: todos los ficheros intervinientes tienen el mismo formato de registro, y el


nmero de registro de mi fichero de salida es la sumatoria de los registros de los ficheros de entrada.

o Indirecta: dentro de todos los ficheros de entrada hay uno que se considera de
mayor prioridad y es el que maneja el ciclo de mezcla, los restantes pueden ser de la misma forma del anterior o distintos, y la salida adopta la forma de fichero de mayor prioridad, o una mezcla entre las formas intervinientes.

Actualizacin: incorporar, modificar o eliminar informacin de un fichero mayor (o maestro) y se utilizan como mnimo dos de entrada y uno de salida. o Ficheros de entrada:

maestro: es el fichero de estructura mayor y es el que va a sufrir actualizacin. Por su prioridad puede ser: histrico: contiene informacin desde el nacimiento de la entidad. Comn: es una particin del fichero o normal fichero histrico, puesto que contiene informacin de uso cotidiano o habitual.

o Movimientos: estructura menor o igual a la del maestro, y debe contener como


mnimo el campo clave de apareo, para poder realizar la actualizacin.

Altas: incorporacin de un nuevo registro al fichero maestro manteniendo la unicidad de claves, en general. Modificacin: corresponde a la existencia de un registro del maestro en el cual se desea modificar parte o todos sus campos contenido, exceptuando el campo clave. Baja lgica: cosiste en marcar o sealar el registro. Baja fsica: consiste en eliminar totalmente contenido y clave del fichero maestro.

o Tipos de actualizacin:
individual: un archivo de movimiento individual es aquel que contiene movimientos de un solo tipo. General o combinada: en archivo de movimiento general contiene registros de los tres tipos de movimiento.

Corte de control. o Clave compleja: clave formada por varios campos, entre los cuales existe una relacin jerrquica, de inclusin. Es el proceso en el cual se producen paradas momentneas para emitir totalizadores parciales o cualquier otra accin del mismo tipo. Existen tantos niveles de corte como campos tenga la clave compleja. Los cortes se producen por cambio de contenido en los distintos niveles de la clave compleja.

12

Para realizar un corte de control es necesario que el fichero de entrada est ordenado de acuerdo a una clave compleja. Por cada nivel de corte de control, existe una variable contador o acumulador, que e la que se emite cuado se efecta el corte de ese nivel (existen tantos niveles de control como datos tenga el campo clave) Los contadores o acumuladores tienen dos momentos de inicializacion: Al comienzo del algoritmo (comn para todos). En forma individual, cuando se produce el corte correspondiente. En todo proceso de corte de control, se produce una comparacin entre un campo actual y un campo anterior (del mismo tipo), por eso deben coexistir la informacin del campo clave actual y la del campo clave anterior, esta ltima es una variable auxiliar, que debe recibir un contenido de la clave. En el proceso en si, antes de tratar a registro se pregunta si se ha producido un corte. Esto se efecta mediante un anidamiento de preguntas (SI anidados), desde el nivel de corte mayor, hacia el menor. En caso de una respuesta afirmativa, se produce el corte de nivel correspondiente, lo que obliga a efectuar el proceso de emision de los totales de los niveles de corte menor, hacia el que produjo el corte.

Listas. Son estructuras flexibles, ya que pueden crecer y reducirse y, los eltos, pueden ser accedidos o insertados, en cualquier posicion dentro de las mismas, como tambin eliminados. En una lista los eltos entn linealmente ordenados de acuerdo con su posicin dentro de ella. Cada elto est compuesto por uno o mas campos, el cual puede ser un dato simple o estructurado.

Listas particularizadas. Son las pilas y colas, que son en realidad una restriccin de acceso a una estructura de datos.

o Pila.
Estructura de datos en la cual todas las inserciones y eliminaciones se realizan por el mismo extremo (extremo superior o tope de la pila). En una pila siempre sale el elto que ha sido insertado ltimo, la llamamos LIFO (last in first out). Las pilas se utilizan siempre que se quiere recuperar una secuencia de eltos en el orden inverso al que fueron obtenidos.

o Cola.
Estructura de datos en las cuales las operaciones bsicas de aadir y eliminar eltos se realiza en los extremos de la lista. Tambin es una estructura donde el primero en entrar es el primero en salir, la llamamos estructura FIFO (first in first out). Se utilizan siempre que se quiere recuperar una secuencia de eltos en el mismo orden que se gener.

Listas simplemente encadenadas.

13

Es una secuencia de nodos que se encuentra enlazada, cada uno con el sigte, mediante un enlace o puntero. Cada elto de una lista enlazada debe tener dos campos: un campo (info), que contiene el valor de ese elto; y un campo (puntero interno) que indica la posicion del sigte elto. Los eltos de la lista estn conectados a travs de sus campos enlace o puntero, la marca de fin de la lista es NIL. El puntero externo (PRIM) indica donde comienza la lista. El ltimo elto contiene una direccin que permite saber que el recorrido termina.

Listas doblemente enlazadas.

Es una lista que posee dos punteros externos, uno apunta al primer nodo (PRIM) y el otro al ltimo (ULT). Su estructura de nodos contiene dos campos de enlace (punteros internos) donde el predecesor es enlace izq y el sucesor enlace der.

Listas circulares.

Es una lista en la que el puntero sigte al ltimo elto apunta hacia el primer elto. esta lista se caracteriza por no existir el puntero nulo, no existe primer ni ltimo elto (pero se debe elegir arbitrariamente un puntero externo a un nodo de la lista). Esta lista permite que se acceda a un nodo desde cualquier otro.

Implementacin de las listas lineales. Extisten dos formas de almacenar las listas lineales en memoria.

o Almacenamiento secuencial.
La forma mas simple y natural de almacenar una lista lineal en la memoria es ubicar los eltos de la misma, que son lgicamente adyacentes, en posiciones fsicamente adyacentes. Insertar un elto, en el medio de una lista almacenada de esta forma, requiere el recorrido de un lugar, de los eltos que le siguen, con el fin de ubicarlo y, eliminar cualquier elto excepto el ltimo, requiere del corrimiento de los mismos, con el fin de evitar los espacios vacos.

o Almacenamiento encadenado.
Este es un esquema ms flexible, cada elto tiene un indicador que apunta al prximo elto de la lista. No es necesario que los eltos que son lgicamente adyacentes,

14

ocupen posiciones contiguas de memoria. Este tipo de almacenamiento permite aprovechar mejor la memoria. En este caso los componentes de la lista son variables dinmicas.

o Variable dinmica.
Es una variable simple o una estructura de datos creada en tiempo de ejecucin y accedida mediante un puntero (indicador).

o Puntero.
Es una variable simple (esttica) que se utiliza para guardar la direccin de memoria de una variable dinmica. La ventaja de poder crear variables en tiempo de ejecucin es que no necesitamos crear nada ms que lo que realmente necesitamos. El tipo puntero es un tipo simple, pero no es un tipo estndar, por lo que necesitamos declararlo en cada programa: P : puntero a tipo; Donde tipo en un tipo de dato (por ej un reg). P apuntaa un espacio en la memoria donde le quepa ese tipo. Las variables a las que apuntar P se crearn dinmicamente. Ejemplo: Tipo P = puntero a persona; Persona = registro DNI: ; Nombre: ; Fin registro;

o Creacin de una variable dinmica.


Se genera por medio de un procedimiento estndar, que llamaremos NUEVO (P), donde P es una variable puntero, este procedimiento busca un lugar libre de memoria y lo reserve para almacenar un elto de la lista. Para acceder a las variables recientemente creadas que no tienen nombre, sino que son referenciadas mediante una variable puntero, una de las sigtes expresiones: P^, *P Las cuales representan el valor almacenado hacia adonde apunta P, o, el lugar apuntado por P. Arreglos. Es una estructura de datos en la que se almacena una coleccin de datos del mismo tipo. Se caracteriza por: o Almacenar los eltos del arreglo en posiciones de memoria continua. o Tener un nico nombre de variable que representa a todos los eltos y stos se diferencian por un ndice. o Acceso directo a los eltos individuales del arreglo. Se clasifican en: o Unidimensionales (vectores o listas). o Multidireccionales (tablas o matrices).

Vectores. Tipo de dato estructurado de eltos finitos, tamao fijo y eltos homogneos. Declaracin: Var Nombre_arreglo: Arreglo [tipo de ndice] de tipo; o Uso del ndice de un arreglo.

15

Cada referencia a un arreglo incluye el nombre y el ndice encerrado con corchetes: el ndice determina que elto se procesa.

o Operaciones con arreglos.


Los vectores no pueden leer/escribir con una sola operacin, esto se hace elto a elto y para poder realizarlo se debe visualizar los componentes del arreglo, a travs de estructuras repetitivas. Constante N = 100; Variable Notas : arreglo [1..N] de enteros; Lectura/escritura de un vector: Para i := 1 a N hacer Leer/escribir (notas [i] ); Fin para.

Arreglos multidireccionales. Arreglos bidireccionales. Son arreglos de dos ndices, pueden ser ordinales o de tipo subrango, se los conoce con el nombre de tabla o matriz. Los tipos de ndices no necesitan ser subrango del mismo tipo. Declaracin de arreglos bidireccionales: Se crean con la declaracion de variables. Se debe indicar: 1. nombre del arreglo. 2. tipo del arreglo. 3. el rango permitido (el primero y el ltimo de los valores posicionados). Ident : arreglo [ndice1,ndice2] de tipo de elto;

manipulacin de tablas. los ms usuales son los recorridos por filas y los por columnas. Por filas. Para FILA := 1 a N hacer Para COLUMNA := 1 a N hacer Leer ( A [FILA,COLUMNA] ); F para; F para; Por columnas. Para COLUMNA := 1 a N hacer Para FILA := 1 a N hacer Leer ( A [FILA,COLUMNA] ); F para; F para;

Diferencias y semejanzas entre las estructuras de datos: Arreglos, Archivos y Listas.

16

ARCHIVOS se almacenan en memoria externa. Son de acceso secuencial y para acceder al ltimo debo acceder a todos los anteriores. Los indexados poseen acceso secuencial y directo a cualquier elto. Los secuenciales son estructuras estticas, una vez creadas no se pueden ampliar. Los indexados son estructuras dinmicas que pueden crecer o reducirse. Los sec se almacenan secuencialmente en memoria con adyacencia fsica. Los index se almacenan con adyacencia lgica y no fsica.

ARREGLOS Se almacenan en memoria interna. Acceso directo y secuencial. Pueden ser recorridos en forma inversa. Estructuras estticas, una vez creados no pueden crecer ni reducirse. Se almacenan en forma adyacente en memoria, uno tras otro. Se puede realizar bsqueda binaria, si se encuentra ordenado.

LISTAS Se almacenan en memoria interna. Acceso secuencial uno tras otro, solo pueden ser recorridas en forma inversa las doblemente enlazadas. El ltimo elto de una lista se distingue por apuntar a un puntero nulo (NIL). Estan enlazadas mediante un puntero interno que cada nodo o elto posee. Cada puntero posee la dir del sigte elto. Estructura dinmica que puede crecer o reducirse mientras la memoria lo soporte. Se almacenan en memoria utilizando cualquier parte que soporte su registro. La operacin de insertar un nodo es sencilla. Los nodos no tienen adyacencia fsica.

Ordenacin. Consiste en disponer de un conj (de estructura) de datos en algn determinado orden con respecto a uno de los campos de eltos del conj.

o Ordenacin interna: cuando estn en un arreglo. o Ordenacin externa: cuando estn en un archivo.
Una lista se dice que est ordenada por clave k, si la lista est en orden ascendente o descendente con respecto a esta clave. Dos criterios a tener en cuenta, para ver cual algoritmo es el mejor:

o Tiempo menor de ejecucin en computadora. o Menor nmero de instrucciones.

Directa 17

Insercion Simples, Directos o Eltales.

Binaria Directo o burbuja Directo con test de comprob. Mtodo de la sacudida

Seleccin directa Intercambio

Mtodos de ordenacin Indirectos, Avanzados o Logartmicos Insercin (con incrementos decrecientes) Seleccin (orden segn rbol o mtodo de la criba o del montculo, heapsort) Intercambio (orden por partes met. Rp) (quick sort)

Ordenamiento por burbuja. Se basa en el principio de comparar e intercambiar pares de eltos adyacentes hasta que todos estn ordenados. Se lo conoce generalmente como burbuja, porque si se mira el arreglo, como si estuviera en posicion vertical, en vez de horizontal, los eltos se consideran burbujas en un depsito de agua. En cada pasada, una burbuja asciende hasta el nivel de peso que le corresponde. El mtodo de intercambio es el ms lento de los tres mtodos bsicos de ordenacin (incluido las mejoras del mtodo de intercambio).

Accin Intercambio_directo es Ambiente Cons N= 500 Var A: arreglo [1..n] de enteros, Aux: entero I, J: ndice; Algoritmo Para i:= 1 hasta n-1 hacer Para j:= 1 hasta n-i hacer Si a[j] > a[j +1] entonces
Aux: = a [j]; A [j]: = a[j +1]; A [j+1]:=aux

F si: F para; F para; F accin.

18

Ordenamiento por seleccin directa. Este mtodo se basa en los siguientes principios. o Encontrar el elemento con clave mnima. o Intercambiarlo con el primero. A continuacin estas operaciones se repiten con los elementos n-1, n-2, etc. restantes, hasta que quede un nico elemento, el mayor. Considera a todos los elementos de la secuencia origen para encontrar el elemento con clave mnima y depositarlo como elemento siguiente de la secuencia destino. Es ms rpido que el de insercion directa. Pero en el caso de que el arreglo este ordenado o casi ordenado puede resultar mas rpido el de insercion. La hiptesis utilizada es: tengo un arreglo ordenado hasta la posicion (i-1), busco el menor desde la posicion i hasta la ltima, lo insertamos en la posicion a[i] y luego incremento i. A: arreglo [1..n] de enteros, Aux: entero I, J: ndice; Algoritmo Para i:= 1 hasta n-1 hacer Min:=i Para j:= i+1 hasta n hacer Si a[j] < a[min] entonces Min:= j F si F para Aux:=a [min] A [min]:= a[i] A[i]:= aux F para F accin

Ordenacin por insercion. Los elementos estn divididos conceptualmente en una secuencia origen aian, una secuencia destino a1ai-1. En cada caso; empezando con i=2, e incrementando i de uno en uno, se toma el elemento (x) de la secuencia origen y se lo transfiere a la secuencia destino ensartandolo en el sitio adecuado. Conviene alternar comparaciones y movimientos, comparando x con el elemento inmediato precedente aj, como consecuencia se inserta x o se mueve aj a su derecha y se continua con el inmediato por la izquierda, segn el mismo proceso. Obsevamos que en este proceso de cada existen dos condiciones distintas de terminacin: o Se encuentra un elemento aj con clave menor que la de x. o Se alcanza el extremo izquierdo de la secuencia destino. Este caso tpico con dos condiciones de terminacin, permite usar la tcnica del centinela. Esto se hace usando a0= x como centinela. Accin Insercin-directa es Ambiente Const n=500 Var A: arreglo [0..n] de enteros Aux,x entero; I,j; ndice; Algoritmo Para i:=2 hasta n hacer X:=a[i] A[0]:=x; j:=i-1 Mientras (x<a[j]) hacer A[j+1]:=a[j]; J:=j-1; Fin mientras

19

A[j+1]:=x; Fin para; Fin accin. Ordenacin de un arreglo de registro Se realiza de igual manera que los arreglos simples.

Bsqueda . Es la bsqueda en un conjunto de datos de un elemento especfico y de la recuperacin de un elemento asociado al mismo. o Mtodos de bsqueda Lineal. Lineal con centinela. Dicotmica o binaria.

o Bsqueda lineal.
Consiste en recorrer todo el vector, comparando cada elemento, con el valor buscado. Al finalizar el algoritmo deber informar la posicion donde se encontr el elemento en caso de que la bsqueda haya tenido xito o la no existencia del mismo. Ventaja: se aplica a arreglos ordenados y desordenados, es til para bsquedas mltiples. Desventajas: recorre todo el vector aunque el elemento se haya encontrado en el primer lugar. Nmero de comparaciones como mximo: tantas como elementos haya en el arreglo. Leer(x) Pos=0 Para i:=1 a n hacer Si a[i]=x entonces Pos:=i Fsi Fpara Si pos>0 entonces Emitir (Esta en Posicin:, pos) Sino Emitir (No se encuentra) Fsi

Bsqueda lineal con centinela. Similar al anterior pero con la mejora de que en momento que se localiza el elto, se finaliza el bucle de bsqueda. o Ventajas: se aplica tanto a arreglos ordenados o desordenados. Cuando encuentra el elto no sigue buscando. o Desventajas: es muy lenta cuando el nmero de eltos del arreglo es grande, no admite bsquedas mltiples. . Leer (x); I:= 1; Mientras ( i < n ) y ( a[i] <> x ) hacer I:= i+1; Fin mientras; Si a[i] = x entonces

20

Emitir (est); Sino Emitir (no est); F si;

Bsqueda binaria. Consiste en comparar el elto central con el valor buscado. Si este no es igual, se reduce el intervalo de bsqueda a la mitad derecha o izquierda. Segn que el valor sea mayor que el elto central o menor respectivamente. El algoritmo termina cuando se encuentra el elto o bien cuando se anula el intervalo de bsqueda. o Ventajas: es muy rpido cuando el arreglo est ordenado. o Desventaja: no se puede aplicar para arreglo desordenados. . Leer (x); Li := 1; Ls:= n; Me:=(Li + Ls); Mientras (Li < Ls) y (a[me] <> x) hacer Si a[me] < x entonces Li := me +1; Sino Ls := me 1; F si; Me := (Li + Ls) div 2; F mientras; Si a[me] = x entonces Emitir (encontrado); Sino Emitir (elemento inexistente); F si. La bsqueda lineal es ms rpida cuando el nmero de eltos del arreglo es pequeo. La diferencia con la binaria se nota cuando crece el nmero de eltos del arreglo.

Bsqueda en un arreglo de registro. Se realiza a travs de un campo clave. Recursividad. Es la propiedad por la cual un subprograma puede llamarse a si mismo para realizar una tarea. Un objeto es recursivo, si forma parte de si mismo o se define en funcion de si mismo. La recursividad reside en la posibilidad de definir un nmero infinito de objetos mediante un enunciado finito. De igual forma un nmero infinito de operaciones de clculo puede describirse mediante un programa recursivo finito. o Caractersticas. una llamada a si mismo. Una condicin de fin. o Pro y contra de la recursividad. No utilizar recursividad a menos que tenga un medio para terminar la llamada recursiva. No utilizar recursividad cuando hay limitaciones en la memoria. No utilizar recursividad cuando no hay una ventaja clara. Es conveniente generalmente cuando el problema o los datos que deben manipularse estn definidos en forma recursiva.

o Tipos.
Directa: un subprograma se llama a si mismo una o ms veces. Indirecta: un subprograma A llama a otro B y este a su vez llama a A.

21

LA RECURSIVIDAD PUEDE APLICARSE EN FUCIONES Y PROCEDIMIENTOS FUNCIONES: FUNCION factorial (n:entero): entero (n>=0 y definida) Si n = 0 entonces Factorial:= 1; Sino Factorial:= n * factorial; (n-1) F si; PROCEDIMIENTOS. PROCEDIMIENTO inverso (n:entero) (n>=0) Escribir (n mod 10); Si n>= 10 entonces Inverso (n div 10) F si;

Arboles. Son estructuras que permiten representar datos que tienen enlaces jerrquicos entre ellos. Terminologa. Raz: elto superior. Nodo Terminal: un nodo que no tiene subrboles. Nodo interior: 1 o 2 subrboles. Bosque: los nodos de cada nivel estn ordenados.

22

23