Professional Documents
Culture Documents
Programación
Un sublenguaje para definir los datos (álgebra)
representación de la información
qué datos tenemos
cómo los llamamos
cómo son (estructura)
Tema 3:
qué se puede hacer con ellos
Tipos de Datos Primitivos
Un sublenguaje para definir los algoritmos
qué le hacemos a los datos
Dpto. de Ingeniería de Sistemas Telemáticos
http://www.lab.dit.upm.es/~fprg/ en qué orden (cuándo se lo hacemos)
cuántas veces
oct-07 1 oct-07 2
oct-07 3 oct-07 4
Valores Caracteres y
Valores Reales Cadenas
Números reales (punto flotante) Caracteres
notación decimal y científica ´a´ ´Ñ´ ´?´
5. -0.78 0.00000034 123.0 Cadenas de caracteres (strings)
-23.4E8 123.E-34 ”Hola a todos” -> Hola a todos
no son válidos ”esto es una cadena” -> esto es una cadena
.58
”dijo ´Adios´ y se fué” -> dijo ’Adios’ y se fué
4,76
”qué \”raro\” es esto” -> qué ”raro” es esto
56.3F14
oct-07 5 oct-07 6
1
Valores Lógicos (booleanos) Enumerados
Sólo dos valores: {true, false} Definición de conjuntos por extensión
En minúsculas Nombre y Rango
Se usan en operaciones de comparación y Calificación є { Suspenso , Aprobado , Bien , Notable ,
lógicas Sobresaliente }
DiaSemana є { Lunes , Martes , Miércoles , Jueves ,
Viernes , Sábado , Domingo };
oct-07 7 oct-07 8
oct-07 9 oct-07 10
oct-07 11 oct-07 12
2
Expresiones ariméticas Tipos reales (¡flotantes!)
Formado por valores reales
1 - 2 * 3 + 4 rango: [menor .. mayor]
(1 - 2) * (3 + 4) mantisa y exponente
10 / 3 / 2 precisión: número de cifras significativas
Se evalúan los paréntesis float 32 bits -3.4029234E+38..+3.4029234E+38
6 cifras significativas
por orden de precedencia
double 64 bits -1.79769313486231570E+308 ..
1º: - unario
+1.79769313486231570E+308
2º: * / %
15 cifras significativas
3º: + - binario
de izquierda a derecha
oct-07 13 oct-07 14
Operaciones sobre
Tipo booleano booleanos
Se usan en operaciones de comparación y Predefinidos por el lenguaje JAVA
lógicas && AND con cortocircuito
o representan condiciones || OR con cortocircuito
[true,false] ^ XOR (OR exclusivo)
! NOT (negación)
& AND lógico (sin cortocircuito)
| OR lógico (sin cortocircuito)
oct-07 17 oct-07 18
3
Operaciones sobre
booleanos Operadores Relacionales
A && B : si A entonces B si no, false Predefinidos por el lenguaje Java
Si A es false, B no se evalúa == igualdad
A || B : si A entonces true si no, B != distinto
Si A es true, B no se evalúa < menor que
<= menor o igual
> mayor
>= mayor o igual
ATENCIÓN: prioridad operadores relacionales
menor que ningún otro operador
bisiesto = (año % 4 == 0) & (año % 100 != 0)
oct-07 19 oct-07 | (año % 400 == 0); 20
Operaciones sobre
Tipo carácter caracteres
Se llama char Predefinidos los relacionales (==, <, …)
Ocupa 16 bits Resto, en el API de Java
Estándar UNICODE 2.0, que incluye ASCII IsLowerCase(c) true si c es letra y minúscula, falso
admite ISO-latin-1, cirílico, kanji, ... en caso contrario
IsUpperCase(c) true si c es letra y mayúscula
Valores de \u0000 .. \uFFFF
toLowerCase(c) Si c es letra mayúscula, devuelve la
Más cómodo: ´a´, ´J´, ´ñ´ , … minúscula correspondiente, si no, devuelve c
Especiales: ´\n´ ´\t´ ´\r´ ´\\´ ´\´´ toUpperCase (c) Si c es letra minúscula, devuelve la
ordenados ´A´ < ´B´ < ....;´a´ < ´b´ < ...; mayúscula correspondiente, si no, devuelve c
oct-07 23 oct-07 24
4
Conversiones Promoción
Las operaciones determinan el tipo a devolver a (nombre de tipo) expresión
partir de los operandos Convierten el valor de la expresión a un valor del tipo
4 / 3 -> 1 (int, int) -> int entre paréntesis
a veces, no es el resultado deseado (char)98 -> devuelve ´b´
Conversión de tipos: (int)10.0 -> devuelve el entero 10
Implícita (definida en el lenguaje) (double)10 -> devuelve el double 10.0
Explícita (casting o promoción), forzada por el Los valores se pueden ver alterados
programador
oct-07 25 oct-07 26
oct-07 29 oct-07 30
5
Definición de atributos Identificadores
Se elige un nombre (identificador)
Se antepone el tipo adecuado Identificador: nombre de un elemento del
int n;
programa:
variables, constantes, clases, métodos, etc.
char respuesta;
double base, altura, superficie; Reglas:
secuencia de caracteres (letras, dígitos, ´$´ y ´_´)
longitud ilimitada
no pueden comenzar por número
mayúsculas != minúsculas
dos identificadores son iguales si coinciden todos sus
caracteres
oct-07 31 oct-07 32
Identificadores Identificadores
Válidos: Deben asegurar la legibilidad
x, base, hola, respuesta, díaDelMes, saldo_cliente, significativos
a1x, eje3, año, _preparado, $saldoCliente x*y; // multiplica dos números
No válidos: base * altura; // calcula superficie
• ¡pero es el mismo código!
1x, no#valido, día del mes
legibles, sin abreviaturas ni contracciones
No se pueden usar como identificadores las sinónimos cortos
palabras reservadas del lenguaje: combinar mayúsculas y minúsculas
public, static, class, goto, for,... añadir comentario al final de la línea para aclarar
int base; // base del triángulo
oct-07 33 oct-07 34
oct-07 35 oct-07 36
6
Carga en la declaración Constantes
Se puede asignar un valor inicial en la Se pueden declarar atributos con un valor
declaración de variables inmutable.
int m = 7; final int maximo= 100;
double x = 10.0, y = 3 * 5; final float velocidadLuz= 300000.0;
float p = m / 10.0, q = 2 * p; Error:
La expresión ha de poderse resolver (todos los final int numAlumnos; // ¡fija el valor a 0!
valores conocidos) numAlumnos= 540; // no se puede cambiar
El valor de las constantes se proporciona en la
declaración
oct-07 37 oct-07 38
Criterios de declaración de
constantes Envoltorios
Declararla antes de usarla (obligatorio) Clases especiales para “envolver” tipos simples
Declarar una constante para valores Boolean, Character, Integer, Long, Double, Float
significativos No hay para Byte ni Short
Elegir un nombre claro e inequívoco Usados para
Declararla en un solo lugar convertir a tipo String (imprimir)
para facilitar mantenimiento mediante cambio leer de una cadena
sistemático utilleria
MIN_VALUE, MAX_VALUE para números
no redefinir la misma constante en varios puntos
oct-07 39 oct-07 40