SlideShare una empresa de Scribd logo
1 de 42
Módulo 1: Tipos de Datos Abstractos TDA
NAC
Modalidad de estudios: Virtual
Mg. Luis Fernando Aguas Bucheli
+593 984015184
@Aguaszoft
Laguas@uisrael.edu.ec
Zeuszoft@protonmail.com
Objetivos del encuentro:
1. Adquirir los conceptos básicos relacionados con la
programación
2. Reconocer las características de la programación
3. Conocer la historia de la progrmación
Módulo Nro. 1
Frase Motivacional
Cuando te encuentres a ti mismo al
lado de la mayoría, es tiempo de
parar y reflexionar
(Mark Twain)
NAC © aguaszoft@outlook.es 4
Tipos de datos
• Los tipos de datos están clasificados en:
• Enteros, booleanos, String, Applets.
• Un tipo de dato especifica:
• El rango de valores que pueden tener; y,
• Las operaciones que se pueden realizar
• Algunos errores comunes son:
• Tratar de aplicar operaciones que no son del tipo de dato; o,
• Considerar que todos necesitan la misma cantidad de
memoria.
NAC © aguaszoft@outlook.es 5
Tipos primitivos en JAVA
• Java provee 8 tipos primitivos:
• boolean
• char, byte, short, int, long
• float, double
• Cada tipo primitivo tiene
• Un conjunto de valores
• Una representación de dato
• Un conjunto de operaciones
• El programador no puede cambiar ninguno de los
elementos antes mencionados.
NAC © aguaszoft@outlook.es 6
Evolución a TAD
• TIPO DE DATOS:
• Conjunto de valores que puede tomar una variable,
un parámetro o una expresión.
• TIPO ABSTRACTO DE DATOS:
• Dominio abstracto de valores junto con las
operaciones aplicables sobre el mismo.
• ESTRUCTURA DE DATOS:
• Disposición en memoria de los datos necesarios
para almacenar valores de un TDA.
NAC © aguaszoft@outlook.es 7
TAD : Ejemplo
• TAD:
• Enteros
• Tipo de datos:
• Tipo integer de Pascal, o tipo int de Java
• Estructura de datos:
• Representación mediante enteros de 16 bits, 32
bits, listas de dígitos (enteros largos), etc.
NAC © aguaszoft@outlook.es 8
TDA Conceptos
• Abstracción
• Abstraer es extraer y agrupar.
• Es un método de resolución de problemas, que consiste en
destacar los detalles importantes y dejar a un lado los
irrelevantes.
• TAD (TIPO ABSTRACTO DE DATOS)
• Es un conjunto de valores y operaciones definidas sobre
ellos mediante una especificación independiente de
cualquier implementación.
NAC © aguaszoft@outlook.es 9
Diseño mediante abstracciones
• En el diseño de programas basado en el uso
de abstracciones, se trata de:
1. Identificar los subproblemas.
2. Especificación abstracta de cada uno de ellos.
3. Implementar cada abstracción.
4. Verificación del programa.
NAC © aguaszoft@outlook.es 10
Mecanismos de abstracción
• Para llevar a cabo la abstracción los
lenguajes nos proporcionan
mecanismos:
• Módulos
• Clases ***
• Generalidad
• Ocultamiento
• Encapsulación ***
NAC © aguaszoft@outlook.es 11
TDA Encapsulamiento
• Encapsulamiento
• Es agrupar el código y los datos que maneja éste para
mantenerlos protegidos frente a cualquier interferencia y
mal uso.
• Ventajas del encapsulamiento
• Facilidad de modificación.
• Reutilización de código
• El TDA se ve como una caja negra que se manipula
como unidad básica y se desconoce su estructura
interna.
NAC © aguaszoft@outlook.es 12
Tipos de abstracción
• Abstracción funcional  rutina  función.
• Los lenguajes como Fortran, Cobol, Basic, Pascal, C, C++,
permiten implementar funciones.
• Una función tiene un nombre y parámetros.
• Cumplen una labor específica.
• Abstracción de datos  TDA.
• Implica abstraer los datos y las operaciones que pueden ser
ejecutadas sobre ellos.
• Por ejemplo los tipos de datos básicos (enteros, reales,
booleanos, caracteres)
• Los lenguajes de programación Pascal, C, C++ permiten tipos
de datos definidos por el programador o tipos de datos
estructurados.
NAC © aguaszoft@outlook.es 13
La abstracción depende del lenguaje
• La evolución de los lenguajes de programación
tiende a introducir cada vez más abstracciones.
Lenguajes
de bajo nivel
(Basic, Fortran,
Ensamblador, …)
Lenguajes
estructurados
(Pascal, C,
Modula, ADA, …)
Lenguajes
orientados a objetos
(Smalltalk, C++,
Java, Eiffel, …)
NAC © aguaszoft@outlook.es 14
La abstracción depende del lenguaje
• Soporte de TAD:
• Lenguajes estructurados
• (tipos definidos por el usuario): Los datos y las
operaciones van aparte.
• Es necesario copiar las funciones
• Lenguajes orientados a objetos
• (clases): Los datos y las operaciones constituyen una
unidad.
• Se puede reutilizar las clases
NAC © aguaszoft@outlook.es 15
Ejemplos TDA
• class alumno {
• int edad;
• char [] = new char[25];
• }
• class empleado {
• char [] = new char [50];
• int edad;
• int hijos;
• }
NAC © aguaszoft@outlook.es 16
Especificaciones informales.
• La descripción de una abstracción se realiza con un
lenguaje natural.
• Notación de especificación:
Partes que debe tener la especificación,
Significado y tipo de cada parte,
Partes que pueden ser opcionales, ...
NAC © aguaszoft@outlook.es 17
TAD - Especificación de atributos
• Para cada atributos debemos indicar:
• Nombre.
• Identificador del atributo
• Descripción.
• Para que se lo a utilizar
• Características.
• Propiedades características
• Valores no admitidos.
• Restricciones de dominio
NAC © aguaszoft@outlook.es 18
TAD – Especificación de métodos
• Para cada método deberemos indicar:
• Parámetros.
• Explicando el significado de cada uno.
• Valor de retorno.
• Describe el valor que devuelve el método en el caso que devuelva algo.
• Precondiciones.
• Son los requisitos que deben cumplir los parámetros para que el método
se comporte como se describe en la especificación. Si no se cumplen
estas condiciones, no se garantiza ningún tipo de resultado.
• Efecto.
• Describe el resultado que se produce cuando se realiza una llamada
correcta.
• Excepciones.
• Describe el comportamiento cuando se da una circunstancia
extraordinaria.
NAC © aguaszoft@outlook.es 19
Clasificación de los métodos
• Método Constructor
• Permite generar una nueva instancia de una clase u objeto.
• Método Observación
• Permite visualizar el estado de los atributos del objeto.
• Método Modificación
• Permite de manera controlada modificar los atributos del
objeto.
NAC © aguaszoft@outlook.es 20
Ej.: Especificación TAD fecha
TAD fecha
• Nombre fecha
• //Si se utiliza más de uno será separados por comas
• Descripción:
• Para almacenar una fecha del calendario (día, mes y año)
• Separador ‘/’ entre día, mes y año.
• Características:
• Valores no admitidos:
• Meses de enero, marzo, mayo, julio, octubre y diciembre con
número de días mayores que 31.
• Mes de febrero no bisiesto con número de días mayor que 28.
• Mes de febrero bisiesto con número de días mayor que 29.
• Resto de meses con número de días mayor que 30.
• Tampoco se admiten números negativos ni el cero*/
NAC © aguaszoft@outlook.es 21
Método constructor TAD fecha
• fecha crear (int d, int m, int an);
• Parámetros:
• d es el número del día, m es el número del mes y an es el número del
año.
• Valor de retorno:
• una fecha con los valores deseados.
• Precondiciones:
• d, m y an tienen que ser mayores o iguales a cero.
• Efecto:
• Devolverá una fecha inicializada con el día d, el mes m y el año an.
• Excepciones:
• Si los parámetros conforman una fecha no válida de acuerdo con los
valores no admitidos en el tipo.
NAC © aguaszoft@outlook.es 22
Método observador TAD fecha
• Nombre
• int verdia (fecha a);
• Parámetros:
• una fecha a.
• Valor de retorno:
• un número entero que es el día almacenado.
• Precondiciones:
• ninguna
• Efecto:
• Devolverá el número del día almacenado en la fecha a.
• Excepciones:
• Ninguna
NAC © aguaszoft@outlook.es 23
Método modificador TAD fecha
• Nombre
• fecha pondia (fecha a, int d);
• Parámetros:
• una fecha a y un número de día d.
• Valor de retorno:
• una fecha con valores.
• Precondiciones:
• d tiene que ser mayor o igual a cero.
• Efecto:
• Devolverá una fecha con los valores de la fecha a poniendo como día el valor del
parámetro d.
• Excepciones:
• Si la fecha modificada genera una fecha no válida, de acuerdo con los valores no
admitidos en el tipo, la fecha devuelta será la misma fecha a no cambiando el
día.
NAC © aguaszoft@outlook.es 24
• Las especificaciones en lenguaje natural son
ambiguas e imprecisas.
• Especificaciones formales: definen un TAD o
una operación de manera precisa, utilizando un
lenguaje matemático.
• Ventajas de una especificación formal:
• Prototipado. Las especificaciones formales pueden
llegar a ser ejecutables.
• Corrección del programa. Verificación automática y
formal de que el programa funciona correctamente.
• Reusabilidad. Posibilidad de usar la especificación
formal en distintos ámbitos.
Especificaciones formales.
NAC © aguaszoft@outlook.es 25
La descripción formal constará de cuatro partes:
• NOMBRE. Nombre genérico del TAD.
• CONJUNTOS. Conjuntos de datos que intervienen
en la definición.
• SINTAXIS. Signatura de las operaciones definidas.
• <nombre_operación> : <conj_dominio>  <conj_resultado>
• SEMÁNTICA. Indica el significado de las
operaciones.
Especificaciones formales: notación
NAC © aguaszoft@outlook.es 26
• Los distintas notaciones formales difieren en la
forma de definir la semántica:
• Método axiomático o algebraico. Se establece el
significado de las operaciones a través de relaciones
entre operaciones (axiomas). Significado implícito de las
operaciones.
• Método constructivo u operacional. Se define cada
operación por sí misma, independientemente de las
otras. Significado explícito de las operaciones.
Métodos de especificación formal
NAC © aguaszoft@outlook.es 27
• Supongamos un TAD, T.
• Tipos de operaciones
• Constructores. Conjunto mínimo de operaciones del
TAD, a partir del cual se puede obtener cualquier valor
del tipo T.
c1:  T, c2: V  T, c3: V1x...xVn  T
• Modificación. A partir de un valor del tipo obtienen otro
valor del tipo T, y no son constructores.
m1: T  T, m2: TxV  T, m3: TxV1x...xVn  T
• Consulta. Devuelven un valor que no es del tipo T.
o1: T  V, o2: TxV  V’, o3: TxV1x...xVn  Vn+1
Método axiomático.
NAC © aguaszoft@outlook.es 28
• NOMBRE Booleano
• CONJUNTOS B conjunto de valores booleanos,
U conjunto universal.
• SINTAXIS
verdadero :  B ; falso :  B ; Not : B  B ;
And : B×B  B ; Or : B×B  B ; Si : B×B  B ;
• SEMÁNTICA para todo b en B y u1 y u2 en U
1. Not (verdadero)=falso
2. Not (falso)=verdadero
3. And (verdadero,b)=b
4. ...
Método axiomático:
Ej. TAD Booleano
NAC © aguaszoft@outlook.es 29
• Una especificación es completa si de cualquier
expresión se puede encontrar otra más sencilla,
con operaciones de construcción.
• Una especificación es correcta si a partir de una
expresión sólo se puede obtener un resultado final.
• ¿Cómo garantizar que una especificación es
completa y correcta?
• Definir los axiomas suficientes para relacionar las
operaciones de modificación y consulta con los
constructores.
• No incluir axiomas que se puedan deducir de otros
existentes.
Método axiomático.
NAC © aguaszoft@outlook.es 30
• Se diferencia del axiomático en la semántica.
• Para cada operación, se establecen las
precondiciones y las postcondiciones.
• Precondición: Relación que se debe cumplir con
los datos de entrada para que la operación se
pueda aplicar.
• Postcondición: Relaciones que se cumplen
después de ejecutar la operación. No debe incluir
detalles de implementación.
Método constructivo.
NAC © aguaszoft@outlook.es 31
Notación
• Para cada operación
<nombre>:
• Precondición:
pre-<nombre> (<param_entrada>)::= <condición_lógica>
• Postcondición:
post-<nombre> (<param_entrada>;<param_salida>)::=
<condición_lógica>
Método constructivo - notación
NAC © aguaszoft@outlook.es 32
• Ejemplo: operación máximo, que tiene como
entrada dos números reales y da como salida
el mayor de los dos.
• SINTAXIS
máximo: R x R  R
• SEMANTICA
pre-máximo (x, y) ::= true
post-máximo (x, y; r) ::= (r  x)  (r  y)  (r=x 
r=y)
Método constructivo - Ejemplo
NAC © aguaszoft@outlook.es 33
Implementando un TDA
• Para implementar un ADT, necesita escoger:
• Una representación de datos
• Debe permitir representar todos los posibles valores del TDA
• Debe ser privada
• Un algoritmo para cada una de las operaciones
• Debe ser consistente con la representación
• Todas las operaciones adicionales deben ser privadas
NAC © aguaszoft@outlook.es 34
Contracto e implementación en Java
• Expresa el contrato como una clase es declarada,
expone solamente:
• Campos publicos
• Encabezados de constructores y métodos
• (Esto debe ser descrito en comentarios tipo javadoc)
• Expresa la implementación como una declaración
complementaria de clase.
NAC © aguaszoft@outlook.es 35
Ejemplo
• Descripción general de clase
public class Die {
// Cada valor es un die (singular de dado) con n lados,
// numerados de 1 a n, con una cara expuesta
• Constructor
public Die(int numeroDeLados)
// construye un die con cara de 1 a numeroDeLados
• Accessor
int lastRoll()
// retorna el resultado del lanzamiento previo
• Transformador (mutacion)
int roll()
// retorna el resultado de un nuevo lanzamiento
}
NAC © aguaszoft@outlook.es 36
Implementación
import java.util.*;
public class Die {
private int numeroDeLados;
private static Random random = new Random();
private int lado;
public Die(int numeroDeLados) {
this.numeroDeLados = numeroDeLados;
lado = roll(); //constructor en un estado valido
}
NAC © aguaszoft@outlook.es 37
Resumen
• Un Tipo de dato describe los valores,
representaciones, y operaciones
• Un ADT (Abstract Data Type) describe los valores y
operaciones, pero no las representaciones
• Un ADT debe proteger los datos y mantenerlos validos
• Todos los datos deben ser private
• El acceso a los datos debe ser vía métodos
• Un ADT debe proveer:
• Un contracto
• Un conjunto de operaciones necesario y suficiente
NAC © aguaszoft@outlook.es 38
Clase complejo con constructor
public class Complejo
{
private double real;
private double imag;
public Complejo()
{ real=0.0;
imag=0.0; }
public Complejo(double real, double imag){ this.real=real;
this.imag=imag; }
//otras funciones miembro
}
NAC © aguaszoft@outlook.es 39
Mostrar complejo
// Presentar en forma de String
public String toString()
{
if(imag>0) return new
String((double)Math.round(100*real)/100+ " +
"+(double)Math.round(100*imag)/100+"*i"); return new
String((double)Math.round(100*real)/100+ " -
"+(double)Math.round(-100*imag)/100+"*i"); }
NAC © aguaszoft@outlook.es 40
Complejo en forma polar
public double modulo() {
return Math.sqrt(real*real+imag*imag);
}
public double argumento() {
double angulo=Math.atan2(imag, real); if(angulo<0)
angulo=2*Math.PI+angulo; return angulo*180/Math.PI;
}
NAC © aguaszoft@outlook.es 41
EJERCICIOS
• Especificar el TDA LISTA
• Considerar los datos
• Lista L
• Posicion p
• Elemento e
• Considerar los métodos
• Makenull
• Insert
• Delete
• Print
• El resto de métodos como tarea
GRACIAS

Más contenido relacionado

Similar a 1-NAC-TDA Estructuras de Datos

PRESENTACION EVIDENCIAS RUBI VERONICA ISC J3 A
PRESENTACION EVIDENCIAS RUBI VERONICA ISC J3 APRESENTACION EVIDENCIAS RUBI VERONICA ISC J3 A
PRESENTACION EVIDENCIAS RUBI VERONICA ISC J3 AChisurin
 
Presentacion unidad u1_estructura_de_datos_victor_uex
Presentacion unidad u1_estructura_de_datos_victor_uexPresentacion unidad u1_estructura_de_datos_victor_uex
Presentacion unidad u1_estructura_de_datos_victor_uexvictoruex
 
Unidad 1 algoritmos y programas
Unidad 1 algoritmos y programasUnidad 1 algoritmos y programas
Unidad 1 algoritmos y programasRoberth Camana
 
Algoritmos computacionales conceptos básicos
Algoritmos computacionales   conceptos básicosAlgoritmos computacionales   conceptos básicos
Algoritmos computacionales conceptos básicosYahaira Fernández Segura
 
INGENIERIA DE SOFTWARE 2012
INGENIERIA DE SOFTWARE 2012INGENIERIA DE SOFTWARE 2012
INGENIERIA DE SOFTWARE 2012Diego Prado
 
Presentacion De Programa De Formacion
Presentacion De Programa De FormacionPresentacion De Programa De Formacion
Presentacion De Programa De Formacionanderwrt
 
FUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon Koudsi
FUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon KoudsiFUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon Koudsi
FUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon KoudsiRaimonKoudsi
 
UNIDAD 2_Tema 1.pdf
UNIDAD 2_Tema 1.pdfUNIDAD 2_Tema 1.pdf
UNIDAD 2_Tema 1.pdfjaimelovato
 
Algoritmos y Programación
Algoritmos y ProgramaciónAlgoritmos y Programación
Algoritmos y ProgramaciónJuan Guadama
 
Rc eduar corredor
Rc eduar  corredorRc eduar  corredor
Rc eduar corredoreycorredorg
 
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptxcapitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptxMundoGamerHD
 
Diego ochoaguerrero nelsondavidluna
Diego ochoaguerrero nelsondavidlunaDiego ochoaguerrero nelsondavidluna
Diego ochoaguerrero nelsondavidlunaDiǝgo Fǝr
 
Análisis y diseño de sistemas sesion 12 - diagrama de secuencia
Análisis y diseño de sistemas   sesion 12 - diagrama de secuenciaAnálisis y diseño de sistemas   sesion 12 - diagrama de secuencia
Análisis y diseño de sistemas sesion 12 - diagrama de secuenciaGianfrancoEduardoBra
 

Similar a 1-NAC-TDA Estructuras de Datos (20)

PRESENTACION EVIDENCIAS RUBI VERONICA ISC J3 A
PRESENTACION EVIDENCIAS RUBI VERONICA ISC J3 APRESENTACION EVIDENCIAS RUBI VERONICA ISC J3 A
PRESENTACION EVIDENCIAS RUBI VERONICA ISC J3 A
 
Evidencias1 (Diapositivas - Rubi Veronica)
Evidencias1 (Diapositivas  - Rubi Veronica)Evidencias1 (Diapositivas  - Rubi Veronica)
Evidencias1 (Diapositivas - Rubi Veronica)
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
Presentacion unidad u1_estructura_de_datos_victor_uex
Presentacion unidad u1_estructura_de_datos_victor_uexPresentacion unidad u1_estructura_de_datos_victor_uex
Presentacion unidad u1_estructura_de_datos_victor_uex
 
Programación
ProgramaciónProgramación
Programación
 
Unidad 1 algoritmos y programas
Unidad 1 algoritmos y programasUnidad 1 algoritmos y programas
Unidad 1 algoritmos y programas
 
Tema1 (2)
Tema1 (2)Tema1 (2)
Tema1 (2)
 
Algoritmos computacionales conceptos básicos
Algoritmos computacionales   conceptos básicosAlgoritmos computacionales   conceptos básicos
Algoritmos computacionales conceptos básicos
 
Visualfoxpro
VisualfoxproVisualfoxpro
Visualfoxpro
 
INGENIERIA DE SOFTWARE 2012
INGENIERIA DE SOFTWARE 2012INGENIERIA DE SOFTWARE 2012
INGENIERIA DE SOFTWARE 2012
 
Presentacion De Programa De Formacion
Presentacion De Programa De FormacionPresentacion De Programa De Formacion
Presentacion De Programa De Formacion
 
Visual foxpro
Visual foxproVisual foxpro
Visual foxpro
 
FUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon Koudsi
FUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon KoudsiFUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon Koudsi
FUNDAMENTOS Y MÉTODOS DE ANÁLISIS DE REQUERIMIENTOS Raimon Koudsi
 
UNIDAD 2_Tema 1.pdf
UNIDAD 2_Tema 1.pdfUNIDAD 2_Tema 1.pdf
UNIDAD 2_Tema 1.pdf
 
Algoritmos y Programación
Algoritmos y ProgramaciónAlgoritmos y Programación
Algoritmos y Programación
 
Rc eduar corredor
Rc eduar  corredorRc eduar  corredor
Rc eduar corredor
 
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptxcapitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
capitulo05identificadoresvariablesyconstantes-110508105055-phpapp01.pptx
 
trabajo analisis.pptx
trabajo analisis.pptxtrabajo analisis.pptx
trabajo analisis.pptx
 
Diego ochoaguerrero nelsondavidluna
Diego ochoaguerrero nelsondavidlunaDiego ochoaguerrero nelsondavidluna
Diego ochoaguerrero nelsondavidluna
 
Análisis y diseño de sistemas sesion 12 - diagrama de secuencia
Análisis y diseño de sistemas   sesion 12 - diagrama de secuenciaAnálisis y diseño de sistemas   sesion 12 - diagrama de secuencia
Análisis y diseño de sistemas sesion 12 - diagrama de secuencia
 

Más de Luis Fernando Aguas Bucheli (20)

EFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptxEFC-ISW-Luis Fernando Aguas.pptx
EFC-ISW-Luis Fernando Aguas.pptx
 
P-S2.pptx
P-S2.pptxP-S2.pptx
P-S2.pptx
 
EBTS-S1.pptx
EBTS-S1.pptxEBTS-S1.pptx
EBTS-S1.pptx
 
P-S3.pptx
P-S3.pptxP-S3.pptx
P-S3.pptx
 
EBTS-S4.pptx
EBTS-S4.pptxEBTS-S4.pptx
EBTS-S4.pptx
 
P-S4.pptx
P-S4.pptxP-S4.pptx
P-S4.pptx
 
P-S1.pptx
P-S1.pptxP-S1.pptx
P-S1.pptx
 
EBTS-S3.pptx
EBTS-S3.pptxEBTS-S3.pptx
EBTS-S3.pptx
 
EBTS-S2.pptx
EBTS-S2.pptxEBTS-S2.pptx
EBTS-S2.pptx
 
PDIDTI-S7.pptx
PDIDTI-S7.pptxPDIDTI-S7.pptx
PDIDTI-S7.pptx
 
PDIDTI-S4.pptx
PDIDTI-S4.pptxPDIDTI-S4.pptx
PDIDTI-S4.pptx
 
PDIDTI-S2.pptx
PDIDTI-S2.pptxPDIDTI-S2.pptx
PDIDTI-S2.pptx
 
PDIDTI-S1.pptx
PDIDTI-S1.pptxPDIDTI-S1.pptx
PDIDTI-S1.pptx
 
PDIDTI-S8.pptx
PDIDTI-S8.pptxPDIDTI-S8.pptx
PDIDTI-S8.pptx
 
PDIDTI-S6.pptx
PDIDTI-S6.pptxPDIDTI-S6.pptx
PDIDTI-S6.pptx
 
PDIDTI-S5.pptx
PDIDTI-S5.pptxPDIDTI-S5.pptx
PDIDTI-S5.pptx
 
PDIDTI-S3.pptx
PDIDTI-S3.pptxPDIDTI-S3.pptx
PDIDTI-S3.pptx
 
TIC-S4.pptx
TIC-S4.pptxTIC-S4.pptx
TIC-S4.pptx
 
TIC-S3.pptx
TIC-S3.pptxTIC-S3.pptx
TIC-S3.pptx
 
TIC-S2.pptx
TIC-S2.pptxTIC-S2.pptx
TIC-S2.pptx
 

Último

hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxMarcelaArancibiaRojo
 
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxCONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxBrayanJavierCalle2
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxCARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxvalenciaespinozadavi1
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptxBRAYANJOSEPTSANJINEZ
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOFritz Rebaza Latoche
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Dr. Edwin Hernandez
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILProblemSolved
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023RonaldoPaucarMontes
 
PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfalexquispenieto2
 
clases de porcinos generales de porcinos
clases de porcinos generales de porcinosclases de porcinos generales de porcinos
clases de porcinos generales de porcinosDayanaCarolinaAP
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfIvanRetambay
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAJOSLUISCALLATAENRIQU
 
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLTERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLdanilojaviersantiago
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASPersonalJesusGranPod
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesElianaCceresTorrico
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.pptoscarvielma45
 
Base de Datos en Microsoft SQL Server 2024
Base de Datos en Microsoft SQL Server 2024Base de Datos en Microsoft SQL Server 2024
Base de Datos en Microsoft SQL Server 2024CESARHERNANPATRICIOP2
 

Último (20)

hitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docxhitos del desarrollo psicomotor en niños.docx
hitos del desarrollo psicomotor en niños.docx
 
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxCONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptxCARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
CARGAS VIVAS Y CARGAS MUERTASEXPOCI.pptx
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADOPERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
PERFORACIÓN Y VOLADURA EN MINERÍA APLICADO
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...
 
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVILClase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
Clase 7 MECÁNICA DE FLUIDOS 2 INGENIERIA CIVIL
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
PPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdfPPT ELABORARACION DE ADOBES 2023 (1).pdf
PPT ELABORARACION DE ADOBES 2023 (1).pdf
 
clases de porcinos generales de porcinos
clases de porcinos generales de porcinosclases de porcinos generales de porcinos
clases de porcinos generales de porcinos
 
osciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdfosciloscopios Mediciones Electricas ingenieria.pdf
osciloscopios Mediciones Electricas ingenieria.pdf
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOLTERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
TERMODINAMICA YUNUS SEPTIMA EDICION, ESPAÑOL
 
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERASDOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
DOCUMENTO PLAN DE RESPUESTA A EMERGENCIAS MINERAS
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotencialesUNIDAD 3 ELECTRODOS.pptx para biopotenciales
UNIDAD 3 ELECTRODOS.pptx para biopotenciales
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
Base de Datos en Microsoft SQL Server 2024
Base de Datos en Microsoft SQL Server 2024Base de Datos en Microsoft SQL Server 2024
Base de Datos en Microsoft SQL Server 2024
 

1-NAC-TDA Estructuras de Datos

  • 1. Módulo 1: Tipos de Datos Abstractos TDA NAC Modalidad de estudios: Virtual Mg. Luis Fernando Aguas Bucheli +593 984015184 @Aguaszoft Laguas@uisrael.edu.ec Zeuszoft@protonmail.com
  • 2. Objetivos del encuentro: 1. Adquirir los conceptos básicos relacionados con la programación 2. Reconocer las características de la programación 3. Conocer la historia de la progrmación Módulo Nro. 1
  • 3. Frase Motivacional Cuando te encuentres a ti mismo al lado de la mayoría, es tiempo de parar y reflexionar (Mark Twain)
  • 4. NAC © aguaszoft@outlook.es 4 Tipos de datos • Los tipos de datos están clasificados en: • Enteros, booleanos, String, Applets. • Un tipo de dato especifica: • El rango de valores que pueden tener; y, • Las operaciones que se pueden realizar • Algunos errores comunes son: • Tratar de aplicar operaciones que no son del tipo de dato; o, • Considerar que todos necesitan la misma cantidad de memoria.
  • 5. NAC © aguaszoft@outlook.es 5 Tipos primitivos en JAVA • Java provee 8 tipos primitivos: • boolean • char, byte, short, int, long • float, double • Cada tipo primitivo tiene • Un conjunto de valores • Una representación de dato • Un conjunto de operaciones • El programador no puede cambiar ninguno de los elementos antes mencionados.
  • 6. NAC © aguaszoft@outlook.es 6 Evolución a TAD • TIPO DE DATOS: • Conjunto de valores que puede tomar una variable, un parámetro o una expresión. • TIPO ABSTRACTO DE DATOS: • Dominio abstracto de valores junto con las operaciones aplicables sobre el mismo. • ESTRUCTURA DE DATOS: • Disposición en memoria de los datos necesarios para almacenar valores de un TDA.
  • 7. NAC © aguaszoft@outlook.es 7 TAD : Ejemplo • TAD: • Enteros • Tipo de datos: • Tipo integer de Pascal, o tipo int de Java • Estructura de datos: • Representación mediante enteros de 16 bits, 32 bits, listas de dígitos (enteros largos), etc.
  • 8. NAC © aguaszoft@outlook.es 8 TDA Conceptos • Abstracción • Abstraer es extraer y agrupar. • Es un método de resolución de problemas, que consiste en destacar los detalles importantes y dejar a un lado los irrelevantes. • TAD (TIPO ABSTRACTO DE DATOS) • Es un conjunto de valores y operaciones definidas sobre ellos mediante una especificación independiente de cualquier implementación.
  • 9. NAC © aguaszoft@outlook.es 9 Diseño mediante abstracciones • En el diseño de programas basado en el uso de abstracciones, se trata de: 1. Identificar los subproblemas. 2. Especificación abstracta de cada uno de ellos. 3. Implementar cada abstracción. 4. Verificación del programa.
  • 10. NAC © aguaszoft@outlook.es 10 Mecanismos de abstracción • Para llevar a cabo la abstracción los lenguajes nos proporcionan mecanismos: • Módulos • Clases *** • Generalidad • Ocultamiento • Encapsulación ***
  • 11. NAC © aguaszoft@outlook.es 11 TDA Encapsulamiento • Encapsulamiento • Es agrupar el código y los datos que maneja éste para mantenerlos protegidos frente a cualquier interferencia y mal uso. • Ventajas del encapsulamiento • Facilidad de modificación. • Reutilización de código • El TDA se ve como una caja negra que se manipula como unidad básica y se desconoce su estructura interna.
  • 12. NAC © aguaszoft@outlook.es 12 Tipos de abstracción • Abstracción funcional  rutina  función. • Los lenguajes como Fortran, Cobol, Basic, Pascal, C, C++, permiten implementar funciones. • Una función tiene un nombre y parámetros. • Cumplen una labor específica. • Abstracción de datos  TDA. • Implica abstraer los datos y las operaciones que pueden ser ejecutadas sobre ellos. • Por ejemplo los tipos de datos básicos (enteros, reales, booleanos, caracteres) • Los lenguajes de programación Pascal, C, C++ permiten tipos de datos definidos por el programador o tipos de datos estructurados.
  • 13. NAC © aguaszoft@outlook.es 13 La abstracción depende del lenguaje • La evolución de los lenguajes de programación tiende a introducir cada vez más abstracciones. Lenguajes de bajo nivel (Basic, Fortran, Ensamblador, …) Lenguajes estructurados (Pascal, C, Modula, ADA, …) Lenguajes orientados a objetos (Smalltalk, C++, Java, Eiffel, …)
  • 14. NAC © aguaszoft@outlook.es 14 La abstracción depende del lenguaje • Soporte de TAD: • Lenguajes estructurados • (tipos definidos por el usuario): Los datos y las operaciones van aparte. • Es necesario copiar las funciones • Lenguajes orientados a objetos • (clases): Los datos y las operaciones constituyen una unidad. • Se puede reutilizar las clases
  • 15. NAC © aguaszoft@outlook.es 15 Ejemplos TDA • class alumno { • int edad; • char [] = new char[25]; • } • class empleado { • char [] = new char [50]; • int edad; • int hijos; • }
  • 16. NAC © aguaszoft@outlook.es 16 Especificaciones informales. • La descripción de una abstracción se realiza con un lenguaje natural. • Notación de especificación: Partes que debe tener la especificación, Significado y tipo de cada parte, Partes que pueden ser opcionales, ...
  • 17. NAC © aguaszoft@outlook.es 17 TAD - Especificación de atributos • Para cada atributos debemos indicar: • Nombre. • Identificador del atributo • Descripción. • Para que se lo a utilizar • Características. • Propiedades características • Valores no admitidos. • Restricciones de dominio
  • 18. NAC © aguaszoft@outlook.es 18 TAD – Especificación de métodos • Para cada método deberemos indicar: • Parámetros. • Explicando el significado de cada uno. • Valor de retorno. • Describe el valor que devuelve el método en el caso que devuelva algo. • Precondiciones. • Son los requisitos que deben cumplir los parámetros para que el método se comporte como se describe en la especificación. Si no se cumplen estas condiciones, no se garantiza ningún tipo de resultado. • Efecto. • Describe el resultado que se produce cuando se realiza una llamada correcta. • Excepciones. • Describe el comportamiento cuando se da una circunstancia extraordinaria.
  • 19. NAC © aguaszoft@outlook.es 19 Clasificación de los métodos • Método Constructor • Permite generar una nueva instancia de una clase u objeto. • Método Observación • Permite visualizar el estado de los atributos del objeto. • Método Modificación • Permite de manera controlada modificar los atributos del objeto.
  • 20. NAC © aguaszoft@outlook.es 20 Ej.: Especificación TAD fecha TAD fecha • Nombre fecha • //Si se utiliza más de uno será separados por comas • Descripción: • Para almacenar una fecha del calendario (día, mes y año) • Separador ‘/’ entre día, mes y año. • Características: • Valores no admitidos: • Meses de enero, marzo, mayo, julio, octubre y diciembre con número de días mayores que 31. • Mes de febrero no bisiesto con número de días mayor que 28. • Mes de febrero bisiesto con número de días mayor que 29. • Resto de meses con número de días mayor que 30. • Tampoco se admiten números negativos ni el cero*/
  • 21. NAC © aguaszoft@outlook.es 21 Método constructor TAD fecha • fecha crear (int d, int m, int an); • Parámetros: • d es el número del día, m es el número del mes y an es el número del año. • Valor de retorno: • una fecha con los valores deseados. • Precondiciones: • d, m y an tienen que ser mayores o iguales a cero. • Efecto: • Devolverá una fecha inicializada con el día d, el mes m y el año an. • Excepciones: • Si los parámetros conforman una fecha no válida de acuerdo con los valores no admitidos en el tipo.
  • 22. NAC © aguaszoft@outlook.es 22 Método observador TAD fecha • Nombre • int verdia (fecha a); • Parámetros: • una fecha a. • Valor de retorno: • un número entero que es el día almacenado. • Precondiciones: • ninguna • Efecto: • Devolverá el número del día almacenado en la fecha a. • Excepciones: • Ninguna
  • 23. NAC © aguaszoft@outlook.es 23 Método modificador TAD fecha • Nombre • fecha pondia (fecha a, int d); • Parámetros: • una fecha a y un número de día d. • Valor de retorno: • una fecha con valores. • Precondiciones: • d tiene que ser mayor o igual a cero. • Efecto: • Devolverá una fecha con los valores de la fecha a poniendo como día el valor del parámetro d. • Excepciones: • Si la fecha modificada genera una fecha no válida, de acuerdo con los valores no admitidos en el tipo, la fecha devuelta será la misma fecha a no cambiando el día.
  • 24. NAC © aguaszoft@outlook.es 24 • Las especificaciones en lenguaje natural son ambiguas e imprecisas. • Especificaciones formales: definen un TAD o una operación de manera precisa, utilizando un lenguaje matemático. • Ventajas de una especificación formal: • Prototipado. Las especificaciones formales pueden llegar a ser ejecutables. • Corrección del programa. Verificación automática y formal de que el programa funciona correctamente. • Reusabilidad. Posibilidad de usar la especificación formal en distintos ámbitos. Especificaciones formales.
  • 25. NAC © aguaszoft@outlook.es 25 La descripción formal constará de cuatro partes: • NOMBRE. Nombre genérico del TAD. • CONJUNTOS. Conjuntos de datos que intervienen en la definición. • SINTAXIS. Signatura de las operaciones definidas. • <nombre_operación> : <conj_dominio>  <conj_resultado> • SEMÁNTICA. Indica el significado de las operaciones. Especificaciones formales: notación
  • 26. NAC © aguaszoft@outlook.es 26 • Los distintas notaciones formales difieren en la forma de definir la semántica: • Método axiomático o algebraico. Se establece el significado de las operaciones a través de relaciones entre operaciones (axiomas). Significado implícito de las operaciones. • Método constructivo u operacional. Se define cada operación por sí misma, independientemente de las otras. Significado explícito de las operaciones. Métodos de especificación formal
  • 27. NAC © aguaszoft@outlook.es 27 • Supongamos un TAD, T. • Tipos de operaciones • Constructores. Conjunto mínimo de operaciones del TAD, a partir del cual se puede obtener cualquier valor del tipo T. c1:  T, c2: V  T, c3: V1x...xVn  T • Modificación. A partir de un valor del tipo obtienen otro valor del tipo T, y no son constructores. m1: T  T, m2: TxV  T, m3: TxV1x...xVn  T • Consulta. Devuelven un valor que no es del tipo T. o1: T  V, o2: TxV  V’, o3: TxV1x...xVn  Vn+1 Método axiomático.
  • 28. NAC © aguaszoft@outlook.es 28 • NOMBRE Booleano • CONJUNTOS B conjunto de valores booleanos, U conjunto universal. • SINTAXIS verdadero :  B ; falso :  B ; Not : B  B ; And : B×B  B ; Or : B×B  B ; Si : B×B  B ; • SEMÁNTICA para todo b en B y u1 y u2 en U 1. Not (verdadero)=falso 2. Not (falso)=verdadero 3. And (verdadero,b)=b 4. ... Método axiomático: Ej. TAD Booleano
  • 29. NAC © aguaszoft@outlook.es 29 • Una especificación es completa si de cualquier expresión se puede encontrar otra más sencilla, con operaciones de construcción. • Una especificación es correcta si a partir de una expresión sólo se puede obtener un resultado final. • ¿Cómo garantizar que una especificación es completa y correcta? • Definir los axiomas suficientes para relacionar las operaciones de modificación y consulta con los constructores. • No incluir axiomas que se puedan deducir de otros existentes. Método axiomático.
  • 30. NAC © aguaszoft@outlook.es 30 • Se diferencia del axiomático en la semántica. • Para cada operación, se establecen las precondiciones y las postcondiciones. • Precondición: Relación que se debe cumplir con los datos de entrada para que la operación se pueda aplicar. • Postcondición: Relaciones que se cumplen después de ejecutar la operación. No debe incluir detalles de implementación. Método constructivo.
  • 31. NAC © aguaszoft@outlook.es 31 Notación • Para cada operación <nombre>: • Precondición: pre-<nombre> (<param_entrada>)::= <condición_lógica> • Postcondición: post-<nombre> (<param_entrada>;<param_salida>)::= <condición_lógica> Método constructivo - notación
  • 32. NAC © aguaszoft@outlook.es 32 • Ejemplo: operación máximo, que tiene como entrada dos números reales y da como salida el mayor de los dos. • SINTAXIS máximo: R x R  R • SEMANTICA pre-máximo (x, y) ::= true post-máximo (x, y; r) ::= (r  x)  (r  y)  (r=x  r=y) Método constructivo - Ejemplo
  • 33. NAC © aguaszoft@outlook.es 33 Implementando un TDA • Para implementar un ADT, necesita escoger: • Una representación de datos • Debe permitir representar todos los posibles valores del TDA • Debe ser privada • Un algoritmo para cada una de las operaciones • Debe ser consistente con la representación • Todas las operaciones adicionales deben ser privadas
  • 34. NAC © aguaszoft@outlook.es 34 Contracto e implementación en Java • Expresa el contrato como una clase es declarada, expone solamente: • Campos publicos • Encabezados de constructores y métodos • (Esto debe ser descrito en comentarios tipo javadoc) • Expresa la implementación como una declaración complementaria de clase.
  • 35. NAC © aguaszoft@outlook.es 35 Ejemplo • Descripción general de clase public class Die { // Cada valor es un die (singular de dado) con n lados, // numerados de 1 a n, con una cara expuesta • Constructor public Die(int numeroDeLados) // construye un die con cara de 1 a numeroDeLados • Accessor int lastRoll() // retorna el resultado del lanzamiento previo • Transformador (mutacion) int roll() // retorna el resultado de un nuevo lanzamiento }
  • 36. NAC © aguaszoft@outlook.es 36 Implementación import java.util.*; public class Die { private int numeroDeLados; private static Random random = new Random(); private int lado; public Die(int numeroDeLados) { this.numeroDeLados = numeroDeLados; lado = roll(); //constructor en un estado valido }
  • 37. NAC © aguaszoft@outlook.es 37 Resumen • Un Tipo de dato describe los valores, representaciones, y operaciones • Un ADT (Abstract Data Type) describe los valores y operaciones, pero no las representaciones • Un ADT debe proteger los datos y mantenerlos validos • Todos los datos deben ser private • El acceso a los datos debe ser vía métodos • Un ADT debe proveer: • Un contracto • Un conjunto de operaciones necesario y suficiente
  • 38. NAC © aguaszoft@outlook.es 38 Clase complejo con constructor public class Complejo { private double real; private double imag; public Complejo() { real=0.0; imag=0.0; } public Complejo(double real, double imag){ this.real=real; this.imag=imag; } //otras funciones miembro }
  • 39. NAC © aguaszoft@outlook.es 39 Mostrar complejo // Presentar en forma de String public String toString() { if(imag>0) return new String((double)Math.round(100*real)/100+ " + "+(double)Math.round(100*imag)/100+"*i"); return new String((double)Math.round(100*real)/100+ " - "+(double)Math.round(-100*imag)/100+"*i"); }
  • 40. NAC © aguaszoft@outlook.es 40 Complejo en forma polar public double modulo() { return Math.sqrt(real*real+imag*imag); } public double argumento() { double angulo=Math.atan2(imag, real); if(angulo<0) angulo=2*Math.PI+angulo; return angulo*180/Math.PI; }
  • 41. NAC © aguaszoft@outlook.es 41 EJERCICIOS • Especificar el TDA LISTA • Considerar los datos • Lista L • Posicion p • Elemento e • Considerar los métodos • Makenull • Insert • Delete • Print • El resto de métodos como tarea