introducción a la programación y la informática. tema 3

42
Tema 3. Variables y asignación. Tipos de datos elementales. Bloques Introducción a la Informática y la Programación (IIP) Curso 2011/12 Departamento de Sistemas Informáticos y Computación

Upload: andres-garcia-garcia

Post on 08-Jul-2015

94 views

Category:

Education


2 download

DESCRIPTION

Introduccion a la programación y la informática, Universitat Politècnica de València.

TRANSCRIPT

Page 1: Introducción a la programación y la informática. Tema 3

Tema 3. Variables y asignación. Tipos de datos elementales. Bloques

Introducción a la Informática y la Programación (IIP)Curso 2011/12

Departamento de Sistemas Informáticos y Computación

Page 2: Introducción a la programación y la informática. Tema 3

Contenidos1. Tipos de datos2. Variables3. Expresiones y asignación. 4. Constantes. Modificador final5. Consideraciones sintácticas sobre el uso de identificadores6. Tipos numéricos

Enteros Reales Compatibilidad y conversión de tipos Operadores aritméticos Desbordamiento

7. Tipo carácter 8. Tipo lógico

Operadores relacionales Operadores lógicos

9. Precedencia de operadores10. Bloques de instrucciones

29/09/2011 IIP - Curso 2011/12 2

Page 3: Introducción a la programación y la informática. Tema 3

Tipos de datos• Un dato es cualquier información dispuesta de manera adecuada para su

tratamiento por un ordenador.

• Un tipo de datos define:– un conjunto de valores y– el conjunto de operaciones permitidas sobre ellos.

• Los tipos de datos en Java se clasifican en:– Tipos elementales o primitivos: no se definen a partir de otros y su

representación y operaciones vienen dadas por el propio lenguaje.

– Tipos complejos o estructurados (referencia): agregación de datos delmismo o de distinto tipo.

• predefinidos• definidos por el programador

29/09/2011 3

byte, short, int, long, float, double, char, boolean

Scanner, String, etc.

IIP - Curso 2011/12

Circulo, Pizarra, etc.

Page 4: Introducción a la programación y la informática. Tema 3

Variables• Todos los datos que se manejan en la resolución de un problema mediante un

programa se representan mediante variables.

• Una variable se caracteriza por ser de un tipo de datos que determina:– el conjunto de valores que puede almacenar,– el conjunto de operaciones permitidas sobre ellos y– el tamaño de la zona de memoria que pueden ocupar.

• Según el uso que se vaya a hacer de la variable, éstas se pueden clasificarcomo:– Atributos o variables de instancia y de clase que se definen en una Clase-

Tipo de dato.– Variables locales que son las que se definen en el método main de una

Clase-Programa o en cualquier bloque de instrucciones o método.– Parámetros de un método.

29/09/2011 4IIP - Curso 2011/12

Page 5: Introducción a la programación y la informática. Tema 3

Variables

29/09/2011 IIP - Curso 2011/12 5

public class Circulo {

private double radio ;

private String color ;

private int centroX , centroY ;

...

public void setRadio(double nuevoRadio) { radio = nuevoRadio; }

}

public class PrimerPrograma {

public static void main (String[] args ) {

Pizarra miPizarra = new Pizarra("ESPACIO DIBUJO",300,300);

Circulo c1 = new Circulo(50,"amarillo",100,100);

...

}

}

variables de instancia

parámetro

parámetro

variables locales

Page 6: Introducción a la programación y la informática. Tema 3

Variables• Declaración de variable: descripción de sus características, definiendo su

identificador y tipo de datos que restringe sus valores y las operaciones que sepueden realizar.

• Java es un lenguaje fuertemente tipado, exige la declaración de todas lasvariables antes de su uso.

• Sintaxis:

• Ejemplos:

• Un atributo y una variable local se distinguen por el lugar donde se definen:clases o métodos. Sólo los atributos pueden ir precedidos por losmodificadores de visibilidad y ámbito.

29/09/2011 6

tipo nomvar1, nomvar2, … , nomvarn ;

int var1, var2, suma;char c; double d1, d2;

IIP - Curso 2011/12

Page 7: Introducción a la programación y la informática. Tema 3

Variables• El compilador asigna valores por defecto a los atributos pero no a las variables

