Tipos definidos: Enumerados, subrangos y tuplas

Anuncio
Algorítmica y Lenguajes de Programación
Tipos definidos:
Enumerados, subrangos
y tuplas
Tipos definidos. Introducción
n
Tipos de datos predefinidos:
n
n
n
n
n
n
Hay ocasiones en los que hay que trabajar con datos que no se ajustan
a ninguno de estos tipos y es necesario crear un tipo “a medida”.
Por ejemplo:
n
n
n
n
n
entero (integer)
real (real)
lógico (logical)
carácter (character)
días de la semana
meses del año
referencia bibliográfica
Lenguajes de programación modernos permiten al usuario la definición
de tipos de datos propios.
Los más sencillos son:
n
n
n
enumerados
subrangos
tuplas (o registros)
2
1
Tipos definidos. Enumerado (i)
n
Para definirlo se enumeran los valores de sus
elementos; ejemplos de tipos enumerados:
n
n
n
n
n
n
n
días de la semana,
estaciones del año,
palos de una baraja,
sexo de una persona,
...
Para definir un nuevo tipo de datos en la notación
algorítmica se debe indicar una nueva sección
mediante la palabra reservada tipos.
La sintaxis para definir un tipo enumerado es la
siguiente:
tipos
nombre_enumerado = {valor1, valor2, ..., valorN}3
Tipos definidos. Enumerado (ii)
n
Los ejemplos anteriores se definirían
tipos
dias_semana={lunes,martes,miercoles,jueves,viernes, sabado,domingo}
estaciones_anno={primavera,verano, otono ,invierno}
palos_baraja={oros,copas,espadas,bastos}
sexo={mujer,hombre}
n
Para declarar variables de dichos tipos se
procede como con los tipos predefinidos:
variables
dia ∈
∈ semana
estacion ∈
∈ estaciones_ anno
palo ∈
∈ palos_baraja
sexo_contribuyente ∈
∈ sexo
4
2
Tipos definidos. Enumerado (iii)
n
n
n
n
Los tipos enumerados son tipos
ordenados.
Es posible utilizar con ellos los
operadores relacionales (>
> , < , ≥ y ≤ ).
Existen las funciones ord, pred y
succ que retornan el ordinal, el valor
anterior y el valor siguiente de un tipo
enumerado.
FORTRAN 90 no soporta tipos
enumerados.
5
Tipos definidos. Subrango
n
n
Un subrango es un subconjunto de un tipo enumerable
(entero, carácter, lógico y cualquier tipo enumerado)
que contiene todos los elementos entre dos valores dados.
Sintaxis para definir un subrango:
tipos
nombre_subrango = valor_inicial .. valor_final
n
Algunos ejemplos de subrangos:
tipos
minusculas = ‘a’ .. ‘z’
mayusculas = ‘a’ .. ‘z’
numeros = ‘0’ .. ‘9’
dias_laborables = lunes .. viernes
fin_semana = sabado .. domingo
n
FORTRAN 90 tampoco soporta subrangos.
6
3
Tipos definidos. Tuplas o registros (i)
n
n
Una tupla (o registro) es un conjunto de datos con un número fijo
de componentes no necesariamente del mismo tipo.
Ejemplos de datos representables mediante tuplas:
n
n
n
n
Información sobre un alumno (nombre, apellidos, DNI, dirección, etc.)
Referencias bibliográficas (título, autor, editorial, año de edi
Información sobre una película (título, director, año, etc.)
La sintaxis para la definición de una tupla en la notación
algorítmica es la siguiente:
tipos
nombre_tupla = tupla
campo1 ∈ tipo1
campo2 ∈ tipo2
...
campoN ∈ tipoN
fin tupla
7
Tipos definidos. Tuplas o registros (ii)
n
Las tuplas
“recursiva”:
pueden
anidarse
de
forma
tipos
direccion = tupla
calle ∈
∈ carácter
portal, piso ∈
∈ entero
letra, CP, localidad, municipio, provincia ∈
∈ carácter
fin tupla
fecha = tupla
dia, mes, anno ∈
∈ entero
fin tupla
persona = tupla
nombre, apellido1, apellido2, DNI ∈
∈ carácter
nacimiento ∈
∈ fecha
fin tupla
alumno = tupla
datos_personales ∈
∈ persona
asignatura ∈
∈ carácter
direccion _asturias , direccion_familiar ∈
∈ direccion
fin tupla
8
4
Tipos definidos. Tuplas o registros (iii)
n
n
¡¡FORTRAN soporta tuplas!!
Sintaxis FORTRAN para definir una
tupla:
type nombre_tupla
tipo1 campo1
tipo2 campo2
...
tipoN campoN
end type nombre_tupla
9
Tipos definidos. Tuplas o registros (iv)
n
El ejemplo anterior traducido a FORTRAN:
type direccion
character*64 calle
integer portal, piso
character*2 letra
character*5 CP
character*64 localidad, municipio, provincia
end type direccion
type fecha
integer dia , mes, anno
end type fecha
Obsérvese notación para declarar
variables de tipo registro:
type(tipo_tupla) variable
type persona
character*64 nombre, apellido1, apellido2
character*8 DNI
type(fecha) nacimiento
end type persona
type alumno
type(persona) datos_personales
character*32 asignatura
type(direccion) direccion _asturias, direccion_familiar
end type alumno
10
5
Tipos definidos. Tuplas o registros (v)
n
Los registros pueden procesarse:
n
Registro a registro:
n
n
n
n
Asignar un registro a otro registro del mismo tipo.
Escribir un registro completo.
Leer un registro (desaconsejable).
Campo a campo:
n
n
Es necesario utilizar “selectores de campo”.
Un selector de campo se construye mediante el identificador
del registro y de los campos separándolos mediante:
n
n
n
Un punto ‘.’ en el caso de la notación algorítmica.
Un carácter ‘%’ en el caso de FORTRAN.
Ejemplos:
n
n
Notación algorítmica:
alumno1.datos_personales.nacimiento.dia
FORTRAN:
alumno1%datos_personales%nacimiento%dia
11
Tipos definidos. Resumen
n
n
Todos los lenguajes modernos permiten la definición de tipos de usuario.
Los tipos definidos por el usuario más habituales son:
n
n
n
n
n
n
n
n
n
n
enumerado,
subrango y
tupla o registro.
Un tipo enumerado consiste en la simple enumeración de los valores de sus
elementos.
Al definir un tipo enumerado se establece una relación de orden entre sus
valores.
En FORTRAN 90 no es posible definir tipos enumerados.
Un subrango es un subconjunto de un tipo enumerable que contiene todos los
elementos entre dos valores datos.
No es posible definir subrangos en FORTRAN 90.
Una tupla o registro es un conjunto de datos con un número fijo de
componentes generalmente de tipos diferentes (incluyendo otros registros).
Los registros o tuplas pueden procesarse de forma completa o campo por
campo. (utilizando selectores de campo).
12
6
Descargar