Anda di halaman 1dari 56

Teora 4

TIPOS DE DATOS DEFINIDOS POR EL USUARIO

Clase 4

Programacin I

Indice de Temas
Qu son los tipos de datos definidos por el usuario?
Tipo de dato Enumerativo. Operaciones. Ejemplos.

Tipo de dato Subrango. Operaciones. Ejemplos


Tipo de dato Conjunto. Operaciones. Ejemplos

Tipo de dato String. Operaciones. Ejemplos

Clase 4

Programacin I

Tipos de Datos Definidos por el usuario


Hasta ahora....
Hemos trabajado los tipos de datos simples que se pueden considerar estndar en la mayora de los lenguajes de programacin. Que los tipos de datos vistos se consideren estndar significa que el conjunto de valores de ese tipo, las operaciones que se pueden efectuar y su representacin estn definidas y acotadas por el lenguaje.

Clase 4

Programacin I

Tipos de Datos Definidos por el usuario


Un DATO se puede asociar con un objeto del mundo real, representado por:

Un conjunto de valores o estados posibles. Un conjunto de operaciones permitidas. Una representacin interna

Esta definicin nos indica que podemos requerir la representacin de elementos NO de tipo estndar que se asocien con el fenmeno real a tratar.
Clase 4 Programacin I 4

Tipos de Datos Definidos por el usuario


Si tuviramos que pensar en una representacin posible para los siguientes ejemplos

1. Las notas de exmenes de una materia (valores enteros entre 0 y 10) 2. Los das hbiles de la semana (lunes, martes, mircoles, jueves y viernes.) 3. Un libro puede pensarse (abstraerse) como captulos con pginas, cada una de ellas con lneas, cada lnea con palabras y cada palabra con letras. 4. Los colores (rojo, azul, amarillo, verde, naranja, violeta) 5. Los palos de la baraja espaola (espada, basto, copa, oro).
Sobre estos ejemplos de clases de datos no estndar pueden pensarse operaciones permitidas que sean especficas de cada caso.

Clase 4

Programacin I

Tipos de Datos Definidos por el usuario


Problema Qu operaciones podramos hacer?
Obtener el promedio de notas de exmenes. Obtener el promedio de exmenes aprobados.

Notas de exmenes.

Das de la semana.

Buscar el da hbil siguiente a uno determinado. Indicar cual es el da hbil ms prximo a un da particular.

Clase 4

Programacin I

Tipos de Datos Definidos por el usuario


Problema
Hojas de Libro.

Qu operaciones podramos hacer?


Ubicar el captulo de un libro donde aparece una frase. Indicar la cantidad de pginas de un captulo dado. Indicar los colores primarios. Indicar los colores secundarios.

Los colores.

La baraja espaola.
Clase 4

Indicar el palo de una carta.

Programacin I

Tipos de Datos Definidos por el usuario


Un aspecto muy importante en los lenguajes de programacin es la capacidad de especificar y manejar datos no estndar, indicando valores permitidos, operaciones vlidas y su representacin interna. Esto permite:

Aumento de la riqueza expresiva del lenguaje, con mejores posibilidades de abstraccin de datos.
Mayor seguridad respecto de las operaciones que se realizan sobre cada clase de datos. Lmites preestablecidos sobre los valores posibles que pueden tomar las variables que corresponden al tipo de dato.

Clase 4

Programacin I

Tipos de Datos Definidos por el usuario


Sintticamente entonces un Tipo significa una clase de datos que tiene asociado:
Un rango de valores posibles. Una forma de representacin. Un conjunto de operaciones permitidas. Un conjunto de condiciones de valores permitidos que se pueden verificar.

Un tipo de dato definido por el usuario es aquel que no existe en la definicin del lenguaje, y el programador es el encargado de su especificacin.

Clase 4

Programacin I

Tipos de Datos Definidos por el usuario


En Pascal, los tipos deben ser declarados antes de ser usados. La declaracin de tipos se hace a travs de la palabra clave TYPE de la siguiente forma: TYPE identificador = tipo;

Nombre con que se conocer al tipo de dato en el programa.

Puede ser un tipo estndar o alguno de los tipos de datos definidos por el usuario.

