710 likes | 823 Views
Modulo 4 Variables, expresiones y estructuras de control. Objetivos. Distinguir entre variables de instancias y variables locales. Describir como inicializar variables de instancia. Identificar y corregir el error de compilación: Possible reference before assignment.
E N D
Modulo 4 Variables, expresiones y estructuras de control Java. Modulo 4
Objetivos • Distinguir entre variables de instancias y variables locales. • Describir como inicializar variables de instancia. • Identificar y corregir el error de compilación: Possible reference before assignment. • Reconocer, describir y usar operadores de Java. • Distinguir entre asignaciones legales e ilegales de tipos primitivos. • Identificar expresiones booleanas y sus requerimientos en estructuras de control. • Reconocer la compatibilidad de asignación y los cast requeridos en tipos fundamentales. • Usar las construcciones if, switch, for, while y do . Así como las formas etiquetadas break y continue como estructuras de control en un programa. Java. Modulo 4
Variables de instancia • Los atributos de un objeto son llamadas variables de instancia. • Se declaran dentro de una clase y fuera de los métodos. • Se crean y destruyen con el objeto. • Instancia es sinónimo de objeto, o también, de ejemplar de una clase. Java. Modulo 4
Palabra reservada this • Palabra que hace referencia a los atributos, métodos y constructores de una clase, dentro de un método local o de un constructor de ella. • this permite distinguir una variable de instancia de una variable local de un método • this permite hacer referencia a un método o constructor dentro de otro método c constructor de la misma clase. • this permite pasar el objeto actual como un parámetro a otro método o constructor. Java. Módulo 3
Ejemplo de usos de la referencia this 1 public class Fecha { 2 private int dia = 1; 3 private int mes = 1; 4 private int año = 2000; 5 6 public Fecha(int dia, int mes, int año) { 7 this.dia = dia; 8 this.mes = mes; 9 this.año = año; 10 } 11 public Fecha (Fecha fecha) { 12 this.dia = fecha.dia; 13 this.mes = fecha.mes; 14 this.año = fecha.año; 15 } Java. Módulo 3
Ejemplo de usos de la referencia this 16 public Fecha agregaDias(int dias) { 17 Fecha nuevaFecha = new Fecha(this); 18 nuevaFecha.dia = nuevaFecha.dia + dias; 19 // Sin Implantar ... 20 return nuevaFecha; 21 } 22 public void print() { 23 System.out.println(“Fecha:"+dia+"-"+mes+"-"+año); 24 } 25 } 1 public class PruebaFecha { 2 public static void main(String[] args){ 3 Fecha fechaNacimiento = new Fecha(22, 7, 1980); 4 Fecha fechaSiguiente = fechaNacimiento.sumaDias(7); 5 fechaSiguiente.print(); 6 } 7 } Java. Módulo 3
Inicialización de variables de instancia Java. Modulo 4
Variables locales • Variables locales son la que se declaran dentro de un método. • Se crean cuando el método se ejecuta y se destruyen cuando el método termina • También son llamadas: automáticas (automatic), temporales (temporary) o de pila (stack) • Deben inicializarse antes de ser usadas o aparecen errores de compilación: Possiblereferencebeforeassignment. Java. Modulo 4
Ejemplo del alcance de variables publicclass Prueba{ publicstaticvoid main(String[ ] args){ Alcance alcance= new Alcance(); alcance.metodoA(); } } publicclass Alcance{ privateint i=1; publicvoid metodoA(){ int i=4, j=5; this.i=i+j; metodoB(7); } publicvoid metodoB(int i){ int j=8; this.i=i+j; } } Pila Heap i 1 [ alcance main Java. Modulo 4
Ejemplo de Alcance de Variables publicclass Prueba{ publicstaticvoid main(String[ ] args){ Alcance alcance= new Alcance(); alcance.metodoA(); } } publicclass Alcance{ privateint i=1; publicvoid metodoA(){ int i=4, j=5; this.i=i+j; metodoB(7); } publicvoid metodoB(int i){ int j=8; this.i=i+j; } } Pila Heap i 1 i 4 [ alcance main Java. Modulo 4
Ejemplo de Alcance de Variables publicclass Prueba{ publicstaticvoid main(String[ ] args){ Alcance alcance= new Alcance(); alcance.metodoA(); } } publicclass Alcance{ privateint i=1; publicvoid metodoA(){ int i=4, j=5; this.i=i+j; metodoB(7); } publicvoid metodoB(int i){ int j=8; this.i=i+j; } } Pila Heap i 1 j 5 i 4 [ alcance main Java. Modulo 4
Ejemplo de Alcance de Variables publicclass Prueba{ publicstaticvoid main(String[ ] args){ Alcance alcance= new Alcance(); alcance.metodoA(); } } publicclass Alcance{ privateint i=1; publicvoid metodoA(){ int i=4, j=5; this.i=i+j; metodoB(7); } publicvoid metodoB(int i){ int j=8; this.i=i+j; } } Pila Heap i this 1 metodoA j 5 i 4 [ alcance main Java. Modulo 4
Ejemplo de Alcance de Variables publicclass Prueba{ publicstaticvoid main(String[ ] args){ Alcance alcance= new Alcance(); alcance.metodoA(); } } publicclass Alcance{ privateint i=1; publicvoid metodoA(){ int i=4, j=5; this.i=i+j; metodoB(7); } publicvoid metodoB(int i){ int j=8; this.i=i+j; } } Pila Heap i this 9 metodoA j 5 i 4 [ alcance main Java. Modulo 4
Ejemplo de Alcance de Variables publicclass Prueba{ publicstaticvoid main(String[ ] args){ Alcance alcance= new Alcance(); alcance.metodoA(); } } publicclass Alcance{ privateint i=1; publicvoid metodoA(){ int i=4, j=5; this.i=i+j; metodoB(7); } publicvoid metodoB(int i){ int j=8; this.i=i+j; } } Pila Heap i i 7 this 9 metodoA j 5 i 4 [ alcance main Java. Modulo 4
Ejemplo de Alcance de Variables publicclass Prueba{ publicstaticvoid main(String[ ] args){ Alcance alcance= new Alcance(); alcance.metodoA(); } } publicclass Alcance{ privateint i=1; publicvoid metodoA(){ int i=4, j=5; this.i=i+j; metodoB(7); } publicvoid metodoB(int i){ int j=8; this.i=i+j; } } Pila Heap j 8 i i 7 this 9 metodoA j 5 i 4 [ alcance main Java. Modulo 4
Ejemplo de Alcance de Variables publicclass Prueba{ publicstaticvoid main(String[ ] args){ Alcance alcance= new Alcance(); alcance.metodoA(); } } publicclass Alcance{ privateint i=1; publicvoid metodoA(){ int i=4, j=5; this.i=i+j; metodoB(7); } publicvoid metodoB(int i){ int j=8; this.i=i+j; } } Pila Heap this metodoB j 8 i i 7 this 9 metodoA j 5 i 4 [ alcance main Java. Modulo 4
Ejemplo de Alcance de Variables publicclass Prueba{ publicstaticvoid main(String[ ] args){ Alcance alcance= new Alcance(); alcance.metodoA(); } } publicclass Alcance{ privateint i=1; publicvoid metodoA(){ int i=4, j=5; this.i=i+j; metodoB(7); } publicvoid metodoB(int i){ int j=8; this.i=i+j; } } Pila Heap this metodoB j 8 i i 7 this 15 metodoA j 5 i 4 [ alcance main Java. Modulo 4
Ejemplo de Alcance de Variables publicclass Prueba{ publicstaticvoid main(String[ ] args){ Alcance alcance= new Alcance(); alcance.metodoA(); } } publicclass Alcance{ privateint i=1; publicvoid metodoA(){ int i=4, j=5; this.i=i+j; metodoB(7); } publicvoid metodoB(int i){ int j=8; this.i=i+j; } } Pila Heap i this 15 metodoA j 5 i 4 [ alcance main Java. Modulo 4
Ejemplo de Alcance de Variables publicclass Prueba{ publicstaticvoid main(String[ ] args){ Alcance alcance= new Alcance(); alcance.metodoA(); } } publicclass Alcance{ privateint i=1; publicvoid metodoA(){ int i=4, j=5; this.i=i+j; metodoB(7); } publicvoid metodoB(int i){ int j=8; this.i=i+j; } } Pila Heap i 15 [ alcance main Java. Modulo 4
Ejemplo de Alcance de Variables publicclass Prueba{ publicstaticvoid main(String[ ] args){ Alcance alcance= new Alcance(); alcance.metodoA(); } } publicclass Alcance{ privateint i=1; publicvoid metodoA(){ int i=4, j=5; this.i=i+j; metodoB(7); } publicvoid metodoB(int i){ int j=8; this.i=i+j; } } Pila Heap Java. Modulo 4
Ajustar (Casting) • Ajustar (casting) es la operación para que un expresión se almacene en un área menor. • La asignación de un long a un int requieren de un ajuste (cast) explícito • Ejemplos: longvalorGrande = 99L; intvalorRecortado = valorGrande; // Incorrecto intvalorRecortado = (int)valorGrande; intvalorRecortado = 99L; // Incorrecto intvalorRecortado = (int) 99L; intvalorRecortado = 99; Java. Modulo 4
“Ampliación” (promotion) • Las variables o expresiones que se asignan, se amplían automáticamente al tamaño mayor que tenga la variable que recibe. • Una expresión es compatible con la asignación si el tipo de la variable que recibe es mayor o igual al tamaño (en bits) de su tipo de expresión. longvalorGrande = 6; // 6 es tipo int intvalorChico = 99L; // 99L es long double z = 12.414F; //12.414F es float, OK float z1 = 12.414; // 12.414 es double, ilegal Java. Modulo 4
Una expresión es una combinación de operandos y/u operadores que al evaluarse da como resultado un valor único. Ejemplos 1 ‘A’ 2+3 contador + 1 indice < 100 Expresiones Java. Modulo 4
Precedencia de operadores Java. Modulo 4
Las condicional y la iteración, usan expresiones lógicas que pueden incluir: Operadores Relacionales < <= > >= == != Operadores lógicos ! && & || | ^ Expresiones en Estructuras de Control
Se usan en expresiones de la forma: ExpresiónAoperadorExpresiónB temperatura> humedad B * B - 4.0 * A * C > 0.0 numero== 35 inicio!= ‘Q’ Operadoresrelacionales
int x, y ; x = 4; y = 6; EXPRESION VALOR x < y verdadero x + 2 < y falso x != y verdadero x + 3 >= y verdadero y == x falso y == x+2 verdadero Expresiones relacionales
Operadoreslógicos • Los operadoresboolean son • ! - NOT & - AND • | - OR ^ - XOR • Los operadores short-circuitsboolean son • && - AND || - OR • Ejemplo: • Fecha f; • if ((f != null) && (f.dia > 31)) { • // se hace algo con f • } Java. Modulo 4
EXP SIGNIFICA DESCRIPCION ! p NO p ! p es F si p es V ! p es V si p es F p && q p Y q p && q es V si ambas p y q son V. En otro caso es F. p || q p O q p || q es V si o p o q o o ambas son V. En otro caso es F. Expresioneslógicas
100 -13 27 grado numero hora ( grado >= 60 ) ( numero > 0 ) ( hora >= 0 && hora < 24 ) ( hora == 12 || hora == 0 ) ¿Cuáles el valor de cadaexpresión?
boolean joven, afiebrado ; double temperatura ; int edad edad = 20; temperatura = 40.0 ; joven = (edad < 18) ; // falso afiebrado = (temperatura > 36) ; // verdadero EXPRESIONVALOR joven && afiebrado falso joven || afiebrado verdadero ! joven verdadero ! afiebrado falso Expresioneslógicas
Operaciones con cadenas • El operador +: • Ejecuta la concatenación String • Produce una nueva String String tratamiento = “Dr.”; String nombre =“Pedro” + “ ” + =“Montes” String titulo = tratamiento + nombre; • Uno de los argumentos debe ser un objeto String. • Los objetos que no son cadena se convierten a objetos String automáticamente. Java. Modulo 4
Es el orden en el que la computadora ejecuta las instrucciones en un programa. ¿DE QUE MANERA SE REALIZA ? . . . Control de flujo Java. Modulo 4
Las siguientes son las estructuras básicas decontrol de Java: Secuencia Selección Iteración Métodos Estructuras de control de flujo Java. Modulo 4
Instrucción . . . Instrucción Instrucción La Secuencia es una serie de instrucciones que se ejecutan una después de otra. SECUENCIA Java. Modulo 4
verdadero Instrucción Statement Condición . . . Instrucción falso Si una condición es verdadera ejecuta una secuencia de instrucciones, si es falsa, ejecuta otra secuencia e instrucciones. CONDICIONAL(Selección) Java. Modulo 4
Condicional simple if if (expresión booleana){ instrucción o bloque; } verdadero falso expresión lógica instrucción A Java. Modulo 4
verdadero falso expresión lógica instrucción B instrucción A Condicional doble if else if (expresión booleana){ instrucción o bloque }else { instrucción o bloque; } Java. Modulo 4
Condicional anidada if else if ( expresión lógica ){ instruccióno bloque; } else if ( expresión lógica){ instruccióno bloque; } else if ( expresión lógica){ instruccióno bloque; } else { instruccióno bloque; } A lo mas se ejecutará una opción. Java. Modulo 4
Condicional anidada if else Ejemplo: int cuenta; cuenta = cuentaAsistentes(); // funcion definida // en otro archivo if ( cuenta< 0 ){ System.out.println(“\nError: cuenta es negativa.\n"); cuenta = 0; } else if (cuenta> MAXIMO ) System.out.println(“\nError: cuenta es excesiva.\n"); else System.out.println(“Asistieron ”+ count +“ personas hoy."); Si hay mas de una instrucción o comando las llaves no pueden ser omitidas. Java. Modulo 4
Condicional múltiple switch switch ( expresion-prueba ){ caseconstante-1: comandos; break; caseconstante-2: comandos; break; default: comandos; break; } expresion-prueba: expresión entera constante-n constante entera, o de carácter que es utilizada para aparearla con la expresión de prueba. Java. Modulo 4
Estructura de control switch Ejemplos switch ( modeloAuto ){ case DELUJO: agregarAireAcon(); agregarRadio(); agregarRuedas(); agregarMotor(); break; case ESTANDAR: agregarRadio(); agregarRuedas(); agregarMotor(); break; default: agregarRuedas(); agreagarMotor(); } switch ( modeloAuto ){ case DELUJO: agregarAireAcon(); agregarAlfombra(); case ESTANDAR: agregarRadio(); agregarDescongel(); default: agregarRuedas(); agregarMotor(); } Java. Modulo 4
Condicional anidada if else En la ausencia de llaves : un else se aparea con el if mas cercano precedente, siempre que no tenga un else apareado con el. Java. Modulo 4
Condicional anidada if else double promedio; promedio = 100.0; if ( promedio >= 60.0 ) if ( promedio < 70.0 ) System.out.println( “LETRERO IMPORTANTE ” ); else System.out.println( “\n SORPRESA \n” ); 100.0 promedio ¿Cuáles la salida en esteejemplo? ¿PORQUÉ?: El compilador ignora las sangrias y aparea el else con el segundo if. Java. Modulo 4
Instrucción falso . . . Condición verdadero La Iteración repite una secuencia de instrucciones mientras sea verdadera cierta condición. ITERACIÓN (repetición) Java. Modulo 4
ITERACIÓN (repetición) Sintaxis ciclo while while( exp_booleana ){ instrucción o bloque; } Ejemplo ciclo while int i = 0; while( i < 10 ){ System.out.println(“Aun no termina”); i++; } Java. Modulo 4
ITERACIÓN (repetición) Sintaxis ciclo for for( expr_ini; exp_prueba booleana; expr_incr ){ instrucción o bloque; } Ejemplo ciclo for for( int i=0; i< 10; i++ ){ System.out.println(“Aun no termina”); } Java. Modulo 4
ITERACIÓN (repetición) Sintaxis ciclo do/while do { instrucción o bloque; }while (expr_booleana); Ejemplo ciclo do/while int i=0; do{ System.out.println(“Aun no termina”); i++; }while ( i < 10); Java. Modulo 4
Seudocódigo y selección SIMPLE DOBLE MÚLTIPLE Java. Modulo 4
Seudocódigo e iteración Java. Modulo 4