Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

366 views

Published on

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

Published in: Education
  • Be the first to comment

  • Be the first to like this

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

  1. 1. 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
  2. 2. Contenidos 1. Tipos de datos 2. Variables 3. Expresiones y asignación. 4. Constantes. Modificador final 5. Consideraciones sintácticas sobre el uso de identificadores 6. 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 operadores 10. Bloques de instrucciones 29/09/2011 IIP - Curso 2011/12 2
  3. 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 del mismo 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.
  4. 4. 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 clasificar como: – 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
  5. 5. 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
  6. 6. 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 se pueden realizar. • Java es un lenguaje fuertemente tipado, exige la declaración de todas las variables 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 los modificadores 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
  7. 7. 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 a su contenido en un determinado momento de la ejecución. • La ejecución de un programa se puede ver como una sucesión de cambios de estado que transforman un cierto estado inicial (datos) en un determinado estado final (solución). • El estado de un programa es el contenido de sus variables en un momento de la ejecución. • La traza de la ejecución de un programa es el seguimiento de la evolución de los valores de las variables en una ejecución. 29/09/2011 7IIP - Curso 2011/12
  8. 8. 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 valor resultante 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;
  9. 9. 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)
  10. 10. 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 se definen 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
  11. 11. 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étodos y clases. Deben comenzar por una letra y, a continuación, cualquier combinació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
  12. 12. • Es conveniente utilizar identificadores descriptivos de manera que la lectura del 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 de palabras comienza por una mayúscula. • Los identificadores de constantes se suelen poner en mayúsculas. Si el identificador consta de más de una palabra, se separan por el signo de subrayado. 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
  13. 13. • Las palabras reservadas tienen un significado preestablecido y no pueden usarse como identificadores. Tampoco pueden usarse como identificadores null, 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
  14. 14. 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 Java siempre tienen los mismos tamaños y capacidades, independientemente del entorno en el que se trabaje. IIP - Curso 2011/12
  15. 15. 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 127 short 16 bits -32768 32767 int 32 bits -2147483648 2147483647 long 64 bits -263 263-1 Complemento a 2 IIP - Curso 2011/12
  16. 16. 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 de notació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ígitos double 64 bits 4.9 x 10-324 1.8 x 10308 15 dígitos IEEE 754 IIP - Curso 2011/12
  17. 17. 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 el intervalo de representación. • La precisión es el número de dígitos decimales significativos con los que se puede representar y el intervalo es la diferencia entre el mayor y el menor número que se pueden representar. • La precisión de un número real depende del número de bits de su mantisa mientras 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
  18. 18. 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 byte short e2 = e1; // conversión de byte a short int e3 = e2; // conversión de short a int long e4 = e3; // conversión de int a long float e5 = e4; // conversión de long a float double e6 = e5; // conversión de float a double
  19. 19. 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 valores double sup = 20.0; // cota superior del rango de valores int cantInt = 2; // cantidad de intervalos double valor = 14.9; // valor real // Cálculo y escritura del número del intervalo double 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 intervalo double 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:
  20. 20. 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
  21. 21. 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 y ninguno es double. • El resultado es de tipo long si, al menos, uno de los operandos es long y ninguno es real (float o double). • El resultado es de tipo int si ninguno de los operandos es long y tampoco es real (float o double); incluso si ninguno de ellos es de tipo int (como por ejemplo, cuando en la expresión sólo aparecen operandos de tipo byte, short o char). 29/09/2011 21IIP - Curso 2011/12
  22. 22. Operadores aritméticos simples 29/09/2011 22IIP - Curso 2011/12 Expresión Resultado Expresión Resultado Enteros 3 + 5 8 2 * 6 12 7 / 2 3 7 % 2 1 Reales 3.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 Resultado 5 % 2 1 -5 % 2 -1 5 % -2 1 -5 % -2 -1 64 % 8 0 13 % 20 13 13 % 5 3 Reales Expresión Resultado 6.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
  23. 23. 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 ninguna excepció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 Resultado 5.0 / 0.0 Infinity -5.0 / 0.0 -Infinity 0.0 / 0.0 NaN
  24. 24. 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: 37 Segundos restantes: 12 Se visualiza en pantalla:
  25. 25. Operadores aritméticos de incremento y decremento en uno 29/09/2011 25IIP - Curso 2011/12 Instrucción a b int 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
  26. 26. 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 se obtiene un resultado incorrecto. • Para obtener el resultado correcto hay que tener en cuenta el rango de valores de 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
  27. 27. 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 obtiene Infinity 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
  28. 28. 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 entero positivo (pero sin la representación en complemento a dos). • Java utiliza el estándar de codificación de caracteres Unicode para asociar a cada carácter un código numérico. Mediante Unicode es posible representar millones de caracteres diferentes. • Cada símbolo Unicode se puede representar físicamente como diferentes secuencias de bits. Las representaciones más habituales son UTF-8, UTF-16 y UTF-32. Internamente, Java utiliza UTF-16. • Los 256 primeros caracteres del Unicode coinciden con los del estándar de 8 bits ASCII/ANSI (American Standard Code for Information Interchange / American National Standards Institute). 29/09/2011 28 Nombre Tamaño en bits Codificación char 16 bits Unicode http://www.unicode.org http://es.wikipedia.org/wiki/Unicode UTF-16 IIP - Curso 2011/12
  29. 29. 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 las minúsculas como las mayúsculas. – Un carácter espacio que pueda utilizarse como separador, así como un carácter de fin de línea y otros caracteres especiales. – La distancia entre cualquier letra mayúscula y su correspondiente minúscula es siempre la misma. • Comprueba que la siguiente tabla cumple estas características. 29/09/2011 29IIP - Curso 2011/12
  30. 30. 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 0 NUL 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 1 DLE 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 O 64 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 o 96 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
  31. 31. Tipo carácter • Los literales de tipo carácter se escriben entre comillas simples. • También pueden representarse utilizando directamente el código Unicode correspondiente: 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! u00A1Hellou0020worldu0021”); código Unicode hexadecimal de ! ¡Hola mundo! ¡Hello world! Se visualiza en pantalla: código Unicode hexadecimal de !
  32. 32. 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 utilizando números naturales, puede usarse la aritmética de enteros y la conversión forzada de tipos para operar con ellos. Letra: B 67 Letra: C Letra: n y N Se visualiza en pantalla:
  33. 33. 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 Secuencia de 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 "’
  34. 34. 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ón y a partir de otras expresiones de tipo lógico con operadores lógicos o booleanos. 29/09/2011 34 Nombre Tamaño en bits Valores Significado boolean 1 bit true false Verdadero Falso IIP - Curso 2011/12
  35. 35. 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;
  36. 36. Operadores lógicos • Realizan operaciones sobre datos de tipo boolean y tienen como resultado un valor de tipo boolean. • Los operadores lógicos y los cortocircuitados se diferencian en que los primeros evalúan sus dos argumentos, mientras que los segundos no continúan con la evaluación si se obtiene el resultado antes de evaluar toda 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 cortocircuitado Si el primer operando es false, el segundo ya no se evalúa y el resultado es false || OR cortocircuitado Si el primer operando es true, el segundo ya no se evalúa y el resultado es true IIP - Curso 2011/12 5<3 && 5<x se evalúa a false
  37. 37. Operadores lógicos 29/09/2011 37 x y x && y x & y x || y x | y x ^ 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
  38. 38. 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 alterarse con 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 = += -= *= /= %= + −
  39. 39. 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
  40. 40. 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) o internos (contenidos dentro de otros). 29/09/2011 40IIP - Curso 2011/12
  41. 41. 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ón double temperatura = 36.8; System.out.println(dia); // se escribe 10 System.out.println(mes); // se escribe 12 } System.out.println(dia); // se escribe 10 // temperatura no se puede referenciar aquí } IIP - Curso 2011/12
  42. 42. 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 nombres diferentes. – Una variable definida en un bloque es conocida desde su definición hasta el final del bloque. – Una variable definida en un bloque es conocida en todos los bloques internos a éste. – Las variables se deben definir al comienzo del bloque más interno en el que se utilizan. 29/09/2011 42IIP - Curso 2011/12

×