Clase 4

Programacin I

10

Esquema general del programa (que usa tipos definidos por el usuario)
Program ejemplo;

{Zona de declaracin de tipos}


Type .....;

{Zona de declaracin de variables globales}


Var ......;

{Zona de instrucciones ejecutables del prog. Ppal.}


Begin ......; End.

Clase 4

Programacin I

11

Tipos de Datos Definidos por el usuario


Qu ventajas tiene DECLARAR tipos?
Flexibilidad: en el caso de ser necesario modificar la forma en que se representa el dato, slo se debe modificar una declaracin en lugar de un conjunto de declaraciones de variables.

Documentacin: se pueden usar como identificador de los tipos, nombres autoexplicativos, facilitando de esta manera el entendimiento y lectura del programa. Seguridad: se reducen los errores por uso de operaciones inadecuadas del dato a manejar, y se pueden obtener programas ms confiables.
Clase 4 Programacin I 12

Tipos de Datos Definidos por el usuario


Recordemos la clasificacin presentada en la primera clase
Tipos de Datos

Ahora vamos a comenzar a trabajar con dos tipos de datos simples y definidos por el usuario.

Simples

Compuestos

Def. por el lenguaje

Def. por el usuario

Numrico Carcter Lgico


Clase 4 Programacin I

Enumerativo Subrango

13

Tipos de Datos Definidos por el usuario ENUMERATIVO Algunos ejemplos de objetos del mundo real que podran definirse utilizando este tipo de dato.
Nombre de los meses del ao Nombre de los das de la semana Nombre de los colores Estado civil de las personas Nombre de las verduras que se expenden en un negocio, etc.

Clase 4

Programacin I

14

Tipos de Datos Definidos por el usuario ENUMERATIVO


Algunos lenguajes, como Pascal permiten que tales clases de datos constituyan la base de un tipo de dato enumerativo que es definido por el usuario. Un dato enumerativo puede verse como una lista ordenada de valores posibles para las variables del tipo.
Es un tipo de dato SIMPLE? Es un tipo de dato ORDINAL? Por qu? Es un tipo de dato definido por el usuario? Por qu?
Clase 4 Programacin I 15

Tipos de Datos Definidos por el usuario ENUMERATIVO


Los valores que se definen en la lista no pueden ser de los tipos estndar, tampoco pueden repetirse valores entre identificadores distintos. Las operaciones vlidas sobre las variables asociadas a este tipo son la asignacin y la comparacin. NO es posible realizar operaciones de entrada y salida, debido a esto estas variables son de uso interno, que colaboran en la claridad del programa.

Clase 4

Programacin I

16

Tipos de Datos Definidos por el usuario Enumerativos


Como se declara un tipo enumerativo? Type identificador = (valor1,valor2,.., valorn) ;

Clase 4

Programacin I

17

Tipos de Datos Definidos por el usuario Enumerativos


type meses = (enero, febrero,marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre); colores = (azul, rojo, verde);
frutas =(manzana, pera, banana, sandia);

dias_habiles = (lunes, martes, miercoles, jueves, viernes);


Var mes : meses; color : colores; postre : frutas; da, hoy :dias_hab;
Programacin I

Operaciones?
18

Clase 4

Tipos de Datos Definidos por el usuario Enumerativos: operaciones


mes := enero; If (mes = abril) Then... Asignacin Comparacin

For mes := enero to marzo do...


case hoy of ..... ...... ..... ....... end;

Indice del for

En un case

Clase 4

Programacin I

19

Tipos de Datos Definidos por el usuario Enumerativos


Write (Hoy es :);
Case hoy of Cmo hago para imprimir?

Lunes : Writeln (Lunes); Martes: Writeln (Martes); ............. .. End;

Clase 4

Programacin I

20

Tipos de Datos Definidos por el usuario Enumerativos


Como se trata de una lista ordenada, sobre el tipo enumerativo se pueden aplicar tres funciones relacionadas con el orden. Supongamos: frutas =(manzana, pera, banana, sanda);

PRED: devuelve el valor anterior del enumerativo correspondiente: PRED ( banana ) pera

SUCC: devuelve el valor siguiente del enumerativo:


