lunes, 29 de mayo de 2017

Cómo programar: datos simples (20) - Intervalos

El intervalo es un tipo de datos que representa un rango de números.

Por ejemplo, se requiere diseñar una definición de datos que represente un número de silla en una fila, cada fila con 32 sillas.

1 2 3 ... 32

Recordando un poco, una definición de datos consta de cuatro o cinco partes:

1) Una posible definición de una estructura (no visto hasta ahora, más adelante se verá en detalle)
2) Un comentario de tipo que define un nuevo nombre para el tipo de datos y describe como formar datos.
3) Una interpretación que describe la correspondencia entre información y datos
4) Uno o más ejemplos de los datos.
5) Una plantilla de una función que opera sobre el tipo de datos antes definido.

Ahora bien, el ejemplo planteado corresponde a un tipo atomic non-distinct, el cual tambien tiene un "subtipo" llamado interval (intervalo). Si se busca en la plantilla orientada por datos, es el siguiente:




El tipo de datos tendrá el nombre SeatNum (Número de silla):

;SeatNum is Natural [1, 32]
;Interpretación: SeatNum es un número natural que representa los números de silla
;en una fila, desde la uno hasta la 32. 1 y 32 son sillas que dan al pasillo (sillas ubicadas 
;en los extremos de la fila).

[1,32] indica que el rango incluye tanto el 1 como el 32

Si se cambia la notación, tendría un significado diferente:

(1,32) indica que se excluyen 1 y 32, es decir el rango incluye 2 y va hasta 31.
[1,32) indica que incluye 1 pero excluye 32, por lo que el rango va desde 1 hasta 31.

Volviendo al ejemplo, la notación será [1,32]

Ahora se definen los ejemplos, los cuales deben incluir al menos: los extremos y un número cercano a la mitad:

;Ejemplos:
;(define SN 1) ; pasillo
;(define SN 12) ; mitdad de la fila
;(define SN 32); pasillo

Luego la plantilla asociada a los tipos de datos atomic non-distinct:

;plantillla de datos
;(define (fn-for-seat-num sn)
;  (... sn))

En adelante se indicará la plantilla de datos utilizada:

;Regla de plantilla utilizada:
; - Atomic non-distinct
;   Natural [1,32]  ; intervalo que representa un número natural entre 1 y 32.

Al final el código completo de la definición de datos quedará así:

;SeatNum is Natural [1, 32]
;Interpretación: SeatNum es un número natural que representa los números de silla
;en una fila, desde la uno hasta la 32. 1 y 32 son sillas que dan al pasillo (sillas ubicadas 
;en los extremos de la fila).

;Ejemplos:
;(define SN 1) ; pasillo
;(define SN 12) ; mitdad de la fila
;(define SN 32); pasillo

plantillla de datos
;(define (fn-for-seat-num sn)
;  (... sn))

;Regla de plantilla utilizada:
; - Atomic non-distinct
;   Natural [1,32]  ; intervalo que representa un número natural entre 1 y 32.

Anterior
Siguiente



No hay comentarios:

Publicar un comentario

Cómo programar: datos simples (21) - Enumeración

Diseñar una definición de datos para representar las letras de calificaciones en un curso.  Estas letras son A, B y C, que significan bueno,...