Bienvenidos sean, este post es para comentarles y mostrarles mi primer programa realizado gracias a lo que fui aprendiendo de C++ para Linux. Es un simple programa  convertidor de valores de cm a pulgadas y viceversa, tambien permite volver a calcular otros valores mas y sino finalizar el programa. En este programa use clases y objetos, el condicional if, valores predeterminados y el do….while. Les muestro el codigo fuente para que vayan estudiandolo y si les resulta practico poder utilizarlo:

# include <iostream>

using namespace std;

class Unidades
{
public:
Unidades();
~Unidades(){}
float Convertir(float valorConv, bool idx = false);
float ObtenerValor();
private:
float valor;
};

Unidades::Unidades():
valor(0)
{}

float Unidades::Convertir(float valorConv, bool idx){
if (idx == false)
{
valor=valorConv / 2.54;
} else {
valor=valorConv * 2.54;
}
}

float Unidades::ObtenerValor(){
return valor;
}

int main()
{
float x;
int cnv;
string q;
Unidades a;
do
{
cout << “Ingresa el numero: “;
cin >> x;
cout << “Elige 1 – De cm a inch. 2 – De inch a cm: “;
cin >> cnv;
if (cnv == 1)
{
a.Convertir(x,false);
} else {
a.Convertir(x,true);
}
cout << a.ObtenerValor() << endl;
cout << “Deseas recalcular otro (s/n): “;
cin >> q;
}
while(q!=”n”);
cout << “Gracias por utilizarlo.” << endl;
return 0;
}

En el ejemplo cree una clase que se llama Unidades, esta a su vez tiene los metodos Convertir y ObtenerValor. Trabaje con flotantes (float) porque la conversion se tiene que hacer con el valor 2,54 y esto no iba a funcionar si utilizabamos enteros (int), genere los constructores y destructores pertinentes, declare las dos funciones a utilizarse, si observan a Convertir le asigne un valor predeterminado para el boolean (false), y finalmente utilizo un variable privada llamada valor que sera la receptora del resultado de la conversion. Pasemos a las definiciones, el constructor inicializo a la variable valor con cero, y a la hora de definir Convertir, utilizo un IF para verificar el valor del boolean y asignar la accion correspondiente, ya sea convertir de centimetros a pulgadas o de pulgadas a centimetros, procede al calculo y luego lo asigna a valor. Con el metodo de ObtenerValor se obtiene el dato que tiene asignado valor. Analicemos a main, declaramos un valor flotante llamado x, es el encargado de recibir el valor a convertir, un valor entero llamado cnv, es el que va a decir el tipo de conversion (de cm a in o de in a cm), y un valor de cadena (string) llamado q, el va a ser el encargado de verificar si queremos convertir otro valor o no. El tipo string, creo no haberlo explicado, es un tipo de dato que permite almacenar cadenas de texto en una variable, esto es util si necesitamos almacenar datos como nombres, descripciones, en fin todo aquello que no sea un numero. Creamos el objeto de la clase Unidades, en este caso lo asignamos como a, despues de esta creacion iniciamos el ciclo do, para luego preguntar el valor que vamos a convertir (esto se almacena en x), ahora preguntamos que tipo de conversion (esto se almacena en cnv), verificamos el tipo de conversion y llamamos al metodo que corresponda, este lo procesa y lo asigna a la variable valor, luego llamamos al metodo ObtenerValor y este nos devuelve el dato calculado que esta almacenado en valor, para finalmente llegar a la pregunta de si deseas calcular otro valor, en caso de ser afirmativo, asignamos el valor s a la variable q, este es chequeada por el while y como cumple la condicion de ser distinta de n, vuelve al principio del bucle para efectuar otro calculo, en caso de que digamos n (por no), este termina el ciclo nos escribe un mensaje de salida y sale del programa, les dejo un ejemplo de salida:

Ingresa el numero: 20
Elige 1 – De cm a inch. 2 – De inch a cm: 1
7.87402
Deseas recalcular otro (s/n): s
Ingresa el numero: 20
Elige 1 – De cm a inch. 2 – De inch a cm: 2
50.8
Deseas recalcular otro (s/n): n
Gracias por utilizarlo.

Vean como muestra los dos valores calculados, y como el ciclo se puede repetir infinitamente siempre y cuando el valor de la tercer pregunta no sea n. Me olvide comentar algo, en el caso de cuando queremos verificar el tipo de conversion, en el if hago que llame a Convertir, con false si tiene valor uno de lo contrario con true, y en realidad este false no es necesario dado que lo asigne como valor predeterminado en la declaracion de la clase, o sea si hubiera quedado en blanco el programa tambien lo hubiera considerado como false, haciendo exactamente la misma funcion.
Espero que les haya gustado, es un programita bien simple donde pude poner en practica parte del aprendizaje hasta ahora, en el texto inicial estan los links a los posts que escribi sobre esos temas. Nos veremos en el proximo.

Anuncios