SUCC ( pera ) banana ORD: da la posicin relativa del argumento dentro de la definicin del enumerativo: ORD ( pera ) 1
Clase 4 Programacin I

Succ (sanda)???
21

Tipos de Datos Definidos por el usuario Enumerativos


Utilicemos las operaciones permitidas: Type notasmusicales = (do, re, mi, fa, sol, la, si);
Determinemos el valor de cada una de las siguientes expresiones: PRED ( re ) SUCC ( mi ) ORD ( la ) SUCC ( PRED ( fa ) ) SUCC ( si ) ORD ( la ) - ORD ( mi ) do < re

Clase 4

Programacin I

22

Tipos de Datos Definidos por el usuario Enumerativos


Por qu son tiles los tipos enumerativos?

Promueven cdigo autodocumentado. Ayudan a la legibilidad y mantenimiento de los programas. Permiten crear tipos de datos a medida de las especificaciones del problema en cuestin. Sin embargo, es restrictivo su uso debido a que no se puede realizar sobre ellas operaciones de entrada/salida
Clase 4 Programacin I 23

Uso del tipo enumerativo


Supongamos que necesitamos representar una fecha utilizando el tipo entero

var

Mes, Dia, Dia_Sem, Ao : integer;

begin Ao := 2008; Mes := 5; Dia := 7; Dia_Sem := 3; ..... . end.

Qu problemas se pueden presentar?

Clase 4

Programacin I

24

Usando Enumerativos
Type Meses = ( enero, febrero, marzo, abril, mayo, junio, julio, agosto, setiembre, octubre, noviembre, diciembre );
Dias_Sem = ( lunes, martes, miercoles, jueves, viernes, sbado, domingo );
var Ao, dia : integer; Mes : Meses; D_Sem : Dias_Sem; begin Ao := 2008; Mes := mayo; Dia := 7; D_Sem := miercoles; .. end.
Clase 4 Programacin I 25

Tipos de Datos Definidos por el usuario SUBRANGO


Algunas veces el tipo de datos puede tomar algunos de todos los valores que nos brinda un tipo ordinal, es decir un subrango de los mismos.
Con los nmeros naturales, (subconjunto de los enteros).
Con las letras minsculas (como subconjunto de los caracteres). Con los das feriados de la semana (como subconjunto de un tipo enumerativo con los das de la semana). Con los colores primarios (dentro de un tipo enumerativo que tuviera todos los colores).

Clase 4

Programacin I

26

Tipos de Datos Definidos por el usuario SUBRANGO


Un tipo de dato subrango es un tipo ordinal que consiste de una sucesin de valores de un tipo ordinal tomado como base. Es un tipo de dato SIMPLE. Por qu? Es un tipo de dato definido por el usuario. Por qu?

Cmo se declara?

Clase 4

Programacin I

27

Tipos de Datos Definidos por el usuarioSubrango


Se especifica indicando los valores inicial y final de la sucesin, separados por dos puntos seguidos: Program ejemplo; Type identificador = valor inicial .. valor final;

Program ejemplo; Type mayusculas = A .. Z; Primer_decena = 1 .. 10;


Var letra : mayusculas; nmero : primer_decena;
Programacin I 28

Clase 4

Tipos de Datos Definidos por el usuarioSubrango


Program ejemplo; Const minimo = 100; maximo = 500; Type Var rango = minimo .. maximo; dato1, dato2 : rango;

Qu operaciones Estn permitidas?

Las operaciones de un tipo de dato subrango se heredan del tipo base.

Clase 4

Programacin I

29

Tipos de Datos Definidos por el usuarioSubrango


Program ejemplo; Const minimo = 100; maximo = 500; Type rango = minimo .. maximo; Meses = ( enero, febrero, marzo, abril, mayo, junio, julio, agosto, setiembre, octubre, nov, diciembre ); vacaciones = enero .. marzo; Var dato1, dato2 : rango; descanso : vacaciones;

Begin dato1 := dato1 Div dato2; descanso:= succ (febrero); ............


Clase 4 Programacin I 30

Tipos de Datos Definidos por el usuarioSubrango


Por qu son tiles los tipos subrango?

