Tipos de Datos Abstractos (II) - PowerPoint PPT Presentation

1 / 14
About This Presentation
Title:

Tipos de Datos Abstractos (II)

Description:

Los Tipos de Datos Abstractos (TDA) sirven para simplificar el dise o y la ... Racional Dividir(Racional x, Racional y); /* Retorna x/y ... – PowerPoint PPT presentation

Number of Views:73
Avg rating:3.0/5.0
Slides: 15
Provided by: FelipeC2
Category:

less

Transcript and Presenter's Notes

Title: Tipos de Datos Abstractos (II)


1
Tipos de Datos Abstractos (II)
  • Clase 22
  • Introducción a la Programación

2
Resumen de la última clase
  • Los Tipos de Datos Abstractos (TDA) sirven para
    simplificar el diseño y la implementación de los
    programas.
  • Hemos visto que permiten
  • Crear nuevos tipos de datos
  • Crear funciones que operan sobre esos tipos de
    datos
  • Creación y uso de nuevos tipos de datos
  • Definición de una nueva estructura de datos
  • typedef struct
  • char nombre30
  • char NumAlumno8
  • float Nota1
  • float Nota2
  • float Nota3
  • float NotaFinal
  • Alumno
  • Declaración de variables
  • Alumno A1, A2, A3
  • Alumno A100
  • Función que retorna una estructura
  • Alumno NuevoAlumno(char Nombre) ...
  • Función que recibe como argumento una estructura
  • void CalculaNota(Alumno A1) ...
  • Declaración e inicializacion de variable
  • Alumno A1 "Elvira", "98231465", 6.0, 5.5, 5.0,
    5.5
  • Asignación de variables
  • A1.Nombre "Elvira"
  • A0.Nombre "Elvira

3
Ejemplo implementación de operaciones con
números racionales
  • Tipo de datos
  •    typedef struct       int num      int
    den   Racional
  • Interfaz de la funciones a implementar
  •    Racional NuevoRacional(int n, int d)   /
    Constructor /
  •    int Numerador(Racional x)   / Retorna el
    numerador de x /
  •    int Denominador(Racional x)   / Retorna el
    denominador de x /
  •    Racional Sumar(Racional x, Racional
    y)         / Retorna xy /
  •    Racional Restar(Racional x, Racional
    y)        / Retorna x-y /
  •    Racional Multiplicar(Racional x, Racional
    y)   / Retorna xy /
  •    Racional Dividir(Racional x, Racional
    y)       / Retorna x/y /
  • int SonIguales(Racional x, Racional y)   /
    TRUE si xy /
  •    void Imprimir(Racional x)   / Imprime x en
    la pantalla num/den /

4
Racional NuevoRacional(int n, int d)
Racional x x.num n x.den d
return(x) int Numerador(Racional x)
return(x.num) int
Denominador(Racional x) return(x.den)
Racional Sumar(Racional x, Racional y)
Racional z z.num x.numy.den
x.deny.num z.den x.deny.den
return(z) Racional Restar(Racional x,
Racional y) Racional z z.num
x.numy.den - x.deny.num z.den
x.deny.den return(z)
5
Racional Multiplicar(Racional x, Racional y)
Racional z z.num x.numy.num
z.den x.deny.den return(z)
Racional Dividir(Racional x, Racional y)
Racional z z.num x.numy.den
z.den x.deny.num return(z)
int SonIguales(Racional x, Racional y)
return(x.numy.denx.deny.num) void
Imprimir(Racional x) printf("d/d",
x.num, x.den) return
6
Beneficios de los TDAs
  • Si tenemos que saber siempre cómo están
    implementados los tipos de datos, nuestros
    programas dependerán de esa implementación.
  • Esto quiere decir que si se producen cambios en
    la implementación del tipo de datos, será
    necesario cambiar el programa para que siga
    funcionando.
  • Los TDAs permiten olvidarse (abstraerse) de los
    detalles
  • Y si no sabemos cómo están implementados los
    tipos de datos, cómo los podemos usar?
  • Mediante una interfaz, predefinida e invariante.

Interfaz
Datos
7
Características de los TDAs
  • Los datos que componen el TDA se mantendrán
    ocultos de los programadores que lo usan.
  • La única forma de accederlos es a través de la
    interfaz.
  • La interfaz está compuesta por funciones,
    llamadas constructores y selectores.
  • Los constructores son los encargados de
    inicializar las nuevas instancias del TDA.
  • Los selectores suministran la funcionalidad que
    le da productividad al TDA. Permite extraer,
    agregar, modificar, o eliminar datos a partir de
    una instancia del TDA.

8
Ejercicioestadísticas climáticas
  • Para cada día se registra
  • Temperatura mínima
  • Temperatura máxima
  • Humedad
  • Se desea implementar las siguientes funciones
  • agregar_datos(año, mes, día, tmax, tmin, hum)
  • datos consultar_datos(año, mes, día)
  • datospromedio calcular_promedios_año(año)
  • datospromedio calcular_promedios_día(día)

9
EjemploManajedor de Cassettes y CDs
  • Menú con la funcionalidad deseada
  • Ingresar cassette
  • Ingresar CD
  • Eliminar cassette
  • Eliminar CD
  • Listar cassettes
  • Listar CDs
  • Listar todo
  • Buscar por titulo
  • Buscar por interprete
  • Salir
  • Desconocida

10
Manejador de CDs y cassettes (2)Definición TDA
Registro
  • InterpreteRegistro
  • Parámetros R (Registro)Valor de retorno
    interprete (string) Descripción Retorna el
    interprete almacenado en un registro.
  • RegistroVacio
  • Parámetros R (Registro)Valor de retorno 1 si
    el registro está vacio, 0 en caso contrario
    Descripción Indica si el registro está vacio.
  • ImprimirRegistro
  • Parámetros R (Registro)Valor de retorno no
    tiene Descripción Despliega en pantalla primero
    el título de la grabación y luego el intérprete
    encerrado entre paréntesis.
  • TDA Registro
  • Cada registro almacenará los datos de una
    grabación. La interfaz del TDA Registro está
    compuesta por las siguientes funciones
  • CrearRegistro
  • Parámetros titulo (string) e inteprete (string)
  • Valor de retorno R (Registro)
  • Descripción Se crea un registro con el título e
    intérprete suministrados.
  • TituloRegistro
  • Parámetros R (Registro)Valor de retorno titulo
    (string) Descripción Retorna el título
    almacenado en un registro.

11
Manejador de CDs y cassettes (3)Definición TDA
Lista
  • Primero
  • Parámetros L (Lista) Valor de retorno
    Identificador de elemento (Id)Descripción
    Retorna el identificador del primer elemento de
    la lista L, o la constante FIN en caso que la
    lista esté vacía.
  • Siguiente
  • Parámetros L (Lista), id (identificador) Valor
    de retorno Identificador de elemento (Id)
    Descripción Retorna el identificador del
    siguiente elemento en la lista L, a partir del
    elemento id, o la constante FIN en caso que ya no
    existan más elementos.
  • TDA Lista
  • Los elementos de la lista tienen asociado un
    identificador único de tipo Id. La constante FIN,
    también de tipo Id, se emplea para ciertos
    propósitos. La interfaz del TDA Lista está
    compuesta por las siguientes funciones
  • CrearLista
  • Parámetros No tiene
  • Valor de retorno L (Lista)
  • Descripción Se crea la lista vacía L
  • Insertar
  • Parámetros L (Lista), R (Registro)Valor de
    retorno L (Lista) modificada
  • Descripción Agrega un nuevo registro R a la
    lista L.

12
Manejador de CDs y cassettes (4)Definición TDA
Registro
  • Imprimir
  • Parámetros L (Lista), id (identificador)Valor
    de retorno No tiene Descripción Despliega en
    la pantalla el elemento de L cuyo identificador
    fue suministrado (id).
  • BuscarT
  • Parámetros L (Lista), id (Id), titulo (string)
    Valor de retorno Identificador de elemento (Id)
    Descripción Busca el primer elemento de la
    lista L cuyo titulo sea igual al parámetro
    suministrado y retorna su identificador, o la
    constante FIN si no se encuentra. La búsqueda
    empezará a partir del elemento cuyo identificador
    se pasó como parámetro (id).
  • BuscarI
  • Parámetros L (Lista), id (Id), intérprete
    (string) Valor de retorno Identificador de
    elemento (Id) Descripción Busca el primer
    elemento de la lista L cuyo intérprete sea igual
    al parámetro suministrado y retorna su
    identificador, o la constante FIN si no se
    encuentra. La búsqueda empezará a partir del
    elemento cuyo identificador se pasó como
    parámetro (id).
  • Borrar
  • Parámetros L (Lista), id (Id) Valor de retorno
    L (Lista) modificadaDescripción Borra de la
    lista L el elemento cuyo identificador se pasó
    como parámetro (id).

13
Manejador de CDs y cassettes (5)Declaración de
estructuras de datos
  • typedef struct
  • char tituloLARGO_STR
  • char interpreteLARGO_STR
  • Registro
  • typedef struct
  • Registro ListaMAX_LISTA
  • Lista

14
Programación de funciones delTDA Registro
  • Registro CrearRegistro(char titulo, char
    interp)
  • Registro r
  • strcpy(r.titulo, titulo)
  • strcpy(r.interprete, interp)
  • return r
  • char TituloRegistro(Registro r)
  • return(r.titulo)
  • char InterpreteRegistro(Registro r)
  • return(r.interprete)
  • int RegistroVacio(Registro r)
  • if (strcmp(r.titulo,"") 0) return TRUE
  • else return FALSE
  • void ImprimirRegistro(Registro r)
  • printf("\ts (s)\n", r.titulo, r.interprete)
Write a Comment
User Comments (0)
About PowerShow.com