Está en la página 1de 30

INSTITUTO TECNOLOGICO DE TAPACHULA

INGENIERIA EN SISTEMAS COMPUTACIONALES

ESTRUCTURA DE DATOS

UNIDAD 1: INTRODUCCIN A LAS ESTRUCTURAS DE DATOS

CATEDRATICO: ING. ROSEL MUOZ LOPEZ

INTEGRANTES: HUGO ELMER ORDOEZ VAZQUEZ ARIEL SANTIAGOSANTELIZ VILLATORO ALDAHIR RICARDO RAMREZ RBLERO

3ER. SEMESTRE

TAPACHULA DE CORDOVA A 04 DE FEBRERO DE 2014

INDICE
UNIDAD 1 INTRODUCCION A LAS ESTRUCTURAS DE DATOS
1.- INTRODUCCION.3

1.1 TIPOS DE DATOS ABSTRACTOS (TDA) 4 1.2 MODULARIDAD7 1.3 USO DE TDA.8 1.4 MANEJO DE MEMORIA ESTATICA.10 1.4.1 EL STACK DE EJECUCIN.12

1.5 MANEJO DE MEMORIA DINAMICA.13

1.5.1

LIBERACIN DE MEMORIA......15 CADENAS DE CARACTERES......15

1.5.2

1.5.3 ALMACENAMIENTO DE CADENAS....17

2.- CONCLUSIN.

3.- BIBLIOGRAFA..

4.- CUESTIONARIO

5.- EJERCICIOS RESUELTOS EN CLASES

INTRODUCCIN
Como ya sabemos, las computadoras fueron diseadas o ideadas como una herramienta mediante la cual podemos realizar operaciones de clculo complicadas en un lapso de mnimo de tiempo.

Pero la mayora de las aplicaciones de este fantstico invento del hombre, son las de almacenamiento y acceso de grandes cantidades de informacin. La informacin que se procesa en la computadora es un conjunto de datos, que pueden ser simples o estructurados. Los datos simples son aquellos que ocupan slo una localidad de memoria, mientras que los estructurados son un conjunto de casillas de memoria a las cuales hacemos referencia mediante un identificador nico.

Debido a que por lo general tenemos que tratar con conjuntos de datos y no con datos simples (enteros, reales, booleanos, etc.) que por s solos no nos dicen nada, ni nos sirven de mucho, es necesario tratar con estructuras de datos adecuadas a cada necesidad.

Las estructuras de datos son una coleccin de datos cuya organizacin se caracteriza por las funciones de acceso que se usan para almacenar y acceder a elementos individuales de datos.

Una estructura de datos se caracteriza por lo siguiente:

Pueden descomponerse en los elementos que la forman. La manera en que se colocan los elementos dentro de la estructura afectar la forma en que se realicen los accesos a cada elemento. La colocacin de los elementos y la manera en que se accede a ellos puede ser encapsulada.

1.1 TIPOS DE DATOS ABSTRACTOS

Est formado por un conjunto vlido de elementos y un nmero de operaciones primitivas que se pueden realizar sobre ellos. Un TDA es un tipo de dato definido por el usuario para representar una entidad (abstraccin) a travs de sus caractersticas (datos o atributos) y sus operaciones o funciones (algoritmos que manipulan los datos). Un TDA est caracterizado por un conjunto de operaciones (mtodos) al cual le denominamos usualmente como su interfaz pblica y representan el comportamiento del TDA; mientras que la implementacin como la parte privada del TDA est oculta al programa cliente que lo usa. Todos los lenguajes de alto nivel tienen predefinidos TDA. Ejemplo: - Definicin del tipo Numero racional: Conjunto de pares de elementos (a,b) de tipo entero, con b<>0. - Operaciones: CrearRacional: a, b = (a, b) Suma: (a,b) + (c,d) = (a*d+b*c , b*d) Resta: (a, b) - (c, d) = (a*d-b*c, b*d) Producto: (a, b) * (c, d) = (a*c, b*d) Divisin: (a, b) / (c, d) = (a*d, b*c) Numerador: (a, b) = a Denominador: (a, b) = b ValorReal: (a,b) = a/b MCD: (a,b) ... Potencia: (a,b)^c = (a^c , b^c) Simplifica: (a,b) = ( a/mcd(a,b) , b/mcd(a,b) )