Facilita el chequeo de posibles errores, pues permite que el lenguaje verifique si los valores asignados se encuentran dentro del rango establecido. Ayuda al mantenimiento del programa.
Ejercicio: Plantee una declaracin de tres datos que puedan utilizarse para definir una fecha (da, mes, ao)

Clase 4

Programacin I

31

Tipos de datos definidos por el usuarioSUBRANGO


Ejercicio: Realice un programa que lea las notas de exmenes de alumnos. Se tienen 100 alumnos y de cada uno, se

dispone de las notas de exmenes de la semana.


Se pide informar para cada alumno el dia de la semana en el cual obtuvo la mxima nota.

Clase 4

Programacin I

32

Tipos de datos definidos por el usuarioSUBRANGO


Alum1 Lunes Martes Mircoles 6 7 5 Alum2 8 7 5 Alum3 8 9 7 ...... ..... Alum100 5 10 5

Jueves
Viernes

8
4 Jueves

8
7 ???

8
10 Viernes

8
7 Martes

Clase 4

Programacin I

33

Tipos de datos definidos por el usuarioSUBRANGO


Para cada alumno
Para cada dia de la semana Leo la nota del alumno Si (es mayor que la maxima) entonces actualizo la nota mxima actualizo el da con nota mxima Informo el da de la nota mxima

Clase 4

Programacin I

34

Program uno; Type notas = 1..10; dias = (lunes, martes miercoles, jueves, viernes); Var max: notas; diaMax: dias; notaAl: notas; i: integer; d: dias;
Clase 4

Begin for i:= 1 to 100 do begin max:= 1; for d:= lunes to viernes do begin read (notaAl); if (notaAl >= max) then begin diaMax:= d; max:= notaAl; end; end; write (Para el alumno, i, la nota maxima fue) case diaMax of lunes : write (el dia lunes); martes: write (el dia martes); //los das que faltan end case; end; //end del for i end.

Programacin I

35

Tipos de Datos Definidos por el usuarioCONJUNTO


Presentamos el tipo de dato Conjunto Tipos de Datos

Desde el punto de vista informtico un tipo conjunto representar una coleccin de datos simples ordinales, sin elementos repetidos y sin ningn orden interno.

Simples

Compuestos

La cantidad de elementos que contiene el conjunto puede estar limitada por la implementacin en cada lenguaje o sistema operativo.
Clase 4

Def. por el lenguaje

Def. por el usuario

Conjunto

Numrico Carcter Lgico

Enumerativo Subrango

Programacin I

36

Tipos de Datos Definidos por el usuarioCONJUNTO


De la definicin se desprende que se puede tener conjunto de enteros, caracteres, subrango enumerativos.

Por un problema de implementacin en Pascal estndar el nmero mximo de elementos de un conjunto es 255.
Por qu es un tipo de dato COMPUESTO? Se reserva una cantidad fija de memoria?

Un conjunto NO admite operaciones de lectura y escritura.

Clase 4

Programacin I

37

Tipos de Datos Definidos por el usuarioCONJUNTO


Program ejemplo;

Type identificador = set of tipo-ordinal;


Var nombre : identificador;

Clase 4

Programacin I

38

Tipos de Datos Definidos por el usuario Conjunto


Program uno; Type letras = set of char; das = ( lunes,martes,mircoles,jueves,viernes) algunos_das = set of das; uno_cien = 1 .. 100; edad= set of uno_cien; Var conjEdad: edad; conjLetras, conjLetras2, conjLetras3 : letras;

Qu Operaciones permite?

Clase 4

Programacin I

39

Tipos de Datos Definidos por el usuario Conjunto. Operaciones


Asignacin: A una variable de tipo conjunto se le puede asignar valores escribiendo sus elementos consecutivamente, encerrados entre corchetes y separados por comas, en la seccin de instrucciones ejecutables.

Begin ..... conjLetras := [a, b]; conjLetras2 := [a .. z]; conjLetras3 := [ ];


conjEdad := [1, 3, 20, 55]; ..... End;

{conjunto vacio}

Clase 4

Programacin I

40

Tipos de Datos Definidos por el usuario Conjunto. Operaciones


