Universidad Nacional de Lujn Licenciatura en Sistemas de

  • Slides: 50
Download presentation
Universidad Nacional de Luján Licenciatura en Sistemas de Información Departamento de Ciencias Básicas Programació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á

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

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

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 Estáticos Tipos Simples Ordinales Tipos Cadena (arrays) Datos Dinámicos Tipos Estructurados

Tipo de Datos Estáticos Tipos Simples Ordinales Tipos Cadena (arrays) Datos Dinámicos Tipos Estructurados Array • Integer Registro • Boolean Conjunto • Char • Enumerado Tipos Procedimiento (procesos) Tipos Puntero Archivo • 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

Los tipos simples definen conjuntos de valores ordenados. Tipo Simple Tipo Ordinal Tipo Real integer Predefinidos boolean Tipo Ordinal Definidos por el Usuario Agosto 2010 char enumerados subrango 6

Tipo Simple Tipo Ordinal Se dice ordenado discretamente si para todos los elementos que

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

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 integer Predefinidos Tipo Ordinal Agosto 2010 char boolean 10

Tipo Simple Tipo Ordinal Predefinidos Lógicos Tipo Ordinal Agosto 2010 boolean 11

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

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 integer Predefinidos Tipo Ordinal Agosto 2010 char boolean 13

Tipo Simple Tipo Ordinal Predefinidos char Caracter Tipo Ordinal Agosto 2010 14

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

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

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,

Tipo Ordenados Discretamente Funciones Función Descripción Argumento Resultado Pred(x) Predecesor del elemento x. int, char o boolean Succ(x) Sucesor del elemento x. 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) =

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

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

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. 00000356798 su representación utilizando

Notación científica o de coma flotante Sea el número 0. 00000356798 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 894129500000 su representación en una

Notación científica o de coma flotante Sea el número 894129500000 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 (-)

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

Tipo de Datos Definidos por el Usuario Agosto 2010 Programación I - Tipo de Datos 25

Tipo Simple Tipo Ordinal Definidos por el Usuario Agosto 2010 enumerados subrango 26

Tipo Simple Tipo Ordinal Definidos por el Usuario Agosto 2010 enumerados subrango 26

Tipo Simple Tipo Ordinal Definidos por el Usuario Agosto 2010 enumerados 27

Tipo Simple Tipo Ordinal Definidos por el Usuario Agosto 2010 enumerados 27

Tipo Enumerado Formato: type nombre_tipo_enum = (valor_1, valor_2, . . . , valor_n) Ejemplos:

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.

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 = (La. Plata, 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

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

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 Definidos por el Usuario Agosto 2010 enumerados subrango 32

Tipo Simple Tipo Ordinal Definidos por el Usuario Agosto 2010 enumerados subrango 32

Tipo Simple Tipo Ordinal Definidos por el Usuario Agosto 2010 subrango 33

Tipo Simple Tipo Ordinal Definidos por el Usuario Agosto 2010 subrango 33

Tipo Subrango type nombre = (límite inferior. . límite superior) Ejemplos: type Intervalo. Enteros

Tipo Subrango type nombre = (límite inferior. . límite superior) Ejemplos: type Intervalo. Enteros = -100. . 100; Letras. Min var Reducido : Intervalo. Enteros; Letras Agosto 2010 = ‘a’. . ’z’; : Letras. Min; Programación I - Tipo de Datos 34

Tipo Subrango Un tipo de dato subrango es un tipo ordinal que consiste en

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 Estáticos Tipos Simples Ordinales Tipos Cadena (arrays) Datos Dinámicos Tipos Estructurados

Tipo de Datos Estáticos Tipos Simples Ordinales Tipos Cadena (arrays) Datos Dinámicos Tipos Estructurados Array • Integer Registro • Boolean Conjunto • Char • Enumerado Tipos Procedimiento (procesos) Tipos Puntero Archivo • Subrango No Ordinales • Reales Agosto 2010 Programación I - Tipo de Datos 36

Tipo de Datos Estáticos Tipos Simples Tipo Cadena Ordinales • Integer • Boolean •

Tipo de 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

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

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 (S 1, S 2, . .

Tipo String Algunas funciones aplicables a cadenas: Concat (S 1, S 2, . . . , 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 Estáticos Tipos Simples Ordinales Tipos Cadena (arrays) Datos Dinámicos Tipos Estructurados

Tipo de Datos Estáticos Tipos Simples Ordinales Tipos Cadena (arrays) Datos Dinámicos Tipos Estructurados Array • Integer Registro • Boolean Conjunto • Char • Enumerado Tipos Procedimiento (procesos) Tipos Puntero Archivo • Subrango No Ordinales • Reales Agosto 2010 Programación I - Tipo de Datos 41

Tipo de Datos Estáticos Tipos Simples Ordinales Tipos Cadena (arrays) Tipos Estructurados Array •

Tipo de Datos Estáticos Tipos Simples Ordinales Tipos Cadena (arrays) Tipos Estructurados Array • Integer Registro • Boolean Conjunto • Char • Enumerado 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

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

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

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;

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 +

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 :

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

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