PRÀCTICA Nº 2: 1 sesión
(del 20 al 26 de Març de 2003)
Construcció d’una classe Fracció
0. Objectius
El objectiu d’esta pràctica es l’implementació d’una classe en C++ i la construcció d’un programa que la utilice. La classe a implementar serà la classe ‘Fracció’ i realitzarem un programa que calcule el sumatori de una serie de fracccions.
1. Introducció
Una fracció (número racional) està caracteritzat per un numerador i per un denominador, tenent la forma: numerador/denominador (Ex.: 7 / 3, -15 / 18). Una fracció pot tindre un valor real equivalent, pero no és un número real.
2. Realització de la pràctica
a. Implementació de la classe i comprovació del seu correcte funcionament
En esta seguna pràctica, es té que implementar una classe en C++ que permitisca representar el tipus ‘Fracció’, asumient la segúent interficie:
class Fraccion { public: void Asignar (int num, int denom); void Leer (); void Escribir (); Fraccion Sumar (Fraccion f) const; Fraccion Restar (Fraccion f) const; Fraccion Menos () const; float Evaluar (); bool Igual (Fraccion f); private: int numerador; int denominador; void Simplificar (); }La classe tindrà que estar implementada de manera que:
(i) La fracció sempre s’almacene en forma canònica (simplificada).
Ex.: 4 / 2, no → 2 / 1, sí.
(ii) El signe de la fracció deu d’anar asociat al numerador. Per lo que, el denominador sempre serà positiu.
Ex.: 5 / -2, no → -5 / 2, sí. –7 / -3, no → 7 / 3, sí.
(iii) Deu d’avisar si la fracció té un denominador amb valor 0 (cero), indicant que eixa fracció no és vàlida (missatge per pantalla).
L’interpretación dels mètodes declarats en la interficie és la següent:
void Asignar (int num, int denom);
Guarda la fracció que té numerador num i denominador denom en el objecte fracció que rep el missatge.
void Leer ();
Llig per teclat les dades d’una fracció i els guarda en el objecte que rep el missatge.
void Escribir ();
Escriu per pantalla la fracció corresponent al objecte que rep el missatge.
Fraccion Sumar (Fraccion f) const;
Suma dos fraccions, el objecte que rep el missatge més el objete f. Ens torna el resultat de la suma i no modifica cap dels operants.
Fraccion Restar (Fraccion f) const;
Resta dos fraccions, el objecte que rep el missatge meins el objete f. Ens torna el resultat de la resta i no modifica cap dels operants.
Fraccion Menos () const;
Ens torna, cambiada de signe, la fracció corresponent al objecte que rep el missatge.
float Evaluar ();
Ens torna el valor real equivalent a dividir el numerador i el denominador de la fracció corresponent al objecte que rep el missatge.
bool Igual (Fraccion f);
Compara la fracción corresponent al objecte que rep el missatge i la fracció f i torna com a resultat true si les dos fraccions son iguals i false en cas contrari.
void Simplificar ();
Simplifica la fracció correspoent al objecte que rep el missatge (es un mètode privat).
El funcionament de la classe construida es deu de comprovar amb el següent programa:
#include <iostream.h> #include "fraccion.h" int main() { Fraccion a, b, res; a.Leer(); b.Asignar (5,-6); if (a.Igual (b) ) cout << "a y b son iguales." << endl; res = a.Sumar (b); cout << "Suma de a y b: "; res.Escribir(); cout << endl; res = a.Restar (b); cout << "Resta de a y b: "; res.Escribir(); cout << endl; return 0; }
b. Realització d’un programa que utilice la classe implementada
Com a final de la pràctica es deu escriure un programa que permitisca calcular:
La variable n deu de ser una entrada del programa. Este programa realitzarà el càlcul de dos formes:
(i) Usant fraccions.
(ii) Usant el tipo float
En cada execució del programa es deuràn mostrar 3 resultats:
(i) Fracció resultant del càlcul amb fraccions.
(ii) Valor real equivalent a la fracció anterior.
(iii) Valor real resultant del càlcul amb float.
(Nota: Proveu el funcionament amb valors de n al voltant de 10.000)
4. Entrega de programes
Al començar la següent sesió de pràctiques s’entregaràn al profesor tres fitxers:
1) Fitxers de la classe Fraccion (##Fraccion.cpp y ##Fraccion.h)
2) Programa principal on es realicen i comparen els sumatoris (##Sumas.cpp).
Nota Molt Important
Avanç de poder començar a realitzar qualsevol de les pràctiques es necessari presentar les fulles de especificació de programes (documentació de programes) amb les tasques que es van a realitzar en la pràctica, explicant breument com es van a solventar els problemes que es plantetjen.
ENTREGA DE PROGRAMES:
Al començar la sesió de pràctiques del 27 de Març al 4 d’Abril.