Download Falso

Document related concepts
no text concepts found
Transcript
Estructuras de control
Operadores lógicos y
relacionales
¿Para qué sirven los operadores
relacionales o de comparación?

Estos operadores permiten evaluar
relaciones entre valores. Por ejemplo:
–


2
¿Es el valor A mayor que el valor B?
El resultado de estas operaciones es un
valor de tipo booleano.
Estos operadores se utilizan para escribir
expresiones que permitan controlar el flujo
de ejecución de un programa.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Con cuáles operadores relacionales o
de comparación cuenta Java?
Operador
3
Ejemplo
Significado
==
X == Y
¿ es X igual a Y?
!=
X != Y
¿ es X distinto de Y?
>
X>Y
¿ es X mayor que Y?
<
X<Y
¿ es X menor que Y?
>=
X >= Y
¿ es X mayor o igual que Y?
<=
X <= Y
¿ es X menor o igual que Y?
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¡Cuidado!
El igual no es igual al igual igual


Note que para asignar valores a una variable
se usa el =. Pero para comparar dos valores
y obtener un valor verdadero o falso como
resultado se utiliza el operador ==.
Ejemplos:
x = 10;
// Guarda un 10 dentro de x.
(x == 10)
// Compara el valor que está
// dentro de x para ver si es igual a 10.
// Lo anterior va a producir un valor
// booleano (true o false).
4
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cuál es la prioridad entre los
operadores de comparación?

La precedencia entre estos operadores es la
siguiente:
1.
2.


5
Los operadores: <, >, <=, y >=, tienen prioridad.
Luego siguen los de igualdad y desigualdad: ==, !=
Si existen varios operadores del mismo tipo al
mismo nivel, se evalúan de izquierda a derecha.
Todos los operadores aritméticos preceden a los
relacionales.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cómo se pueden representar
relaciones lógicas más complejas?




6
Mediante expresiones booleanas con operadores
lógicos.
Estos operadores lógicos permiten realizar
operaciones con valores booleanos.
Mediante ellos es posible escribir en una sola
expresión la verificación para múltiples condiciones
booleanas separadas.
El resultado de estas operaciones es un valor único
de tipo booleano.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cuáles son las operaciones lógicas
fundamentales?

La operaciones lógicas básicas son:
–
–
–
–
7
Y (AND).
O inclusivo (OR).
O exclusivo (XOR).
Negación (NOT).
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Para qué sirve el Y (AND)?


8
El Y sirve para combinar expresiones booleanas y
saber si ambas se cumplen a la vez.
Por ejemplo:
Suponga que usted puede saber si una
computadora o un televisor están encendidos o
apagados de manera individual. El Y puede servir
para saber en una sola expresión si están
encendidos el televisor y la computadora a la vez.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cuál es el resultado de aplicar el Y
(AND) sobre dos operandos?


9
El resultado del Y lógico entre dos operandos es verdadero
solamente cuando ambos valores son verdaderos.
Observe en la matriz de correlación que cuando alguno de los
operandos es falso, el resultado del Y siempre es falso.
Y
Verdadero
Falso
Verdadero
Verdadero
Falso
Falso
Falso
Falso
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cuál es la sintaxis del Y en Java?


El Y en Java se representa por el símbolo
&&.
Por ejemplo:
–
10
(true && false) produce false.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Para qué sirve el O (OR)?


11
El O sirve para combinar expresiones booleanas y
saber si al menos alguna de las dos se cumple.
Por ejemplo:
Suponga que usted puede saber si una
computadora o un televisor están encendidos o
apagados de manera individual. El O puede servir
para saber en una sola expresión si alguno de los
dos (televisor o computadora) están encendidos.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cuál es el resultado de aplicar el O
inclusivo (OR) sobre dos operandos?


12
El resultado del O entre dos operandos es verdadero siempre
que alguno de los dos operandos es verdadero.
Observe en la matriz de correlación que solamente cuando
ambos valores son falsos, el resultado del O puede ser falso.
OR
Verdadero
Falso
Verdadero
Verdadero
Verdadero
Falso
Verdadero
Falso
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cuál es la sintaxis del O en Java?