locales (error de compilación).

• Las variables pueden cambiar de valor. Se denomina estado de una variable asu contenido en un determinado momento de la ejecución.

• La ejecución de un programa se puede ver como una sucesión de cambios deestado que transforman un cierto estado inicial (datos) en un determinadoestado final (solución).

• El estado de un programa es el contenido de sus variables en un momento dela ejecución.

• La traza de la ejecución de un programa es el seguimiento de la evolución delos valores de las variables en una ejecución.

29/09/2011 7IIP - Curso 2011/12

Page 8: Introducción a la programación y la informática. Tema 3

Expresiones y asignación• La asignación se utiliza para dar valores a las variables o para reemplazar los

valores que ya tienen por otros nuevos.

donde identificador y expresión deben ser de tipos compatibles.

• Una expresión es una sucesión (sintácticamente correcta) de valores,variables, operadores y llamadas a métodos que se evalúa a un único valor,siendo el tipo de la expresión el tipo de este valor.

• La operación de asignación evalúa la expresión y después guarda el valorresultante en la variable identificador.

• La propia asignación se evalúa a un resultado que puede ser o no utilizado.

29/09/2011 8

identificador = expresión;

IIP - Curso 2011/12

int cantidadInicial;cantidadInicial = 50;

int cantidadReal, cantidadInicial;cantidadReal = cantidadInicial = 50;

Page 9: Introducción a la programación y la informática. Tema 3

Expresiones y asignación• En el momento de su declaración, se puede asignar a las variables un valor

inicial, esto es, se pueden inicializar.

• El contenido de la variable se pierde cuando se le asigna uno nuevo.

29/09/2011 9

int var1, var2, suma = 5;char ch1, ch2 = ‘u’;double d1 = 2.0, d2 = 3.0 + d1;var1 = 15;suma = suma + 2;

IIP - Curso 2011/12

int x = 5, y = 9;int aux = x;x = y;y = aux;

(1)(2)(3)(4)

Page 10: Introducción a la programación y la informática. Tema 3

Constantes. Modificador final• Una constante es una variable inmutable: su valor no puede cambiar durante

la ejecución.

• Las constantes igual que las variables tienen un tipo de datos asignado y sedefinen igual que cuando se declara una variable y se inicializa su valor.

29/09/2011 10

final tipo identificador = Valor;

final int NUM_ALUMNOS = 25;

IIP - Curso 2011/12

Page 11: Introducción a la programación y la informática. Tema 3

Consideraciones sintácticas sobre el uso de identificadores

• Convenciones de codificación en Java:

• Los identificadores son nombres que el programador da a variables, métodosy clases. Deben comenzar por una letra y, a continuación, cualquiercombinación de letras, números, el carácter subrayado _ y el signo de dólar $.

• Java es sensible a las mayúsculas: distingue MAYÚSCULAS de minúsculas.

29/09/2011 11

Ejemplos válidos radio, MAX_VALOR, dato1, año, día, ∏

Ejemplos no válidos 5esfera, mi valor, una.variable

www.programacion.com/java/tutorial/convenciones/

IIP - Curso 2011/12

toString es distinto de tostring

Page 12: Introducción a la programación y la informática. Tema 3

• Es conveniente utilizar identificadores descriptivos de manera que la lecturadel código permita conocer su significado.

• Los identificadores de variables suelen ir en minúsculas. Si el identificador estáformado por varias palabras, la primera palabra va en minúsculas y el resto depalabras comienza por una mayúscula.

• Los identificadores de constantes se suelen poner en mayúsculas. Si elidentificador consta de más de una palabra, se separan por el signo desubrayado.

29/09/2011 12

suma, toString, cantidadInicial, cantidadReal

radioEsfera, volumenCubo

final double PI = 3.141592;final int MAX_ALUMNOS = 25;

IIP - Curso 2011/12

Consideraciones sintácticas sobre el uso de identificadores

Page 13: Introducción a la programación y la informática. Tema 3

• Las palabras reservadas tienen un significado preestablecido y no puedenusarse como identificadores. Tampoco pueden usarse como identificadoresnull, true y false.

29/09/2011 13

* No se utilizan

abstract continue for new switch

assert default goto* package synchronized

boolean do if private this

