Publicado el 15 de Agosto del 2019
760 visualizaciones desde el 15 de Agosto del 2019
4,1 MB
50 paginas
Programación
Tema 3: Tipos y expresiones
simples
Programación DIT-UPM
1
Contenidos
! 1. Tipos primitivos: números enteros, números
reales, booleanos, caracteres
! 2. Expresiones simples
! 3. Arrays
! 4. Campos (atributos)
Programación DIT-UPM
2
Algoritmos y estructuras de datos
! Los lenguajes de programación permiten
representar datos
" representación de la información
" cómo los llamamos
" cómo son (estructura)
" qué se puede hacer con ellos
! Los lenguajes de programación permiten definir
los algoritmos
" qué le hacemos a los datos
" en qué orden (cuándo se lo hacemos)
" cuántas veces
Programación DIT-UPM
3
Tipos de datos primitivos
! Las clases nos permiten crear nuevos tipos de
datos
! Podemos crear nuevas clases a partir de otras
clases (composición-agregación)
" Reutilizamos la biblioteca
! Pero … ¿Cuáles son los datos simples a partir
de los que creamos las clases más sencillas?
" Los tipos primitivos de datos son tipos básicos con
operaciones asociadas
" Datos con tipo primitivo no son objetos
Programación DIT-UPM
4
Tipos y valores primitivos
! Cada tipo primitivo tiene asociado un rango de
valores: enteros, reales, {true, false}, caracteres
" Y un conjunto de operadores (+,-,&,|, …)
! Podemos representar valores mediante literales
(1, ‘a’, 2.0, true), variables o expresiones
! Las variables permiten almacenar información
" Tienen asociado un tipo (primitivo o de clase)
" Variables de campo (atributo), variables locales y
parámetros
" Podemos cambiar su valor tantas veces queramos
" Solo podemos acceder (modificar o consultar) a ellas
en su ámbito
Programación DIT-UPM
5
Tipos primitivos en Java
! Java incluye tipos primitivos para representar
" Caracteres
" Enteros (valores enteros con signo)
" Reales (racionales e irracionales con parte decimal)
" Lógicos (verdadero, falso)
! Hay varios tipos primitivos para representar
enteros y reales. Porqué varios tipos para el
mismo tipo de número?
" ocupan más o menos memoria
" permiten representar mayor o menor rango de
valores
Programación DIT-UPM
6
Enteros
! Hay cuatro tipos primitivos para representar enteros:
int, long, short y byte
! Los literales son los mismos para todos ellos:
… -3, -2, -1, 0, 1, 2, 3 …
Entero
int
Bits
32
short
long
byte
16
64
8
Mínimo
Integer.MIN_VALUE
-231 (- 2147483658)
Short.MIN_VALUE
-215 (-32768)
Long.MIN_VALUE
-263 (-9223372036854775808)
Byte.MIN_VALUE
-27 (-128)
Programación DIT-UPM
Máximo
Integer.MAX_VALUE
231-1 (2147483657)
Short.MAX_VALUE
215-1 (32767)
Long.MAX_VALUE
263-1 (9223372036854775807)
Byte.MAX_VALUE
27-1 (127)
7
Literales Enteros
! Literales de números enteros:
" decimales:
" hexadecimales:
" octales:
" Un literal terminado en L es un entero long: 7L (7 en
53, 2300, -7, 0
0x35
065
64 bits)
! no son enteros válidos:
" 12,34
" 45.67
" 13E5
Programación DIT-UPM
8
Operadores de Enteros
! Los operadores de los enteros son:
" Unarios aritméticos (preceden a la expresión):
" Binarios aritméticos (operan sobre sus operandos a
# - invierte signo del entero
izquierda y derecha):
# +, - Suma y resta
# * Multiplicación
# / división que devuelve enteros 6 / 7 == 0, 15 / 4 == 3
# % módulo (el resto cuando los números son positivos)
x % y == x - (x / y) * y
" ++, -- pre/post incremento/decremento
" Binarios relacionales (comparan valores de las
expresiones a izquierda y derecha):
# >, >=, <, <= Menor, menor o igual, mayor, mayor o igual
# ==, != igual, distinto
Programación DIT-UPM
9
Reales
! Número reales en coma flotante (mantisa y
! Número limitado de cifras significativas y de
exponente): double, float
exponente
Real
Bits
Mínimo
float
double
32
64
Menor Constante
Representable
Float.MIN_VALUE
Double.MIN_VALUE
Máximo
Mayor Constante
Representable
Float.MAX_VALUE
Double.MAX_VALUE
Programación DIT-UPM
10
Literales de Reales
! Entero, coma y decimales:
" …-2.0, -1.0, 0.0, 1.0, 2.0, …
! Notación científica: mantisa y exponente:
! Terminando en D o F decimos explícitamente si
" 26.77e3
es float o double
Programación DIT-UPM
11
Operadores de Reales
! Los operadores son los mismos que los enteros
pero admiten/devuelven reales
" Unarios aritméticos: -
" Binarios aritméticos: +, -, *, /
" Binarios relacionales: >, >=, <, <=, ==, !=
# 0.0 == 0.0 es true, pero en general == y != nos puede dar
resultados no esperados
# Por ejemplo, prueba en scapbook que da false!:
float x = 1.1F; double y = 1.1D;
double z = 0.0D; boolean cero;
cero = (x - y) == z; // cero pasa a valer false
cero = 0.0 == 0.0; // cero pasa a valer true
Programación DIT-UPM
12
Lógicos
! Tipo primitivo para valores lógicos: boolean
! Los literales: true, false
! Operadores sobre booleanos (son el resultado
de operadores relacionales):
" Unarios: ! negación
" Binarios:
# x && y: para que sea true, x e y deben ser true
• Si x es false y no se evalúa
# x || y: será true si cualquiera de las dos (x o y) es true
• Si x es true y no se evalúa
Programación DIT-UPM
13
Caracteres
! Tipo primitivo para valores carácter: char
" Un único carácter en estándar Unicode 2.0 (16 bits)
" ASCII
! Literales:
" ‘a’ ‘j’ ‘\n’ ‘\t’ ‘\r’ ‘\\’
" 0u0020
! Operadores:
" Binarios relacionales: >, >=, <, <=, ==, !=
# Los caracteres están ordenados según Unicode:
•
‘0’, ‘1’, …, ‘9’, … ‘a’, ‘b’ … ‘z’, ‘A’, ‘B’, … ‘Z’
" Muchas operaciones en clase (java.lang) Character
Programación DIT-UPM
14
Caracteres
! String es una clase para representar cadenas
de caracteres. Es una clase, no un primitivo
" Pero tiene excepciones respecto otras clases
! Literales (una excepción; las clases no tienen
literales)
" "a", "Hola que tal“
" Un literal puede ser tratado como una instancia de la
clase String. (por ejemplo "sss".compareTo("sss"))
! Caracteres de escape
! Operadores: métodos de la clase String y +
Programación DIT-UPM
15
Literales de Caracteres y Cadenas
! Caracteres:
" á´ ´Ñ´ ´?´
! Cadenas de caracteres (strings):
" ”Hola a todos”
" ”esto es una cadena”
" ”dijo Ádios´ y se fué” -> dijo ’Adios’ y se fué
" ”qué \”raro\” es esto”
-> Hola a todos
-> esto es una cadena
-> qué ”raro” es esto
String miCadena = "hola";
Programación DIT-UPM
16
Enumerados
! Algunas veces queremos un tipo de datos con un
conjunto de valores limitado, concreto y del que
describimos los literales
! Un enumerado (se declaran con “enum”), es un
conjunto de literales que representan los posibles
valores del tipo
enum Estaciones {INVIERNO,PRIMAVERA,VERANO,OTONO}
! Cuando queramos usar algunos de los literales de
enumerado lo haremos:
Estaciones.INVIERNO
con class
! enum define nuevos tipos de datos como lo hacemos
Programación DIT-UPM
Tipos simples vs. Tipos compuestos
! int,short,long,byte,double,float, char,boolean son
tipos primitivos
" Las variables de esos tipo sólo almacenan un valor simple
" Se representan con 8..64 bits
" Se encuentran siempre contenidos dentro de un objeto, o están entre
los parámetros y variables locales de un método activo
! String y Enumerados son objetos (compuestos) pero el lenguaje
soporta algunos extras (p.e. literales, +)
! El resto de los tipos (compuestos) son clases:
" Las variables de tipo compuesto referencian objetos
# Para inicializarlas hay que usar new, o copiar otra referencia
" Un objeto es una estructura compleja. Incluye bastante información
(además de los datos): referencia a la clase, identificador de objeto,
monitor …
Programación DIT-UPM
18
Contenidos
! 1. Tipos primitivos: números enteros, números
reales, booleanos, caracteres
! 2. Expresiones simples
! 3. Arrays
! 4. Campos (atributos)
Programación DIT-UPM
19
Expresiones y precedencia operadores
! Una expresión permite realizar múltiples
operaciones simples o complejas
" (9.0/5.0) * g + 32.0
! Un operando puede ser:
" Literal
" Variable (campo, parámetro, variable local)
" Resultado de una llamada a método que devuelve un
resultado compatible con los operandos del operador
" El resultado de una expresión
! Operadores de los tipos primitivos y de String
Programación DIT-UPM
20
Expresiones y precedencia operadores
! Una expresión con varios operadores se ejecuta
con el siguiente orden de precedencia:
" Operadores unarios y llamadas a método, de
izquierda a derecha
" Operadores multiplicación y división de izquierda a
derecha
" Operadores de suma y resta de izquierda a derecha
" Operadores de relación
" Operadores de asignación
! Para fijar nuestro orden deseado (o para hacer
expresiones más claras) usaremos paréntesis
-1 + 2 * (2 - 4 + 3) / 2
Programación DIT-UPM
21
Conversiones
! Todos los operandos y parámetros tienen un
tipo que debemos respetar
! Algunas veces queremos usar un valor que no
es del tipo correcto (por ejemplo sumar enteros
y reales)
! Conversión de tipos:
" Implícita (definida en el lenguaje)
" Explícita (casting o promoción), forzada por el
programador
Programación DIT-UPM
22
Conversiones implícitas
! 5.0 / 4 -> 1.25
! El 4 se convierte “automáticamente” en 4.0 para
poder dividir
! La promoción tiene mayor prioridad
" (float) 5 / 4 -> 1.25 (formato float)
" El 5 se convierte por la promoción forzada a 5.0, el 4
se convierte “automáticamente”
Programación DIT-UPM
23
Conversiones implícitas II
! Si se mezclan cantidades numéricas de diferentes tipos,
se convierten automáticamente al tipo en el que seguro
que se puede representar
! ¡Se puede perder información!
! Sólo se aplica a tipos primitivos
double
float
long
int
short
byte
Programación DIT-UPM
24
Conversiones implícitas III
Comentarios de: Tema 3: Tipos y expresiones simples (0)
No hay comentarios