SlideShare una empresa de Scribd logo
2
Lo más leído
3
Lo más leído
4
Lo más leído
http://www.iseron.com


                                  CALCULADORA EN C#
       El objetivo de este software es la creación de una pequeña calculadora con fines educativos.
       Tampoco se busca la eficiencia de la misma, por lo que no se ha creado un control de
excepciones real ni una POO como tal.
       La idea original es introducir a alumnos de ESO o Bachillerato en el mundo de la
programación y ver una pequeña traza de lo que se hace. Uso de labels y textbox, así como los
cálculos matemáticos sencillos y uso de las estructuras de control básicas (if, if-else, switch, etc.).
       El programa tiene dos funciones principales (entre otras): AddDato() y opera().
       La primera función se encarga de revisar el valor introducido, y en caso de tener que realizar
una operación matemática, lo que hará es llamar a la función opera() para que la realice.
        Inicialmente no se ha pensado introducir funciones trigonométricas, aunque sería simplemente
usar las propias de la librería Math.
        En la primera versión se usaron tipos de dato double, sin embargo, debido a la limitación de
los mismos y de los problemas que repercutían en algunas operaciones matemáticas, se pasó a
realizar las mismas con el tipo de dato Decimal.
      Expresar que los valores no se expresan en grupos, es decir, el formato es del tipo
"######,####" usando una "," (coma) como elemento decimal.
       En el presente documento se expondrá sólo el archivo MainForm.cs, para descargar la
solución completa pulse en alguno de los siguientes enlaces: calculadora.rar o calculadora.zip.


/*
 * Bajo licencia Creative Commons, Attribution: Jose Santiago Jiménez Sarmiento
(www.iseron.com)
 * Fecha: 28/05/2006
 * Fecha última modificación: 09/03/2009
 * Versión: 3.0
 *
 * Objetivo: El objetivo de este software es la creación de una pequeña
 *           calculadora con fines educativos.
 *           Tampoco se busca la eficiencia de la misma, por lo que no se ha
 *           creado un control de excepciones real ni una POO como tal.
 *           La idea original es introducir a alumnos de ESO o Bachillerato en
 *           el mundo de la programación y ver
 *           una pequeña traza de lo que se hace. Uso de labels y textbox, así
 *           como los cálculos matemáticos sencillos
 *           y uso de las estructuras de control básicas (if, if-else, switch,
 *           etc.).
 *
 *           El programa tiene dos funciones principales (entre otras):
 *           AddDato() y opera().
 *           La primera función se encarga de revisar el valor introducido, y en
 *           caso de tener que realizar
 *           una operación matemática, lo que hará es llamar a la función
 *           opera() para que la realice.
 *
 *           Inicialmente no se ha pensado introducir funciones trigonométricas,
 *           aunque sería simplemente


                                                  1
http://www.iseron.com

 *           usar las propias de la librería Math.
 *
 *           En la primera versión se usaron tipos de dato double, sin embargo,
 *           debido a la limitación de los mismos
 *           y de los problemas que repercutían en algunas operaciones
 *           matemáticas, se pasó a realizar las mismas con
 *           el tipo de dato Decimal.
 *
 *           Expresar que los valores no se expresan en grupos, es decir, el
 *           formato es del tipo "######,####" usando
 *           una "," como elemento decimal.
 *
 * Editors and compilers: SharpDevelop, MonoDevelop o MS Visual C# 2008 Express
 */

using   System;
using   System.Collections.Generic;
using   System.Drawing;
using   System.Windows.Forms;

namespace calculadora
{
      /// <summary>
      /// Description of MainForm.
      /// </summary>
      public partial class MainForm
      {
            // Se usa cada vez que queramos iniciar el valor en lbVisor
            private bool empieza = true;

             [STAThread]
             public static void Main(string[] args)
             {
                   Application.EnableVisualStyles();
                   Application.SetCompatibleTextRenderingDefault(false);
                   Application.Run(new MainForm());
             }

             public MainForm()
             {
                   //
                   // The InitializeComponent() call is required for Windows
                   // Forms designer support.
                   //
                   InitializeComponent();

                   //
                   // TODO: Add constructor code after the InitializeComponent()
                   // call.
                   //
             }

