Está en la página 1de 5

24/01/12

Modificador  final  

Introducción  a  la   !   Una  variable  declarada  con  final  no  puede  volver  a  ser  reinicializada  

final int numero = 2;!


Programación  IV   numero = 3; //ERROR!

Curso  de  Programación  en  Java   final int numero;!

  numero = 2;!
 
numero = 3; // ERROR!
Luis  Guerra  
l.guerra@upm.es   !   Para  definir  constantes  
 
!   También  se  uIliza  con  clases,  variables  de  clase,  métodos,  ...  (se  verá  
Enero  2012  
más  adelante)  

Orden  de  ejecución  

Estructuras  de  Control  


!   Un  algoritmo  es  un  procedimiento  para  resolver  un  problema  
en  términos  de:  
!   acciones  a  ejecutar  
!   El  orden  en  que  las  acciones  van  a  ser  ejecutadas  

!   Hasta  ahora,  las  sentencias  de  un  programa  ejecutaban  una  


detrás  de  otra  
!   Ejecución  secuencial  

!   Existen  otro  Ipo  de  sentencias  que  permiten  al  programador  


especificar  que  la  siguiente  sentencia  a  ejecutar  no  sea  la  
siguiente  
!   Transferencia  de  control  

Transferencia  de  Control   Transferencia  de  Control  II  


!   El  modelo  más  básico  de  transferencia  de  control  que  uIlizaron  los  primeros   !   El  estudio  de  Bohm  y  Jacobini  demosotró  que  los  programas  
lenguajes  de  programación  fue  por  medio  de  la  instrucción  goto!
!   Fuente  de  muchos  problemas  en  del  desarrollo  de  SW   podían  ser  escritos  sin  ninguna  sentencia  goto  
!   Código  Spague-  
!   Sólo  con  tres  Ipos  de  estructuras  de  control:  
10  i  =  0  
!   Estructura  secuencial  
20  i  =  i  +  1  
!   Estructura  de  selección  
30  PRINT  i;  "  cuadrado=  ";  i  *  i   !   Estructura  de  repeIción    
40  IF  i  >=  10  THEN  GOTO  60  

50  GOTO  20  

60  PRINT  "Programa  Terminado."  

70  END  

Bohm,  C.,  and  G.  Jacopini,  “Flow  Diagrams,  Turing  Machines,  and  Languages  with  Only  Two    
FormaIon  Rules,”  Communica)ons  of  the  ACM,  Vol.  9,  No.  5,  May  1966,  pp.  336–371.    

1  
24/01/12  

Estructura  secuencial   Estructuras  de  selección  


!   Implementada  dentro  del  lenguaje  Java  
!   Java  dispone  de  tres  estructuras  de  selección:  
!   A  menos  que  se  le  especifique  lo  contrario,  se  ejecutan  las   ! if!
sentencias,  una  a  conInuación  de  la  otra,  en  el  orden  en  el  que   ! if/else!
fueron  escritas   ! switch!

If   Ejemplos  
if ( nota < 5 ) {!
!   Se  uIliza  para  seleccionar  entre  disIntas   !
líneas  de  acción  de  un  programa   System.out.println(“Suspenso”);!
!
}!
!
!   Realiza  la  acción  (o  grupo  de  acciones)  sólo   if ( condicion ) {! !
si  la  expresión  condicional  se  evalúa  como   ! !
sentencia1;! !
verdadera   ! if ( var1 == var2 ) {!
sentencia2;! !
!   expresión  condicional:  variables  booleanas,   ! // var3 sólo tiene visibilidad dentro del bloque!!
sentencias  con  operadores  relacionales   ...! !
! int var3 = 4;!
(>,<,...),  lógicos  (&&,  ||,  !)  y  de  igualdad   }! !
(==)   ! System.out.println(“Son iguales”);!
//El código se indenta! !
!
}!
!   Un  único  punto  de  entrada  y  de  salida   !
!
!   Si  hay  una  única  sentencia  se  pueden  omiIr  
las  llaves  
!   Las  variables  declaradas  en  el  grupo  de  
acciones  sólo  son  visibles  dentro  del  bloque    

