Programación Avanzada.
Centro Superior de Informática.
Universidad de La Laguna.


Números Racionales.

 
  • Un Número Racional es un número con un numerador y un denominador de la forma a/b- por ejemplo: 1/3, 3/4, 10/4 etc. El denominador no puede tomar el valor 0, pero si el numerador. Todo entero a es equivalente al número racional a/1. Los números racionales se utilizan para el cálculo exacto que implica fracciones; por ejemplo, 1/3 = 0,33333... Este número no se puede representar de forma precisa en formato en punto-flotante usando los tipos de datos float o double. Si se quiere obtener un resultado exacto, hay que utilizar un número racional.
  • Existen muchos números racionales que son equivalentes, por ejemplo, 1/3=2/6=3/9=4/12. Por conveniencia, 1/3 se utiliza para representar a todos los números racionales que son equivalentes a el. El numerador y el denominador de 1/3 se caracteriza porque el único divisor común que tienen es el uno, se dice entonces que 1/3 está en su mínima expresión.
  • Para reducir un número racional a su mínima expresión, es necesario encontrar el máximo común divisor de los valores absolutos de su numerador y denominador, entonces se dividen ambos, el numerador y el denominador por dicho valor. A continuación se presenta el algoritmo de Euclides para encontrar el máximo común divisor (mcd) de dos valores enteros n y d:
  • t1 <- abs(n); t2 <- abs(d); // obtener los valores absolutos de n y d;
    r = t1 % t2 // resto de dividir t1 entre t2
    while(r!=0){
      t1 = t2;
      t2 = r;
      r = t1 % t2;
    }
    return t2; // cuando r sea cero t2 es el divisor común entre t1 y t2
    1. Escriba una clase Rational para encapsular números racionales. Utilizar el tipo long para representar tanto al numerador como al denominador. Un número racional se debe representar internamente usando su mínima expresión, esto es, el máximo común divisor entre el numerador y el denominador debe ser 1. El método para calcular el máximo común divisor mcg() es solo para uso interno de la clase Rational. El método abs(x) está definido en la clase Math y devuelve el valor absoluto de x. Se han de proporcionar constructores de la forma Rational (numerador, denominador) y Rational() (por defecto se proporciona 0/1). Además se han de proporcionar métodos que permitan a una clase cliente conocer los valores del numerador y del denominador (getter). Implementar metodos add, subtract, multiply and divide que deben devolver un objeto Rational. El método toString devuelve una cadena que representa a un objeto número racional de la forma: numerador / denominador.
    1. Escriba una clase cliente Test para comprobar el correcto funcionamiento de la clase Rational. En esta clase cree dos objetos número racional r1 y r2  con valores 2/1 y 2/3. Muestre por pantalla el resultado de r1 + r2, r1 - r2, r1 x r2,  r1 /r2.  Ejemplo de salida:

    Bibliografía.

    Y. Daniel Liang. "Introduction to Java Programming". QueE&T. 1999