Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
3
respuestas

me quedaron dos dudas sobre char como funciona y sobre factorial mas precisamente este codigo, como funciona? para en el 10 y se repite por el for?

public class factorial {

public static void main(String[] args) {
    int factorial = 1;
    for (int i = 1; i < 11; i++) {
        factorial *= i;
        System.out.println("Factorial de " + i + " = " + factorial);
    }
}

}

3 respuestas

Sobre como funciona el código del calculo del factorial esta es la explicación:

  1. Se crea una variable de tipo entero y se inicializa con el valor de 1

  2. Se crea una ciclo que va desde 1 hasta 10 y se incrementa en 1 por cada interacción

  3. La variable factorial se calcula con la multiplicacion del valor ya existente en ella y el valor actual de la variable i

  4. Luego se realiza la impresion por consola del mensaje Una prueba de escritorio (cuando entra en el ciclo for) para este codigo es la siguiente:

     i     factorial        
     1           1                  i * valor almacenado en factorial = 1*1
     2           2                  i * valor almacenado en factorial = 2*1    
     3           6                  i * valor almacenado en factorial = 3*2
     4           24                i * valor almacenado en factorial = 4*6
     5           120              i * valor almacenado en factorial = 5*24
     6           720              i * valor almacenado en factorial = 6*120
     7           5040            i * valor almacenado en factorial = 7*720
     8           40320          i * valor almacenado en factorial = 8*5040
     9           362880        i * valor almacenado en factorial = 9*40320
     10         3628800      i * valor almacenado en factorial = 10*362880

Con respecto a las variables definidas de tipo char no se cual es tu duda.

Un saludo

¡Hola Marcos! Espero te encuentres bien.

Como ya te respondieron cómo opera el código de la factorial, me centraré en la definición del char.

class Char {

  public static void main(String[] args) {

    char miChar = 'D';

    /*
     * Hemos puesto la letra D encerrada en comillas simples. Podría haber sido
     * cualquier caracter simple, por ejemplo una letra, un dígito, o cualquier otro
     * caracter, como una exclamación, un guion, un signo de dólar, y así
     * sucesivamente.
     * 
     * Es importante comprender que un char es muy diferente a un String. Si lo
     * recuerdas, hemos utilizado literales String anteriormente y en ellos hemos
     * puesto texto en comillas dobles.
     * 
     * Un char solo almacena un único caracter simple, cuyo literal está encerrado
     * en comillas simples.
     * Un String puede almacenar múltiples caracteres, cuyo literal está encerrado
     * en comillas dobles.
     * 
     * Entonces ambos tipos primitivos de datos se parecen solo en que ambos
     * almacenan caracteres, pero en el caso del char solo se almacena uno y el
     * String tiene soporte para varios.
     * 
     * Si tratamos de almacenar más de un caracter en una variable char, obtendremos
     * un error de Java indicando "unclosed character literal char miChar = 'DD';"
     * por ejemplo, lo que quiere decir que ha encontrado demasiados caracteres. O
     * para ser más precisos, Java esperaba un único caracter seguido de la comilla
     * simple pero encontró un caracter extra antes de la comilla simple de cierre.
     * 
     * Te preguntarás, entonces, qué tan útil es este tipo de dato primitivo. ¿Por
     * qué querríamos usar una variable que solo nos permite almacenar un único
     * dato?
     * 
     * Un ejemplo de esto podría ser almacenar la última letra presionada en el
     * teclado por el usuario de un video juego.
     * Otro ejemplo podría ser recorrer programáticamente las letras del abecedario.
     * 
     * Los chars eran mucho más relevantes cuando Java recién fue liberado al final
     * de los años 90, comparado con su utilidad hoy en día, donde existen
     * computadores muy rápidos y con gran capacidad de memoria. Así que en estos
     * días, no es necesario enfocarnos en ahorrar memoria. Por ahora tengamos en
     * mente que si vas a utilizar un tipo de dato char, entonces podrás almacenar
     * un único caracter en él.
     * 
     * Bien, quizás ahora estés pensando - ok, solo puedo almacenar un caracter,
     * entonces, seguramente solo ocupa un byte simple en memoria. Bueno, resulta
     * que en términos de memoria, ese no es el caso. Un char ocupa dos bytes de
     * memoria, o 16 bits, y por tanto tiene un peso de 16.
     * 
     * La razón de esto es que un char se almacena como un número de dos bytes,
     * similar al short. Este número es mapeado a un único caracter en Java.
     * Entonces, cuando se imprime el char, lo que realmente verás es el caracter
     * mapeado, y no el número representativo.
     * 
     * En algunos casos, los caracteres no están siendo representados en tu teclado,
     * o puede que tengas razones para usar algún caracter especial en otro
     * lenguaje. Para hacer esto, Java soporta el valor unicode para caracteres, que
     * pueden usarse para definir valores char.
     * 
     * El Unicode es el standar internacional de codificación para el uso con
     * diferentes lenguajes y scripts en donde cada letra, dígito o símbolo es
     * asignado a un único valor numérico que aplica sobre diferentes plataformas y
     * programas. En el alfabeto inglés, tenemos letras desde la A a la Z, lo que
     * quiere decir que solo necesitamos de un total de 26 caracteres para
     * representar el alfabeto inglés completo.
     * 
     * Pero otros lenguajes requieren más caracteres. Unicode nos ayuda a
     * representar estos lenguajes.
     * La forma en que funciona es a través del uso de combinaciones de dos bytes
     * que un char toma en memoria y que pueden representar a cualquiera de los
     * diferentes 65.535 caracteres.
     * 
     * Podemos ir al sitio web llamado unicode-table.com donde podremos ver muchos
     * símbolos en pantalla, y si hacemos scroll hacia abajo podremos ver que hay
     * muchos de ellos. Todos estos son caracteres Unicode. Hay páginas y páginas de
     * caracteres y a medida que hacemos scroll hacia abajo los vamos cargando en la
     * pantalla.
     * 
     * De acuerdo con este sitio, el valor Unicode de la letra 'D' es el valor
     * U+0044.
     * ¿Pero cómo lo utilizamos en Java?
     */
solución!
char miUnicode = '\u0044'; // Esto imprime 'D'. Se utiliza el /u para indicar que lo que sigue es un valor
                               // Unicode.
    /*
     * Ya sea hayas utilizado un caracter literal como 'D' o una representación
     * unicode como \u0044, habrás almacenado un número representando la letra D.
     * 
     * Ahora, es importante saber que también podemos asignar literales numéricos a
     * variables de tipo char. En este mismo sitio, donde encontramos el valor
     * Unicode de la letra 'D', hay un agregado extra con el valor 68, se representa
     * como D.E.C. 68 y quiere decir que dicho código está en formato decimal.
     * 
     * Si almacenamos ese valor en una variable char, obtendremos una 'D' como
     * resultado también.
     */

    char miCodigoDecimal = 68; // Esto imprime 'D'. Está en formato decimal.
  }
}

`