Tipo de datos - Universidad Nacional de Luján

Download Report

Transcript Tipo de datos - Universidad Nacional de Luján

Universidad Nacional de Luján
Licenciatura en Sistemas de Información
Departamento de Ciencias Básicas
Programación I
Prof. Adjunto: Lic. Jorge O. Scucimarri
Agosto 2010
Programación I - Tipo de Datos
1
Tipo de Datos
El universo de valores con los que un
programa trabaja, está dividido en
colecciones organizadas llamadas tipos.
Agosto 2010
Programación I - Tipo de Datos
2
Los tipos de datos se caracterizan por:
 Un rango de valores posibles (dominio).
 Un conjunto de operaciones realizables sobre
ese tipo.
 Su representación interna.
Agosto 2010
Programación I - Tipo de Datos
3
La declaración de tipos de datos presenta
las siguientes ventajas:
 Mejores posibilidades de abstracción.
 Límites preestablecidos sobre el dominio de cada
variable asociada a un elemento del mundo real.
 Detectar errores de operaciones.
 Determinar cómo ejecutar las operaciones.
Agosto 2010
Programación I - Tipo de Datos
4
Tipo de Datos
Datos Estáticos
Tipos Simples
Ordinales
Tipos Cadena
(arrays)
Datos Dinámicos
Tipos
Estructurados
Array
•Integer
Registro
•Boolean
Conjunto
•Char
Tipos
Procedimiento
(procesos)
Tipos Puntero
Archivo
•Enumerado
•Subrango
No Ordinales
•Reales
Agosto 2010
Programación I - Tipo de Datos
5
Los tipos simples definen conjuntos de valores ordenados.
Tipo Simple
Tipo Ordinal
Tipo Real
integer
Predefinidos
char
boolean
Tipo Ordinal
Definidos por
el Usuario
enumerados
subrango
Agosto 2010
6
Tipo Simple
Tipo Ordinal
Se dice ordenado discretamente si para todos los elementos que
son parte del tipo, salvo el primero y el ultimo, existe un elemento
anterior y otro posterior.
integer
Predefinidos
Tipo Ordinal
Agosto 2010
char
boolean
7
Tipo Simple
Tipo Ordinal
integer
Predefinidos
Numéricos
Tipo Ordinal
Agosto 2010
8
Tipo Numérico Entero
Tipo
Rango
Formato
byte
integer
longint
shortint
word
0 .. 255
-32768 .. 32767
-247483648 .. 2147483647
-128 .. 127
0 .. 65535
8 bits sin signo
16 bits con signo
32 bits con signo
8 bits con signo
16 bits sin signo
Agosto 2010
Programación I - Tipo de Datos
9
Tipo Simple
Tipo Ordinal
integer
Predefinidos
Tipo Ordinal
Agosto 2010
char
boolean
10
Tipo Simple
Tipo Ordinal
Predefinidos
Lógicos
Tipo Ordinal
Agosto 2010
boolean
11
Tipo Lógico o booleano
Es un dato cuyo dominio está formado
por dos valores posibles:
Verdadero (true)
Falso (false)
Agosto 2010
Programación I - Tipo de Datos
12
Tipo Simple
Tipo Ordinal
integer
Predefinidos
Tipo Ordinal
Agosto 2010
char
boolean
13
Tipo Simple
Tipo Ordinal
Predefinidos
char
Caracter
Tipo Ordinal
Agosto 2010
14
Tipo Carácter (char)
Es un dato cuyo dominio está formado por el
conjunto de valores comprendido en el código
ASCII, el cual permite establecer un orden de
precedencia entre los mismos.
Letras minúsculas: ‘a’, ‘b’, ..., ‘z’
Letras mayúsculas: ‘A’, ‘B’, ..., ‘Z’
Dígitos: ‘0’, ‘1’, ..., ‘9’
Caracteres especiales: ‘!’, ‘@’, ...
Agosto 2010
Programación I - Tipo de Datos
15
Tipo Carácter (char)
Funciones sobre el tipo de dato carácter
Función
Descripción
Chr(x)
Retorna el caracter ASCII
que se corresponde con
el valor de x.
Integer
Char
Ord(x)
Retorna el valor ASCII
del carácter que se indica
en x.
Char
Integer
Agosto 2010
Argumento Resultado
Programación I - Tipo de Datos
16
Tipo Ordenados Discretamente
Funciones
Función
Descripción
Argumento
Resultado
Pred(x)
Predecesor del
elemento x.
int, char o boolean int, char o boolean
Succ(x)
Sucesor del
elemento x.
int, char o boolean int, char o boolean
Ord(x)
Agosto 2010
Posición del
elemento x
dentro de los
elementos del
tipo
int, char o boolean
Programación I - Tipo de Datos
int
17
Tipo Ordenados Discretamente
Ejemplos:
Agosto 2010
Pred(‘H’)
=
‘G’
Succ(2)
=
3
Succ(false) =
true
Pred(110)
=
109
Succ(’Z’)
=
‘a’
Programación I - Tipo de Datos
18
Tipo Ordenados Discretamente
Para los enteros:
Succ(x) es x + 1
Pred(x) es x - 1
Ord(x) es x
Para los booleanos:
Ord(false) es 0
Ord(true) es 1
Agosto 2010
Programación I - Tipo de Datos
19
Tipo Simple
Tipo Real
Agosto 2010
Programación I - Tipo de Datos
20
Tipo Numérico Real
Tipo
real
single
double
extended
comp
Agosto 2010
Rango
2.910-39 ..
1.510-45 ..
5.010-324 ..
1.910-4932 ..
-263 + 1 ..
1.71038
3.41038
1.710308
1.1104932
263 – 1
Cifras
11
7
15
19
19
–
–
–
–
–
Programación I - Tipo de Datos
12
8
16
20
20
Tamaño
6 bytes
4 bytes
8 bytes
10 bytes
8 bytes
21
Notación científica o de coma
flotante
Sea el número
0.0000000000356798
su representación utilizando notación científica es:
3.56798 x 10-11
y su representación en una computadora:
0.356798
mantisa
Agosto 2010
-10
exponente
Programación I - Tipo de Datos
22
Notación científica o de coma
flotante
Sea el número
89412950000000000
su representación en una calculadora es:
8.941295 x 1016
y su representación en una computadora:
.8941295
mantisa
Agosto 2010
17
exponente
Programación I - Tipo de Datos
23
Operaciones básicas
Operación
Operandos Resultado
(+) suma
Enteros y reales
Entero o real
(-) resta
Enteros y reales
Entero o real
(*) multiplicación Enteros y reales
Entero o real
(/) división
Reales
Real
(div) división
entera
Enteros
Entero
(mod) módulo
Enteros
Entero
Agosto 2010
Programación I - Tipo de Datos
24
Tipo de Datos
Definidos por el Usuario
Agosto 2010
Programación I - Tipo de Datos
25
Tipo Simple
Tipo Ordinal
Tipo Ordinal
Definidos por
el Usuario
enumerados
subrango
Agosto 2010
26
Tipo Simple
Tipo Ordinal
Tipo Ordinal
Definidos por
el Usuario
Agosto 2010
enumerados
27
Tipo Enumerado
Formato:
type
nombre_tipo_enum = (valor_1, valor_2, ..., valor_n)
Ejemplos:
type
colores = (rojo, azul, verde, blanco, negro);
dias_semana = (domingo, lunes, martes,
míercoles, jueves, sabado, domingo);
var
Agosto 2010
color
: colores;
dia
: dias_semana;
Programación I - Tipo de Datos
28
Tipo Enumerado
Los identificadores que detallan los valores posibles del tipo
son constantes simbólicas. Estos identificadores deben ser
distintos de los que están detallados en la misma sección.
Por esta razón no pueden ser, por ejemplo, caracteres.
Ejemplos no válidos:
type
ciudad_1 = (LaPlata, Cordoba, Rosario)
ciudad_2 = (Salta, Cordoba, Jujuy)
letras
Agosto 2010
= (‘a’, ‘b’, ‘c’);
Programación I - Tipo de Datos
29
Tipo Enumerado
Operaciones sobre datos enumerativos
type colores = (azul, blanco, negro, verde);
var color : colores
Son válidas las sgtes. operaciones:
color := azul;
If (color = blanco) or (color = negro) then ...
For color := azul to verde do...
No son válidas operaciones tales como:
read(color);
write(color);
Agosto 2010
Programación I - Tipo de Datos
30
Tipo Enumerado
Las funciones predefinidas sobre datos
enumerativos son las mismas que se
describen para los datos de tipo ordinal.
Agosto 2010
Programación I - Tipo de Datos
31
Tipo Simple
Tipo Ordinal
Tipo Ordinal
Definidos por
el Usuario
enumerados
subrango
Agosto 2010
32
Tipo Simple
Tipo Ordinal
Tipo Ordinal
Definidos por
el Usuario
subrango
Agosto 2010
33
Tipo Subrango
type
nombre = (límite inferior.. límite superior)
Ejemplos:
type
IntervaloEnteros = -100..100;
LetrasMin
var
Reducido : IntervaloEnteros;
Letras
Agosto 2010
= ‘a’..’z’;
: LetrasMin;
Programación I - Tipo de Datos
34
Tipo Subrango
Un tipo de dato subrango es un tipo ordinal que consiste en
una secuencia sucesiva contigua de valores de algún tipo
ordinal (llamado tipo base del subrango).
Las operaciones y las funciones predefinidas que se pueden
realizar sobre un tipo de dato subrango son las mismas que
las de su tipo base.
Agosto 2010
Programación I - Tipo de Datos
35
Tipo de Datos
Datos Estáticos
Tipos Simples
Ordinales
Tipos Cadena
(arrays)
Datos Dinámicos
Tipos
Estructurados
Array
•Integer
Registro
•Boolean
Conjunto
•Char
Tipos
Procedimiento
(procesos)
Tipos Puntero
Archivo
•Enumerado
•Subrango
No Ordinales
•Reales
Agosto 2010
Programación I - Tipo de Datos
36
Tipo de Datos
Datos Estáticos
Tipos Simples
Tipo Cadena
Ordinales
•Integer
•Boolean
•Char
•Enumerado
•Subrango
No Ordinales
•Reales
Agosto 2010
Programación I - Tipo de Datos
37
Tipo String (cadena)
Una cadena de caracteres (string) es una serie de caracteres
cuya longitud puede variar de 0 a 255 caracteres. El tipo de
dato string permite almacenar información de texto.
Ejemplo:
var
Mensaje : string;
Agosto 2010
Programación I - Tipo de Datos
38
Tipo String
Operaciones entre cadenas:
•Asignación
•Comparación
•Concatenación
Agosto 2010
Programación I - Tipo de Datos
39
Tipo String
Algunas funciones aplicables a cadenas:
Concat (S1, S2, ..., Sn)
{retorna un string}
Length (S)
{retorna un integer}
Copy (S, Posición, Cantidad) {retorna un string}
Agosto 2010
Programación I - Tipo de Datos
40
Tipo de Datos
Datos Estáticos
Tipos Simples
Ordinales
Tipos Cadena
(arrays)
Datos Dinámicos
Tipos
Estructurados
Array
•Integer
Registro
•Boolean
Conjunto
•Char
Tipos
Procedimiento
(procesos)
Tipos Puntero
Archivo
•Enumerado
•Subrango
No Ordinales
•Reales
Agosto 2010
Programación I - Tipo de Datos
41
Tipo de Datos
Datos Estáticos
Tipos Simples
Ordinales
•Integer
•Boolean
•Char
•Enumerado
Tipos Cadena
(arrays)
Tipos
Estructurados
Array
Registro
Conjunto
Archivo
•Subrango
No Ordinales
•Reales
Agosto 2010
Programación I - Tipo de Datos
42
Tipo Conjunto
Colección homogénea de elementos, sin repetición,
sin relación de orden entre ellos e ilimitada.
Desde el punto de vista informático, es una colección
de datos simples, todos del mismo tipo.
(En Pascal, el número máximo de elementos está acotado a 255)
Agosto 2010
Programación I - Tipo de Datos
43
Tipo Conjunto
Un conjunto se declara de la forma:
type conjunto = set of tipo_ordinal
donde tipo ordinal es el tipo al cual pertenecen los
elementos del conjunto y al que se lo denomina tipo
base.
Agosto 2010
Programación I - Tipo de Datos
44
Tipo Conjunto
Una vez definido el tipo conjunto, podemos definir
una variable conjunto:
var nombre_variable : conjunto
También es posible declarar directamente una
variable como un conjunto sin una declaración
previa de tipo:
var nombre_variable : set of tipo_ordinal
Agosto 2010
Programación I - Tipo de Datos
45
Tipo Conjunto
Ejemplos:
type dias = (domingo, lunes, martes, miercoles, jueves,
viernes, sabado);
Uno_al_100 = 1..100;
Letras = set of char;
Algunos_dias = set of dias;
Algunos_numeros = set of uno_al_100;
Agosto 2010
Programación I - Tipo de Datos
46
Tipo Conjunto
Construcción de un conjunto
Program define_conjuntos;
var letras : set of char;
begin
letras := [‘a’, ‘b’, ‘c’, ‘x’, ‘z’];
...
end.
Agosto 2010
Programación I - Tipo de Datos
47
Tipo Conjunto
Operaciones sobre datos tipo conjunto
Operación
Operador
Tipo de resultado
Unión
+
Conjunto
Intersección
*
Conjunto
Diferencia
-
Conjunto
Pertenecia
In
Lógico
Agosto 2010
Programación I - Tipo de Datos
48
Tipo Conjunto
Ejemplos
type conjunto = set of char;
var conj_1, conj_2, conj_3 : conjunto;
conj_1 := [];
{conjunto vacío}
conj_2 := [‘a’];
conj_1 := [‘a’, ‘c’, ‘f’];
conj_3 := conj_1 * conj_2
Agosto 2010
Programación I - Tipo de Datos
49
Tipo Conjunto
Operadores relacionales válidos:
<> <= >= =
Si A y B son variables del mismo tipo conjunto:
A<>B retorna true si los conjuntos son distintos
A<=B retorna true si A está incluido en B
A>=B retorna true si B está incluido en A
A = B retorna true si A y B son iguales.
Agosto 2010
Programación I - Tipo de Datos
50