             /// <summary>
             /// Encargada de controlar las operaciones (suma, resta, ...)
             /// sobre los valores que deben encontrarse en lbVisor,
             /// lbUltOp y lbdatoanterior.
             /// </summary>
             /// <param name="op">Operación a realizar (+, -, =, ...)</param>
             void opera(string op) {


                                         2
http://www.iseron.com

     decimal dato_d = System.Convert.ToDecimal(lbVisor.Text);

     if (lbdatoanterior.Text == "") {
           lbdatoanterior.Text = lbVisor.Text;
           empieza = true;
           if (op != "=") lbUltOp.Text = op;
           return;
     }
     decimal dato_a = System.Convert.ToDecimal(lbdatoanterior.Text);
     string op_real = "";

     empieza = true;
     if (op == "=") op_real = lbUltOp.Text;
     else op_real = op;

     switch (op_real) {
           case "+": dato_a += dato_d;      break;

           case "-": dato_a -= dato_d;      break;

           case "*": dato_a *= dato_d;      break;

           case "/":
                 if (dato_d == 0) {
                   MessageBox.Show("No se puede dividir entre 0");
                   return;
                 }
                 dato_a /= dato_d;
                 break;

           case "^":
                 dato_a = System.Convert.ToDecimal(
                          Math.Pow(System.Convert.ToDouble(dato_a),
                                 System.Convert.ToDouble(dato_d)));
                 break;

           case "v¯":
                 dato_a = System.Convert.ToDecimal(
                       Math.Sqrt(System.Convert.ToDouble(dato_d)));
                  break;
     }
     lbdatoanterior.Text = dato_a.ToString();

     if (op == "=") {
           lbUltOp.Text = "";
           lbVisor.Text = lbdatoanterior.Text;
           lbdatoanterior.Text = "";
     }
     else lbUltOp.Text = op_real;
}

/// <summary>
/// Controla el dato al pulsar un botón y según este,
/// llama a la función "opera" o introduce el valor
/// en el lbVisor
/// </summary>
/// <param name="dato">Acción del botón pulsado</param>
void AddDato(string dato)
{


                              3
http://www.iseron.com

       if ((dato == ",") && (lbVisor.Text.Contains(","))) return;
       if ((dato == "+") || (dato == "-") || (dato == "*") ||
           (dato == "/") || (dato == "=") || (dato == "^") ||
           (dato == "v¯")) {
                   opera(dato);
                   return;
       }

       if ((lbVisor.Text == "0") || empieza) {
             lbVisor.Text = dato;
             empieza = false;
       }
       else lbVisor.Text += dato;
}

void   Bt0Click(object   sender,   System.EventArgs   e)   {   AddDato("0");     }
void   Bt1Click(object   sender,   System.EventArgs   e)   {   AddDato("1");     }
void   Bt2Click(object   sender,   System.EventArgs   e)   {   AddDato("2");     }
void   Bt3Click(object   sender,   System.EventArgs   e)   {   AddDato("3");     }
void   Bt4Click(object   sender,   System.EventArgs   e)   {   AddDato("4");     }
void   Bt5Click(object   sender,   System.EventArgs   e)   {   AddDato("5");     }
void   Bt6Click(object   sender,   System.EventArgs   e)   {   AddDato("6");     }
void   Bt7Click(object   sender,   System.EventArgs   e)   {   AddDato("7");     }
void   Bt8Click(object   sender,   System.EventArgs   e)   {   AddDato("8");     }
void   Bt9Click(object   sender,   System.EventArgs   e)   {   AddDato("9");     }

void BtDecimalClick(object sender, System.EventArgs e) {AddDato(",");}
void   BtporClick(object sender, System.EventArgs e) { AddDato("*"); }
void   BtentreClick(object sender, System.EventArgs e) {AddDato("/");}
void   BtmenosClick(object sender, System.EventArgs e) {AddDato("-");}
void   BtmasClick(object sender, System.EventArgs e) { AddDato("+"); }
void   BtIgualClick(object sender, System.EventArgs e) {AddDato("=");}
void   BtElevarClick(object sender, System.EventArgs e) {AddDato("^");}
void   BtRaizCuadradaClick(object sender, System.EventArgs e)
                                                     { AddDato("v¯"); }

/// <summary>
/// Encargada de inicializar todo a su valor por defecto
/// para poder empezar un nuevo cálculo
/// </summary>
void BtBorrarTodoClick(object sender, System.EventArgs e)
{
      lbVisor.Text = "0";
      lbdatoanterior.Text = "";
      lbUltOp.Text = "";
      empieza = true;
}

/// <summary>
/// Si nos equivocamos... podemos quitar el
/// último dígito.
/// </summary>
void BtAtrasClick(object sender, System.EventArgs e)
{
    if (lbVisor.Text.Length == 1) lbVisor.Text = "0";
    else lbVisor.Text = lbVisor.Text.Substring(0,lbVisor.Text.Length-1);
}




