introducción&ala...

5
24/01/12 1 Introducción a la Programación IV Curso de Programación en Java Luis Guerra [email protected] Enero 2012 Modificador final Una variable declarada con final no puede volver a ser reinicializada final int numero = 2; numero = 3; //ERROR final int numero; numero = 2; numero = 3; // ERROR Para definir constantes También se uIliza con clases, variables de clase, métodos, ... (se verá más adelante) Estructuras de Control Orden de ejecución 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 El modelo más básico de transferencia de control que uIlizaron los primeros lenguajes de programación fue por medio de la instrucción goto Fuente de muchos problemas en del desarrollo de SW Código Spague- 10 i = 0 20 i = i + 1 30 PRINT i; " cuadrado= "; i * i 40 IF i >= 10 THEN GOTO 60 50 GOTO 20 60 PRINT "Programa Terminado." 70 END Transferencia de Control II El estudio de Bohm y Jacobini demosotró que los programas podían ser escritos sin ninguna sentencia goto Sólo con tres Ipos de estructuras de control: Estructura secuencial Estructura de selección Estructura de repeIción 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.

Upload: lekhanh

Post on 07-Sep-2018

248 views

Category:

Documents


0 download

TRANSCRIPT

24/01/12  

1  

Introducción  a  la  Programación  IV  

Curso  de  Programación  en  Java      

Luis  Guerra  [email protected]  

 Enero  2012  

Modificador  final  

!   Una  variable  declarada  con  final  no  puede  volver  a  ser  reinicializada  

final int numero = 2;!

numero = 3; //ERROR!

final int numero;!

numero = 2;!

numero = 3; // ERROR!

!   Para  definir  constantes  

!   También  se  uIliza  con  clases,  variables  de  clase,  métodos,  ...  (se  verá  más  adelante)  

Estructuras  de  Control  

Orden  de  ejecución  

!   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  

!   El  modelo  más  básico  de  transferencia  de  control  que  uIlizaron  los  primeros  lenguajes  de  programación  fue  por  medio  de  la  instrucción  goto!!   Fuente  de  muchos  problemas  en  del  desarrollo  de  SW  !   Código  Spague-  

10  i  =  0  

20  i  =  i  +  1  

30  PRINT  i;  "  cuadrado=  ";  i  *  i  

40  IF  i  >=  10  THEN  GOTO  60  

50  GOTO  20  

60  PRINT  "Programa  Terminado."  

70  END  

Transferencia  de  Control  II  

!   El  estudio  de  Bohm  y  Jacobini  demosotró  que  los  programas  podían  ser  escritos  sin  ninguna  sentencia  goto  

!   Sólo  con  tres  Ipos  de  estructuras  de  control:  !   Estructura  secuencial  !   Estructura  de  selección  !   Estructura  de  repeIción    

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.    

24/01/12  

2  

Estructura  secuencial  

!   Implementada  dentro  del  lenguaje  Java  

!   A  menos  que  se  le  especifique  lo  contrario,  se  ejecutan  las  sentencias,  una  a  conInuación  de  la  otra,  en  el  orden  en  el  que  fueron  escritas  

Estructuras  de  selección  

!   Java  dispone  de  tres  estructuras  de  selección:  ! if!

! if/else!

! switch!

If  

!   Se  uIliza  para  seleccionar  entre  disIntas  líneas  de  acción  de  un  programa  

!   Realiza  la  acción  (o  grupo  de  acciones)  sólo  si  la  expresión  condicional  se  evalúa  como  verdadera  !   expresión  condicional:  variables  booleanas,  

sentencias  con  operadores  relacionales  (>,<,...),  lógicos  (&&,  ||,  !)  y  de  igualdad  (==)  

!   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 ( condicion ) {!! sentencia1;!! sentencia2;!! ...!!}!!//El código se indenta!

