Capítulo 002 Ejercicio 015 (Lista caracteres)

/** Un bucle for lleva a cabo la inicialización antes de la primera iteración. Después, lleva a cabo la comprobación
* condicional y, al final de cada iteración, hace algún tido de "paso".
*
* La forma del bucle for es:
*
* for(inicialización; expresión condicional, paso)
* sentencia
*
* Cualquiera de las expresiones inicialización, expresión o paso puede estar vacía. Dicha expresión se evalúa
* antes de cada iteración, y en cuanto el resultado sea falso, la ejecución continuará en la línea siguiente
* a la sentencia for. Al final de cada iteración se ejecuta paso.
*
* Los bucles for suelen utilizarse para crear contadores:
**/

// Muestra el funcionamiento del bucle "for" listando todos los caracteres ASCII.

public class ListaCaracteres{
public static void main(String args[]){
for(char c =0; c<128; c++)
if(c != 26) // Limpiar pantalla en código ASCII
System.out.println("Valor: " + (int)c + " Caracter: " + c);
}
}

/** Fíjese que la variable "c" está definida en el punto en que se usa, dentro de la expresión de control del bucle
* for, en vez de al principio del bloque delimitado por la llave de apertura. El ámbito de "c" es la expresión
* controlada por el for.
*
* Los lenguajes procedurales tradicionales como C requieren que todas las variables se definan al principio de un
* bloque, de forma que cuando el compilador cree un bloque, pueda asignar espacio para esas variables. En Java y
* C++ es posible diseminar las declaraciones de variables a los largo del bloque, definiéndolas en el momento en
* que son necesarias. Esto permite un estilo de codificación más natural y hace que el código sea má fácil de
* entender.
*
* Se pueden definir múltiples variables dentro de una sentencia for, pero deben ser del mismo tipo.
*
* for(int i=0, j=1; i<10 && j!=11; i++, j++)
* Cuerpo del bucle for
*
* La definición int de la sentencia for cubre tanto a "i" como a "j". La habilidad de definir variables en
* expresiones de control se limita al bucle for. No se puede utilizar este enfoque con cualquiera de las
* otras sentencias de selección o iteración.
*
**/