                                   4
http://www.iseron.com


           private void linkLabel1_LinkClicked(object sender,
                                               LinkLabelLinkClickedEventArgs e)
           {
               System.Diagnostics.Process.Start("http://www.iseron.com/");
           }
       }
}



Como se podrá observar, las dos funciones principales tienen una coloración de fondo diferente, ya
que es ahí donde se concentran todo el núcleo de la aplicación.




                                                 5

Más contenido relacionado

PDF
7. Utilización de mecanismos de comunicación asíncrona
PDF
6. Utilización del modelo de objetos del documento (DOM)
PDF
4. Programación con arrays, funciones, y objetos definidos por el usuario
PDF
Ejercicios de programacion concurrente
PDF
2. Manejo de la sintaxis del lenguaje
PDF
3. Utilización de los objetos predefinidos del lenguaje
PDF
5. Interacción con el usuario: eventos y formularios
PPT
FUNCIONES LENGUAJE C
7. Utilización de mecanismos de comunicación asíncrona
6. Utilización del modelo de objetos del documento (DOM)
4. Programación con arrays, funciones, y objetos definidos por el usuario
Ejercicios de programacion concurrente
2. Manejo de la sintaxis del lenguaje
3. Utilización de los objetos predefinidos del lenguaje
5. Interacción con el usuario: eventos y formularios
FUNCIONES LENGUAJE C

La actualidad más candente (19)

PDF
Ejercicios en Netbeans
PDF
Funciones y procedimientos
PDF
Capítulo 6 funciones y procedimiento
PDF
PDF
Introducción a las funciones en el lenguaje C
PDF
2 interfaces graficas_de_usuario (1)
DOCX
Metodologia para resolver problemas con Programacion orientada a Objetos
PPTX
Agregación Composición
PDF
Punteros a Funciones en C
DOCX
FUNCIONES EN LENGUAJE C
PPTX
Funciones C++ modificado
PPT
Funciones en C++
PDF
Pqueues
PDF
Pila dinamica y pila estatica
DOC
P R A C T I C A2
Ejercicios en Netbeans
Funciones y procedimientos
Capítulo 6 funciones y procedimiento
Introducción a las funciones en el lenguaje C
2 interfaces graficas_de_usuario (1)
Metodologia para resolver problemas con Programacion orientada a Objetos
Agregación Composición
Punteros a Funciones en C
FUNCIONES EN LENGUAJE C
Funciones C++ modificado
Funciones en C++
Pqueues
Pila dinamica y pila estatica
P R A C T I C A2
Publicidad

Destacado (11)

ODP
Software LIbre
PPTX
Game Development
PPTX
Develop android application with mono for android
PPTX
Monkey space 2013
PDF
Wtl 개요와 설치
PDF
GUI desde un proyecto blanco con Sharp Develop
PPTX
MsgPack 정리
PDF
Creando un bot sobre Google Cloud Platform
PPT
Componentes en-poo
PDF
Sintaxis Java
PPTX
Tópicos avanzados de programación eventos
Software LIbre
Game Development
Develop android application with mono for android
Monkey space 2013
Wtl 개요와 설치
GUI desde un proyecto blanco con Sharp Develop
MsgPack 정리
Creando un bot sobre Google Cloud Platform
Componentes en-poo
Sintaxis Java
Tópicos avanzados de programación eventos
Publicidad

Similar a C# calculadora (20)

