Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de...
-
Upload
ana-ruiz-pineiro -
Category
Documents
-
view
221 -
download
0
Transcript of Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de...
![Page 1: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/1.jpg)
Java
Java es un lenguaje de programación presentado en 1995 enfocado a:
• soportar los fundamentos de la programación orientada a objetos.
• generar código independiente de la arquitectura de la computadora
Actualmente se utiliza particularmente para desarrollar aplicaciones para Internet.
Introducción a la Programación Orientada a Objetos
![Page 2: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/2.jpg)
VARIABLES, CONSTANTES Y EXPRESIONES
ASIGNACIÓN.
TIPOS ELEMENTALES. PRECEDENCIA DE LOS OPERADORES. CASTING
ESTRUCTURAS DE CONTROL. CONDICIONAL E ITERACIÓN. RECURSIVIDAD
ESTRUCTURA DE UNA CLASE EN JAVA.
MÉTODOS.
EL MÉTODO MAIN.
Elementos Básicos de Java
![Page 3: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/3.jpg)
Variables y Constantes
Declaración [< modificador>] < tipo > < ident > [ , < ident > ] ;
Introducción a la Programación Orientada a Objetos
int i,I,j101;
static char fin =‘.’;
boolean eureka;
La declaración establece el nombre, tipo, alcance y determina si es variable o constante.Una declaración de constante establece también el valor.En el caso de una variable el valor puede quedar establecido en la declaración o no.
![Page 4: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/4.jpg)
Tipos de Dato
Factorizar Propiedades. Todas las variables de un tipo comparten una misma representación, toman valores de un mismo conjunto y pueden participar de las mismas operaciones.
Efectuar Controles. El lenguaje establece restricciones que aseguran la consistencia entre los operadores provistos y los operandos. Estas restricciones van a ser controladas por el compilador o en ejecución.
Administrar la Memoria. El compilador decide cuánto espacio de almacenamiento va a requerir cada dato en ejecución, de acuerdo a su tipo.
Tipos Elementales
Introducción a la Programación Orientada a Objetos
![Page 5: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/5.jpg)
Nombre de Tipo
valor memoria requerida
Rango
byte integer 1 byte -128 a 127
short integer 2 bytes -32768 a 32767
int integer 4 bytes -2147483648 a2147483647
long integer 8 bytes
float floating-point 4 bytes
double floating-point 8 bytes
char single character
2 bytes UNICODE
boolean true or false 1 bit
Tipos Elementales
Introducción a la Programación Orientada a Objetos
Tipos de Dato
![Page 6: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/6.jpg)
Operadores booleanos•Conjunción •Disyunción •Negación
Operadores relacionales
igual ==
distinto !=
menor <
menor o igual <=
mayor >
mayor o igual >=
Expresiones
Introducción a la Programación Orientada a Objetos
![Page 7: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/7.jpg)
Evaluación
•Completa•En cortocircuito
Conversión
Jerarquía de Tipos
byte →short→int→long→float→double
Expresiones
Introducción a la Programación Orientada a Objetos
![Page 8: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/8.jpg)
Reglas de Precedencia y Asociatividad
++, --, !, unary – undary +, type-cast
*, /, %
+, -
<, >, <=, >=
==, !=
&&
||
?:
=, +=, -=, *=, /=, %=
Expresiones
Introducción a la Programación Orientada a Objetos
![Page 9: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/9.jpg)
Asignación
< ident > = < expresion >;
< tipo >< ident > = < exp > [,< ident > = < exp > ];
Cuando la expresión que aparece a la derecha de una asignación no coincide con el tipo de la variable que está a la izquierda puede producirse una conversión automática o un error.
El error puede salvarse mediante una operación de casting.
Expresiones
Introducción a la Programación Orientada a Objetos
![Page 10: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/10.jpg)
Conversión automática de tipos
Expresiones
Introducción a la Programación Orientada a Objetos
Si al hacer la conversión de un tipo a otro se dan las 2
siguientes premisas:
•Los dos tipos son compatibles.
•El tipo de la variable destino es de un rango mayor al tipo de
la variable que se va a convertir.
Entonces, la conversión entre tipos es automática
![Page 11: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/11.jpg)
Casting
Expresiones
Introducción a la Programación Orientada a Objetos
•Cuando el número a convertir está fuera del rango del tipo a que se quiere convertir, entonces la conversión automática es imposible.
•El programador se ve obligado a realizar una conversión forzada (explicita), que se denomina casting.
•La sintaxis para realizar un casting es:
destino = (tipo_destino) valor
•En el caso de los tipos numéricos, al "recortar" el valor de la variable de rango mayor perdemos precisión
![Page 12: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/12.jpg)
Estructuras de Control en Java
Instrucciones
< declaración de variable > | < expresion > ; | < bloque > | < instruccion if > | < instruccion while > | < instruccion for > |< instruccion switch > | < instruccion try > | < instruccion return > | < break > | < continue > |
Introducción a la Programación Orientada a Objetos
< instruccion > ::=
![Page 13: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/13.jpg)
Estructuras de Control en Java
{ [< instruccion > ]* }
{ promedio = total / n ; System.out.print("El promedio es "); System.out.println(promedio); }
{ int temp; temp = x; x = y;
y = temp; }
Introducción a la Programación Orientada a Objetos
< bloque> ::=
Bloques
![Page 14: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/14.jpg)
Estructuras de Control en JavaBloques
Un bloque define un nuevo ambiente de referenciamiento.
Las variables declaradas dentro de un bloque son locales y no son visibles fuera de él.
Un mismo nombre no puede ligarse a dos variables en el mismo bloque ni en bloques anidados.
Una variable puede ser referenciada a partir de la instrucción que sigue a su declaración.
Adoptaremos la convención de declarar las variables de un bloque al principio e inicializarlas explícitamente.
Introducción a la Programación Orientada a Objetos
![Page 15: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/15.jpg)
Estructuras de Control en Java
if < expresion booleana > < instruccion > else < instrucción >
Condicional
Introducción a la Programación Orientada a Objetos
< instruccion if > ::=
![Page 16: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/16.jpg)
if (x > y) { max = x; min = y ;} else { max = y; min = x ;}
if (x > y) { int temp; temp = x; x = y; y = temp;}
if (x > y) max = x;else max = y;
Condicional
Estructuras de Control en Java
Introducción a la Programación Orientada a Objetos
![Page 17: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/17.jpg)
Estructuras de Control en Java
if (x > y) if (x > z) max = x; else max = z; else if (y > z) max = y; else max = z;
Condicional
Introducción a la Programación Orientada a Objetos
if (nota > 9) estado = ´A´; else if (nota > 7) estado = ´B´ ; else if (nota > 4) estado = ´C´ ; else if (nota < 4) estado = ´D´ ;
![Page 18: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/18.jpg)
Estructuras de Control en Java
estado = ´B´;if (promedio > 7) if (inasistencias<3) estado = ´A´; else estado = ´C´;
Condicional
Introducción a la Programación Orientada a Objetos
estado = ´B´; if (promedio > 7) { if (inasistencias<3) estado = ´A´; } else estado = ´C´
![Page 19: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/19.jpg)
Estructuras de Control en Java
switch
switch (<expression>) { [ case <constante> : <instruccion> ]* default: <instruccion> }
Condicional
Introducción a la Programación Orientada a Objetos
<instruccion switch>::=
![Page 20: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/20.jpg)
Estructuras de Control en Java
switch switch ( nota ) { case 10: case 9: estado = ´A´ ; break; case 8: case 7: estado = ´B´ ; break; case 6: case 5: estado = ´C´ ; break; default: estado = ´D´; }
Condicional
Introducción a la Programación Orientada a Objetos
![Page 21: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/21.jpg)
Estructuras de Control en Java
while (<expresion booleana>) <instrucción>
do <instrucción>while (<expresion booleana>)
Iteración
Introducción a la Programación Orientada a Objetos
< instruccion while > ::=
< instruccion do while> ::=
![Page 22: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/22.jpg)
Estructuras de Control en Java
int numero; int digitos = 0; System.out.println (“Ingrese el numero”);numero = ES.leerEntero ();while ( número > 0 ) { numero /=10; digitos++; } System.out.println(digitos);
Iteración
Introducción a la Programación Orientada a Objetos
![Page 23: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/23.jpg)
Estructuras de Control en Java
int numero; int digitos = 0; System.out.println (“Ingrese el numero”);numero = ES.leerEntero ();do { numero /=10; digitos++; } while ( número > 0 ); System.out.println(digitos);
Iteración
Introducción a la Programación Orientada a Objetos
![Page 24: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/24.jpg)
Estructuras de Control en Java
for ( <asignacion>; <expresion> ; <expresion>) [ <instrucción>]*
for ( n = 1 ; n <= 10 ; n++ ) System.out.println( n, n*n );
Iteración
for ( int n = 1 ; n <= 10 ; n++ ) System.out.println( n, n*n );
Introducción a la Programación Orientada a Objetos
< instruccion for > ::=
![Page 25: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/25.jpg)
Estructuras de Control en Java
sum = 0 ; for ( n = 1 ; n <= 10 ; n++ ) sum = sum + n ;
for ( n = 1, sum = 0 ; n <= 10 ; n++ ) sum = sum + n ;
for (n=1,sum=0; n<=10; sum=sum+n,n++);
Iteración
Introducción a la Programación Orientada a Objetos
for ( n = 1, sum = 0 ; sum <= 100 ; n++ ) sum = sum + n ;
for ( int n = 1, sum = 0 ;sum <= 100 ; n++ ) sum = sum + n ;
![Page 26: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/26.jpg)
Estructura de un programa en JAVA
La unidad básica de programación en Java es la clase.
Un programa en Java está constituido por una colección de clases .
La implementación de una clase consiste en definir sus miembros:
•Atributos: variables de instancia y de clase
•Servicios: constructores y métodos
Introducción a la Programación Orientada a Objetos
![Page 27: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/27.jpg)
Estructura de un programa en JAVA
( ) { } [ ] : ,
Símbolos separadores
Comentarios
•Los que ocupan varias líneas y se encierran entre símbolos /* y */ o /** y */•Los que comienzan con el símbolo // y terminan junto con la línea
Introducción a la Programación Orientada a Objetos
![Page 28: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/28.jpg)
Estructura de un programa en JAVA
[ < Modificador > ]* [< Tipo del Resultado > ]
< Identificador > ( [< Parámetros Formales > ]* )
{ < bloque > }
MétodosSintaxis
Introducción a la Programación Orientada a Objetos
![Page 29: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/29.jpg)
Estructura de un programa en JAVA
Métodos
Para que un programa en JAVA pueda ejecutarse es necesario definir una clase que incluya un método llamado main().
class Hello { public static void main (String args[]) { System.out.println("Hello World!"); }}
Introducción a la Programación Orientada a Objetos
![Page 30: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/30.jpg)
Estructura de un programa en JAVA
Métodos
•La primera línea define una clase llamada Hello.
•La segunda clase define el método main, asociado a los modificadores public y static. Es importante que no omitan ni alteren el encabezamiento de main.
•La palabra void indica que el método main no retorna ningún valor.
•La forma (String args[]) es la definición de los argumentos que recibe el método main.
•La instrucción System.out.println muestra un literal en pantalla.
Introducción a la Programación Orientada a Objetos
![Page 31: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/31.jpg)
BlueJ
Introducción a la Programación Orientada a Objetos
![Page 32: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/32.jpg)
Procesador Número
ProcesarNumero
sumaDigitos ( n:entero ) : entero
estaDigito ( n:entero, d:entero ) : booleano
sumaP ( n:entero ) : booleano
![Page 33: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/33.jpg)
class ProcesadorNumero {public static int sumaDig(int n ){// Retorna la suma de los dígitos del número n}public static boolean estaDig (int n, int d ){//Retorna true si y solo si d es un dígito del número n }}
• Clases como unidad de programación• Identificadores• Modificadores public static• Símbolos delimitadores { } /* */ // () , ;
Elementos de Java
![Page 34: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/34.jpg)
public static int sumaDig(int n ){//Retorna la suma de los dígitos del número n int s=0;while (n>0) { s = s + n % 10; n = n/10; }return s;}
El tipo elemental intParámetros y variables localesAsignaciones y expresiones, operadores y operandosLa iteración whileLa instrucción de retorno
Elementos de Java
![Page 35: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/35.jpg)
Para que un programa en JAVA pueda ejecutarse es necesario que una clase incluya un método llamado main().
public static void main (String args[]) { int s = sumaDig(25036); System.out.println(“La suma es “+s); }
Introducción a la Programación Orientada a Objetos
Elementos de Java
![Page 36: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/36.jpg)
•Es importante que no omitan ni alteren el encabezamiento de main.
•La palabra void indica que el método main no retorna ningún valor.
•La forma (String args[]) es la definición de los argumentos que recibe el método main.
•La instrucción System.out.println muestra un literal en pantalla.
Introducción a la Programación Orientada a Objetos
Elementos de Java
![Page 37: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/37.jpg)
public static boolean estaDig(int n,int d ){/* Retorna true si y solo si d es un dígito del número n */boolean esta = false;while (n>0) && !esta { if (d == n % 10) esta = true; n = n/10; }return esta;}
Elementos de Java
![Page 38: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/38.jpg)
Implemente una consulta en Java, consistente con el planteo recursivo propuesto, para calcular la suma de los dígitos pares de un número N.
public static int sumaP(int n){
}
Problema
![Page 39: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/39.jpg)
Planteo
Caso trivial: la suma de los dígitos pares de un número N impar, menor a 10 es 0. Caso trivial: la suma de los dígitos pares de un número N par, menor a 10 es N. Caso Recursivo: la suma de los dígitos pares de un número N =dm,dm-1,…,d1,d0 (m>0) con d0 par es la suma de los dígitos pares de N’= dm,dm-1,…,d1, más d0,
Caso Recursivo: la suma de los dígitos pares de un número N =dm,dm-1,…,d1,d0 (m>0) con d0 impar es la suma de los dígitos pares de N’= dm,dm-1,…,d1,
![Page 40: Java Java es un lenguaje de programación presentado en 1995 enfocado a: soportar los fundamentos de la programación orientada a objetos. generar código.](https://reader035.fdocuments.ec/reader035/viewer/2022062500/5665b4f21a28abb57c94ff07/html5/thumbnails/40.jpg)
Dada la siguiente definición recursiva:
0 si N < 10 y N es impar
1 si N < 10 y N es par
contarPPI (N) contarPPI(N/10) +1 si N = d1.. dk con k>1,
k impar y dk es par contarPPI(N/10) en cualquier otro caso.
Explique verbalmente qué valor computa la definición.
Implemente un método en Java a partir de la definición, asumiendo que dispone de un método que retorna la cantidad de dígitos de un número y otro que decide si un número es par.
Reformule la implementación de modo que la cantidad de dígitos se calcule una única vez.
Problema