El O en Java se representa por el símbolo | |.
Por ejemplo:
–
13
(true || false) produce true.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Para qué sirve el O exclusivo (XOR)?


14
El XOR sirve para combinar expresiones booleanas
y saber si se cumple exactamente una de las dos.
Por ejemplo:
Suponga que usted puede saber si una
computadora o un televisor están encendidos o
apagados de manera individual. El XOR puede
servir para saber en una sola expresión si alguno de
los dos (Televisor o la Computadora) están
encendidos pero que ambos no están encendidos a
la vez.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cuál es el resultado de aplicar el O
exclusivo (XOR) sobre dos operandos?


15
El resultado del XOR (O exclusivo) entre dos operandos es
verdadero solamente cuando exactamente uno de los dos
operandos es verdadero.
En otras palabras, solamente es verdadero cuando un
operando es verdadero y el otro es falso.
XOR
Verdadero
Falso
Verdadero
Falso
Falso
Verdadero
Verdadero
Falso
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cuál es la sintaxis del XOR en Java?


El O exclusivo (XOR) en Java se representa
por el símbolo ^.
Por ejemplo:
–
16
(true ^ false) produce true.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Para qué sirve la negación o (NOT)?


17
El NOT sirve para saber si se cumple
exactamente lo contrario a la expresión
evaluada.
Por ejemplo:
Suponga que usted puede saber si un
televisor está encendido o apagado. El NOT
puede servir para saber si el Televisor no
está encendido, que en este caso es lo
mismo que estar apagado.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cuál es el resultado de aplicar la
negación?


La negación se aplica sobre un único operando
booleano y permite obtener su valor opuesto.
La negación de un operando produce un valor
verdadero solamente cuando el operando es falso y
viceversa.
NOT
Verdadero
Falso
18
Falso
Verdadero
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cuál es la sintaxis de la negación en
Java?


La negación o NOT en Java se representa
por el símbolo ! precediendo al operando
booleano.
Por ejemplo:
–
19
!(true) produce false.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
En síntesis . . .


20
Todos los operadores antes vistos
(aritméticos, relacionales y lógicos) deben
tener un orden de precedencia unificado,
que permita evaluar expresiones complejas.
Este orden se define en la siguiente tabla de
precedencia de operadores.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
Tabla de precedencia de operadores
21
Orden Tipo
Operadores
Asociatividad
1
Posfijos
( ) var++ var--
Izquierda a derecha.
2
Unarios
++var --var
Izquierda a derecha.
3
Multiplicativos * / %
Izquierda a derecha.
4
Aditivos
+ -
Izquierda a derecha.
5
Relacionales
< > <= >=
Izquierda a derecha.
6
Igualdad
== !=
Izquierda a derecha.
7
AND lógico
&&
Izquierda a derecha.
8
OR lógico
||
Izquierda a derecha.
9
Asignación
= += -= /= %=
Derecha a izquierda.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
EJEMPLO 1 – Utilización de
operadores relacionales
Ir al ejemplo
EJERCICIO 1 - Utilización de
operadores relacionales
Ir al ejercicio
Estructuras de control
Introducción a las
estructuras de control
¿Cómo se puede controlar el orden de
ejecución de un programa?


25
Los programas ejecutan sus instrucciones de
manera secuencial, en otras palabras, una
después de la otra.
Los lenguajes de programación proveen
estructuras de control que permiten alterar el
orden de ejecución cuando se dan ciertas
condiciones.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Qué son las estructuras de control?


Las estructuras de control manejan el flujo
del programa.
Se pueden clasificar en tres grupos:
–
–
–
26
Estructuras de secuencia.
Estructuras de selección.
Estructuras de repetición.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cuáles son las estructuras de
secuencia?



27
La única estructura de control de secuencia
es el bloque de instrucciones.
Un bloque de instrucciones es una serie de
instrucciones que se agrupan para que se
comporten como una macro instrucción.
Un bloque de instrucciones se puede utilizar
como si fuera una instrucción independiente.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Qué se puede hacer con un bloque de
instrucciones?




28
Dentro de un bloque de instrucciones se pueden
definir variables.
Las variables declaradas dentro de un bloque solo
tienen alcance dentro del mismo.
Las instrucciones dentro de un bloque son
ejecutadas de manera secuencial.
Dentro de un bloque de instrucciones pueden haber
tanto instrucciones simples como otros bloques.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cómo se define un bloque de
instrucciones en Java?