PDF
Calculadora
PDF
calculadora en c sharp
PPTX
Ejercicios
PDF
Pasos para crear calculadora en c# rivera y g
DOCX
Analisis programacion de pc.
PDF
Tutorial De Proyecto para calcular salario de vacaciones y aguinaldo
TXT
Proyecto final calculadora
DOC
Actividad Vb0506
PDF
Elemento n3
PPTX
Manual de usuario para visual basic 6.0... sldo santelices
PPTX
Manual de usuario para visual basico
PPT
4 variables, arreglos, estructuras y enum
PDF
Practica 02-taller-de-programacion-121226180145-phpapp02
PDF
Taller app inventor
DOCX
Ejemplos de pseudocódigo
DOCX
Calculadora
DOCX
Lenguaje de programación
PDF
Diagrama
PDF
Computacion v studio 2010 - 02
Calculadora
calculadora en c sharp
Ejercicios
Pasos para crear calculadora en c# rivera y g
Analisis programacion de pc.
Tutorial De Proyecto para calcular salario de vacaciones y aguinaldo
Proyecto final calculadora
Actividad Vb0506
Elemento n3
Manual de usuario para visual basic 6.0... sldo santelices
Manual de usuario para visual basico
4 variables, arreglos, estructuras y enum
Practica 02-taller-de-programacion-121226180145-phpapp02
Taller app inventor
Ejemplos de pseudocódigo
Calculadora
Lenguaje de programación
Diagrama
Computacion v studio 2010 - 02