Una vez definido se podrn declarar variables de ese tipo y operar con ellas utilizando las operaciones que aporta el tipo.
4

Ejemplo: TRacional r1,r2, rsuma; CrearRacional(4,7, &r1); CrearRacional(5,8,&r2); Suma(r1, r2, &rsuma); printf(El valor real es %f, ValorReal(rsuma) );

Con mucha frecuencia se utilizan los trminos TDA y Abstraccin de Datos de manera equivalente, y esto es debido a la similitud e interdependencia de ambos. Sin embargo, es importante definir por separado los dos conceptos. La abstraccin de datos consiste en ocultar las caractersticas de un objeto y obviarlas, de manera que solamente utilizamos el nombre del objeto en nuestro programa. Esto es similar a una situacin de la vida cotidiana. Cuando se dice la pa labra perro, usted no necesita que se le diga lo que hace el perro. Usted ya sabe la forma que tiene un perro y tambin sabe que los perros ladran. De manera que se abstraen todas las caractersticas de los perros en un solo trmino, perro. A esto se le llama Abstraccin y es un concepto muy til en la programacin, ya que un usuario no necesita mencionar todas las caractersticas y funciones de un objeto cada vez que ste se utiliza, sino que son declaradas por separado en el programa y simplemente se utiliza el trmino abstracto (perro) para mencionarlo.

Un TDA es el elemento bsico de la abstraccin de datos. Su desarrollo es independiente del lenguaje de programacin utilizado, aunque este puede aportar mecanismos que faciliten su realizacin. Debe verse como una caja negra. En un TDA existen dos elementos diferenciados: - La Interfaz de utilizacin - La representacin A la hora de utilizar el TDA, la representacin debe permanecer oculta. Solo podremos utilizar las operaciones del tipo para trabajar con sus elementos. Para construir un tipo abstracto debemos: 1. Exponer una definicin del tipo.
5

2. Definir las operaciones (funciones y procedimientos) que permitan operar con instancias de ese tipo. 3. Ocultar la representacin de los elementos del tipo de modo que slo se pueda actuar sobre ellos con las operaciones proporcionadas. 4. Poder hacer instancias mltiples del tipo. Tipos bsicos de operaciones en un TDA Constructores: Crean una nueva instancia del tipo. Transformacin: Cambian el valor de uno o ms elementos de una instancia del tipo. Observacin: Nos permiten observar el valor de uno o varios elementos de una instancia sin modificarlos. Iteradores: Nos permiten procesar todos los componentes en un TDA de forma secue ncial.

1.2 MODULARIDAD
Modularidad en Ciencias de la computacin es la caracterstica por la cual un programa de computador est compuesto de porciones que se conocen como mdulos. El diseo estructurado es la tcnica de diseo de algoritmos en que se basa la programacin modular, paradigma de programacin que persigue desarrollar programas modulares. La modularidad se basa en la descomposicin de un problema en una serie de sub problemas; dividindolo en mdulos que resultan de segmentar el problema en funciones lgicas que son perfectamente diferenciadas. Esta divisin exige la presencia de un mdulo denominado mdulo de base o principal a objeto de que controle y se relacione con los dems. Es una tcnica de programacin que todava se utiliza tanto para la construccin de algoritmos computacionales bsicos as como apoyo al desarrollo de sistemas de gestin (en el diseo de diagramas modulares). La salida del mdulo debe ser funcin de la entrada, pero no de ningn estado interno. En la creacin de los mdulos deben cumplirse tres aspectos bsicos: descripcin, rendimiento y diseo. En la descripcin se definen las funciones y objetivos del programa. Para obtener el mximo rendimiento se ha de comprobar que el programa realice el proceso aprovechando al mximo todos los recursos de los que dispone. En cuanto al diseo, se debe comprobar la estructura que sigue el mdulo, as como la estructura de los datos y la forma de comunicaciones entre los diversos y diferentes mdulos.

1.3 USO DEL TDA

Elaborar un ejercicio que permita realizar operaciones sobre conjuntos a travs de los TDA BitSet y StringTokenizer. Las operaciones que permitir realizar son: a) Unin b) Interseccin c) Diferencia