29
Un bloque de
instrucciones en Java
está encerrado por
llaves { }.
En cualquier punto
donde se pueda
colocar una instrucción
también se puede
colocar un bloque.
{
instruccion1;
instruccion2;
instruccion3;
// instrucciones...
}
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Para qué sirven las estructuras de
selección?


Las estructuras de selección permiten elegir
entre ejecutar distintos grupos de
instrucciones según una condición.
Existen 3 tipos básicos de estructuras de
selección:
–
–
–
30
Estructura “if”.
Estructura “if / else”.
Estructura “switch”.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cómo funciona la estructura “if”?


31
La estructura “if” indica
que una instrucción o
bloque de instrucciones
se debe ejecutar
solamente “si” cierta
condición se cumple.
En caso contrario,
ninguna instrucción es
ejecutada.
Falso
condición
Verdadero
bloque
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cómo se escribe un “if” en Java?

En Java, un “if” se codifica de la siguiente
manera:
if (condición) {
// Las instrucciones se escriben dentro del
// bloque.
}
32
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cómo funciona la estructura “if /
else” ?



33
Es una extensión del
“if”.
Si la condición se
cumple, un bloque es
ejecutado.
En caso contrario, otro
bloque de instrucciones
es ejecutado.
Verdadero
bloque A
condición
Falso
bloque B
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cómo se escribe un “if / else” en
Java?

En Java, un “if / else” se codifica de la
siguiente manera:
if (condición){
// bloque A si la condición es true
}
else {
// bloque B si la condición es falsa
}
34
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
EJEMPLO 2 – Utilización de “if/else”
Ir al ejemplo
EJERCICIO 2 – Utilización de “if-else”
Ir al ejercicio
¿Cómo funciona la estructura
“switch”?



37
La estructura “switch”
permite elegir entre
múltiples grupos de
instrucciones, dependiendo
del valor de una variable.
En cada caso, la variable se
compara contra un valor
específico. Si coincide, se
ejecuta el grupo de
instrucciones asociado.
Opcionalmente se puede
colocar un último caso que
se ejecuta si todos los
anteriores no coinciden.
caso 1
instrucciones
caso 2
instrucciones
...
caso N
instrucciones
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cómo se escribe un “switch” en
Java?

En Java, un “switch” se codifica de la siguiente
manera:
switch (variable){
case valor1:
// instrucciones si variable == valor1
break;
case valor2:
// instrucciones si variable == valor2
break;
// ...
default:
// si ningún caso se cumple.
// instrucciones.
// Note que el último caso no requiere break.
}
38
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
EJEMPLO 3 – Utilización de “switch”
Ir al ejemplo
EJERCICIO 3 – Utilización de “switch”
Ir al ejercicio
¿Para qué sirven las estructuras de
repetición?


Las estructuras de repetición permiten
ejecutar un bloque de código de manera
cíclica, dependiendo de una condición dada.
Existen 3 tipos de estructuras de repetición:
–
–
–
41
Estructura “while”.
Estructura “do / while”.
Estructura “for”.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cómo funciona la estructura “while”?



42
El “while” permite ejecutar
un bloque una y otra vez
“mientras que” la condición
sea verdadera.
La condición se evalúa
antes de ingresar al bloque.
En el bloque debe existir
alguna instrucción que altere
la condición del “while” para
evitar que el programa se
“encicle”.
Verdadero
condición
bloque
Falso
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cómo se escribe la estructura “while”
en Java?

En Java, un “while” se codifica de la
siguiente manera:
while (condición){
// bloque ejecutado hasta que la
// condición se haga falsa
}
43
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Qué es enciclarse?


44
Cuando en un ciclo la condición nunca llega
a tener el valor necesario para salir de éste,
se dice que el programa se ha enciclado.
El bloque de instrucciones se ejecutaría
hasta que el programa sea terminado por
medios externos de manera abrupta.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cuáles son los casos típicos de
“enciclamiento”?