C# calculadora

  • 1. http://www.iseron.com CALCULADORA EN C# El objetivo de este software es la creación de una pequeña calculadora con fines educativos. Tampoco se busca la eficiencia de la misma, por lo que no se ha creado un control de excepciones real ni una POO como tal. La idea original es introducir a alumnos de ESO o Bachillerato en el mundo de la programación y ver una pequeña traza de lo que se hace. Uso de labels y textbox, así como los cálculos matemáticos sencillos y uso de las estructuras de control básicas (if, if-else, switch, etc.). El programa tiene dos funciones principales (entre otras): AddDato() y opera(). La primera función se encarga de revisar el valor introducido, y en caso de tener que realizar una operación matemática, lo que hará es llamar a la función opera() para que la realice. Inicialmente no se ha pensado introducir funciones trigonométricas, aunque sería simplemente usar las propias de la librería Math. En la primera versión se usaron tipos de dato double, sin embargo, debido a la limitación de los mismos y de los problemas que repercutían en algunas operaciones matemáticas, se pasó a realizar las mismas con el tipo de dato Decimal. Expresar que los valores no se expresan en grupos, es decir, el formato es del tipo "######,####" usando una "," (coma) como elemento decimal. En el presente documento se expondrá sólo el archivo MainForm.cs, para descargar la solución completa pulse en alguno de los siguientes enlaces: calculadora.rar o calculadora.zip. /* * Bajo licencia Creative Commons, Attribution: Jose Santiago Jiménez Sarmiento (www.iseron.com) * Fecha: 28/05/2006 * Fecha última modificación: 09/03/2009 * Versión: 3.0 * * Objetivo: El objetivo de este software es la creación de una pequeña * calculadora con fines educativos. * Tampoco se busca la eficiencia de la misma, por lo que no se ha * creado un control de excepciones real ni una POO como tal. * La idea original es introducir a alumnos de ESO o Bachillerato en * el mundo de la programación y ver * una pequeña traza de lo que se hace. Uso de labels y textbox, así * como los cálculos matemáticos sencillos * y uso de las estructuras de control básicas (if, if-else, switch, * etc.). * * El programa tiene dos funciones principales (entre otras): * AddDato() y opera(). * La primera función se encarga de revisar el valor introducido, y en * caso de tener que realizar * una operación matemática, lo que hará es llamar a la función * opera() para que la realice. * * Inicialmente no se ha pensado introducir funciones trigonométricas, * aunque sería simplemente 1
  • 2. http://www.iseron.com * usar las propias de la librería Math. * * En la primera versión se usaron tipos de dato double, sin embargo, * debido a la limitación de los mismos * y de los problemas que repercutían en algunas operaciones * matemáticas, se pasó a realizar las mismas con * el tipo de dato Decimal. * * Expresar que los valores no se expresan en grupos, es decir, el * formato es del tipo "######,####" usando * una "," como elemento decimal. * * Editors and compilers: SharpDevelop, MonoDevelop o MS Visual C# 2008 Express */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace calculadora { /// <summary> /// Description of MainForm. /// </summary> public partial class MainForm { // Se usa cada vez que queramos iniciar el valor en lbVisor private bool empieza = true; [STAThread] public static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } public MainForm() { // // The InitializeComponent() call is required for Windows // Forms designer support. // InitializeComponent(); // // TODO: Add constructor code after the InitializeComponent() // call. // } /// <summary> /// Encargada de controlar las operaciones (suma, resta, ...) /// sobre los valores que deben encontrarse en lbVisor, /// lbUltOp y lbdatoanterior. /// </summary> /// <param name="op">Operación a realizar (+, -, =, ...)</param> void opera(string op) { 2
  • 3. http://www.iseron.com decimal dato_d = System.Convert.ToDecimal(lbVisor.Text); if (lbdatoanterior.Text == "") { lbdatoanterior.Text = lbVisor.Text; empieza = true; if (op != "=") lbUltOp.Text = op; return; } decimal dato_a = System.Convert.ToDecimal(lbdatoanterior.Text); string op_real = ""; empieza = true; if (op == "=") op_real = lbUltOp.Text; else op_real = op; switch (op_real) { case "+": dato_a += dato_d; break; case "-": dato_a -= dato_d; break; case "*": dato_a *= dato_d; break; case "/": if (dato_d == 0) { MessageBox.Show("No se puede dividir entre 0"); return; } dato_a /= dato_d; break; case "^": dato_a = System.Convert.ToDecimal( Math.Pow(System.Convert.ToDouble(dato_a), System.Convert.ToDouble(dato_d))); break; case "v¯": dato_a = System.Convert.ToDecimal( Math.Sqrt(System.Convert.ToDouble(dato_d))); break; } lbdatoanterior.Text = dato_a.ToString(); if (op == "=") { lbUltOp.Text = ""; lbVisor.Text = lbdatoanterior.Text; lbdatoanterior.Text = ""; } else lbUltOp.Text = op_real; } /// <summary> /// Controla el dato al pulsar un botón y según este, /// llama a la función "opera" o introduce el valor /// en el lbVisor /// </summary> /// <param name="dato">Acción del botón pulsado</param> void AddDato(string dato) { 3
  • 4. http://www.iseron.com if ((dato == ",") && (lbVisor.Text.Contains(","))) return; if ((dato == "+") || (dato == "-") || (dato == "*") || (dato == "/") || (dato == "=") || (dato == "^") || (dato == "v¯")) { opera(dato); return; } if ((lbVisor.Text == "0") || empieza) { lbVisor.Text = dato; empieza = false; } else lbVisor.Text += dato; } void Bt0Click(object sender, System.EventArgs e) { AddDato("0"); } void Bt1Click(object sender, System.EventArgs e) { AddDato("1"); } void Bt2Click(object sender, System.EventArgs e) { AddDato("2"); } void Bt3Click(object sender, System.EventArgs e) { AddDato("3"); } void Bt4Click(object sender, System.EventArgs e) { AddDato("4"); } void Bt5Click(object sender, System.EventArgs e) { AddDato("5"); } void Bt6Click(object sender, System.EventArgs e) { AddDato("6"); } void Bt7Click(object sender, System.EventArgs e) { AddDato("7"); } void Bt8Click(object sender, System.EventArgs e) { AddDato("8"); } void Bt9Click(object sender, System.EventArgs e) { AddDato("9"); } void BtDecimalClick(object sender, System.EventArgs e) {AddDato(",");} void BtporClick(object sender, System.EventArgs e) { AddDato("*"); } void BtentreClick(object sender, System.EventArgs e) {AddDato("/");} void BtmenosClick(object sender, System.EventArgs e) {AddDato("-");} void BtmasClick(object sender, System.EventArgs e) { AddDato("+"); } void BtIgualClick(object sender, System.EventArgs e) {AddDato("=");} void BtElevarClick(object sender, System.EventArgs e) {AddDato("^");} void BtRaizCuadradaClick(object sender, System.EventArgs e) { AddDato("v¯"); } /// <summary> /// Encargada de inicializar todo a su valor por defecto /// para poder empezar un nuevo cálculo /// </summary> void BtBorrarTodoClick(object sender, System.EventArgs e) { lbVisor.Text = "0"; lbdatoanterior.Text = ""; lbUltOp.Text = ""; empieza = true; } /// <summary> /// Si nos equivocamos... podemos quitar el /// último dígito. /// </summary> void BtAtrasClick(object sender, System.EventArgs e) { if (lbVisor.Text.Length == 1) lbVisor.Text = "0"; else lbVisor.Text = lbVisor.Text.Substring(0,lbVisor.Text.Length-1); } 4
  • 5. http://www.iseron.com private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { System.Diagnostics.Process.Start("http://www.iseron.com/"); } } } Como se podrá observar, las dos funciones principales tienen una coloración de fondo diferente, ya que es ahí donde se concentran todo el núcleo de la aplicación. 5