break double implements protected throw

byte else import public throws

case enum instanceof return transient

catch extends int short try

char final interface static void

class finally long strictfp volatile

const* float native super while

IIP - Curso 2011/12

Consideraciones sintácticas sobre el uso de identificadores

Page 14: Introducción a la programación y la informática. Tema 3

Tipos de datos primitivos en Java

Tipos de datos elementales Nombre

Tipos numéricos- números enteros- números reales (en coma flotante)

byte, short, int, long

float, double

Tipo carácter char

Tipo lógico boolean

29/09/2011 14

• A diferencia de lo que ocurre en otros lenguajes, los tipos básicos en Javasiempre tienen los mismos tamaños y capacidades, independientemente delentorno en el que se trabaje.

IIP - Curso 2011/12

Page 15: Introducción a la programación y la informática. Tema 3

Tipos numéricos enteros

• Por defecto los literales enteros son de tipo int.• Para forzar que un entero se interprete como un long se añade al final L o l.• Los literales enteros pueden expresarse en:

– decimal 193– octal 0301 (3*82 + 0*81 + 1*80 = 3*64 + 1 =193)– hexadecimal 0xC1 (C*161 + 1*160 = 12*16 + 1 = 193)

29/09/2011 15

Nombre Tamaño en bits

Valor mínimo̶ (2N-1)

Valor máximo+ (2N-1 - 1)

byte 8 bits -128 127short 16 bits -32768 32767int 32 bits -2147483648 2147483647long 64 bits -263 263-1

Complementoa 2

IIP - Curso 2011/12

Page 16: Introducción a la programación y la informática. Tema 3

Tipos numéricos reales

• Por defecto los literales reales son de tipo double.• Para forzar un tipo float se añade al final F o f.

• Los literales reales o en coma flotante pueden representarse en dos tipos denotación:– decimal -123.05 0.2243 0.00000000001– científica 23.4e2 -1.9E-18 1e-11

29/09/2011 16

Nombre Tamaño en bits

Valor mínimo Valor máximo Precisión

float 32 bits 1.4 x 10-45 3.4 x 1038 7 dígitosdouble 64 bits 4.9 x 10-324 1.8 x 10308 15 dígitos

IEEE 754

IIP - Curso 2011/12

Page 17: Introducción a la programación y la informática. Tema 3

Tipos numéricos reales• Los bits empleados para la representación de un valor real se dividen en dos

componentes: mantisa y exponente.Valor = (+|-) mantisa · 2exponente

• Los números reales se caracterizan por dos magnitudes: la precisión y elintervalo de representación.

• La precisión es el número de dígitos decimales significativos con los que sepuede representar y el intervalo es la diferencia entre el mayor y el menornúmero que se pueden representar.

• La precisión de un número real depende del número de bits de su mantisamientras que el intervalo depende del número de bits de su exponente.

29/09/2011 17IIP - Curso 2011/12

1 – 0.1 – 0.1 – 0.1 – 0.1 – 0.1 = 0.5000000000000001

1 + (– 0.1 – 0.1 – 0.1 – 0.1 – 0.1) = 0.5

1 – 0.9 = 0.09999999999999998

Page 18: Introducción a la programación y la informática. Tema 3

Compatibilidad y conversión de tipos• En la asignación, variable y expresión deben ser del mismo tipo de datos o de

tipos compatibles.

• Son conversiones de tipo implícitas o automáticas las siguientes:

29/09/2011 18

byte → short → int → long → float → double

char

IIP - Curso 2011/12

byte e1 = 10; // conversión del int 10 a byteshort e2 = e1; // conversión de byte a shortint e3 = e2; // conversión de short a intlong e4 = e3; // conversión de int a longfloat e5 = e4; // conversión de long a floatdouble e6 = e5; // conversión de float a double

Page 19: Introducción a la programación y la informática. Tema 3

Compatibilidad y conversión de tipos• La conversión de tipos explícita fuerza la conversión entre tipos: casting.

29/09/2011 19

(tipo) expresión

IIP - Curso 2011/12

double inf = 10.0; // cota inferior del rango de valoresdouble sup = 20.0; // cota superior del rango de valoresint cantInt = 2; // cantidad de intervalosdouble valor = 14.9; // valor real

