Temas:
Constantes:
Aplicaciones:
boolean existe; // sin inicialización
boolean terminar= false; // con inicialización
Los operadores relacionales <, ==, >=, etc. permiten construir expresiones que producen valores de verdad. Estos valores pueden ser utilizados en condiciones en un while o un if, y también pueden ser asignados a variables:
También existen funciones y métodos que producen valores de verdad:
isInt(...) y lect.eofReached().
boolean mayor= a>b;
Ejemplo:
El programa que entrega la distancia de una ciudad a Santiago puede ser reescrito:
print("Nombre ciudad ? ");
String ciudadBusc= lower(readLine());
TextReader lect= new TextReader("dist.txt");
boolean existe= false;
String linea= lect.readLine();
while (!lect.eofReached && !existe) {
FieldParser decod= new FieldParser(linea, ":");
String ciudad= decod.readString();
if (compare(lower(ciudad), ciudadBusc)==0) {
println("La distancia entre Santiago y "+ciudad+" es "+
decod.readInt()+" kilometros");
existe= true; // (C)
}
else linea= lect.readLine();
}
if (lect.eofReached()) // o también if (!existe) ...
println("La ciudad de "+ciudadBusc+" no se encuentra en mi "+
"base de datos");
lect.close();
El patrón de uso de esta instrucción consiste en un ciclo while que contiene un if, en donde se ejecuta la instrucción break:
Mientras la codición (B) sea falsa, el ciclo continuará realizando
iteraciones de la manera usual. Esto significa que se ejecuta
tanto (A) como (E). Pero si (B) resulta verdadera, se ejecutan
las instrucciones de (C) y luego break que termina el
ciclo. La próxima instrucción en ejecutarse será (F).
while ( ... ) {
... // (A)
if ( ... ) { // (B)
... // (C)
break;
// (D)
}
... // (E)
}
... // (F)
Esta secuencia de ejecución se observa más claramente en el siguiente diagrama:
Observaciones:
while (...) {
...
if (...) break;
...
if (...) break;
...
}
La instrucción break se puede usar para simplificar el patrón de lectura:
Ejemplo:
while (true) {
lectura de un dato
if ( se acabaron los datos ) break;
... procesar dato
}
Modificar el programa que determina la distancia entre Santiago y otra ciudad de modo que ahora se acepten varias ciudades. El diálogo debe ser:
Nombre de ciudad ? valparaiso
La distancia entre Santiago y Valparaiso es 109 kilómetros
Nombre de ciudad ? Mendoza
La ciudad de Mendoza no se encuentra en mi base de datos
Nombre de ciudad ? arica
La distancia entre Santiago y Arica es 2030 kilómetros
Observaciones:
while (true) { // ciclo externo
print("Nombre ciudad ? ");
String ciudadBusc= lower(readLine());
if (compare(ciudadBusc,"fin")==0) break; // (A)
TextReader lect= new TextReader("dist.txt");
while (true) { // ciclo interno
String linea= lect.readLine();
if (lect.eofReached()) break; // (B)
FieldParser decod= new FieldParser(linea, ":");
String ciudad= decod.readString();
if (compare(lower(ciudad), ciudadBusc)==0) {
println("La distancia entre Santiago y "+ciudad+" es "+
decod.readInt()+" kilometros");
break; // (C)
}
}
if (lect.eofReached())
println("La ciudad de "+ciudadBusc+" no se encuentra en mi "+
"base de datos");
lect.close();
}
Tarea:
Resuelva nuevamente el programa que determina si un número es primo utilizando la instrucción break para terminar el ciclo en el momento en que se encuentra el primer factor.