Вы находитесь на странице: 1из 49

Grado en Ingeniería Informática

Asignatura: PROGRAMACIÓN I

Elementos del lenguaje Java.


Expresiones

Clara Benac Earle

DLSIIS - E.T.S. de Ingenieros Informáticos


Universidad Politécnica de Madrid

Curso 2016/2017
Introducción
Cualquier lenguaje de programación está constituido
por un conjunto de caracteres, unas reglas ortográficas
para construir palabras a partir de los caracteres, unas
reglas sintácticas para construir frases a partir de las
palabras y unas reglas semánticas para dotar al
programa escrito en el lenguaje de un significado.
Es decir, los lenguajes de programación, al igual que
otros lenguajes, constan de:
Léxico
Sintaxis
Semántica
Léxico de Java

Palabras reservadas
Delimitadores o separadores
Literales
Operadores
Identificadores
Ejemplo

class AreaCirculo{

static double areaCirculo(double radio){


return radio * radio * 3.1416;
}
{ } ( ) // /* */
public static void main (String [] args){
System.out.println(“area” +
areaCirculo(2.5));

}
}
Palabras reservadas

Definidas en el lenguaje. Sólo se pueden usar con


su significado predefinido, es decir, no se pueden
modificar
Ejemplos en Java: class, public, static, void,
int, double, char, etc.
La lista completa
https://docs.oracle.com/javase/tutorial/java/nutsa
ndbolts/_keywords.html
Ejemplo

class AreaCirculo{

static double areaCirculo(double radio){


return radio * radio * 3.1416;
}
{ } ( ) // /* */
public static void main (String [] args){
System.out.println(“area” +
areaCirculo(2.5));

}
}
Delimitadores o separadores

Símbolos que sirven para separar fragmentos de


código
Ejemplos en Java
{ } ( ) // /* */

El espacio en blanco también es un separador en


Java
Ejemplos

class AreaCirculo {

static double areaCirculo(double radio){


return radio * radio * 3.1416;
}
{ } ( ) // /* */
public static void main (String [] args){
System.out.println(“area” +
areaCirculo(2.5));

}
}
Ejemplos