if  else   Ejemplos  
if ( edad >= 18) {!
!   En  caso  de  no  cumplirse  la   if ( condicion ) {! !
! System.out.println(“Bienvenido”);!
condición  que  acompaña  al  if   sentencia1;! !
}!
se  ejecuta  el  bloque  del  else   ! !
sentencia2;! else {!
! !
...! System.out.println(“Acceso no permitido !
!   No  lleva  condición   ! !
}! a menores”);!
! !
else {! }!
!
sentencia3;!
...;!
}!

2  
24/01/12  

Comprobando  varios  casos   Comprobando  varios  casos  II  


!   Para  analizar  varios  cosas,  se  pueden  uIlizar  varios  if/else   ! Más  claro  si  se  escribe  así:  
!   cada  uno  dentro  del  otro  
if ( nota >= 9)!
if ( nota >= 9)! !
! System.out.println(“Sobresaliente”);!
System.out.println(“Sobresaliente”);! !
! else if ( nota >= 7 && nota < 9 )!
else! !
! System.out.println(“Notable”);!
if ( nota >= 7 && nota < 9 )! !
! else if (nota >= 5 && nota < 7 )!
System.out.println(“Notable”);! !
! System.out.println(“Aprobado”);!
else! !
! else!
if (nota >=5 && nota < 7 )! !
! System.out.println(“Suspenso”);!
System.out.println(“Aprobado”);! !
!
else!
!
Sysmte.out.println(“Suspenso”);!
!

switch   Ejemplos  
switch(nota) {!
!   Para  manejar  selecciones  múlIples   switch(condicion) {! case 10:!

!   Ofrece  un  esquema  más  cómodo   case valor:! case 9:!


System.out.println(“Sobresaliente”);!
que  el  anidamiento  de  if  else   sentencia1;!
break;!
!   La  condición  Iene  que  evaluarse    a   break;! case 8:!
un  int,  char,  short,  byte  o  enum  (se   case valor2:! case 7:!
verán  más  adelante)   System.out.println(“Notable”);!
sentencia2;! break;!
!   ¡Los  valores  sólo  pueden  ser  
constantes  del  mismo  Ipo!   default:! case 6:!
case 5:!
sentencia3;!
!   Si  no  se  añade  break  se  conInua   System.out.println(“Aprobado”);!
ejecutando  las  acciones  del  siguiente   }! break;!
caso   ! default:!
System.out.println(“Suspenso”);!
}!
!

Ventajas  e  Inconvenientes  del  


Ejemplos   switch  
final int dos = 2;!
!   Aporta  mayor  claridad  que  un  esquema  if  else    
int valor = 3;! !   sobre  todo  cuando  hay  varios  casos  
switch(valor) {!
!   Sin  embargo:  
case dos:!
!   No  permiten  cadenas  de  caracteres  
System.out.println(“es un !   O  Ipos  reales  u  otras  clases  
dos”);!
!   No  permite  definir  rangos  
break;! !   Hay  varios  lenguajes  que  ya  lo  permiten  
default:! !   Fuente  de  errores:  
System.out.println(“No es un ! Ej:  Olvidarse  de  poner  el  break  o  el  default  
dos”);!
}!
!

3  
24/01/12  

Estructuras  de  RepeIción   while  


!   Una  estructura  de  repeIción  permite  al  programador   !   Repite  un  conjunto  de  sentencias  
especificar  que  una  acción  se  Iene  que  repeIr  mientras  que  se  
cumpla  una  condición   !   Mientras  se  cumpla  la  condición  se   while ( condicion ) {!
!
ejecuta  el  bloque  de  sentencias   !
sentencia1;!
! Ej:  Mientras  haya  comida  en  el  plato  sigue  comiendo   sentencia2;!
!
!   Las  variables  definidas  dentro  del   ...!
!   Java  dispone  de  tres  estructuras  de  repeIción:   bloque  de  sentencias  sólo  se  puede  
!
}!
!
! while   uIlizar  dentro  del  bloque   //El código se indenta!
!
!   do/while   !
!   Las  variables  usadas  en  la  condición  
! for   Ienen  que  haber  sido  declaradas  
antes  de  que  se  evalúe  la  expresión  