Unin: se representa con el signo + y da como resultado otro conjunto. En este conjunto resultado aparecen los elementos de los dos conjuntos y aquellos elementos repetidos aparecen una vez.

Begin ..... conjLetras := [a , b] + [j , k]; conjLetras2 := conjLetras + [l , m]; .... End;

Clase 4

Programacin I

41

Tipos de Datos Definidos por el usuario Conjunto. Operaciones


Interseccin: se representa con el signo * y da como resultado otro conjunto. En el conjunto resultado aparecen solamente los elementos comunes a los dos conjuntos.

Begin ..... conjLetras := [a , b] + [j , k]; conjLetras2 := [a] + [l , m]; conjLetras3 := conjLetras * conjLetras2; .... End;

Clase 4

Programacin I

42

Tipos de Datos Definidos por el usuario Conjunto. Operaciones


Diferencia: se representa con el signo - y da como resultado otro conjunto. Este conjunto resultado contiene los elementos que estn en el primer conjunto y no estn en el segundo.

Begin .... conjLetras := [a , b , c]; conjLetras2 := [b , d , e]; conjLetras3 := conjLetras - conjLetras2; .... End;

Clase 4

Programacin I

43

Tipos de Datos Definidos por el usuario Conjunto. Operaciones


Pertenencia: se representa con el operador in y da como resultado un valor lgico. Esta operacin devuelve verdadero si el elemento est en el conjunto y falso en caso contrario.
Begin .... conjLetras := [a, b , c]; res = a in conjLetras; .... End; Se pueden usar los operadores relacionales para determinar si un conjunto est incluido en otro (<=), si son distintos (<>) iguales (=).

Clase 4

Programacin I

44

Tipos de Datos Definidos por el usuario Conjunto. Ejemplo


Ejemplo: Se leen edades de personas hasta ingresar la edad 0. Finalizada la lectura, mostrar las edades ledas.
Program ejemplo; type rango = 0..150; conjunto = set of rango;

var edades: conjunto;


begin cargarInformacin (edades); mostrarInformacin (edades); end.

Clase 4

Programacin I

45

Tipos de Datos Definidos por el usuario Conjunto. Ejemplo


procedure cargarInformacin (var edades: conjunto);

var edad: rango;


begin edades := [ ]; read (edad); while ( edad <> 0 ) do begin edades:= edades + [edad]; read ( edad); end; end; procedure mostrarInformacin ( edades: conjunto);

Qu pasa con los repetidos?

var edad: rango;


begin for edad:= 1 to 120 do if edad in conjunto then writeln (edad) end;
Clase 4 Programacin I

Cmo imprimo los elementos?

46

Tipos de Datos Definidos por el usuario Conjunto. Ejercitacin


1. Escriba un programa que lea una secuencia de caracteres terminada con punto e informe cuntos de los caracteres ledos pertenecen a letras de la palabra ALGORITMOS.
2. Escriba un programa que imprima la cantidad de consonantes en una sucesin de caracteres que se leen. La lectura de los caracteres termina con punto. 3. Escriba un programa que lea caracteres que corresponden a un texto, que termina con punto. Informar la cantidad de palabras que contiene el texto ledo. 4. Modificar el ejer.3) para que tambin se imprima la cantidad de palabras que contienen al menos cuatro vocales. 5. Qu se modifica en el ejer. Anterior si se deben contar las palabras que contengan al menos cuatro vocales distintas?
Clase 4 Programacin I 47

Tipos de datos definidos por el usuarioCONJUNTO


3. Escriba un programa que lea caracteres que corresponden a un texto, que termina con punto. Informar la cantidad de palabras que contiene el texto ledo y tambin informar la cantidad de palabras que contienen al menos cuatro vocales.

casa auxilio resplandor materia pelea


5 palabras en total 2 palabras con al menos 4 vocales
Clase 4

Inicializar variables Mientras ( no lea el . ) Inicializar variables para una palabra Mientras (no termina la palabra) analizo si es vocal Analizo si la palabra tiene 4 o mas vocales Informar Fin
Programacin I 48

Inicializar variables Mientras ( no lea el . ) Inicializar variables para una palabra Mientras (no termina la palabra) analizo si es vocal Analizo si la palabra tiene 4 o mas vocales informar Fin

