Está en la página 1de 18

Tema 3.

Tipos de datos simples


Contenido del tema:
Concepto de tipo. Tipos simples. Operadores. Expresiones. Semntica. Tipos y expresiones en lenguaje C++
Francisco J. Veredas Dpto. Lenguajes y Ciencias de la Computacin
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 1

Concepto de tipo
Qu es un dato?
Valor
Constante: no cambia durante la ejecucin del programa. Variable: cambia durante la ejecucin de un programa.

Identificador: el dato tiene un nombre.


Normas de estilo para diferenciar entre identificadores
de constantes y de variable.

Tipo
Dominio: valores que puede tomar el dato. Operaciones permitidas.

Cardinalidad (#): nmero de valores distintos.


Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 2

Ejemplos de datos en un algoritmo


Zonas de declaraciones de datos (constantes y variables) CONST Tipo N MAX_VALOR = 100 VAR N suma = 0 Dominio: valores naturales Operadores: + - * DIV MOD
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 3

Valor

Identificador

Operadores bsicos
Los operadores permiten manipular datos. Operadores bsicos: conjunto mnimo. Construccin de nuevos operadores: busca optimizar la eficiencia. Operadores generales:
Asignacin (=): el valor de un dato se copia en otro dato.
Es un operador universal para todos los tipos de datos, simples o compuestos.

Comparacin de igualdad (==): verifica si dos datos tienen el mismo valor.


Se emplea en expresiones lgicas (devuelve VERDADERO o FALSO). No es un operador universal: no est definida para tipos compuestos.

Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

13-oct-04

Uso de operadores y tipos


En nuestro pseudolenguaje, los operadores se aplican sobre datos con el mismo tipo. Algunos lenguajes de programacin son ms estrictos que otros respecto al tipado de datos:
C/C++: MODULA-2: ADA: flexible estricto muy estricto

Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

13-oct-04

Clasificacin de los tipos de datos


Tipos simples o no estructurados
No estn compuestos por otros tipos. Contienen un solo valor. Son atmicos: indivisibles. Se dividen en:
Predefinidos: propios del lenguaje empleado. Definidos por el usuario (programador).

Tipos compuestos o estructurados:


Se componen de otros tipos (simples o compuestos).
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

13-oct-04

Tipos simples predefinidos


Son la base de la programacin. Dependen del lenguaje empleado. Pueden usarse sin necesidad de definirlos. En nuestro pseudolenguaje: N: nmeros naturales Z: nmeros enteros R: nmeros reales B: booleanos C: caracteres
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 7

Propiedades de los tipos predefinidos


Atmicos. Ordenados: admiten operadores relacionales: ==, >, <, >=, <=, != Tipos escalares Sucesor, predecesor nicos (excepto R):
Orden: Predecesor: Sucesor:
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

Tipos ordinales ORD: T {0, . . ., # 1}


PRED: SUC:
13-oct-04 8

Operadores para tipos predefinidos


Naturales Enteros Reales Lgicos Caracteres (N): +, -, *, DIV, MOD (Z): +, -, *, DIV, MOD, ABS (R): +, -, *, /, SQRT, POW, etc. (B):
Valores: VERDADERO, FALSO Operadores: Y, O, NO

(C): ORD, CHR


13-oct-04 9

Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

Tipo natural (N) y tipo entero (Z)


Dominio: conjunto N y conjunto Z Operadores especficos: + - (binario) * DIV MOD (unario). Funciones predefinidas especficas: ABS(expresin), POW (base, exponente), etc. Literales: 34, -999, 0, etc. Entrada/salida formateada: Leer(), Escribir(). Representacin fsica: Conversin interna entre caracteres
y su representacin fsica. N: binario puro Z: signo-magnitud, complemento-1, complemento-2.
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 10

Tipo real (R)


Dominio: conjunto R Operadores especficos: + - (binario) * / (unario). Funciones predefinidas especficas: SQRT(expresin), POW (base, exponente), etc. Literales: 10, -12.25, .36, 3.9E-56 Entrada/salida formateada: Leer(), Escribir(). Distintas representaciones fsicas: coma fija (precisin limitada), coma flotante (prec. variable).
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 11

Tipo carcter (C)


Dominio: conjunto de caracteres grficos y de control del sistema. Operadores: ninguno especfico. Funciones predefinidas especficas: CHR(), CAP(). Literales: a, A, 0, &, \n, \0, \\, \, \. Entrada/salida: Leer(), Escribir().
No hay conversin

Representacin fsica: cdigos E/S estndar.


Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 12

Tipo lgico o booleano (B)


Dominio: VERDADERO y FALSO. Operadores lgicos: Y O NO.
a F F V V b F V F V a Y b a O b NO a NO b F F V V F F V V V V V F F F V F

Literales: VERDADERO y FALSO. Entrada salida: no permitida.


Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 13

Tipos predefinidos en C++


Enteros (int, long, short): +, -, *, /, % Naturales (unsigned int, unsigned short, unsigned long): +, -, *, /, %
Precisin doble

Reales (float, double):


.

+, -, *, /, sqrt, . .

Lgicos (bool): Caracteres (char)


Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

Valores: true, false Operadores: &&, ||, !

13-oct-04

14

Definicin de tipos en C++. Ejemplo


// Programa ejemplo de definicin // de los tipos de las variables en C++ #include <iostream> using namespace std; int main () { int res1, res2; float dato; cout << Dame un valor entero; cin >> res1; res2 = res1; // res2 contiene el mismo valor que res1 cout << Dame un valor real; cin >> dato; cout << Fin programa definicion de tipos; return 0; }
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 15

Tipos simples definidos por el usuario


Los tipos enumerados:
Permiten definir nuevos tipos simples, de cardinalidad (n) reducida, y valores fcilmente interpretables. Se declaran en la seccin de TIPOS de un algoritmo. ENUM {Id1, Id2, ..., Idn} IdTipoEnumerado Literales: identificadores: Id1, Id2, ..., Idn Son tipos ordinales: ORD(), SUC() y PRED(). No tienen operadores especficos. Representacin fsica: como N o como Z. La entrada/salida no est permitida. El tipo booleano puede verse como un enumerado con dos valores: ENUM {VERDADERO, FALSO} B
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 16

Los tipos simples mejoran la legibilidad...


... aunque el dominio sea arbitrario...
CONST N ROJO = 1 N VERDE = 2 N AMARILLO = 3 /***********************/ /* Valores arbitrarios */ /***********************/

... y no haya manera de restringirlo y/o controlarlo.


VAR N color, semaforo INICIO color = ROJO // Ms legible semaforo = 9 // Nada lo impide
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 17

Los tipos enumerados...


Mejoran la legibilidad y permiten restringir y controlar el dominio.
TIPOS ENUM {rojo, amarillo, verde} TpColor VAR TpColor semaforo N posicion INICIO semaforo = amarillo posicion = ORD(rojo) // Asigna 1 semaforo = PRED(verde) // Asigna amarillo semaforo = SUC(verde) // Error semntico semaforo = naranja // Valor no permitido semaforo = 1 // Error semntico
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 18

Tipos enumerados en C++


/*Como definir tipos enumerados y variables de dicho tipo.*/ enum TpColor {rojo, azul,verde};

int main() { TpColor c1,c2; c1 = rojo; c2 = c1; //c1 y c2 con el mismo valor return 0; }
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 19

Tipos de datos compuestos


Se componen de otros tipos (simples o compuestos a su vez). Componentes homogneos: arrays. Componentes heterogneos: registros. No ordenados: no se les puede aplicar los operadores relacionales. La asignacin entre datos del mismo tipo compuesto es siempre posible: copia completa del dato.
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 20

10

Expresiones aritmticas y lgicas


Una expresin es una combinacin de elementos que representan valores (operandos) y conectivas (aritmticas y/o lgicas) que representan operaciones (operadores).

Ejemplos:
s<=((d+4.0e-5)*32.1)/SQRT(valor) Y NO fin (angulo==45) O NO (33.56<POW(cifra, exp))
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 21

Elementos lxicos de una expresin


Operandos:
Constantes literales. Constantes simblicas. Variables. Llamadas a funciones.

Operadores:
Aritmticos. Relacionales. Lgicos.
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 22

11

Elementos sintcticos de una expresin


Notacin infija para los operadores binarios
a * b suma >= 20.5

Notacin prefija para los operadores unarios


- x NO a

Posibilidad de uso y anidamiento de parntesis.


(dato + 5) * 32 ((valor + 0.6 * (2.6 dato)) * 1E6 + 99.9)

Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

13-oct-04

23

Elementos semnticos de una expresin


Todos los elementos son de un determinado tipo. Todos los operadores y funciones devuelven un determinado tipo.

tipo argumento 1 tipo argumento 2 ...

Operador o funcin

tipo del resultado

Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

13-oct-04

24

12

Tipos de los operadores


Sobrecarga de operadores
N Z N Z + - * N Z DIV MOD R / R + - * R

B B

Y B O B NO B

tipo simple tipo simple

< > <= >= != ==

Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

13-oct-04

25

Tipos de las funciones predefinidas


N Z ABS N Z R SQRT R

Z POW Z Z

R POW Z R

N Z

CHR

ordinal

ORD

N Z

ordinal

CAP

C
ordinal

SUC ordinal PRED

Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

13-oct-04

26

13

Compatibilidad de tipos
Los operandos binarios deben ser compatibles entre s y con los operadores. Regla de estilo, que los tipos de los operandos de una expresin DEBEN SER IDNTICOS. Ejemplo:
VAR N a, b = 3; R c, d = 2.0; B e INICIO a = (2 * 5) DIV b c = 4E3 * POW(10.5, d) / 25.0 e = a > b Y c < d a = b / 2.0 // Error semntico e = a > a // Error semntico
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 27

Conversiones de tipo
Permiten mezclar en la misma expresin datos de distinto tipo. Tipos de conversin:
Explcita: TipoDestino(expresin)
Son indicadas por el programador: 2 + Z(3.6 / 2) Regla de estilo: todas las conversiones de tipo en una expresin deben ser explcitas.

Implcitas: especificadas por el lenguaje


Ejemplo: 2 + 3.5 (convierte el segundo operando al tipo del primero, esto es, natural o entero) Regla de estilo: deben evitarse las conversiones implcitas.

Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

13-oct-04

28

14

Evaluacin de una expresin


Reglas de precedencia:
Los parntesis tienen la mayor precedencia: los ms internos preceden a los ms externos. Si no se utilizan parntesis, el orden en que se realizan las operaciones es el siguiente: 1 Operador unario lgico y aritmtico: NO y 2 Operadores multiplicativos: *, /, DIV, y MOD 3 Operadores aditivos (binarios): + y 4 Operadores relacionales: <, >, <=, >=, ==, != 5 Operador lgico de conjuncin: Y 6 Operador lgico de disyuncin: O Los operadores con la misma precedencia se evalan de izquierda a derecha.

Recomendacin: en caso de duda, usar parntesis


Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 29

La sentencia de asignacin (=)


Es un operador universal: aplicable a cualquier tipo de datos, simples o compuestos. variable lvalue Memoria = expresin r-value valor

A la izquierda de la expresin debe haber una variable (contenedor). Los tipos de la variable y la expresin deben ser idnticos. Dos posibles acciones: (1) inicializar una variable despus de declararla y (2) modificar el valor (estado) que ya tenga.
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 30

15

Precisiones sobre la asignacin


Modo de ejecucin: 1) Se calcula el resultado correspondiente a la expresin que aparece a la derecha. 2) Se almacena el valor calculado en la variable cuyo nombre aparece a la izquierda.

A=5 A=A+1

El tipo de la expresin de la derecha (r-value) debe ser idntico al de la variable (l-value).. Pueden hacerse conversiones explcitas de tipos entre tipos compatibles antes de realizar la asignacin.
Ejemplo: suma = 3.5 + R(num), si suma es real y num natural.

Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

13-oct-04

31

Ejemplos de asignacin de literales


Suponiendo las siguientes declaraciones de variables...
VAR Z N R C son vlidas: Num1 Num2 Num3 Letra1 Letra2 = = = = = -10; 32; 1.5E2; 1; ; Num1 Num2 Num3 Letra1, Letra2

no son vlidas:
Num2 = Num3 = Letra1 Letra2 -20; 10; = 1; = ab;

Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

13-oct-04

32

16

Otros ejemplos de asignaciones


semaforo = verde semaforo = PRED(verde) a = ORD(8)-ORD(0) a = (b*4) DIV (a+b) e = VERDADERO e = a > 4 c1 = a; c2 = CAP(c1) c2 = CHR(126) c = R(a)/R(b) // // // // // // // // // TSemaforo TSemaforo N Z B B C C R

Introduccin a los Computadores ITTSEA, Tema 3. Datos simples

13-oct-04

33

Expresiones en C++
El tipo de la expresin/variable de la derecha debe ser compatible con el tipo de la variable, aunque se aconseja, como regla de estilo, que sean tipos idnticos. Sin embargo, existen conversiones implcitas, desaconsejadas. Por ejemplo, float x; int y; x = y; //El tipo de y se pasa a float Usaremos conversiones explcitas. Por ejemplo, x = float(y);
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 34

17

Ejemplos de asignaciones en C++


int main () { int unsigned int float char
Num1 Num2 Num3 Letra1 Letra2 Num2 Num3 Letra1 Letra2 return 0; }
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 35

Num1; Num2, Num4=2; Num3; Letra1, Letra2;

= -10; = = = = = = = = (32+10)/Num4; 1.5E2; 1; ; -20; // 10; // 65; // ab; //

No Se No No

es correcta aconseja mejor usar 10.0 es correcta, aunque es correcta

Bibliografa
Joyanes, L. Fundamentos de Programacin. Algoritmos y Estructuras de Datos. 3 Edicin, McGraw-Hill, 2003. Joyanes, L. Programacin en C++: Algoritmos, Estructuras de Datos y Objetos. McGraw Hill. 2000. Deitel, P., Deitel, H. C++ Cmo Programar. Prentice Hall. 1999. Wirth, N. Algoritmos y Estructuras de Datos. Prentice-Hall, 1987.
Introduccin a los Computadores ITTSEA, Tema 3. Datos simples 13-oct-04 36

18

También podría gustarte