!   Puede  no  ejecutarse  nunca  

Ejemplos   do/while  
int numero = 1; // Se declara antes!
!
while ( numero <= 10) {!
! !   Similar  al  while  salvo  porque  el  bloque  de  sentencias  se  ejecuta  
System.out.println(numero);! antes  de  evaluar  la  condición  
!
numero += 1; // ¿Que sucedería si no estuviese?!
! ! Siempre  se  ejecuta  una  vez  el  bloque  de  sentencias  
!
}!
!
!
while ( numero <= 20 ) {! do {!
!
int otronumero = numero * 2;!
! sentencia1;!
if ( otronumero < 30 ) {!
!
System.out.println(“otro numero < 20”);! sentencia2;!
!
}!
! } while (condicion);!
}!
!
! !
!
!
!

Ejemplos   for  
int numero = 1;!
do {!
!   Estructura  diseñada  para  facilitar  el  control  de  flujo  cuando  se  
System.out.println(numero);!
conoce  el  número  de  repeIciones  
numero++;!
} while (numero <= 10);! !   Consta  de  tres  partes:  
!
do {!
!   declaración  e  inicialización  de  variables  
System.out.println(numero);! !   expresión  booleana  (la  condición)  
} while (numero <= 10);! !   expresión  de  control  de  la  iteración  
!
int respuesta;!
do {! for ( inicialización; Condición; iteración ) {!
System.out.println(“Escriba un num positivo”);! sentencia1;!
Scanner sc = new Scanner(System.in);!
respuesta = sc.nextInt();! sentencia2;!
} while (respuesta < 0);! } !
!
!
!

4  
24/01/12  

Ejemplo   for:  Inicialización  


for (int i = 0; i<10; i++) { !
System.out.println("i vale " + i); !
!   Es  lo  primero  que  ocurre  en  el  bucle  
} ! !   Permite  declarar  e  inicializar  una,  ninguna  o  varias  variables  
!
for (int i = 0; i<10; i++) {}!
//Equivale a!
int i=0; !
!
for (; i<10; i++) {} // No se declaran variables  
int i=0;!
while (i<10) {! !   Si  se  declara  más  de  una  hay  que  separarlas  con  comas  
System.out.println(“i vale ” + i);!
i++;! for (int i=0, j=4; i<10; i++) {}  
}!
!   Las  variables  declaradas  aquí  sólo  pueden  ser  uIlizadas  dentro  del  
bucle  
for (int i = 0; i<10; i++) {}!

System.out.println(i); // ERROR i no es visible!

for:  Condición   for:  Iteración  


!   Como  otras  expresiones  condicionales  Iene  que  devolver  un   !   Se  ejecuta  siempre  después  del  bloque  de  sentencias  del  for  
valor  booleano   !   Salvo  que  exista  un  salida  forzada:  exit,  return,  break  (ya  se  verá)  

!   Sólo  puede  haber  una  expresión  booleana  pero  puede  ser  muy   !   Se  pueden  incluir  varias  sentencias  
compleja   !   separadas  por  comas  
for (int x = 0; ((((x < 10) && (y-- > 2)) || x == 3)); x++) {}!
!   Puede  incluir  cualquier  Ipo  de  sentencia  
for (int x = 0; (x > 5), (y < 2); x++) { } //ERROR! !   No  sólo  de  incremento  

  for (int x = 0; x<10; x++, System.out.println(x)){}  

Ejemplos  
for ( int i = 100; i >= 1; i-- ) {!

System.out.println(i);!

}!

for ( int i = 7; i <= 77; i += 7 ) {!

System.out.println(i);!

}!

int suma=0;!

for ( int i = 0; i < 10; i++, suma += i ) {} !

5  

También podría gustarte