// Cálculo y escritura del número del intervalodouble tamInt = (sup - inf)/cantInt;int numInt = (int)((valor - inf)/tamInt);System.out.print("Número del intervalo al que pertenece ");System.out.println(valor + " : "+numInt);

// Cálculo y escritura del intervalodouble limInfInt = inf + numInt*tamInt,

limSupInt = inf + (numInt+1)*tamInt;System.out.println("[" + limInfInt + "," + limSupInt + "[");

Número del intervalo al que pertenece 14.9 : 0[10.0,15.0[

Se visualiza en pantalla:

Page 20: Introducción a la programación y la informática. Tema 3

a++ ≡ a = a + 1 a+=b ≡ a = a + b

• ++ y -- pueden aparecer en notación prefija o sufija:

++a primero se incrementa el valor de la variable y luego se utiliza

a++ primero se utiliza la variable y luego se incrementa su valor

Operadores aritméticos

29/09/2011 20

Operador Operación Operador Operación+ Suma o signo += Suma y asignación- Resta o signo -= Resta y asignación* Multiplicación *= Multiplicación y asignación/ División /= División y asignación% Módulo %= Módulo y asignación++ Incremento en 1 -- Decremento en 1

IIP - Curso 2011/12

Page 21: Introducción a la programación y la informática. Tema 3

Operadores aritméticos• El tipo de una expresión con operadores aritméticos y operandos numéricos

depende de los tipos de los operandos involucrados.

• El resultado es de tipo double si, al menos, uno de los operandos es double.

• El resultado es de tipo float si, al menos, uno de los operandos es float yninguno es double.

• El resultado es de tipo long si, al menos, uno de los operandos es long yninguno es real (float o double).

• El resultado es de tipo int si ninguno de los operandos es long y tampoco esreal (float o double); incluso si ninguno de ellos es de tipo int (como porejemplo, cuando en la expresión sólo aparecen operandos de tipo byte, shorto char).

29/09/2011 21IIP - Curso 2011/12

Page 22: Introducción a la programación y la informática. Tema 3

Operadores aritméticos simples

29/09/2011 22IIP - Curso 2011/12

Expresión Resultado Expresión Resultado

Enteros3 + 5 8 2 * 6 12

7 / 2 3 7 % 2 1

Reales3.5 + 5.6 9.1 3.1 * 2.0 6.2

15.0 / 2.0 7.5 7.0 % 2.0 1.0

Enteros

Expresión Resultado5 % 2 1

-5 % 2 -1

5 % -2 1

-5 % -2 -1

64 % 8 0

13 % 20 13

13 % 5 3

Reales

Expresión Resultado6.5 % 2.5 1.5

-6.5 % 2.5 -1.5

6.5 % -2.5 1.5

-6.5 % -2.5 -1.5

7.5 % 2.5 0.0

5.66 % 20.0 5.66

60 % 4.2 1.1999999999999975

Page 23: Introducción a la programación y la informática. Tema 3

Operadores aritméticos simples• Si se dividen enteros, el resultado es el cociente entero.• Si se divide un número entero por cero se produce una excepción (un error en

tiempo de ejecución), terminando de forma brusca la ejecución del programa.

• Si se divide un número en coma flotante por cero no se genera ningunaexcepción, el resultado es Infinity, -Infinity o NaN.

29/09/2011 23

class ejem1 {

public static void main (String[] args) {int den = 0;

int res = 100/den;

}

}java ejem1

java.lang.ArithmeticException: / by zero

at ejem1.main(ejem1.java:4)

IIP - Curso 2011/12

Expresión Resultado5.0 / 0.0 Infinity

-5.0 / 0.0 -Infinity

0.0 / 0.0 NaN

Page 24: Introducción a la programación y la informática. Tema 3

Operadores aritméticos compuestos

29/09/2011 24IIP - Curso 2011/12

long segundos = 765432; // cantidad de segundos

long dias = segundos/(24*60*60);

segundos %= 24*60*60;

System.out.println("Días: " + dias);

System.out.println(" (Segundos restantes: " + segundos + ")");

long horas = segundos/(60*60);

segundos %= 60*60;

System.out.println("Horas: " + horas);

System.out.println(" (Segundos restantes: " + segundos + ")");

long minutos = segundos/60;

segundos %= 60;

System.out.println("Minutos: " + minutos);

System.out.println("Segundos restantes: " + segundos);

Días: 8(Segundos restantes: 74232)

Horas: 20(Segundos restantes: 2232)

Minutos: 37Segundos restantes: 12

Se visualiza en pantalla:

Page 25: Introducción a la programación y la informática. Tema 3

Operadores aritméticos de incremento y decremento en uno

29/09/2011 25IIP - Curso 2011/12

Instrucción a bint a = 0; 0

a++; 1

++a; 2

a--; 1

--a; 0

int b = a++; 1 0

b = ++a; 2 2

b = a--; 1 2

b = --a; 0 0

Page 26: Introducción a la programación y la informática. Tema 3

Desbordamiento• Realizar operaciones con números puede producir que el resultado exceda la

capacidad de representación del tipo. Se habla de desbordamiento.

• En la aritmética entera, cuando se sobrepasa el valor máximo representable seobtiene un resultado incorrecto.

• Para obtener el resultado correcto hay que tener en cuenta el rango de valoresde cada tipo de dato.

29/09/2011 26

byte 127 + 1 = -128

short 32767 + 1 = -32768

int 2147483647 + 1 = -2147483648

long 9223372036854775807 + 1 = -9223372036854775808

int 1000000 * 1000000 = -727379968

long 1000000 * 1000000 = 1000000000000

IIP - Curso 2011/12

Page 27: Introducción a la programación y la informática. Tema 3

Desbordamiento• En la aritmética real se producen desbordamientos hacia infinito (overflow) o

hacia cero (underflow).

• Cuando el resultado de una operación está fuera de rango, se obtieneInfinity o –Infinity.

• Los infinitos se propagan en la evaluación de expresiones.

29/09/2011 27

float 1e38f * 10 Infinity

double 1e308 * 10 Infinity

(5.0 / 0.0) + 166.386 Infinity

IIP - Curso 2011/12

Page 28: Introducción a la programación y la informática. Tema 3

Tipo carácter

• El tipo char permite representar valores consistentes en un único carácter(letras, números y caracteres especiales).

• Un literal de tipo carácter se representa internamente como un valor enteropositivo (pero sin la representación en complemento a dos).

• Java utiliza el estándar de codificación de caracteres Unicode para asociar acada carácter un código numérico. Mediante Unicode es posible representarmillones de caracteres diferentes.

• Cada símbolo Unicode se puede representar físicamente como diferentessecuencias de bits. Las representaciones más habituales son UTF-8, UTF-16 yUTF-32. Internamente, Java utiliza UTF-16.

• Los 256 primeros caracteres del Unicode coinciden con los del estándar de 8bits ASCII/ANSI (American Standard Code for Information Interchange /American National Standards Institute).

29/09/2011 28

Nombre Tamaño en bits Codificaciónchar 16 bits Unicode

http://www.unicode.org

http://es.wikipedia.org/wiki/Unicode

UTF-16

IIP - Curso 2011/12

Page 29: Introducción a la programación y la informática. Tema 3

Tipo carácter• Toda codificación de caracteres debe incluir:

– Códigos que se encuentren contiguos para representar los 10 dígitos,manteniendo el orden de su valor numérico.

– Códigos contiguos y en orden lexicográfico para representar tanto lasminúsculas como las mayúsculas.

– Un carácter espacio que pueda utilizarse como separador, así como uncarácter de fin de línea y otros caracteres especiales.

– La distancia entre cualquier letra mayúscula y su correspondienteminúscula es siempre la misma.

• Comprueba que la siguiente tabla cumple estas características.

29/09/2011 29IIP - Curso 2011/12

Page 30: Introducción a la programación y la informática. Tema 3

Tipo carácter

29/09/2011 IIP - Curso 2010/11 30

0 1 2 3 4 5 6 7 8 9 A B C D E F

0NUL SOH STX ETX EOT ENO ACK BEL BS TAB LF VT FF CR SO SI

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

1DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US

16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

2 ! " # $ % & ' ( ) * + , - . /32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47

3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

4 @ A B C D E F G H I J K L M N O64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79

5 P Q R S T U V W X Y Z [ \ ] ^ _80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95

6 ` a b c d e f g h i j k l m n o96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111

7 p q r s t u v w x y z { | } ~ DEL

112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127

Tabla ASCII (7 bits) ‘A’ fila 4 columna 1 -> 41 hexadecimal -> 65 decimal

Page 31: Introducción a la programación y la informática. Tema 3

Tipo carácter• Los literales de tipo carácter se escriben entre comillas simples.

• También pueden representarse utilizando directamente el código Unicodecorrespondiente: \ucódigo de 4 caracteres en hexadecimal

29/09/2011 31IIP - Curso 2011/12

char aMayuscula=‘A’, zMinuscula =‘z’,

interrogacion = ‘?’, digito0 = ‘0’,

espacioEnBlanco = ‘ ’;

System.out.println(“¡Hola mundo! \u00A1Hello\u0020world\u0021”);

código Unicodehexadecimal de !

¡Hola mundo! ¡Hello world!

Se visualiza en pantalla: código Unicodehexadecimal de !

Page 32: Introducción a la programación y la informática. Tema 3

Tipo carácter

char ch1 = 'A',char letraB = (char)((int)ch1 + 1);System.out.println("Letra: " + letraB);

char letraC = 'B' + 1;System.out.println(((int)letraC) + " Letra: " + letraC);

char letraN = '\u006E';letraN += 'A' - 'a';System.out.println("Letra: " + '\u006E' + " y " + letraN);

29/09/2011 32IIP - Curso 2011/12

• Además, como los literales y variables de este tipo se codifican utilizandonúmeros naturales, puede usarse la aritmética de enteros y la conversiónforzada de tipos para operar con ellos.

Letra: B67 Letra: CLetra: n y N

Se visualiza en pantalla:

Page 33: Introducción a la programación y la informática. Tema 3

Tipo carácter• Para representar caracteres de control que no son visibles pero tienen un

efecto especial, se usan secuencias de escape:

29/09/2011 33

Secuenciade escape Descripción

\t Tabulador

\n Avance de línea (new line)

\r Retorno de carro (carriage return)

\b Retroceso (backspace)

\’ Comillas simples

\” Comillas dobles

\\ Barra invertida

IIP - Curso 2011/12

El resultado de la expresión "\"\\" + ‘\’’

es la cadena formada por los tres caracteres "\’

Page 34: Introducción a la programación y la informática. Tema 3

Tipo lógico

• El tipo boolean se utiliza para manipular valores lógicos.• Sólo existen dos literales lógicos: true y false.• Una expresión lógica es cualquier expresión que al ser evaluada tiene uno

de los dos valores true o false.• Las expresiones lógicas o de tipo boolean se construyen a partir de

expresiones de tipo básico con operadores relacionales o de comparacióny a partir de otras expresiones de tipo lógico con operadores lógicos obooleanos.

29/09/2011 34

Nombre Tamaño en bits

Valores Significado

boolean 1 bittrue

false

VerdaderoFalso

IIP - Curso 2011/12

Page 35: Introducción a la programación y la informática. Tema 3

Operadores relacionales

• El resultado siempre es un valor de tipo boolean.• Con operandos de tipo boolean sólo pueden emplearse == y !=.

29/09/2011 35

Operador Operación

== Igual

!= Distinto

> Mayor que

>= Mayor o igual que

< Menor que

<= Menor o igual que

IIP - Curso 2011/12

int x = 5;boolean b1 = 6 == x,

b2 = x <= 7,b3 = (4 + x) > 10,b4 = 'a' < 'b',b5 = true == false;

b2 = b3 = 5.5 != 6.3;

Page 36: Introducción a la programación y la informática. Tema 3

Operadores lógicos

• Realizan operaciones sobre datos de tipo boolean y tienen como resultadoun valor de tipo boolean.

• Los operadores lógicos y los cortocircuitados se diferencian en que losprimeros evalúan sus dos argumentos, mientras que los segundos nocontinúan con la evaluación si se obtiene el resultado antes de evaluartoda la expresión.

29/09/2011 36

Operador Operación Significado

! NOT negación lógica

& AND conjunción o `y´ lógico

| OR disyunción u `o´ lógico

^ XOR `o´ exclusivo

&&AND

cortocircuitadoSi el primer operando es false, el segundo ya nose evalúa y el resultado es false

||OR

cortocircuitadoSi el primer operando es true, el segundo ya nose evalúa y el resultado es true

IIP - Curso 2011/12

5<3 && 5<x se evalúa a false

Page 37: Introducción a la programación y la informática. Tema 3

Operadores lógicos

29/09/2011 37

x yx && y

x & y

x || y

x | yx ^ y !x

false false false false false true

false true false true true true

true false false true true false

true true true true false false

• Tablas de verdad

(valor>=15) && (valor<=20) // true si valor en [15,20]

(valor>15) || (valor==15) // true si valor>=15

(x%2 != 1) && (x>=0 && x<5 || x>=10 && x<=20)// true si x es par y está en el rango [0,5[

// o en el rango [10,20]

IIP - Curso 2011/12

Page 38: Introducción a la programación y la informática. Tema 3

Precedencia de operadores• Si en una expresión aparecen operaciones del mismo grupo, se evalúan con

asociatividad por la izquierda (de izquierda a derecha). La precedencia puede alterarsecon el uso habitual de los paréntesis.

29/09/2011 IIP - Curso 2011/12 38

Grupo Clasificación Operadores

0 Paréntesis ( )

1 Operadores unarios posfijos (parámetros) expr++ expr--

2 Operadores unarios prefijos ++expr --expr +expr -expr !

3 Creación o conversión new (tipo)expr

4 Multiplicación * / %

5 Suma + -

6 Relacionales > >= < <=

7 Igualdad == !=

8 Conjunción lógica &

9 Disyunción exclusiva ^

10 Disyunción lógica |

11 Conjunción cortocircuitada &&

12 Disyunción cortocircuitada ||

13 Operador ternario ?:

14 Asignación = += -= *= /= %=

+

Page 39: Introducción a la programación y la informática. Tema 3

Precedencia de operadores• Efecto de la asociatividad por la izquierda, la precedencia y el uso de

paréntesis.

29/09/2011 IIP - Curso 2010/11 39

5.4<36%30 || 3*4-6<7 && 32>='a'; // se evalúa a true

(5.4<36%30 || 3*4-6<7) && 32>='a'; // se evalúa a false

Page 40: Introducción a la programación y la informática. Tema 3

Bloques de instrucciones• El lenguaje Java es un lenguaje orientado a bloques.• Las instrucciones de un programa aparecen de forma consecutiva. Se trata de

la composición secuencial.• Las instrucciones se pueden agrupar, constituyendo un bloque.• Un bloque es una secuencia de instrucciones comprendida entre llaves, { y }.

{

int i=5;

System.out.println(“i vale: “+i);

}

• Pueden anidarse unos dentro de otros: bloques externos (contienen a otros) ointernos (contenidos dentro de otros).

29/09/2011 40IIP - Curso 2011/12

Page 41: Introducción a la programación y la informática. Tema 3

Bloques de instrucciones• Declaraciones efectuadas al comienzo de un bloque tienen sólo validez en el

interior del mismo (incluso en bloques internos).• En distintos bloques anidados no se pueden definir identificadores con el

mismo nombre (error de compilación).

29/09/2011 41

{int dia=10, mes=12, anyo=2000;{// int dia=30; --> si se descomenta, error de compilacióndouble temperatura = 36.8;System.out.println(dia); // se escribe 10System.out.println(mes); // se escribe 12}System.out.println(dia); // se escribe 10

// temperatura no se puede referenciar aquí

}

IIP - Curso 2011/12

Page 42: Introducción a la programación y la informática. Tema 3

Bloques de instrucciones• El ámbito de una variable es la parte del programa en la que es conocida y

puede ser utilizada.• Una variable es local en el bloque en el que se define y global para los bloques

internos a éste.• Reglas relacionadas con el concepto de bloque y el uso de variables:

– Todas las variables definidas en el mismo bloque deben tener nombresdiferentes.

– Una variable definida en un bloque es conocida desde su definición hastael final del bloque.

– Una variable definida en un bloque es conocida en todos los bloquesinternos a éste.

– Las variables se deben definir al comienzo del bloque más interno en elque se utilizan.

29/09/2011 42IIP - Curso 2011/12