Introduccin a las estructuras de datos Abstraccin de
Introducción a las estructuras de datos
Abstracción de datos Abstracción: representación de las características y comportamiento de un objeto del mundo real desde una perspectiva particular.
Conceptos básicos La abstracción como proceso: consiste en separar las propiedades esenciales de un objeto, sistema, fenómeno o problema y omitir otra información que no se considera esencias desde una perspectiva particular. n La abstracción como producto: es una descripción o especificación de un sistema en el que se enfatizan algunos detalles o propiedades y se suprimen otros. Las propiedades esenciales de un sistema son tratadas como un todo.
Conceptos básicos n n n Tipo de dato abstracto Tipo definido en términos de ítems de datos operadores asociados, no de su implementación Una herramienta útil para especificar las propiedades lógicas de los tipos de datos abstractos (TDA), el cual es fundamentalmente una colección de valores y un conjunto de operaciones sobre esos valores. La colección de valores y las operaciones sobre esos valores forman una construcción matemática que pueden implementarse utilizando una estructura de dato particular ya sea de hardware o de software.
TDA Tomado de: Data Structures: Abstract Data Type (ADT). Reel Learning. URL: https: //www. youtube. com/watch? v=Hcxqz. Ysi. J 3 k
TDA Datos? Operaciones?
TDA Abstracción de datos Abstracción de procedimientos
Abstracción de procedimientos Abstracción por parametrización: argumentos Abstracción por especificación: qué hace? pre-condición/post-condición
Abstracción de datos Permite extender los tipos pre-defedinidos en los lenguajes de programación Permite incluir nuevos tipos de datos con sus operaciones (estructuras de datos)
Dato n Información en bruto, sin ningún significado n Ejemplo: n n El estudiante Pedro Perez de 22 años tiene un promedio de 3. 5 Representación de datos n Nombre: Pedro Perez -> Conjunto de Caracteres n Edad: 22 -> entero n Promedio: 3. 5 -> real
Información n Los datos al ser procesados e interpretados se convierten en información útil Empleado Datos de salida (se muestran en el monitor) Horas Pedro, Perez 160 Juan, Rodríguez 155 Pedro, Perez $320 Pablo, Mendoza 120 Juan, Rodriguez $310 Pablo, Mendoza $240 Salario por hora = $2 Datos de entrada(ingresados por teclado) Procesamiento: Calcular salario anual
¿Cómo representar los datos? n Los seres humanos: n n Usamos lenguaje natural o símbolos Ejemplo: n n n Para representar números, usamos el sistema decimal Para representar palabras, usamos el abecedario La computadora: n n Usa 1 s y 0 s El dato más pequeño en el computador es n n Un 1 o un 0: bit El conjunto de 8 bits: 1 byte
Tipos de datos n Los datos se clasifican por tipos n Corresponden a los diferentes dominios. n Ejemplos: n Edad, Año de Nacimiento, Numero de multas n n Nombre, Dirección, Número de identificación, n n Están en el dominio numérico Están en el dominio de la información tipo texto Y las operaciones permitidas para dicho dominio Un conjunto de valores y operaciones definidas para esos valores
Importante n n n Un tipo de dato es el conjunto de valores n Al que puede pertenecer una constante n Que puede asumir una variable o expresión n Que puede ser generado por una función De una constante, variable o expresión n Se puede deducir su tipo de dato n Ya sea de su forma o de su declaración n Sin necesidad que se ejecute ningún proceso Las operaciones entre datos n Necesitan participantes (argumentos) de determinado tipo n Producen resultados del mismo tipo o diferente tipo
Tipos de datos básicos � Se pueden distinguir fácilmente, usualmente, en la vida cotidiana: � � El Sr. Pérez de 63 años tiene número de identificación 0908815533, y paga $120 en impuestos Son tipos de datos simples � Que NOMBRE permiten representar información. OPERACIONES numérica y caracteres, CONJUNTO DE VALORES Enterosentre otros. Negativos y positivos sin decimal Sumar, restar, dividir, multiplicar, residuo Reales Negativos y positivos, con decimal Sumar, restar, dividir, multiplicar Lógicos Verdadero o Falso(1 o 0) And, Or, Not Caracteres Letras, números, especiales, juntos forman una cadena Sumar carácter y entero, restar carácter de entero, multiplicar por entero
Representación en computador n Solo vienen integrados los tipos de datos básicos n En el computador n Cada byte es un “casillero” y tiene una dirección en memoria 1000 Los datos (números y letras) se almacenan en 1001 1002 estos casilleros 1003 n n n ¿Cuantas casilleros ocupa un dato? n Depende de su tipo y del hardware de la computadora n Un entero puede ocupar casillas de 4 bytes n Un doble siempre ocupara mas, por su mayor precisión Un carácter, usualmente, ocupará casillas de 1 byte
Al declarar una variable se le asigna espacio en memoria y una dirección para dicho espacio Declaración de variables n Una declaración de variables en C/Java incluye n Tipo de dato y n Nombre de variable (identificador) n Ejemplo: int a, b; float c; n 100 101 102 103 104 int a; char c; ¿Para que se declaran variables? n Especifica cuanta memoria debe reservarse y n Como se van a interpretar dichos datos f = a + b n Es una suma de enteros, que al final se convierte a real 4 bytes, dir: 100 1 byte, dir: 104
Direcciones de memoria � Las variables � � Tienen direcciones de memoria Si deseamos conocer dicha dirección En lenguaje C/Java � Se usa el operador & para obtener su dirección � 1000 � Ejemplo: int a; a = 3; printf(“Valor: %d Dir: %d”, a, &a); � Un puntero (o apuntador) � Es una variable que puede almacenar una dirección de memoria 1001 1002 1003 &a es 1000
Declaración de apuntadores n Un tipo de dato n n Un apuntador solo podrá almacenar direcciones de memoria de variables del tipo especificado Se pueden definir apuntadores de cualquier tipo: float *pf; char *pc; n int *p; 1000 1001 1002 1003 1004 1005 3 1000 Un identificador que siempre va antecedido del operador * int *pt, x; pt almacena la dirección de x, se dice x = 3; que pt apunta a x pt = &x; x pt
Consultar contenido n Si un apuntador apunta a una variable n n � A través del apuntador se puede llegar a conocer todo sobre la variable char c, *pc 1, *pc 2; Ejemplo: pc 1 = &c; Si quiero conocer la dirección, uso directamente el apuntador printf(“%d”, pc 1); //Imprimo la dir. Almacenada por pc 1 pc 2 = pc 1; //pc 2 almacena la misma dir. que pc 1 � Si quiero conocer el contenido al que apunta un apuntador, uso el operador *, sobre dicho apuntador Es equivalente a : printf(“%c”, c); Ejercicio c = ‘A’ printf(“%c”, *pc 1); *pc 1 = ‘N’ printf(“%c”, c); Es equivalente a : c = ‘N’ Imprime ‘N’ pues c ya cambio
Ejemplo int x, y; int *p 1, *p 2; x = -42; y = 163; p 1 = &x; p 2 = &y; *p 1 = 17; 1000 22 -42 17 x 1004 163 22 y 1008 1004 1000 1004 0 1000 p 1 1012 1004 01004 p 2 Es equivalente a escribir x = y; Esto indica que p 1 ahora apunta a la misma variable que p 2 *p 2 = x+5; *p 1 = *p 2; p 1 = p 2; p 1 = NULL; p 2 = NULL; Esto es equivalente a “encerar” el puntero, y decir que no apunta a ninguna variable
Conceptos básicos n n Definición: "Si se posee un tipo de dato llamado T que se define como una clase de valores y una colección de operaciones sobre esos valores, y si las propiedades de esas operaciones son especificadas solamente con axiomas, entonces T es un TDA". Un TDA al momento de la implementación, debe de cumplir con las especificaciones algebraicas de sus operaciones (SINTAXIS Y SEMÁNTICA).
Conceptos básicos n La correcta especificación (según Gutag) de un TDA debe ser: A. -Especificación Sintáctica: n Aquí se tratan las funciones u operaciones que actúan sobre las instancias de T, definiéndose los nombres, dominios y rangos de dichas funciones.
Tipos de operaciones n n 1. Operación Constructor: esta operación produce una nueva instancia para el tipo de dato abstracto; permite generar dinámicamente instancias de nuevos objetos y asignarles valores por defecto a las propiedades (atributos) del TDA. Reserva memoria principal. 2. Operación Destructor: elimina aquellas instancias del tipo de dato T que ya no se requieren. Libera memoria principal.
Tipos de operaciones n n 3. Operación de Acceso: permite obtener elementos que sólo son propiedades del tipo de dato del sistema. 4. Operación de Transformación: producen nuevos elementos del tipo de dato abstracto, partiendo del elemento ya existente y posiblemente de otros argumentos.
Tipos de operaciones n n n Se observa el efecto que tiene cada una de las operaciones especificadas sobre el resto de las operaciones del TDA. Para esta especificación se realiza la siguiente tabla: Nombre de la operación Dominio de los argumentos Rango de los resultados Tipo de operación
Especificación del TDA B. - Especificación Semántica: Se compone de un conjunto de axiomas en forma de ecuaciones las cuales indican como operan cada una de las operaciones del tipo de dato abstracto al ser especificadas sobre las operaciones restantes del mismo tipo de dato abstracto. n Operaciones válidas sobre la estructura de datos del TDA, y cuales son los resultados que cada una de las operaciones regresa una vez que se haya ejecutado.
Propiedades de un TDA PPropiedades de los TDA n Encapsulación: un TDA encapsula ciertos tipos de datos y operaciones con el objetivo de localizar en un punto determinado de su programa la especificación del TDA. n Generalización: un programador es libre de definir sus propios tipos de datos y sus propias operaciones con el objetivo de aplicarlos a operandos que no necesariamente tiene que ser de un tipo fundamental.
Estructuras de datos Estructura de Datos - Conceptos Básicos. Julio Tentor URL: https: //www. youtube. com/watch? v=53 mu 9 sq. ZSAQk
Ejemplo (1) Sistema de reservación de sillas de un teatro: datos? Operaciones?
Ejemplo Sistema de reservación de sillas de un teatro: datos? Operaciones?
Ejemplo (2) Sistema de reservación de sillas de un teatro:
- Slides: 32