Crear el tipo de dato abstracto “contacto”

En este laboratorio, desarrollarás una aplicación de base de datos de lista de contactos como la de tu teléfono.

En esta página, desarrollarás un tipo de dato abstracto (TDA) para almacenar y acceder a datos de contacto (nombre, dirección, número de teléfono, etc.).

Un tipo de datos abstracto (abstract data type, ADT por sus siglas en inglés) es un tipo de dato personalizado que tiene un significado específico para tu programa. Aprendiste sobre los tipos de datos y los TDA enUnidad 2 Laboratorio 2 Página 2: Planificación de una aplicación de cuestionario.

Configuración de la lista de contactos

  1. Haz clic para cargar un proyecto nuevo. Entonces guárdalo.
  2. Crea una variable global de lista de contactos.
  3. Inicializa la lista de contactos como una lista vacía.

¿Por qué mundial?

Varias secuencias de comandos en todo el proyecto utilizarán esta variable, por lo que no debe adjuntarse a una sola secuencia de comandos como una variable de secuencia de comandos local.

Crear el tipo de dato abstracto (ADT)

Jasmine y Omar planean crear una lista de contactos en Snap!.
Jasmine: Necesitamos una forma de agregar un contacto a nuestra lista de contactos.
Omar: Cada contacto será una lista que con el nombre de una persona, número de teléfono, dirección, correo electrónico, o lo que sea que escribamos.
Jasmine: En la Unidad 2, creamos un elemento de prueba tipo de dato abstracto para almacenar las preguntas y respuestas en una lista de elementos de prueba. Aquí, podemos crear un tipo de dato abstracto contacto para almacenar los datos de cada contacto en nuestra lista de contactos.
Omar: Sí. En este proyecto, necesitaremos un constructor contacto y luego selectores para acceder al nombre, dirección y número de teléfono para cualquier contacto dado.

Preservar la privacidad

Los proyectos de Snap! no son seguros. No utilices tu información personal ni la de tus compañeros.

  1. Atajo: puedes pegar el siguiente texto en la ventana "Crear un bloque" para construir el bloque más rápido.

    contacto con nombre: %nombre dirección: %dirección teléfono: %teléfono

    Los signos de porcentaje (%) hacen que esas palabras se conviertan en variables de entrada.
    Crea un contacto constructor que acepte tres datos como entrada: el nombre del contacto, el número de teléfono y la dirección.
    contacto con nombre: () dirección: () teléfono: ()
    Debe reportar un contacto completo (una lista de los tres elementos):
    contacto con nombre: (Jasmine) dirección: (123 Main St. #4, Nueva York, NY 10001) teléfono: (212-555-1234) reporta {Betsy Anderson; 123 Main St. #4, Nueva York, NY 10001; 212-555-1234}
  2. Escribe los bloques selector para recuperar el nombre del contacto, dirección del contacto o teléfono del contacto. reporta nombre de contacto (bloque de contacto con entradas)
    reporta dirección de contacto (bloque de contacto con entradas)
    reporta teléfono de contacto (bloque de contacto con entradas)
    Aprendiste sobre tipos de entrada y tipos de salida (dominio y rango) en Unidad 2 Laboratorio 3, Página 1: ¿Qué es un predicado?

    Es importante asegurarse de que tus entradas a una función coincidan con el tipo de entrada esperado. Por ejemplo, el tipo de entrada de dirección de contacto coincide con el tipo de salida de contacto; ambos son del tipo "contacto".

    Si llamas a dirección de contacto con una entrada que no coincide, como una lista de contactos (por ejemplo, la variable lista de contactos o el resultado de ejecutar mantener y tener un subconjunto de esa lista), no funcionará. Eso puede sonar obvio, pero de hecho, los programadores principiantes cometen errores como ese todo el tiempo; tienes que aprender a pensar en los tipos de entrada y salida de tus funciones cada vez que escribes o usas una.

    Eso también ocurre con las entradas al constructor contacto; no puedes poner algo que no sea un nombre en la entrada de nombre para contacto.

    Resulta un tanto artificial usar el constructor como entrada para un selector; estas imágenes son solo ejemplos para mostrar lo que los selectores deberían poder hacer cuando se les da un contacto como entrada. En tu programa, los selectores tomarán un elemento de la lista de contactos como entrada y generarán la parte correcta de ese contacto, así:
    dirección del contacto (elemento (1) de (lista de contactos)) que reporta '123 Main St. #4, Nueva York, NY 10001'

  3. Declara tipos de entrada para cada selector para que sea evidente que esperan una lista (un contacto completo) como entrada.
    nombre del contacto: () dirección de contacto: () teléfono de contacto: ()
  4. Prueba tus bloques juntos y depura cualquier problema.
    1. Primero, coloca el constructor (con valores de entrada) dentro de cada selector (como se muestra arriba) para probar que cada uno de ellos reporte la información correcta.
    2. Luego, usa el constructor contacto para agregar algunos contactos a tu lista de contactos.
      Puedes usar estos ejemplos o crear los tuyos propios:
      nombre dirección teléfono
      Jasmine Anderson 123 Main St. #4, Nueva York, NY 10001 212-555-1234
      Morgan Preston 149 E. 16th Ave., Sunnyvale, CA 94089 408-555-6789
      Omar Hernandez 369 Center St., Boston, MA 02130 617-555-1098
    3. Observa cómo aparecen tus contactos en la lista.
    4. Si no recuerdas la vista de tabla y la vista de lista, vuelve a visitar Unidad 2 Laboratorio 2, Página 2.
    5. Prueba a seleccionar el nombre, dirección o teléfono de un contacto de tu lista.
      nombre del contacto: (elemento (aleatorio) de (lista de contactos)) reporta Morgan Preston
    6. Guarda tu trabajo
    7. Depura cualquier problema.
  5. AAP-1.D parte b
  6. Escribe tus pensamientos Escribe cómo el uso de un tipo de datos abstracto ayuda a gestionar la complejidad de tu programa.