Publicado el 15 de Agosto del 2019
803 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
!鈥疞os lenguajes de programaci贸n permiten
representar datos
"鈥痳epresentaci贸n de la informaci贸n
"鈥痗贸mo los llamamos
"鈥痗贸mo son (estructura)
"鈥痲u茅 se puede hacer con ellos
!鈥疞os lenguajes de programaci贸n permiten definir
los algoritmos
"鈥痲u茅 le hacemos a los datos
"鈥痚n qu茅 orden (cu谩ndo se lo hacemos)
"鈥痗u谩ntas veces
Programaci贸n DIT-UPM
3
Tipos de datos primitivos
!鈥疞as clases nos permiten crear nuevos tipos de
datos
!鈥疨odemos crear nuevas clases a partir de otras
clases (composici贸n-agregaci贸n)
"鈥疪eutilizamos la biblioteca
!鈥疨ero 鈥 驴Cu谩les son los datos simples a partir
de los que creamos las clases m谩s sencillas?
"鈥疞os tipos primitivos de datos son tipos b谩sicos con
operaciones asociadas
"鈥疍atos con tipo primitivo no son objetos
Programaci贸n DIT-UPM
4
Tipos y valores primitivos
!鈥疌ada tipo primitivo tiene asociado un rango de
valores: enteros, reales, {true, false}, caracteres
"鈥痀 un conjunto de operadores (+,-,&,|, 鈥)
!鈥疨odemos representar valores mediante literales
(1, 鈥榓鈥, 2.0, true), variables o expresiones
!鈥疞as variables permiten almacenar informaci贸n
"鈥疶ienen asociado un tipo (primitivo o de clase)
"鈥疺ariables de campo (atributo), variables locales y
par谩metros
"鈥疨odemos cambiar su valor tantas veces queramos
"鈥疭olo podemos acceder (modificar o consultar) a ellas
en su 谩mbito
Programaci贸n DIT-UPM
5
Tipos primitivos en Java
!鈥疛ava incluye tipos primitivos para representar
"鈥疌aracteres
"鈥疎nteros (valores enteros con signo)
"鈥疪eales (racionales e irracionales con parte decimal)
"鈥疞贸gicos (verdadero, falso)
!鈥疕ay varios tipos primitivos para representar
enteros y reales. Porqu茅 varios tipos para el
mismo tipo de n煤mero?
"鈥痮cupan m谩s o menos memoria
"鈥痯ermiten 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
!鈥疞iterales de n煤meros enteros:
"鈥痙ecimales:
"鈥痟exadecimales:
"鈥痮ctales:
"鈥疷n literal terminado en L es un entero long: 7L (7 en
53, 2300, -7, 0
0x35
065
64 bits)
!鈥痭o son enteros v谩lidos:
"鈥12,34
"鈥45.67
"鈥13E5
Programaci贸n DIT-UPM
8
Operadores de Enteros
!鈥疞os operadores de los enteros son:
"鈥疷narios aritm茅ticos (preceden a la expresi贸n):
"鈥疊inarios 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
"鈥疊inarios 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
!鈥疦煤mero reales en coma flotante (mantisa y
!鈥疦煤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
!鈥疎ntero, coma y decimales:
"鈥-2.0, -1.0, 0.0, 1.0, 2.0, 鈥
!鈥疦otaci贸n cient铆fica: mantisa y exponente:
!鈥疶erminando en D o F decimos expl铆citamente si
"鈥26.77e3
es float o double
Programaci贸n DIT-UPM
11
Operadores de Reales
!鈥疞os operadores son los mismos que los enteros
pero admiten/devuelven reales
"鈥疷narios aritm茅ticos: -
"鈥疊inarios aritm茅ticos: +, -, *, /
"鈥疊inarios 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
!鈥疶ipo primitivo para valores l贸gicos: boolean
!鈥疞os literales: true, false
!鈥疧peradores sobre booleanos (son el resultado
de operadores relacionales):
"鈥疷narios: ! negaci贸n
"鈥疊inarios:
#鈥 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
!鈥疶ipo primitivo para valores car谩cter: char
"鈥疷n 煤nico car谩cter en est谩ndar Unicode 2.0 (16 bits)
"鈥疉SCII
!鈥疞iterales:
"鈥榓鈥 鈥榡鈥 鈥榎n鈥 鈥榎t鈥 鈥榎r鈥 鈥榎\鈥
"鈥0u0020
!鈥疧peradores:
"鈥疊inarios relacionales: >, >=, <, <=, ==, !=
#鈥 Los caracteres est谩n ordenados seg煤n Unicode:
鈥⑩
鈥0鈥, 鈥1鈥, 鈥, 鈥9鈥, 鈥 鈥榓鈥, 鈥榖鈥 鈥 鈥榸鈥, 鈥楢鈥, 鈥楤鈥, 鈥 鈥榋鈥
"鈥疢uchas operaciones en clase (java.lang) Character
Programaci贸n DIT-UPM
14
Caracteres
!鈥疭tring es una clase para representar cadenas
de caracteres. Es una clase, no un primitivo
"鈥疨ero tiene excepciones respecto otras clases
!鈥疞iterales (una excepci贸n; las clases no tienen
literales)
"鈥"a", "Hola que tal鈥
"鈥疷n literal puede ser tratado como una instancia de la
clase String. (por ejemplo "sss".compareTo("sss"))
!鈥疌aracteres de escape
!鈥疧peradores: m茅todos de la clase String y +
Programaci贸n DIT-UPM
15
Literales de Caracteres y Cadenas
!鈥疌aracteres:
"鈥÷ 麓脩麓 麓?麓
!鈥疌adenas de caracteres (strings):
"鈥滺ola a todos鈥
"鈥漞sto es una cadena鈥
"鈥漝ijo 脕dios麓 y se fu茅鈥 -> dijo 鈥橝dios鈥 y se fu茅
"鈥漲u茅 \鈥漴aro\鈥 es esto鈥
-> Hola a todos
-> esto es una cadena
-> qu茅 鈥漴aro鈥 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 鈥渆num鈥), 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
!鈥疷na expresi贸n permite realizar m煤ltiples
operaciones simples o complejas
"鈥(9.0/5.0) * g + 32.0
!鈥疷n operando puede ser:
"鈥疞iteral
"鈥疺ariable (campo, par谩metro, variable local)
"鈥疪esultado de una llamada a m茅todo que devuelve un
resultado compatible con los operandos del operador
"鈥疎l resultado de una expresi贸n
!鈥疧peradores de los tipos primitivos y de String
Programaci贸n DIT-UPM
20
Expresiones y precedencia operadores
!鈥疷na expresi贸n con varios operadores se ejecuta
con el siguiente orden de precedencia:
"鈥疧peradores unarios y llamadas a m茅todo, de
izquierda a derecha
"鈥疧peradores multiplicaci贸n y divisi贸n de izquierda a
derecha
"鈥疧peradores de suma y resta de izquierda a derecha
"鈥疧peradores de relaci贸n
"鈥疧peradores de asignaci贸n
!鈥疨ara 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
!鈥疶odos los operandos y par谩metros tienen un
tipo que debemos respetar
!鈥疉lgunas veces queremos usar un valor que no
es del tipo correcto (por ejemplo sumar enteros
y reales)
!鈥疌onversi贸n de tipos:
"鈥疘mpl铆cita (definida en el lenguaje)
"鈥疎xpl铆cita (casting o promoci贸n), forzada por el
programador
Programaci贸n DIT-UPM
22
Conversiones impl铆citas
!鈥5.0 / 4 -> 1.25
!鈥疎l 4 se convierte 鈥渁utom谩ticamente鈥 en 4.0 para
poder dividir
!鈥疞a promoci贸n tiene mayor prioridad
"鈥(float) 5 / 4 -> 1.25 (formato float)
"鈥疎l 5 se convierte por la promoci贸n forzada a 5.0, el 4
se convierte 鈥渁utom谩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