Un tipo de datos consiste en una colección de valores junto con unas operaciones básicas y una relaciones definidas para esos valores. Un tipo de datos es simple si sus valores no pueden dividirse en otros valores.
Un tipo de datos es estructurado si sus valores están formados por colecciones de valores de otro tipo (simple o estructurado). Un tipo de datos simple es ordinal si se puede definir un orden sobre los valores del tipo.
Ejemplo de tipos de datos simples ordinales.
El tipo integer : valores: {-32768,32767}
operaciones : +, -, *, DIV, MOD
relaciones : <, <=, >, >=, =, <>
El tipo boolean: valores: {true, false}
operaciones: NOT, AND, OR
relaciones: <, <=, >, >=, =, <>
El tipo char: valores: Caracteres del código ASCII
operaciones: succ, pred, ord, chr
relaciones: <, <=, >, >=, =, <>
Introducción a la programación
Tipos de datos ordinales.
EL TIPO ENUMERADO
Tipo enum
Valores: Los definidos por los identificadores
Operaciones:
- succ(x) – Sucesor de x. No está definido para el último valor del tipo enumerado.
- pred(x) – Predecesor de x. No está definido para el primer valor del tipo enumerado.
- ord(x) – Número ordinal de un valor en el orden del tipo, empezando la numeración por 0
- chr(x) – Carácter cuyo número ordinal es x en el orden del tipo.
Relaciones: = ,<>, <, >, <=, >=.
- Los identificadores nombran los valores del tipo y no deben aparecer en otros tipos enumerados.
- Los valores están ordenados por el orden en que aparecen en la definición.
- Las variables pueden utilizarse como variables de control de un bucle FOR
- Los valores de un tipo enumerado no se pueden leer de teclado ni mostrarse por pantalla. Se deben escribir
Ejemplo:
(Lunes, martes, Miercoles, Jueves, Viernes, Sabado, Domingo)
(Primera, Segunda, Litera)
(Sota, caballo, Rey)
( Identificador )
EL TIPO SUBRANGO
• Las constantes son valores de algún tipo ordinal llamado tipo base.
• Debe cumplirse Constante1 ≤ Constante2
Valores : los valores x del tipo base asociado tales que:
Constante1 ≤ x ≤ Constante2.
Operaciones: las del tipo base.
Relaciones: las del tipo base.
Dos tipos de datos son compatibles si son el mismo tipo, si uno es subrango del otro o ambos son subrangos del mismo tipo base.
Si A y B son dos tipos compatibles, entonces si se puede utilizar A también se puede utilizar B.
Ejemplos:
Lunes..Viernes
1..5
-5..5
‘a’..’z’
0..maxint
VAR
x : 1..5;
y : -5..5;
z : integer;
BEGIN
x:=3;
y:=x;
z:=x+y
Constante .. Constante
I
LA SECCIÓN TYPE
La sección de tipos se utiliza para declarar nuevos tipos o para renombrar tipos previamente definidos.
Secc. tipos
Los identificadores dan nombre al tipo.
Los tipos son tipos de datos predefinidos o tipos de datos definidos por el usuario.
Ejemplo:
TYPE
Simbolo = char;
Colores = (Rojo, Negro, Azul, Blanco);
DiasMes = 1..31;
Uso de los tipos en la definición de variables:
VAR
Codigo : Simbolo;
ColorAsiento, ColorCarroceria : Colores;
NumDias : DiasMes;
Parámetros con tipos definidos por el usuario
PROCEDURE Ejemplo
(Marca : Simbolo, VAR Color : Colores);
VAR
CuantosDias : DiasMes;
BEGIN
...
Los tipos enumerados y subrangos no pueden aparecer como tipos de retorno ni como parámetros de un subprograma. Deben usarse los nombres simbólicos de los tipos dados en la sección de tipos.
TYPE Identificador = Tipo ;
EJEMPLO
TYPE
DiasSemana = (Lunes, Martes, Miercoles, Jueves,
Viernes, Sabado, Domingo);
{Procedimiento para escribir los días de la semana.}
PROCEDURE EscribirDia (Dia : DiasSemana);
INICIO
CASE Dia OF
Lunes : escriba ‘Lunes’;
Martes : escriba‘Martes’;
Miercoles : escriba‘Miercoles’;
Jueves : escriba‘Jueves’;
Viernes : escriba‘Viernes’;
Sabado : escriba‘Sabado’;
Domingo : escriba‘Domingo’;
FIN
FIN;
{Procedimiento para leer un día de la semana}
LeerDia (VAR Dia : DiasSemana);
VAR c : char;
Inicio
escriba:(‘Introduzca el primer carácter del dia’); lea(c);
CASE c OF
‘L’ : Dia := Lunes;
‘M’ : Dia := Martes;
‘X’ : Dia := Miercoles;
‘J’ : Dia := Jueves;
‘V’ : Dia := Viernes;
‘S’ : Dia := Sabado;
‘D’ : Dia := Domingo;
fin
fin;
CADENAS DE CARACTERES
Tipo : string[Limite]
Valores :
Cadenas de caracteres de longitud máxima Limite.
Operaciones :
- Acceso a los caracteres de la cadena. cad[n]
- Asignación. La longitud del valor que se asigna debe ser menor que la declarada para la cadena. Sila longitud es mayor sólo se asignan los caracteres de más a la izda.
- Lectura. read, readln. Se lee la cadena hasta el fin de línea o hasta el fin de fichero. Si la longitud de la cadena resultante es mayor que la declarada para la variable la cadena se trunca.
- Escritura : write, writeln
- Longitud : length(x). Función que devuelve la longitud de la cadena x.
- Concatenación : concat(c1,c2,...cn). Función que devuelve la cadena formada al concatenar c1..cn en este orden.
- Es equivalente a : c1+c2+....+cn,
- Copiar : copy(cad, indice, tamaño). Función que devuelve la subcadena de tamaño tamaño que se encuentra en cad a partir de la posición indice.
- Posición : pos(cad1, cad2). devuelve la posición inicial de la primera aparición de cad1 dentro de
- cad2 o 0 si cad1 no aparece en cad2.
- Inserción : insert(cad1, cad2, posicion). Se modifica la cadena cad2, insertando el valor de cad1 en la posición especificada.
Borrar : delete(cad, posicion, tamaño). El procedimiento modifica la variable cad borrando la subcadena del tamaño especificado que comienza en la posición dada.
Relaciones :
<, <=, >, >= ,=, <>.
Si las cadenas tienen longitudes diferentes se comparan como si la cadena más corta tuviese blancos al final.
• Limite debe ser una constante.
• Si se omite el Limite: String, entonces la longitud máxima es de 255 caracteres.
• La cadena vacia se representa mediante un par de comillas consecutivas ‘’.
Ejemplos
CONST tam = 100;
VAR
Nombre : string[30];
Direccion : string[25];
Observaciones : string;
Carta : string[Tam];
inicio
Nombre := ‘Ana Lopez Esteban’;
IF Nombre[1] = ‘A’ entonces.....
Carta := ‘Querido ‘ + Nombre+‘estoy en’+Direccion; lea (Observaciones);
Nombre := copy(Obsevaciones, 8,5);
escriba(Carta)
No hay comentarios:
Publicar un comentario