Read (letra);

{descarta blancos al ppio}

Program cuatro; type letras = set of char;


var vocales:letras; total, cant, pal:integer; letra:char; Begin vocales:=[a, e, i, o, u]; pal:=0; total := 0

while (letra = ) do read (letra); while (letra <> .) do Begin total := total + 1; cant:=0; while (letra <> .) and (letra<> ) do begin if (letra in vocales) then cant:= cant+1; read (letra); end; if (cant >= 4) then pal:= pal+1; while (letra = ) do read (letra); end; Writeln (`Cantidad de palabras:, total); Writeln (`Cantidad de palabras con al menos 4 vocales:, pal); End.

{descarta blancos entre palabras}

Clase 4

Programacin I

49

Tipos de Datos Definidos por el usuario.


Repaso:
Cmo se definen los datos de tipo enumerativo? Qu operadores pueden utilizarse con datos de tipo enumerativo? Cmo se definen los datos de tipo subrango? Qu operadores pueden utilizarse con datos de tipo subrango? A qu tipos de datos simples pueden aplicarse el concepto de subrango?

Cmo se definen los datos de tipo Conjunto?


Qu operaciones se pueden hacer entre conjuntos? Cmo es el esquema general de un programa que incorpora la declaracin de tipos?
Clase 4 Programacin I 50

Tipos de Datos Definidos por el usuario - String


Presentaremos un tipo de dato particular: el tipo string

En la mayora de los lenguajes existe un tipo estndar o definible por el usuario que es la cadena de caracteres llamado string. Vimos que un carcter es una letra, nmero smbolo.
Cuando se trabaja con el tipo de dato string, se tienen k caracteres tratados como una sola variable (donde k es la longitud del string).
Clase 4 Programacin I 51

Tipos de Datos Definidos por el usuario String


Un tipo de dato string es una sucesin de caracteres de un largo determinado, que se almacenan en un rea contigua de la memoria. Cmo trabajaremos con el tipo de dato string en este curso? Se reserva una cantidad fija de memoria?

Clase 4

Programacin I

52

Tipos de Datos Definidos por el usuario String


Declaracin TYPE identificador = string [ longitud ];

Longitud es el nmero mximo de cantidad de caracteres que puede contener el dato. En PASCAL cuando no se especifica la longitud ese identificador podr contener como mximo 255 caracteres.
Type hilera hilera2 fecha da Var = string [10]; = string [25]; = string [8]; = string [2]; : : : : hilera; hilera2; string [14]; fecha;
Programacin I 53

h1, h2, h3 h4 h5,h6 fecha1, fecha2

Clase 4

Tipos de Datos Definidos por el usuario String - Operaciones


Asignacin: para asignar valor a una variable de tipo de dato string se hace igual que si fuera una variable de tipo carcter, :=. Si se le asigna mayor cantidad de caracteres que lo declarado como longitud mxima, los ltimos a partir de esa longitud se pierden y se dice que la hilera de caracteres se trunca.
Program uno; Var cad1: string[20]; cad2: string[5]; Begin cad1:= buenos das!; cad2:= cad1; End.

Clase 4

Programacin I

54

Tipos de Datos Definidos por el usuario String - Operaciones


Operadores Relacionales: los strings pueden compararse por =, <>, <=, =>. Program uno; Var cad1: string[20]; cad2: string[5]; Begin cad1:= buenos das!; cad2:= ggg; if (cad1 = cad2) then End. Si las cadenas que se comparan son de igual longitud y contienen los mismos smbolos, en el mismo orden, el resultado de la operacin es verdadero.

Si tienen distinta longitud el resultado de la comparacin es falso.

Estos operadores realizan la comparacin carcter por carcter.


Clase 4 Programacin I 55

Tipos de Datos Definidos por el usuario Ejercitacin


1. Escriba un programa que lea el nombre y el DNI de 100 personas. Informar los nombres de las personas cuyo DNI contiene 4 nmeros pares.
2. Escriba un programa que lea el nombre y el DNI de personas. Informar el nombre de la persona con el mayor nmero de DNI. La lectura finaliza luego de procesar a Mara..

Clase 4

Programacin I

56

Anda mungkin juga menyukai