Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri...

Preview:

Citation preview

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.