class AreaCirculo {

//Esto es un comentario de una línea

/* Esto es un comentario que ocupa


} ( ) // /* */
{ líneas
varias
*/

static double areaCirculo(double radio){


return radio * radio * 3.1416;
}

public static void main (String [] args){


System.out.println(“area” +
areaCirculo(2.5));

}
Literales

Un literal es la representación en código de un


valor concreto
Ejemplos en Java: 23, -15, 456770, 'a', true,
false, null
Ejemplo

class AreaCirculo{

static double areaCirculo(double radio){


return radio * radio* 3.1416;
}
{ } ( ) // /* */
public static void main (String [] args){
System.out.println(“area” +
areaCirculo(2.5));

}
}
literal de tipo String
Operadores

Símbolos que sirven para realizar operaciones


Ejemplos de operadores aritméticos en Java
SÍMBOLO SIGNIFICADO EJEMPLO
% Resto división 4%2
/ Cociente 4/5
división
* Producto 3*5
+ Suma 3+5
- Resta 4-2
Operadores relacionales

Sirven para comparar valores


Ejemplos de operadores relacionales en Java
SÍMBOLO SIGNIFICADO EJEMPLOS
== Igual 2==2, 2==3
!= Distinto 2!=2, 2!=3

> Mayor que 2>2, 2>0


>= Mayor o igual que 2>=2, 2>=4,
< Menor que 2<2, 2<0, 2<8
<= Menor o igual que 2<=4, 2<=2, -1<=0
Operadores condicionales o lógicos
Sirven para comparar valores lógicos
Ejemplos de operadores lógicos en Java
SÍMBOLO SIGNIFICADO EJEMPLOS
! negado !true, !false
&& And lógico true && true,
true&& false
|| Or lógico m true || true
true|| false

Lista de todos los operadores de Java:


https://docs.oracle.com/javase/tutorial/java/nutsandb
olts/opsummary.html
Ejemplo
Indicar qué operadores hay en este código

class AreaCirculo{

static double
{ } areaCirculo(double
( ) // /* */ radio){
return radio * radio * 3.1416;
}

public static void main (String [] args){


System.out.println(“area” +
areaCirculo(2.5));

}
}
Ejemplo

class AreaCirculo{

static double areaCirculo(double radio){


return radio * radio * 3.1416;
}
{ } ( ) // /* */
public static void main (String [] args){
System.out.println(“area” +
areaCirculo(2.5));

}
}
Identificadores
Son las palabras del lenguaje
Dos tipos:
Predefinidos en el lenguaje
ej. en Java main
Definidos por el programador
ej. n
En Java los identificadores tiene que:
Empezar por letra, $ o _
Después del primer carácter pueden aparecer letras, dígitos, $ o _
Ejemplo
Indicar qué identificadores hay en este código

class AreaCirculo{

static double
{ } areaCirculo(double
( ) // /* */ radio){
return radio * radio * 3.1416;
}

public static void main (String [] args){


System.out.println(“area” +
areaCirculo(2.5));

}
}
Ejemplo

class AreaCirculo{

static double areaCirculo(double radio){


return radio * radio * 3.1416;
}
{ } ( ) // /* */
public static void main (String [] args){
System.out.println(“area” +
areaCirculo(2.5));

}
}
Tipos de Datos

Un programa es un conjunto de operaciones que


se realizan sobre unos datos
Programa Suma, resta, ordena, etc...

Números, listas de palabras...

El programa, las operaciones y los datos se


guardan en memoria
Tipos de Datos
En los lenguajes de programación se definen los tipos de
datos que se pueden usar
ej. enteros, reales, caracteres, lógicos, listas de palabras...
Un tipo de datos impone unas restricciones sobre la
representación de un dato, qué valores puede tomar y qué
operaciones se pueden realizar
ej. ¿tiene sentido querer sumar listas de palabras?
Los valores que puede tomar un tipo de datos depende del
espacio de memoria que se reserve para almacenar un dato de
ese tipo
ej. en Java para almacenar un número entero de tipo int se
usan 4 bytes
Tipos de Datos

En los lenguajes de programación de alto nivel se


suele diferenciar entre
Tipos básicos
ej. números enteros, reales,
Tipos estructurados
ej. una colección de números enteros
Tipos en Java

Java es un lenguaje fuertemente tipado


En Java se diferencian dos clases de tipos:
Tipos Básicos o Primitivos
Referencias
Tipos primitivos en Java

Tipo de dato Representación Tamaño (Bytes) Rango de Valores

byte Numérico Entero con signo 1 -128 a 127

short Numérico Entero con signo 2 -32768 a 32767

int Numérico Entero con signo 4 -2147483648 a 2147483647

long Numérico Entero con signo 8 -9223372036854775808 a 9223372036854775807

Numérico en Coma flotante de


float precisión simple Norma IEEE 4 ± 3.4x10-38 a ± 3.4x1038
754

Numérico en Coma flotante de


double precisión doble Norma IEEE 8 ± 1.8x10-308 a ± 1.8x10308
754

char Carácter Unicode 2 \u0000 a \uFFFF


boolean Dato lógico 0 true ó false
ejemplos

int 27. -3, 8, 245554


short 27, -3, 23453
long -34567675, 2
byte 34
float 2.5, -2.6
double 2.5, -2.6
char 'a', 'b','3','\u0041','\u0042',\n'
boolean true, false
Conversión de tipos primitivos
Para algunos tipos, un valor de un tipo se puede convertir a un
valor de otro tipo
Ej. en Java el entero 0 se puede convertir en el real 0.0
En algunos casos se pierde precisión
Ej, si queremos convertir el valor 3.5 en un valor entero
Algunos valores de un tipo no se pueden convertir a valores de
otro tipo
En Java un valor booleano (true, false) no se puede
convertir a otro tipo
Conversión automática de tipos
primitivos
Cuando se convierte de un valor de menor precisión a
uno de mayor precisión la conversión es automática
Operaciones donde hay conversión automática de tipos
ej. 2+3.5 → 5.5
ej. 2+'a' → 99
Nota: al convertir char -> int se usa el código ascii
del char, por ejemplo, el código ascii de 'a' es 97
Ejercicios
¿Qué resultado darán las siguientes operaciones?
'b' - 'a'
'a' + 'b'
'a' + 3.5
true < true

Nota: comprobad el resultado usando el panel


interactivo de DrJava
Referencias

Una referencia es una posición de la memoria


dinámica del ordenador donde se almacenan
datos en tiempo de ejecución

Memoria dinámica
345 Datos

567 Datos
Literales de tipo String en Java

Un literal de tipo String es una secuencia de


caracteres entre comillas dobles
ej. “New York”, “R2D2”, “pepe@gmail.com”
Los string son de tipo referencia
345 “New York”

567 “R2D2”
Variables
Una variable es un elemento
de los lenguajes de
identificador = num
programación que sirve para tipo = int
almacenar un dato en la valor = 8
memoria dinámica en tiempo
de ejecución
En Java una variable tiene identificador = log
asociado: tipo = boolean
valor = true
Un identificador (ej. num)
Un tipo (ej. int)
un valor (ej. 8)
Declaración de variables
En Java hay que declarar las variables en el programa para
poder usarlas en el mismo
La sintaxis para declarar variables es:
<Tipo> <identificador>;
En Java los identificadores de variables empiezan con letra
minúscula
Ejemplos:
Nota: El ; no hace falta
int numero; ponerlo en el panel
interactivo de DrJava
char carácter;
String nombre;
Declaración de variables

Se pueden declarar varias variables del mismo


tipo a la vez
<Tipo> <identificador1>,<identificador2>...;
Ejemplos:
int numero1, numero2;
String nombre, apellidos, dni;
Inicialización de variables

Por defecto, al declarar las variables éstas


contienen un valor inicial
int numero; (numero contiene el valor 0)
double elemento; (elemento contiene el
valor 0.0)
Para modificar el valor de una variable hay
que usar el operador de asignación
Asignación de variables
El operador de asignación = asocia un valor a una
variable. El valor tiene que ser del mismo tipo que el de la
variable
int numero;
numero = 8;

Al ejecutarse la primera instrucción se reserva en la


memoria dinámica un espacio donde se guarda el
identificador de la variable, el tipo y el valor por defecto (0)
Al ejecutarse la segunda instrucción el valor de numero
pasa a ser 8
Asignación de variables

Las dos intrucciones anteriores se pueden


escribir como una sola instrucción
int numero =
8;

Al ejecutarse la instrucción se reserva en la


memoria dinámica un espacio donde se
guarda el identificador de la variable, el tipo y
el valor 8
Ejercicios
Definir una variable de tipo float y asignarle un
valor
Definir una variable de tipo char y asignarle un
valor
Definir tres variables de tipo boolean y asignarles
los valores que queramos
Definir una variable de tipo int con identificador
num, asignarle el valor 5, después asignarle el
valor 8, ¿qué valor tiene ahora num?
Valor de una variable
Cada vez que se asigna un valor nuevo a una variable se actualiza el
valor de ésta

int numero =
8;
numero = 5;
numero = 3;
Al acabar de ejecutarse la primera instrucción el valor de numero es 8
Al acabar de ejecutarse la segunda instrucción el valor de numero es 5
Al acabar de ejecutarse la tercera instrucción el valor de numero es 3
El valor de una variable puede ser diferente dependiendo de en qué punto
de la ejecución esté el programa
Valor de una variable
int num = 8;
num = 5;
num = 3;

id = num id = num id = num


tipo = int tipo = int tipo = int
valor = 8 valor = 5 valor = 3
Estado de un programa

El estado de un programa en un
momento dado de la ejecución es el
valor que tienen las variables en ese
instante
Operaciones con variables

Los operadores aritméticos, relacionales, etc.


que hemos visto para literales en Java se
pueden usar también para hacer operaciones
con variables
int numero = 8;
numero + 2;
numero * 3;
numero > 24;
boolean logico1 =
true;
boolean logico2 =
false;
logico1 && logico2;
String hola =
“hola”;
Expresiones

Una expresión es un fragmento de código que


al evaluarse devuelve un valor
ej. las operaciones aritméticas son
expresiones (2 + 3)
Definición de Expresiones

Los literales y las variables son expresiones


Sean e1 y e2 dos expresiones, sea o un
operador binario, e1 o e2 es una expresión
ej. (2+3) * (5+3)
Si e es una expresión y o un operador monario,
entonces oe es una expresión
ej. -(-3)
Si i es un identificador y e una expresión, i = e es
una expresión
Ejemplos de Expresiones

int precio, descuento;


precio = 1500;
descuento = precio * 0.3;
int precio_final = precio – descuento;

int year;
year = 2014;
year % 4 == 0 && year % 100 != 0 || year % 400 == 0;//dice si el
año es bisiesto

Nota: la declaración de variables (ej: int precio, descuento;) no es


una expresión porque no evalua a un valor
Precedencia de operadores

Al escribir expresiones hay que tener en cuenta


el orden de precedencia de los operadores
No da el mismo resultado 2+3*5 que (2+3)*5
Orden de precedencia en Java
http://introcs.cs.princeton.edu/java/11precedence/
Pág. 35 de “Java Precisely”, Peter Sestoft, The MIT
Press, 2005
Ejemplos de precedencia

int x, y, z;
x = y = z = 6 ; //asociatividad de derecha a
izquierda
14 * 3 / 10; //asociatividad de izquierda a derecha

int year = 2016;


year % 4 == 0 && year % 100 != 0 || year % 400 ==
0;
Evaluación en cortocircuito
Los operadores condicionales (lógicos) de Java
evalúan en cortocircuito, lo que quiere decir que,
sea e1 y e2 expresiones y o un operador
condicional binario
En la operación e1 && e2 si e1 evalúa a false
se devuelve el valor false sin evaluar e2
En la operación e1 || e2 si e1 evalúa a true se
devuelve true sin evaluar e2
Ejercicios

Escribir expresiones, cuando se pueda, para


los ejercicios que se han visto en la UE01
Constantes

La mayoría de los lenguajes de programación


permiten definir valores constantes, es decir,
valores que no varían durante la ejecución de
un programa
La sintaxis en Java para definir constantes es:
static final <Tipo> <identificador> = <expresion>

static final double PI =


3.1416

Nota: DrJava no permite el


uso de la palabra static en el
panel interactivo

Вам также может понравиться