45
Un caso común es la omisión del incremento
en un contador.
Otro caso típico ocurre cuando la condición
para salir de un ciclo nunca llega a ser
verdadera, tal y como se ilustra a
continuación utilizando.
Ambos casos se muestran en el siguiente
ejemplo.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
EJEMPLO 4 – Utilización de “while”
Ir al ejemplo
EJERCICIO 4 – Utilización de “while”
Ir al ejercicio
¿Cómo funciona la estructura “do /
while”?



El “do / while” permite
ejecutar un bloque una y
otra vez “hasta que” la
condición sea falsa.
La condición se evalúa
después de ejecutar el
bloque.
El bloque de un “do / while”
siempre es ejecutado al
menos una vez.
bloque
condición
Verdadero
Falso
48
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cómo se escribe la estructura “do /
while” en Java?

En Java, un “do / while” se codifica de la
siguiente manera:
do {
// bloque ejecutado mientras que
// la condición sea verdadera
} while (condición);
49
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
EJEMPLO 5 – Utilización de “do/while”
Ir al ejemplo
EJERCICIO 5 – Utilización de
“do/while”
Ir al ejercicio
¿Cómo funciona la estructura “for”?


El “for” tiene una sintaxis más compacta y separa los
elementos de una estructura de control de repetición
según su significado.
El encabezado del “for” se divide en tres secciones
específicas.
–
–
–

52
Inicialización
Condición
Actualización de la condición
Se recomienda usar el “for” cuando se tienen ciclos
controlados por un contador.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cómo funciona la estructura “for”?
(continuación)
inicialización
condición
Verdadero
bloque
actualización
Falso
53
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿En qué orden se ejecutan las partes
de una estructura “for”?
1.
2.
3.
4.
54
La expresión de inicialización se evalúa solamente
una vez al inicio del ciclo “for”.
Si la condición es verdadera, se ejecuta el bloque
de instrucciones.
Posteriormente, se evalúa la expresión de
actualización, donde normalmente se modifican
variables que hacen que la condición cambie.
A partir de este punto, el ciclo continúa con el paso
2.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Cómo se escribe una estructura “for”
en Java?

En Java, un “for” se codifica de la siguiente
manera:
for (inicialización ; condición ;
actualización){
// bloque que se ejecuta mientras que la
// condición sea verdadera
}
55
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿En qué se diferencian el “for” y el
“while”?

La estructura “for” equivale a una estructura
“while” como la siguiente:
// inicialización
while(condición){
// bloque
// actualización
}
56
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
¿Existen otras instrucciones para
control de flujo?





57
Sí. Existen instrucciones para interrumpir ciclos. Estas son el
“break” y el “continue”.
Estas instrucciones se pueden colocar en cualquier parte del
bloque de una estructura de control de repetición.
El “break” se sale del bloque de la estructura de repetición y
continúa ejecutando la instrucción siguiente al bloque.
El “continue” ignora las instrucciones siguientes dentro del
bloque del ciclo pero regresa al punto de evaluación de la
condición.
El uso de “break” y “continue” no es recomendado.
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
EJEMPLO 6 – Utilización de “for”
Ir al ejemplo
EJERCICIO 6 – Utilización de “for”
Ir al ejercicio
¿Cómo evitar errores al utilizar
estructuras de control?



Utilice bloques siempre que escriba estructuras de control.
Aunque las llaves no son necesarias cuando el bloque de una
estructura de control contiene una sola instrucción, no se
recomienda hacer esto ya que esto hace que el código sea
más difícil de leer y mantener, en especial cuando se quiere
agregar instrucciones a la estructura.
Lo siguiente funciona correctamente pero no es recomendado:
if (nota >= 6.75)
System.out.println(“Ganó el curso”);

Siempre es conveniente poner las llaves:
if (nota >= 6.75) {
System.out.println(“Ganó el curso”);
}
60
Autor: Edgar Casasola M.
Diseño: Jorge Villalobos S.
EJEMPLO 7 – Utilización de
estructuras de control para la
resolución de problemas
Ir al ejemplo
EJEMPLO 8 – Utilización de “for” para
resolución de problemas
Ir al ejemplo
EJERCICIO 7 – Utilización de
estructuras de control para resolución
de problemas
Ir al ejercicio