Clase BitSet Java proporciona otra alternativa para manipular los bits y esta es mediante la clase BitSet(Conjunto de bits) que crea un tipo especial de arreglo que contiene valores de bits. Este puede aumentar de tamao segn se necesite. Esto lo hace similar a la clase vector. Los constructores definidos para esta clase son: BitSet ( ) BitSet (int tamao) La primera opcin crea un objeto por defecto y la segunda opcin permite especificar su tamao inicial (Esta es la cantidad de bits que puede contener). Todos los bits se inicializan en cero. Los mtodos definidos para la clase BitSet son;

Mtodo void and(BitSet conjBits)

void andNot(BitSet conjBits)

void clear(int ndice) Object clone( ) bolean equals(Object conjBits)

boolean get(int ndice) int hashCode( ) int length( )

void or(BitSet conjBits)

void set(int ndice) int size( ) String toString( ) void xor(BitSet conjBits)

Descripcin Hace un AND entre los contenidos del objeto BitSet invocante y los especificados por conjBits. El resultado se coloca en el objeto invocante. Por cada bit 1 en conjBits, se borra el correspondiente bit en el BitSet invocante. Pone a cero el bit especificado por ndice. Duplica el objeto BitSet invocante. Devuelve true si el conjunto de bits invocante es equivalente al pasado en conjBits. De los contrario, el mtodo devuelve false. Devuelve el estado actual del bit en el ndice especificado. Devuelve el cdigo de dispersin del objeto invocante. Devuelve el nmero de bits requeridos para almacenar los contenidos del BitSet invocante. Este valor es determinado por la posicin del ltimo bit a 1. Hace un OR de los contenidos del objeto BitSet invocante con los del especificado por conjBits. El resultado se coloca en el objeto invocante. Pone en 1 el bit especificado por ndice. Devuelve el nmero de bits en el objeto BitSet invocante. Devuelve la cadena equivalente del objeto BitSet invocante. Hace un XOR de los contenidos del objeto BitSet invocante con los del especificado por conjBits. El resultado se coloca en el objeto invocante.

1.4 MANEJO DE MEMORIA ESTTICA


Define la cantidad de memoria necesaria para un programa durante el tiempo de compilacin. El tamao no puede cambiar durante el tiempo de ejecucin del programa. Algunos lenguajes de programacin utilizan la palabra static para especificar elementos del programa que deben almacenarse en memoria esttica. Elementos que residen en memoria esttica: Cdigo del programa Las variables definidas en la seccin principal del programa, las cuales pueden solo cambiar su contenido no su tamao. Todas aquellas variables declaradas como estticas en otras clases o mdulos. Estos elementos se almacenan en direcciones fijas que son relocalizadas dependiendo de la direccin en donde el cargador las coloque para su ejecucin.

