Introducción
a
la
Programación
IV
Curso
de
Programación
en
Java
Luis
Guerra
[email protected]
Enero
2012
Estructuras
de
Control
24/01/12
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)
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
Transferencia
de
Control
II
! 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
! 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.
1
Estructura
secuencial
Estructuras
de
selección
! 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
! 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
2
24/01/12
Comprobando
varios
casos
Comprobando
varios
casos
II
! 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”);!
!
! 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
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”);!
}!
!
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”);!
}!
!
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
3
24/01/12
Estructuras
de
RepeIción
while
! 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
! 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
do/while
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”);!
! }!
! 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;!
} !
4
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
Comentarios de: Curso de Programación en Java - Introducción a la Programación IV (0)
No hay comentarios