agosto 2010programación i - tipo de datos1 programación i prof. adjunto: lic. jorge o. scucimarri...

50
Agosto 2010 Programación I - Tipo de Datos 1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas de Información Departamento de Ciencias Básicas

Upload: maite-alcantara

Post on 23-Jan-2016

219 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 2: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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.

Page 3: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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.

Page 4: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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.

Page 5: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 6: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 7: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 8: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

Tipo Ordinal

Predefinidos

Numéricos

integer

Tipo Simple Tipo Ordinal

Agosto 2010 8

Page 9: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 10: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

Tipo Ordinal

Predefinidos

integer

char

boolean

Tipo Simple Tipo Ordinal

Agosto 2010 10

Page 11: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

Tipo Ordinal

Predefinidos

Lógicos boolean

Tipo Simple Tipo Ordinal

Agosto 2010 11

Page 12: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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)

Page 13: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

Tipo Ordinal

Predefinidos

integer

char

boolean

Tipo Simple Tipo Ordinal

Agosto 2010 13

Page 14: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

Tipo Ordinal

Predefinidos

Caracter

char

Tipo Simple Tipo Ordinal

Agosto 2010 14

Page 15: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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: ‘!’, ‘@’, ...

Page 16: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 17: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 18: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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’

Page 19: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 20: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

Tipo Simple

Tipo Real

Agosto 2010 20Programación I - Tipo de

Datos

Page 21: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 22: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 23: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 24: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 25: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

Agosto 2010Programación I - Tipo de

Datos 25

Tipo de DatosDefinidos por el

Usuario

Page 26: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

Tipo Ordinal

Definidos por el Usuario

enumerados

subrango

Tipo Simple Tipo Ordinal

Agosto 2010 26

Page 27: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

Tipo Ordinal

Definidos por el Usuario

enumerados

Tipo Simple Tipo Ordinal

Agosto 2010 27

Page 28: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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;

Page 29: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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.

Page 30: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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);

Page 31: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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.

Page 32: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

Tipo Ordinal

Definidos por el Usuario

enumerados

subrango

Tipo Simple Tipo Ordinal

Agosto 2010 32

Page 33: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

Tipo Ordinal

Definidos por el Usuario

subrango

Tipo Simple Tipo Ordinal

Agosto 2010 33

Page 34: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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;

Page 35: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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.

Page 36: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 37: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 38: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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;

Page 39: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

Agosto 2010Programación I - Tipo de

Datos 39

Tipo String

Operaciones entre cadenas:

•Asignación

•Comparación

•Concatenación

Page 40: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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}

Page 41: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 42: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 43: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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)

Page 44: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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.

Page 45: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 46: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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;

Page 47: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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.

Page 48: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 49: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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

Page 50: Agosto 2010Programación I - Tipo de Datos1 Programación I Prof. Adjunto: Lic. Jorge O. Scucimarri Universidad Nacional de Luján Licenciatura en Sistemas

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.