La memoria esttica es la que se reserva al momento de compilacin antes de comenzar a ejecutarse el programa. Los objetos son creados en ese momento y destruidos al final del programa. Mantiene la misma de localizacin en memoria durante todo el transcurso del programa. Los objetos administrados de este modo son: Variables Static. Variables Globales. Miembros Static de la Clase. Literales de cualquier tipo. Ejemplos: (Programa 13) class CSimple { static void Main(string[]args) { int[]Numeros=new int[] {1,2,3,4,5}; for (int i=0; i<5;> { Console.WriteLine("{0}, ",Numeros[i]); } } }
10

class Csimple2 { static int Funcion(int p, int q) { return (p+q); } static void Main(string[]args) { int Resultado=Funcion(7,2); Console.WriteLine(Resultado); } } En el ejemplo 1 se muestra la declaracin static de un arreglo y la declaracin de la variable global dentro del for. En el ejemplo 2 se muestra la declaracin satic de una funcin en la cual es ejecutada al enviarle dos parmetros que son literales numrica. En resumen, el inconveniente de utilizar memoria satic, aunque es ms fcil de programar, es que la cantidad de memoria se reserva antes de conocer los datos completos del problema lo que a veces lleva a reservar un mximo de memoria que en la mayora de las veces no se va a necesitar.

Mapa de memoria

Memoria disponible Para el programa


Variables estticas Cdigo del programa

Direccin alta Direccin baja

11

1.4.4 EL STACK DE EJECUCIN


Cada subprograma (procedimiento, funcin, mtodo, etc.) requiere una representacin de si en tiempo de ejecucin. Estas representaciones se almacenan en el stack de ejecucin con el fin de controlar el flujo de ejecucin del programa. ejemplo

Cuales elementos del programa sern colocados en memoria esttica? Que elementos se almacenaran en el stack en tiempo de ejecucin?

12

1.5 MANEJO DE MEMORIA DINMICA


Las reservas de memoria dinmica se hacen en tiempo de ejecucin despus de leer los datos y de conocer el tamao exacto del problema a resolver, como consecuencia se adapta mejor a las necesidades de cada caso pero en contrapartida es un poco ms difcil de programar. Tanto la creacin como la destruccin de los objetos est en manos del programador a travs de los operadores new y delete, el sitio donde se almacenan los objetos sulene llamarse "heap" o "free strore", traducido como montculo o memoria libre. En C#, no es necesario considerar la liberacin de las memorias, peustomque FrameWork se encarga de liberar todas las referencias que no se estn utilizando y compactar la memoria para mejorar el rendimiento. Tipos Valor en C# Tipos Referencias en C# Objetos

Tipos Predefinidos (int, float, ...) Estructuras (struct) String Enumeraciones (enum) Todas las Clases En C# todas las clases son tratadas sintcticamente como referencias y no permite elegir como reservar memoria para una instancia en particular, en cambio obliga a que un int sea un tipo valor. Ejemplo: using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication1 { class Program { void imprime_binario(int n) { if (n >= 2) { imprime_binario(n / 2); Console.Write("{0}", n % 2);
13

} else { Console.Write("{0}", n); } } static void Main(string[] args) { Console.Write("Alimenta un Numero Entero: "); int numero = Int32.Parse(Console.ReadLine()); Program p = new Program(); Console.Write("\nNumero Entero: {0}, en Codigo Binario: ", numero); p.imprime_binario(numero); Console.ReadLine(); } } }

14

1.5.1 LIBERACIN DE MEMORIA


La memoria esttica se libera cuando el programa finaliza su ejecucin. La memoria dinmica se libera de dos formas: Explicita. El programador decide cuando un elemento debe ser eliminado de la memoria. El LP provee mecanismos para liberacin de memoria. Implcita. El sistema decide que elementos deben ser eliminados para recuperar el espacio de memoria que ocupan. El sistema cuenta con un recolector de basura.

1.5.2 CADENAS DE CARACTERES


Se utilizan secuencias de bits para representar letras y otros smbolos. Alfabticos Caracteres Dgitos Caracteres Especiales Caracteres de Control El nmero de caracteres que se pueden representar depende del nmero de bits con que se representa cada carcter.
15

Ejemplo Con 8 bits se pueden representar 256 Caracteres diferentes, donde cada elemento ocupa una secuencia de 8 bits. Una cadena de caracteres est representada por la concatenacin de las hileras de bits que representan los caracteres individuales. 1.5.2 Asignacin de memoria esttica y dinmica. A la asignacin de memoria para algunos elementos fijos del programa que es controlada por el compilador se le llama asignacin de memoria esttica. A la asignacin y posible recuperacin de memoria durante la ejecucin de un programa y bajo su control, se le llama asignacin de memoria dinmica. Una cadena de caracteres es una secuencia finita de 0 o ms caracteres. La longitud de la cadena de caracteres es el nmero de caracteres que contiene. Cadena Vaca o Nula.- Cero caracteres. Delimitadores: Comnmente se usan o dependiendo del lenguaje de programacin. Ejemplos: S1=INSTITUTO longitud = 9 S2=TECNOLOGICO DE CULIACAN longitud = 23

Concatenacin = Es la operacin de unir 2 cadenas para formar una sola. Ejemplo: S3 = S1 + + S2 S3=INSTITUTO TECNOLOGICO DE CULIACAN Longitud de S3 = 33 Subcadenas = Se dice que y es subcadena de S si existe: S=X+Y+Z Dnde: X y/o Z pueden ser cadenas vacas: Si X es cadena vaca entonces Y es subcadena Inicial Si Z es cadena vaca entonces Y es subcadena final Ejemplo: S = Estructura de Datos de es subcadena de S Est es subcadena inicial de S Datos es subcadena final de S

