Beruflich Dokumente
Kultur Dokumente
Estructura de Datos.
El estudio de las Estructuras de Datos es sumamente importante, debido a la necesidad de manipular la informacin de manera adecuada y oportuna. El objetivo principal es el de procurar que los algoritmos aplicados funcionen en un adecuado tiempo de ejecucin. Es por ello de la importancia de aprender acerca de las Estructuras de Datos, y de cmo manipular la informacin a travs de ordenamientos, bsquedas, organizacin, mtodos de acceso, etc.
Procedimientos
Los procedimientos y funciones fueron uno de los primeros mecanismos de abstraccin que se utilizaron ampliamente en lenguajes de programacin. Los procedimientos permitan tareas que se ejecutaban rpidamente, o eran ejecutados slo con ligeras variaciones, que se reunan en una entidad y se reutilizaban, en lugar de duplicar el cdigo varias veces
Mdulos
Un mdulo es una tcnica que proporciona la posibilidad de dividir sus datos y procedimientos en una parte privada slo accesible dentro del mdulo y parte pblica accesible fuera del mdulo . Los tipos, datos (variables) y procedimientos se pueden definir en cualquier parte. El criterio a seguir en la construccin de un mdulo es que si no se necesita algn tipo de informacin, no se debe tener acceso a ella. Este criterio es la ocultacin de informacin.
Objetos
Un objeto es sencillamente un tipo abstracto de datos al que se aaden importantes innovaciones en comparticin de cdigo y reutilizacin. Los mecanismos bsicos de orientacin a objetos son: objetos, mensajes y mtodos, clases e instancias y herencia. Una idea fundamental es la comunicacin de los objetos a travs de paso de mensajes. Adems de esta idea, se aaden los mecanismos de herencia y polimorfismo.
Modularidad
La programacin modular trata de descomponer un programa en un pequeo nmero de abstracciones coherentes que pertenecen al dominio del problema y cuya complejidad interna es susceptible de ser enmascarada por la descripcin de un interfaz. Si las abstracciones que se desean representar pueden, en ciertos casos, corresponder a una nica accin abstracta y se implementan en general con la nocin de objeto abstracto.
La estructura de un mdulo
Un mdulo se caracteriza fundamentalmente por su interfaz y por su implementacin. . Las acciones o funciones de un mdulo que son susceptibles de ser llamadas desde el exterior se denominan primitivas o puntos de entrada del mdulo.
Unidades modulares
El lenguaje debe proporcionar estructuras modulares con las cuales se puedan describir las diferentes unidades. De este modo, el lenguaje (y el compilador) puede reconocer un mdulo y debe ser capaz de manipular y gobernar su uso, adems de las ventajas evidentes relativas a la legibilidad del cdigo resultante. En el caso de C++ se conocen como clases y en Turbo Borland Pascal, los mdulos se denominan unidades.
unit Pila; interface const MaxPila = 1000; type TipoElemento = integer; ListaElementos = array [1 .. MaxPila] of TipoElemento; tipo = record Elems : ListaElementos; Cima: integer; end; procedure Crear (var S:tipo); (* S se einicializa y se limpia o vaca * ) procedure Destruir (var S:tipo); (* Se libera memoria asignada a S * ) (* S no est inicializada *) procedure Meter (var S:tipo; Item: tipoElemento); (* Se aade un elemento a la cima de la pila *)
procedure Sacar (var S:tipo; var Item: tipoElemento); (*quitar un elemento de la pila *) function PilaVacia (S:tipo) :boolean; (*devuelve true si S es vaca; false en caso contrario *) implementation procedure Crear (var S:tipo); begin S.Cima := O; end procedure Destruir (var S:tipo); begin (*no ha c e nada *) end; procedure Meter (var S:tipo; Item:TipoElemento); begin S.Cima := S.Cima + 1; S .Elems [S.Cima] := Item; end;
procedure Sacar (var S:tipo; var Item:TipoElemento); begin Item := S.Elems [S.Cimal]; S.Cima := S.Cima - 1 end; function pilaVacia (S :tipo) : boolean; begin PilaVacia : = (S . Cima =O) ; end; end.
Una vez que se ha implementado el tipo de dato p i 1 a , ste puede ser utilizado en cualquier programa con tal de invocar en la clusula uses a dicho tipo de dato Pila .
Abstraccin
La abstraccin es la propiedad que permite representar las caractersticas esenciales de un objeto, sin preocuparse de las restantes caractersticas (no esenciales) Una clase se puede definir como una descripcin abstracta de un grupo de objetos, cada uno de los cuales se diferencia por su estado especfico y por la posibilidad de realizar una serie de operaciones
Abstraccin
Por ejemplo, una pluma estilogrfica es un objeto que tiene un estado (llena de tinta o vaca) y sobre la cual se pueden realizar algunas operaciones (por ejemplo, escribir, poner/quitar el capuchn, llenar de tinta si est vaca)
Punteros
Punteros
Un puntero es un tipo de dato simple que contiene la direccin de una variable o estructura en vez de un valor de dato. Los punteros tienen dos propsitos principales: hacer los programas ms eficientes y construir estructuras muy complejas Son estructuras de datos que tienen capacidad de variar en tamao y ocupar tanta memoria como utilicen realmente
Punteros
Las variables que se crean y se destruyen durante la ejecucin se llaman variables dinmicas (tambin annimas). As, durante la ejecucin de un programa, puede haber una posicin de memoria especfica asociada con una variable dinmica y posteriormente puede no existir ninguna posicin de memoria asociada con ella.
Punteros
Al contrario que las estructuras de datos estticas, tales como arrays cuyos tamaos y posiciones de memoria asociados se fijan en tiempo de compilacin, las estructuras dinmicas de datos se amplan (expanden) o reducen (contraen) a medida que se requiera durante la ejecucin y cambia sus posiciones de memoria asociada.
Punteros
Una estructura de datos dinmica es una coleccin de elementos llamados nodos de la estructura normalmente de tipo registro que se enlazan o encadenan juntos. Este enlace se establece asociando con cada nodo un puntero que apunta al nodo siguiente de la estructura. Existen diferentes tipos de estructuras dinmicas de datos, siendo las ms notables y significativas las listas enlazadas, los rboles y los grafos.
Punteros
Punteros
El tipo puntero es un tipo de datos simple en Pascal; es simple debido a que no se puede romper en otros componentes pequeos como es el caso de un array o un registro. Los punteros en esencia son un tipo especial de variable (esttica) que se utiliza para almacenar la direccin de memoria de otra variable, o lo que es igual, su valor es una direccin de una posicin de memoria donde est almacenada otra variable. Una variable tipo puntero, contiene la direccin de la posicin de otra variable
Var
Ptr: ^Tipo Elemento La variable Ptr apunta a un tipo de dato TipoElemento
P^
Ejemplo.
A la posicin o celda de memoria a que apunta un puntero se puede acceder situando un smbolo (circunflejo) ^ despus del nombre de la variable puntero. Por ejemplo:
new (Ptr) ; Ptr^ : = 'Mckenna';
La sentencia new (ptr) crea una celda de memoria vaca a la que apunta Ptr. La segunda sentencia sita el valor Mckenna en esa celda de memoria.
Ejemplo.
Un diagrama grfico sera:
Ptr
Ptr^
McKenna
Implementacin interna
Internamente, los punteros se implementan teniendo en cuenta las direcciones de memoria a las que se apunta. Por ejemplo, supongamos que la direccin de ptr 1015 y que la celda de memoria que crea new (ptr) est en la direccin 1256. Por consiguiente, el efecto de:
new (Ptr) ; Ptr^ : = 'Mckenna';
Se puede dibujar a nivel de direcciones de memoria, como se muestra a la izquierda, con el diagrama ms sencillo de la derecha.
Implementacin interna
Direccin 1015
1256
Direccin 1256
McKenna
Ptr
Ptr^
McKenna
Ptr
Ptr^
Implementacin interna
Atencin: Observe que en la declaracin de un puntero, el circunflejo est situado a la izquierda de su tipo, mientras que en una sentencia en que se accede a la celda de memoria a que se est apuntando, el circunflejo aparece a la derecha
program Puntero; Type Ptrint = ^integer; Var I, J : Ptrint; N : integer Begin New (I); New (J); N := 5; I^ := N; Writeln (I^); J := I; J^ := -7; Writeln (I^) end