Escolar Documentos
Profissional Documentos
Cultura Documentos
CALCULADORA CIENTÍFICA EN C#
INTRODUCCIÓN
A través de este manual se pretende que el lector sea capaz de realizar
en Visual Studio 2013 una calculadora científica gráfica similar a la
calculadora integrada en Windows. Es por esto que aquí listaremos el
procedimiento usado para desarrollar esta aplicación de una manera fácil y
sencilla para que cualquier persona con conocimientos básicos de C# que lea
este manual pueda hacerlo.
COMENZANDO LA APLICACIÓN
Lo primero que debemos hacer es crear un nuevo proyecto en Visual
Studio 2013 como Windows Forms Application y asignarle un nombre a este.
Una vez que hemos creado este nuevo proyecto, se verá una ventana en
blanco, en la cual procederemos a diseñar nuestra calculadora.
DISEÑO DE LA CALCULADORA
En esta sección veremos cómo se diseña la interface de usuario de la
calculadora, de tal forma en que se vea como en la Figura 1.
Lo primero que debemos hacer es buscar que las propiedades de
nuestra ventana se asemejen a las de la aplicación Calculadora de Windows. Si
una persona abre la Calculadora, uno puede notar como esta no puede
maximizarse ni cambiarse de tamaño. Para realizar estas modificaciones a
nuestra ventana, buscaremos la propiedad, que se encuentra en la sección
Properties en la parte inferior derecha, llamada Maximize y modificaremos en
donde dice True, a False. Así mismo, para cambiar el hecho de que el usuario
pueda modificar la forma y el tamaño de la ventana, buscaremos la propiedad
llamada FormBorderStyle, y en vez de que esta diga Sizable la cambiaremos a
FixedDialog.
El siguiente paso es agregarle un ícono a nuestra aplicación, así como
cambiar el nombre que aparece en la parte superior de nuestra ventana. Para
cambiar el nombre de la parte superior, buscaremos la propiedad Text y en
donde dice Form 1, lo cambiaremos por el nombre deseado. Ahora, lo que
haremos es cambiar el ícono de nuestra aplicación, para esto es necesario
contar con una imagen de tipo .ico, las cuales pueden ser fácilmente
encontradas en Internet. Después lo que haremos es buscar la propiedad
llamada Icon, y daremos clic en el botón con tres puntos, lo cual nos permitirá
Figura 1
numero1 = resultValue;
numero2 = Double.Parse(txtDisplay.Text);
//Casos en los que se ejecutan los métodos establecidos en la clase de operaciones
switch(operationPerformed)
{
case "+":
txtDisplay.Text = (Oper.Suma(numero1, numero2).ToString());
break;
case "-":
txtDisplay.Text = (Oper.Resta(numero1, numero2).ToString());
break;
case "x":
txtDisplay.Text = (Oper.Multiplicacion(numero1, numero2).ToString());
break;
case "÷":
txtDisplay.Text = (Oper.Division(numero1, numero2).ToString());
break;
case "√":
txtDisplay.Text = (Oper.Raiz(numero2).ToString());
break;
case "Mod":
txtDisplay.Text = (Oper.Modulo(numero1, numero2).ToString());
break;
case "1/x":
txtDisplay.Text = (Oper.Inverso(numero2).ToString());
break;
case "!":
txtDisplay.Text = (Oper.Factorial(numero2).ToString());
break;
case "±":
txtDisplay.Text = (Oper.Signo(numero2).ToString());
break;
case "x²":
txtDisplay.Text = (Oper.Cuadrado(numero2).ToString());
break;
case "x^y":
txtDisplay.Text = (Oper.Potencia(numero1, numero2).ToString());
break;
case "x³":
txtDisplay.Text = (Oper.Cubo(numero2).ToString());
break;
case "log":
txtDisplay.Text = (Oper.Logaritmo(numero2).ToString());
break;
case "ln":
txtDisplay.Text = (Oper.Logn(numero2).ToString());
break;
case "y√":
txtDisplay.Text = (Oper.Raizx(numero1, numero2).ToString());
break;
case "³√":
txtDisplay.Text = (Oper.RaizCubo(numero2).ToString());
break;
case "10^x":
txtDisplay.Text = (Oper.Diez(numero2).ToString());
break;
case "sin":
txtDisplay.Text = (Oper.Sin(numero2, Radians).ToString());
break;
case "cos":
txtDisplay.Text = (Oper.Cos(numero2, Radians).ToString());
break;
case "tan":
txtDisplay.Text = (Oper.Tan(numero2, Radians).ToString());
break;
case "sinh":
txtDisplay.Text = (Oper.Sinh(numero2, Radians).ToString());
break;
case "cosh":
txtDisplay.Text = (Oper.Cosh(numero2, Radians).ToString());
break;
case "tanh":
txtDisplay.Text = (Oper.Tanh(numero2, Radians).ToString());
break;
case "Exp":;
txtDisplay.Text = (Oper.Exp(numero2).ToString());
break;
default:
break;
}
resultValue = Double.Parse(txtDisplay.Text);
LabelOperations.Text = "";
}
OPERACIONES
En esta sección, se trabajará con la realización de cada una de las
operaciones que hace nuestra calculadora. Para esto, crearemos una nueva
clase que contendrá todos los diferentes métodos que se realizan para obtener
los resultados de cada operación. Para crear una nueva clase, simplemente
tenemos que buscar en la parte derecha en SolutionExplorer donde diga C# +
Nombre del proyecto, y dar clic derecho y en menú que se despliega dar clic en
Add y después en Class y le daremos el nombre Operaciones.
Una vez que hemos creado nuestra nueva clase, crearemos primero que nada
una nueva variable llamada angle tipo double. Después crearemos un método
diferente para cada operación, todos los métodos serán de la forma public
double Nombre del método(variables utilizadas desde la clase principal). Una vez
creado el método para todas las operaciones, con excepción de las funciones
trigonométricas, se utilizara la expresión return para que ese valor sea
regresado a la clase principal y se desplieguen los resultados. En el caso de
las funciones trigonométricas se colocará un if que establezca que si Radians
es igual a false, entonces angle sea la conversión de grados a radianes, para
que así se realice la operación correctamente y si no se utilice el numero
insertado.
A continuación se presenta una tabla con cada una de las operaciones y como
expresarlas en lenguaje de C#.
Operación Expresión en C#
Suma numero1 + numero2
Resta numero1 - numero2
Multiplicación numero1 * numero2
División numero1 / numero2
Módulo numero1 +% numero2
Raíz Math.Sqrt(numero2)
Inverso 1/numero2
Cambio de Signo -1* numero2
Cuadrado Math.Pow(numero2, 2)
Potencia Math.Pow(numero1, numero2)
Cubo Math.Pow(numero2, 3)
Logaritmo Math.Log10(numero2)
Logaritmo natural Math.Log(numero2, Math.E)
Raíz de y Math.Pow(numero1, (1.0/numero2)
Raíz cúbica Math.Pow(numero2, 3)
Potencia de 10 Math.Pow(10, numero2)
Seno Math.Sin(numero2 ó angle)
Coseno Math.Cos(numero2 ó angle)
Tangente Math.Tan(numero2 ó angle)
Seno hiperbólico Math.Sinh(numero2 ó angle)
Coseno hiperbólico Math.Cosh(numero2 ó angle)
Tangente hiperbólica Math.Tanh(numero2 ó angle)
Exponencial Math.Exp(numero2)
Así mismo, aquí se puede observar el código terminado para todas las
operaciones.
class Operaciones
{
double angle;
//Suma
public double Suma(double numero1, double numero2)
{
return (numero1 + numero2);
}
//Resta
public double Resta(double numero1, double numero2)
{
return (numero1 - numero2);
}
//Multiplicacion
public double Multiplicacion(double numero1, double numero2)
{
return (numero1 * numero2);
}
//Division
public double Division(double numero1, double numero2)
{
return (numero1 / numero2);
}
//Modulo
public double Modulo(double numero1, double numero2)
{
return (numero1 % numero2);
}
//Raiz
public double Raiz(double numero2)
{
return (Math.Sqrt(numero2));
}
//Inverso
//Factorial
static int Factor (int x)
{
if (x <= 1)
return (1);
else
return (x * Factor(x - 1));
}
//Cuadrado
public double Cuadrado(double numero2)
{
return (Math.Pow(numero2,2));
}
//Potencia
public double Potencia(double numero1, double numero2)
{
return (Math.Pow(numero1, numero2));
}
//Cubo
public double Cubo(double numero2)
{
return (Math.Pow(numero2, 3));
}
//Logaritmo
public double Logaritmo(double numero2)
{
return (Math.Log10(numero2));
}
//Logaritmo natural
public double Logn(double numero2)
{
return (Math.Log(numero2,(Math.E)));
}
//Raiz x
public double Raizx(double numero1, double numero2)
{
return (Math.Pow(numero1,1.0/numero2));
}
//Raiz cubica
public double RaizCubo(double numero2)
{
return (Math.Pow(numero2,(1.0/3.0)));
}
//Potencia 10
public double Diez(double numero2)
{
//Seno
public double Sin(double numero2, bool Radians)
{
if (Radians == false)
{
angle = ((Math.PI) * numero2) / 180.0;
return Math.Sin(angle);
}
else
{
return Math.Sin(numero2);
}
}
//Coseno
public double Cos(double numero2, bool Radians)
{
if (Radians == false)
{
angle = ((Math.PI) * numero2) / 180.0;
return Math.Cos(angle);
}
else
{
return Math.Cos(numero2);
}
}
//Tangente
public double Tan(double numero2, bool Radians)
{
if (Radians == false)
{
angle = ((Math.PI) * numero2) / 180.0;
return Math.Tan(angle);
}
else
{
return Math.Tan(numero2);
}
}
//Senoh
public double Sinh(double numero2, bool Radians)
{
if (Radians == false)
{
angle = ((Math.PI) * numero2) / 180.0;
return Math.Sinh(angle);
}
else
{
return Math.Sinh(numero2);
}
}
//Cosenoh
public double Cosh(double numero2, bool Radians)
{
if (Radians == false)
{
angle = ((Math.PI) * numero2) / 180.0;
return Math.Cosh(angle);
}
else
{
return Math.Cosh(numero2);
}
}
//Tangenteh
public double Tanh(double numero2, bool Radians)
{
if (Radians == false)
{
angle = ((Math.PI) * numero2) / 180.0;
return Math.Tanh(angle);
}
else
{
return Math.Tanh(numero2);
}
}
//Exp
public double Exp( double numero2)
{
return (Math.Exp(numero2));
}