16

1.5.3 ALMACENAMIENTO DE CADENAS


Estructura de longitud fija: En este formato cada cadena tiene un registro de longitud fija (generalmente 80 caracteres). Estructura de longitud variable con un mximo fijo: Son cadenas de caracteres que contienen un mximo definido, pero su longitud puede variar y se usa un delimitador especial al final o la longitud actual como parte de la cadena. Estructuras Enlazadas: Cada cadena es almacenada en un nodo que contiene un enlace a la siguiente cadena.

17

2.- CONCLUSIN La conclusin a lo que se ha llegado con el desarrollo de este importante curso en nuestra carrera, es a poder estructurar un programa, lo que posteriormente nos facilitar el trabajo en los cursos venideros; utilizando para esto la lgica computacional y la estructuracin; llegando a lograr comprender de esta manera que existen muchas soluciones a los problemas planteados tanto aplicados a ejemplos como a la vida real.
: http://www.monografias.com/trabajos14/estruct-datos/estruct-datos2.shtml#CONCL#ixzz2sUmHkCq7

3.- BIBLIOGRAFA

18

4.- CUESTIONARIO
1.- QU ES UN TDA? R= ES UN TIPO DE DATO DEFINIDO POR EL USUARIO PARA REPRESENTAR UNA ENTIDAD (ABSTRACCIN), A TRAVS DE SUS CARACTERSTICAS. 2.- EN QU CONSISTE LA ABSTRACCIN? R= CONSISTE EN OCULTAR LAS CARACTERSTICAS DE UN OBJETO Y OBVIARLAS, DE MANERA QUE SOLAMENTE UTILIZAMOS EL NOMBRE DEL OBJETO A NUESTRO PROGRAMA. 3.- MENCIONA LAS PARTES DE ESPECIFICACIN INFORMAL DE UN TAD? R= DETALLAR EN LOS DATOS DEL TIPO LOS VALORES QUE PUEDAN TOMAR DESCRIBIR LAS OPERACIONES RELACIONADAS CON DATOS. 4.- MENCIONA UNAS TDA COMUNES? R=LISTAS, COLAS, PILAS. 5.- CULES SON LOS TIPOS BSICOS DE OPERACIONES DE UN TDA? R=CONSTRUCTORES, TRANSFORMACIN, OBSERVACIN, ITERADORES. 6.- MENCIONA LOS 2 TIPOS DE UN TAD QUE EXISTEN? R=LINEALES, NO LINEALES. 7.- MENCIONA UNOS TDA NO LINEALES? R=ARBOLES, ARBOLES BINARIOS DE BSQUEDA, GRAFOS. 8.- QU ES LA MODULARIDAD? R= ES LA CARACTERSTICA POR LA CUAL UN PROGRAMA DE COMPUTADOR EST COMPUESTO DE PORCIONES QUE SE CONOCEN COMO MODULO. 9.- EN QUE SE BASA LA MODULARIDAD? R= SE BASA EN LA DESCOMPOSICIN DE UN PROBLEMA EN UNA SERIE DE SUBPROBLEMAS. 10.- MENCIONA LOS DOS TIPOS DE MEMORIAS QUE EXISTEN? R= DINMICAS, ESTTICAS. 11.- QU SON LAS MEMORIAS ESTTICAS? 19

R=SON AQUELLAS EN LAS QUE EL TAMAO OCUPADO EN MEMORIA SE DEFINE ANTES DE QUE EL PROGRAMA SE EJECUTE Y NO PUEDE MODIFICARSE DICHO TAMAO DURANTE LA EJECUCIN DEL PROGRAMA. 12.- QU SON LAS MEMORIAS DINMICAS? R= ES UN ESPACIO DE ALMACENAMIENTO QUE SE SOLICITA EN TIEMPO DE EJECUCIN.

5.- EJEMPLOS REALIZADOS EN CLASE EJEMPLO 1 DESCUENTOS DE LLANTAS Inicio