Ejemplos  if ( nota < 5 ) {! ! System.out.println(“Suspenso”);!!}!!!!!if ( var1 == var2 ) {! ! // var3 sólo tiene visibilidad dentro del bloque!! ! int var3 = 4;!! System.out.println(“Son iguales”);!!!}!!!

if  else  

!   En  caso  de  no  cumplirse  la  condición  que  acompaña  al  if  se  ejecuta  el  bloque  del  else  

!   No  lleva  condición  

if ( condicion ) {!! sentencia1;!! sentencia2;!! ...!!}!!else {!! sentencia3;! ...;!}!

Ejemplos  

if ( edad >= 18) {!! System.out.println(“Bienvenido”);!!}!!else {!! System.out.println(“Acceso no permitido !!a menores”);!!}!

24/01/12  

3  

Comprobando  varios  casos  

!   Para  analizar  varios  cosas,  se  pueden  uIlizar  varios  if/else  !   cada  uno  dentro  del  otro  

if ( nota >= 9)!! System.out.println(“Sobresaliente”);!!else!! if ( nota >= 7 && nota < 9 )!! System.out.println(“Notable”);! ! else! ! if (nota >=5 && nota < 7 )! ! System.out.println(“Aprobado”);! ! else! ! Sysmte.out.println(“Suspenso”);! !

Comprobando  varios  casos  II  

! Más  claro  si  se  escribe  así:  

if ( nota >= 9)!! System.out.println(“Sobresaliente”);!!else if ( nota >= 7 && nota < 9 )!! System.out.println(“Notable”);! !else if (nota >= 5 && nota < 7 )! ! System.out.println(“Aprobado”);! !else! ! System.out.println(“Suspenso”);! !

switch  

!   Para  manejar  selecciones  múlIples  

!   Ofrece  un  esquema  más  cómodo  que  el  anidamiento  de  if  else  

!   La  condición  Iene  que  evaluarse    a  un  int,  char,  short,  byte  o  enum  (se  verán  más  adelante)  

!   ¡Los  valores  sólo  pueden  ser  constantes  del  mismo  Ipo!  

!   Si  no  se  añade  break  se  conInua  ejecutando  las  acciones  del  siguiente  caso  

switch(condicion) {!

case valor:!

sentencia1;!

break;!

case valor2:!

sentencia2;!

default:!

sentencia3;!

}!

!

Ejemplos  switch(nota) {! case 10:! case 9:! System.out.println(“Sobresaliente”);! break;! case 8:! case 7:! System.out.println(“Notable”);! break;! case 6:! case 5:! System.out.println(“Aprobado”);! break;! default:! System.out.println(“Suspenso”);!}!!

Ejemplos  final int dos = 2;!

int valor = 3;!

switch(valor) {!

case dos:!

System.out.println(“es un dos”);!

break;!

default:!

System.out.println(“No es un dos”);!

}!

!

Ventajas  e  Inconvenientes  del  switch  

!   Aporta  mayor  claridad  que  un  esquema  if  else    !   sobre  todo  cuando  hay  varios  casos  

!   Sin  embargo:  !   No  permiten  cadenas  de  caracteres  

!   O  Ipos  reales  u  otras  clases  

!   No  permite  definir  rangos  !   Hay  varios  lenguajes  que  ya  lo  permiten  

!   Fuente  de  errores:  ! Ej:  Olvidarse  de  poner  el  break  o  el  default  

24/01/12  

4  

Estructuras  de  RepeIción  

!   Una  estructura  de  repeIción  permite  al  programador  especificar  que  una  acción  se  Iene  que  repeIr  mientras  que  se  cumpla  una  condición  ! Ej:  Mientras  haya  comida  en  el  plato  sigue  comiendo  

!   Java  dispone  de  tres  estructuras  de  repeIción:  ! while  !   do/while  ! for  

while  

!   Repite  un  conjunto  de  sentencias  

!   Mientras  se  cumpla  la  condición  se  ejecuta  el  bloque  de  sentencias  

!   Las  variables  definidas  dentro  del  bloque  de  sentencias  sólo  se  puede  uIlizar  dentro  del  bloque  

!   Las  variables  usadas  en  la  condición  Ienen  que  haber  sido  declaradas  antes  de  que  se  evalúe  la  expresión  

!   Puede  no  ejecutarse  nunca  

while ( condicion ) {!! sentencia1;!! sentencia2;!! ...!!}!!//El código se indenta!!!

Ejemplos  int numero = 1; // Se declara antes!!while ( numero <= 10) {!! System.out.println(numero);!! numero += 1; // ¿Que sucedería si no estuviese?!!!}!!!while ( numero <= 20 ) {!! int otronumero = numero * 2;!! if ( otronumero < 30 ) {! ! System.out.println(“otro numero < 20”);! ! }!!}!!!!!!

do/while  

!   Similar  al  while  salvo  porque  el  bloque  de  sentencias  se  ejecuta  antes  de  evaluar  la  condición  ! Siempre  se  ejecuta  una  vez  el  bloque  de  sentencias  

do {!

sentencia1;!

sentencia2;!

} while (condicion);!

!

Ejemplos  int numero = 1;!do {! System.out.println(numero);! numero++;!} while (numero <= 10);!!do {! System.out.println(numero);!} while (numero <= 10);!!int respuesta;!do {! System.out.println(“Escriba un num positivo”);! Scanner sc = new Scanner(System.in);! respuesta = sc.nextInt();!} while (respuesta < 0);!!!!

for  

!   Estructura  diseñada  para  facilitar  el  control  de  flujo  cuando  se  conoce  el  número  de  repeIciones  

!   Consta  de  tres  partes:  !   declaración  e  inicialización  de  variables  !   expresión  booleana  (la  condición)  !   expresión  de  control  de  la  iteración  

for ( inicialización; Condición; iteración ) {!

sentencia1;!

sentencia2;!

} !

24/01/12  

5  

Ejemplo  for (int i = 0; i<10; i++) { ! System.out.println("i vale " + i); !} !!//Equivale a!!int i=0;!while (i<10) {! System.out.println(“i vale ” + i);! i++;!}!

for:  Inicialización  

!   Es  lo  primero  que  ocurre  en  el  bucle  

!   Permite  declarar  e  inicializar  una,  ninguna  o  varias  variables  for (int i = 0; i<10; i++) {}!int i=0; !

for (; i<10; i++) {} // No se declaran variables  

!   Si  se  declara  más  de  una  hay  que  separarlas  con  comas  

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  

!   Como  otras  expresiones  condicionales  Iene  que  devolver  un  valor  booleano  

!   Sólo  puede  haber  una  expresión  booleana  pero  puede  ser  muy  compleja  

for (int x = 0; ((((x < 10) && (y-- > 2)) || x == 3)); x++) {}!

for (int x = 0; (x > 5), (y < 2); x++) { } //ERROR!

 

for:  Iteración  

!   Se  ejecuta  siempre  después  del  bloque  de  sentencias  del  for  !   Salvo  que  exista  un  salida  forzada:  exit,  return,  break  (ya  se  verá)  

!   Se  pueden  incluir  varias  sentencias  !   separadas  por  comas  

!   Puede  incluir  cualquier  Ipo  de  sentencia  !   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 ) {} !