Documente Academic
Documente Profesional
Documente Cultură
Fernando Bobillo
fbobillo@unizar.es
Departamento de Informatica e Ingeniera de Sistemas
Universidad de Zaragoza
Curso 2015/2016
Fundamentos de Informatica
Grado de Ingeniera Qumica
{ Llamada }
dias := d i a s T r a n s c u r r i d o s (6 , 4 , 2016 , 8 , 2 , 2016);
{ Llamada }
dias := d i a s T r a n s c u r r i d o s ( fecha1 , fecha2 );
Legibilidad del codigo
mas
Simplicidad: representacion cercana al mundo real,
menor numero
...
de variables, facilidad de codificacion
Fiabilidad: menos errores, chequeo automatico de
compatibilidad de los tipos . . .
2 Renombrado
3
Enumeracion
4 Subrango
5 Registros
6 Vectores y matrices
7 Cadenas de caracteres
2 Renombrado
3
Enumeracion
4 Subrango
5 Registros
6 Vectores y matrices
7 Cadenas de caracteres
1 Predefinidos en el languaje
2 No predefinidos (hay mecanismos para que el
programador defina sus propios tipos de datos)
Predefinidos
Caracter Entero
Booleano Real
Enumeracion Subrango
No predefinidos Cadena Array
Registro Fichero
2 Renombrado
3
Enumeracion
4 Subrango
5 Registros
6 Vectores y matrices
7 Cadenas de caracteres
Ejemplo:
TYPE
numero = integer ;
2 Renombrado
3
Enumeracion
4 Subrango
5 Registros
6 Vectores y matrices
7 Cadenas de caracteres
Error!
Los valores de tpVocal y tpValorBaraja deben ser identificadores
F. Bobillo (DIIS, Unizar) Tema 5: Tipos de datos no predefinidos Curso 2015/2016 12 / 48
Enumeracion
Ejemplos:
TYPE
tpColor = ( rojo , verde , azul , ... );
tpDia = ( lunes , martes , ... , domingo );
tpMes = ( enero , febrero , ... , diciembre );
tpPaloBaraja = ( oros , copas , espadas , bastos );
tpValorBaraja = ( uno , dos , tres , cuatro , cinco , seis ,
siete , sota , caballo , rey );
tpVocal = (a , e , i , o , u );
2 Renombrado
3
Enumeracion
4 Subrango
5 Registros
6 Vectores y matrices
7 Cadenas de caracteres
Ejemplos:
TYPE
dia = 1..31;
mes = 1..12;
minuscula = a .. z
2 Renombrado
3
Enumeracion
4 Subrango
5 Registros
6 Vectores y matrices
7 Cadenas de caracteres
datos
Registro: tipo resultante de agregar 2 o mas
Cada dato se denomina campo del registro
Los campos pueden ser de diferentes tipos
Los tipos de los campos no pueden ser ficheros
Ejemplo:
TYPE
tpFecha = RECORD
dia : 1..31;
mes : 1..12;
anyo : integer ;
END ;
Enunciado
de las cartas de la baraja espanola
Representacion
que indique si una carta mata a otra en el guinote
Funcion
c1 mata a c2 sii ambas son del mismo palo y c1 tiene mayor
valor que c2 o bien si c1 es del palo del triunfo y c2 no
TYPE
tpPalo = ( oros , copas , espadas , bastos );
tpCarta = RECORD
nombre : tpNombreCarta ;
palo : tpPalo ;
END ;
Ejemplo:
WITH fecha DO
BEGIN
dia := 6;
mes := 4;
anyo := 2016;
END ;
2 Renombrado
3
Enumeracion
4 Subrango
5 Registros
6 Vectores y matrices
7 Cadenas de caracteres
Vector Matriz
Muy utiles
en calculo cientfico
Ejemplos:
tpVectorNotas = ARRAY [1..20] OF real ;
tpVe ctorLetr as = ARRAY [ a .. z ] OF integer ;
t pV ec to r Ll uv ia s = ARRAY [ ( lunes , martes , miercoles , jueves ,
viernes , sabado , domingo ) ] OF real ;
Acceso a un elemento (1 dimension):
v[i], siendo v el array e i el ndice
Ejemplos: v[1], v[a], v[lunes]
indexada:
Iteracion
Recorrer todos los elementos de un vector para la
o modificacion
inspeccion de sus datos
Se utiliza un bucle FOR (con TO o DOWNTO) con una
variable de control del mismo tipo que los ndices del vector
indexada:
Iteracion
Recorrer todos los elementos de un vector para la
o modificacion
inspeccion de sus datos
Se utiliza un bucle FOR (con TO o DOWNTO) con una
variable de control del mismo tipo que los ndices del vector
indexada:
Iteracion
Recorrer todos los elementos de un vector para la
o modificacion
inspeccion de sus datos
Se utiliza un bucle FOR (con TO o DOWNTO) con una
variable de control del mismo tipo que los ndices del vector
indexada:
Iteracion
Recorrer todos los elementos de un vector para la
o modificacion
inspeccion de sus datos
Se utiliza un bucle FOR (con TO o DOWNTO) con una
variable de control del mismo tipo que los ndices del vector
Enunciado
Calculo
del maximo de un vector
Maximo de un vector:
CONST
TAM = 10;
TYPE
tpElemento = integer ;
tpIndice = 1.. TAM ;
tpVector = ARRAY [ tpIndice ] OF tpElemento ;
alternativa
Solucion
CONST
TAM = 10;
TYPE
tpElemento = integer ;
tpIndice = 1.. TAM ;
tpVector = ARRAY [ tpIndice ] OF tpElemento ;
del maximo
Posicion de un vector:
CONST
TAM = 10;
TYPE
tpElemento = integer ;
tpIndice = 1.. TAM ;
tpVector = ARRAY [ tpIndice ] OF tpElemento ;
Ejemplos:
tpMatriz = ARRAY [1.. FILAS , 1.. COLUMNAS ] OF real ;
CONST
TAM = 10;
TYPE
tpElemento = integer ;
tpIndice = 1.. TAM ;
tpMatriz = ARRAY [ tpIndice , tpIndice ] OF tpElemento ;
TYPE
tpElemento = integer ;
tpIndice = 1.. TAM ;
tpMatriz = ARRAY [ tpIndice , tpIndice ] OF tpElemento ;
Error!
Se escriben todos los numeros
en la misma lnea
CONST
TAM = 10;
TYPE
tpElemento = integer ;
tpIndice = 1.. TAM ;
tpMatriz = ARRAY [ tpIndice , tpIndice ] OF tpElemento ;
CONST
TAM = 10;
TYPE
tpElemento = integer ;
tpIndice = 1.. TAM ;
tpMatriz = ARRAY [ tpIndice , tpIndice ] OF tpElemento ;
TYPE
tpElemento = integer ;
tpIndice = 1.. TAM ;
tpMatriz = ARRAY [ tpIndice , tpIndice ] OF tpElemento ;
FOR i := 1 TO TAM DO
FOR j := 1 TO i -1 DO
m [i , j ] := 0;
FOR i := 1 TO TAM DO
m [i , i ] := 1;
END ;
TYPE
tpTablaPuntos = ARRAY [ tpNombreCarta ] OF integer ;
{ tpTablaPuntos = ARRAY [ dos .. uno ] OF integer ; }
2 Renombrado
3
Enumeracion
4 Subrango
5 Registros
6 Vectores y matrices
7 Cadenas de caracteres
maximo
Tamano de 255 caracteres
No es necesario definir el tipo para ser parametro formal
de variables:
Sintaxis de creacion
VAR
cadena10 : STRING [10] { Tama~
n o m
a ximo : 10 }
cadena255 : STRING { Tama~
n o m
a ximo : 255 }
Longitud
! Estandar (no funciona en DevPascal): cadena[0]
length(cadena)
Busqueda
De una subcadena dentro de una cadena
pos(subcadena, cadena)
de una subcadena
Extraccion
cadena2 := copy(cadena1, posInicial, numCaracteres)
de una subcadena
Insercion
insert(cadena, subcadena, posInicial)
No es estandar sea
que el valor devuelto por una funcion
un tipo no predefinido
Los parametros formales de un subprograma deben ser
TYPE
tipos predefinidos o definidos en la seccion
Registros con variantes (campos del registro variables): no
vistos en el curso
Muchos lenguajes (como Java o C++) tienen muchas mas
operaciones implementadas sobre las cadenas de
caracteres