Tll=0, Pll=800, Des=0

Tll
TAP= Tll x Pll

Tll>5
Des=TAP X 0.85 TAP=TAP - Des

TAP

Fin

20

EJEMPLO 2 CON PRUEBA AL FINAL

Inicio
TN=0, X=0, C=0, S=0

TN
X C=C+1 S=S+X

C<TN

La suma es S

FIN

21

EJEMPLO 3 CON PRUEBA AL INICIO

Inicio
TN=0, X=0, C=0, S=0

TN

C<TN

S
X
C=C+1 FIN

S=S+X

22

EJEMPLO 4 CON CICLO

Inicio
TN=0, X=0, C=0, S=0

TN
C=0 C=C+1 C<TN

S X FIN S=S+X

23

EJEMPLO 5 CON ARREGLOS

Inicio
TN=0, i=0

TN

A [i] i=i+1

i<TN
I=0

A [i]

i=i+1

i<TN FIN

24

5.1 EJERCICIOS RESUELTOS EN CLASE

Ejercicio 5.1.1 Descuento de llantas public class Todo { static int tll=0,ll=0,pll=800; static float tap=0, des=0; public static void main(String[]org) { tll=Integer.parseInt(JOptionPane.showInputDialog(null,"cuantas llantas")); tap=pll*tll; if(tll>5) { tap=tap*0.85f; } JOptionPane.showMessajeDialog(null"el total a pagar es"+tap); } }

25

Ejercicio 5.1.1.2 descuento de llantas por mtodo public class Todo { private int ll=0,pll=800,tll=0; private float TAP=0,DES=0; private void EntraCal() { tll=Integer.parseInt(JOptionPane.showInputDialog(null,"Total de numeros")); TAP=pll*tll; } private void DesImp() { if(tll>5) { TAP=TAP*0.85; } JOptionPane.showMessageDialog(null,"el resultado es"+TAP); } public static void main(String rml[]) { Todo Obj=new Todo(); Obj.EntraCal(); Obj.DesImp(); } }

26

Ejercicio 5.1.2 con prueba al final public class Todo { private int TN=0,c=0,S=0,x=0; private void Todo() { TN=Integer.parseInt(JOptionPane.showInputDialog(null,"Total de numeros")); do { x=Integer.parseInt(JOptionPane.showInputDialog(null,"Dame numeros")); c=c+1; S=S+x; } while(c<TN); JOptionPane.showMessageDialog(null,"La suma es"+S); } public static void main(String arg[]) { Todo O=new Todo(); O.Todo(); } }

27

Ejercicio 5.1.3 Prueba al inicio public class Todo { private int TN=0,c=0,S=0,x=0; private void Todo() { TN=Integer.parseInt(JOptionPane.showInputDialog(null,"Total de numeros")); while(c<TN) { x=Integer.parseInt(JOptionPane.showInputDialog(null,"Dame numeros")); c=c++; S=S+x; } JOptionPane.showMessageDialog(null,"La suma es"+S); } public static void main(String ar[]) { Todo O=new Todo(); O.Todo(); } }

28

Ejercicio 5.1.4 contador public class Todo { private int TN=0,c=0,S=0,x=0; private void Todo() { TN=Integer.parseInt(JOptionPane.showInputDialog(null,"Total de numeros")); for(c=0;c<TN;c++) { x=Integer.parseInt(JOptionPane.showInputDialog(null,"cuantos numeros")); S=S+x; } JOptionPane.showMessageDialog(null,"La suma es"+S); } public static void main(String ar[]) { Todo O=new Todo(); O.Todo(); } }

29

Ejercicio 5.1.5 Arreglo public class Todo { private int TN=0,c=0,S=0; private int A[]; static int i; private void Todo() { TN=Integer.parseInt(JOptionPane.showInputDialog(null,"Total de numeros")); A=new int[TN]; do { A[i]=Integer.parseInt(JOptionPane.showInputDialog(null,"dame numero")); i++; } while(i<TN); i=0; do { JOptionPane.showMessageDialog(null," "+A[i]); i++; } while(i<TN); } public static void main (String [] arg) { Todo Obj=new Todo(); Obj.Todo(); } }

30

También podría gustarte