Temas:
Solución del problema de la clase anterior:
Observe que las instrucciones que están en negritas corresponden
a una variación del patrón de acumulación. No es exactamente
el patrón de acumulación, pero se asemeja. Si hubiésemos escrito:
int num;
int max;
int min;
print("? ");
num= readInt();
max= num;
min= num;
while (num!=0) {
if (num>max) max= num;
if (num<min) min= num;
print("? ");
num= readInt();
}
print("El rango es [");
print(min); print(",");
print(max); println("]");
sería aún más parecido. El operador del patrón de acumulación sería en
este caso max.
max= max(max,num);
El programa también se puede escribir como:
Ejecute paso a paso dos iteraciones de este programa y se
convencerá de que está correcto. MAXINT es una constante entera
que es más grande que cualquier otro entero en Java.
int num;
int max= 0; // o MININT
int min= MAXINT;
print("? ");
num= readInt();
while ( ... ) { ... }
...
En realidad, los enteros en Java tienen un valor máximo (y un mínimo para los negativos). El primer número que se lea forzosamente será menor (o igual) a MAXINT y quedará por lo tanto almacenado en min ya en la primera iteración.
Así como en Java se pueden almacenar enteros en variables de tipo int o números reales en variables de tipo double, también se pueden almacenar secuencias de caracteres en variables de tipo String. ¡Cuidado! El tipo se escribe con la S mayúscula.
Un string es una secuencia de letras (a-z o A-Z), dígitos (0-9) o símbolos (% ^ & @ [ ] etc.).
Constantes:
En un programa se pueden escribir strings constantes encerrando los caracteres entre " ... ":
¡Cuidado! En un programa la constante 5 denota el entero 5, mientras
que la constante "5" denota un string y por lo tanto no se puede
operar aritméticamente.
"x ? "
"Promedio= "
"a"
"123"
Variables:
Los valores que pueden almacenar las variables nombre y dirección deben
ser strings, mientras que edad sólo puede almacenar enteros.
String nombre; // sin inicialización
String direccion= "Alameda 123";
int edad;
Asignación:
nombre= "Juan Gonzalez";
edad= 18;
direccion= 123; // ¡Error!
edad= "18"; // ¡Error!
La función readString() lee una sola palabra (hasta encontrar
un espacio en blanco o un cambio de línea). La función readLine
lee hasta encontrar el cambio de línea. Los espacios forman
parte del string leído. Por ejemplo, si el usuario ingresa:
nombre= readString();
direccion= readLine();
juan alameda 123
Despliegue en pantalla:
desplegará:
println(nombre);
print(direccion);
println("x");
En general, las funciones print y println despliegan
expresiones de tipo String. En particular pueden desplegar una
variable o una constante.
juan
alameda 123x
Largo de un string:
La función length entrega un entero que corresponde
al número de caracteres contenidos en el string. Por ejemplo:
int largo= length(nombre);
Observación: la constante "" denota el string vacío cuyo largo es 0.
length("abc") es 3
length("a b c") es 5
length("1 2 3 ") es 6
length(123) es un error porque 123 no es un string
Comparación:
Se puede comparar lexicográficamente dos strings. Diremos que "juan" es menor lexicográficamente que "pedro", porque aparece antes en el diccionario.
La función compare retorna -1 si el primer argumento
es menor lexicográficamente que el segundo argumento, 0 si son
iguales o 1 si el primero es mayor.
if (compare(nombre1, nombre2)<0)
print("menor");
else if (compare(nombre1, nombre2)==0)
print("iguales");
Tarea:
Haga un programa que lea palabras del teclado e indique el largo de cada una de ellas. El fin de las palabras está marcado por la palabra "fin". El diálogo debe ser:
Diálogo:
esta noche puedo escribir los versos más tristes fin
largo de esta: 4
largo de noche: 5
...
largo de tristes: 7