Post on 23-Jan-2016
Agosto 2010Programación I - Tipo de
Datos 1
Programación I
Prof. Adjunto: Lic. Jorge O. Scucimarri
Universidad Nacional de LujánLicenciatura en Sistemas de Información
Departamento de Ciencias Básicas
Agosto 2010Programación I - Tipo de
Datos 2
Tipo de Datos
El universo de valores con los que un programa trabaja, está dividido en colecciones organizadas llamadas
tipos.
Agosto 2010Programación I - Tipo de
Datos 3
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 2010Programación I - Tipo de
Datos 4
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.
Tipo de Datos
Datos Estáticos Datos Dinámicos
Tipos Puntero
Tipos Simples Tipos Cadena (arrays)
Tipos Estructurados
Tipos Procedimiento
(procesos)
Ordinales
•Integer
•Boolean
•Char
•Enumerado
•Subrango
No Ordinales
•Reales
Array
Registro
Conjunto
Archivo
Agosto 2010 5Programación I - Tipo de
Datos
Los tipos simples definen conjuntos de valores ordenados.
Tipo Ordinal
Predefinidos
Definidos por el Usuario
integer
char
boolean
enumerados
subrango
Tipo Simple Tipo Ordinal
Tipo Real
Agosto 2010 6
Tipo Ordinal
Predefinidos
integer
char
boolean
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.
Agosto 2010 7
Tipo Ordinal
Predefinidos
Numéricos
integer
Tipo Simple Tipo Ordinal
Agosto 2010 8
Agosto 2010Programación I - Tipo de
Datos 9
Tipo Numérico Entero
Tipo Rango Formatobyte
integerlongintshortint
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
Tipo Ordinal
Predefinidos
integer
char
boolean
Tipo Simple Tipo Ordinal
Agosto 2010 10
Tipo Ordinal
Predefinidos
Lógicos boolean
Tipo Simple Tipo Ordinal
Agosto 2010 11
Agosto 2010Programación I - Tipo de
Datos 12
Tipo Lógico o booleano
Es un dato cuyo dominio está formado por dos valores posibles:
Verdadero (true)
Falso (false)
Tipo Ordinal
Predefinidos
integer
char
boolean
Tipo Simple Tipo Ordinal
Agosto 2010 13
Tipo Ordinal
Predefinidos
Caracter
char
Tipo Simple Tipo Ordinal
Agosto 2010 14
Agosto 2010Programación I - Tipo de
Datos 15
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 2010Programación I - Tipo de
Datos 16
Tipo Carácter (char)
Funciones sobre el tipo de dato carácter
Función Descripción Argumento
Resultado
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 2010Programación I - Tipo de
Datos 17
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)Posición del elemento x dentro de los elementos del tipo
int, char o boolean
int
Agosto 2010Programación I - Tipo de
Datos 18
Tipo Ordenados Discretamente
Ejemplos:
Pred(‘H’) = ‘G’
Succ(2) = 3
Succ(false) = true
Pred(110) = 109
Succ(’Z’) = ‘a’
Agosto 2010Programación I - Tipo de
Datos 19
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
Tipo Simple
Tipo Real
Agosto 2010 20Programación I - Tipo de
Datos
Agosto 2010Programación I - Tipo de
Datos 21
Tipo Numérico Real
Tipo Rango Cifras Tamañoreal
singledouble
extended
comp
2.910-39 .. 1.71038
1.510-45 .. 3.41038
5.010-324 .. 1.710308
1.910-4932 .. 1.1104932
-263 + 1 .. 263 – 1
11 – 127 – 8
15 – 1619 – 2019 – 20
6 bytes4 bytes8 bytes
10 bytes8 bytes
Agosto 2010Programación I - Tipo de
Datos 22
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 -10
mantisa exponente
Agosto 2010Programación I - Tipo de
Datos 23
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 17mantisa exponente
Agosto 2010Programación I - Tipo de
Datos 24
Operaciones básicas
OperaciónOperando
sResultad
o
(+) sumaEnteros y
realesEntero o real
(-) restaEnteros y
realesEntero 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 2010Programación I - Tipo de
Datos 25
Tipo de DatosDefinidos por el
Usuario
Tipo Ordinal
Definidos por el Usuario
enumerados
subrango
Tipo Simple Tipo Ordinal
Agosto 2010 26
Tipo Ordinal
Definidos por el Usuario
enumerados
Tipo Simple Tipo Ordinal
Agosto 2010 27
Agosto 2010Programación I - Tipo de
Datos 28
Tipo EnumeradoFormato:
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 color : colores;
dia : dias_semana;
Agosto 2010Programación I - Tipo de
Datos 29
Tipo Enumerado
Ejemplos no válidos:
type ciudad_1 = (LaPlata, Cordoba, Rosario)
ciudad_2 = (Salta, Cordoba, Jujuy)
letras = (‘a’, ‘b’, ‘c’);
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.
Agosto 2010Programación I - Tipo de
Datos 30
Tipo EnumeradoOperaciones 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 2010Programación I - Tipo de
Datos 31
Tipo Enumerado
Las funciones predefinidas sobre datos enumerativos son las mismas que se
describen para los datos de tipo ordinal.
Tipo Ordinal
Definidos por el Usuario
enumerados
subrango
Tipo Simple Tipo Ordinal
Agosto 2010 32
Tipo Ordinal
Definidos por el Usuario
subrango
Tipo Simple Tipo Ordinal
Agosto 2010 33
Agosto 2010Programación I - Tipo de
Datos 34
Tipo Subrango
type nombre = (límite inferior.. límite superior)
Ejemplos:
type IntervaloEnteros = -100..100;
LetrasMin = ‘a’..’z’;
var Reducido : IntervaloEnteros;
Letras : LetrasMin;
Agosto 2010Programación I - Tipo de
Datos 35
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.
Tipo de Datos
Datos Estáticos Datos Dinámicos
Tipos Puntero
Tipos Simples Tipos Cadena (arrays)
Tipos Estructurados
Tipos Procedimiento
(procesos)
Ordinales
•Integer
•Boolean
•Char
•Enumerado
•Subrango
No Ordinales
•Reales
Array
Registro
Conjunto
Archivo
Agosto 2010 36Programación I - Tipo de
Datos
Tipo de Datos
Datos Estáticos
Tipos Simples Tipo Cadena
Ordinales
•Integer
•Boolean
•Char
•Enumerado
•Subrango
No Ordinales
•RealesAgosto 2010 37
Programación I - Tipo de Datos
Agosto 2010Programación I - Tipo de
Datos 38
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 2010Programación I - Tipo de
Datos 39
Tipo String
Operaciones entre cadenas:
•Asignación
•Comparación
•Concatenación
Agosto 2010Programación I - Tipo de
Datos 40
Tipo StringAlgunas funciones aplicables a cadenas:
Concat (S1, S2, ..., Sn) {retorna un string}
Length (S) {retorna un integer}
Copy (S, Posición, Cantidad) {retorna un string}
Tipo de Datos
Datos Estáticos Datos Dinámicos
Tipos Puntero
Tipos Simples Tipos Cadena (arrays)
Tipos Estructurados
Tipos Procedimiento
(procesos)
Ordinales
•Integer
•Boolean
•Char
•Enumerado
•Subrango
No Ordinales
•Reales
Array
Registro
Conjunto
Archivo
Agosto 2010 41Programación I - Tipo de
Datos
Tipo de Datos
Datos Estáticos
Tipos Simples Tipos Cadena (arrays)
Tipos Estructurados
Ordinales
•Integer
•Boolean
•Char
•Enumerado
•Subrango
No Ordinales
•Reales
Array
Registro
Conjunto
Archivo
Agosto 2010 42Programación I - Tipo de
Datos
Agosto 2010Programación I - Tipo de
Datos 43
Tipo ConjuntoColecció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 2010Programación I - Tipo de
Datos 44
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 2010Programación I - Tipo de
Datos 45
Tipo ConjuntoUna 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 2010Programación I - Tipo de
Datos 46
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 2010Programación I - Tipo de
Datos 47
Tipo Conjunto
Construcción de un conjunto
Program define_conjuntos;
var letras : set of char;
begin
letras := [‘a’, ‘b’, ‘c’, ‘x’, ‘z’];
...
end.
Agosto 2010Programación I - Tipo de
Datos 48
Tipo ConjuntoOperaciones sobre datos tipo conjunto
Operación Operador Tipo de resultado
Unión + Conjunto
Intersección * Conjunto
Diferencia - Conjunto
Pertenecia In Lógico
Agosto 2010Programación I - Tipo de
Datos 49
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 2010Programación I - Tipo de
Datos 50
Tipo ConjuntoOperadores 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.