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


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.
    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