lunes, 2 de julio de 2007

Ejemplo de Funciones Básicas en C#

Este es un ejemplo sencillo de como crear funciones en C#, utilizando un sencilla calculadora con 2 cuadros de texto, cada uno para un operando, 1 cuadro de texto para el resultado y 4 botones para los operadores suma, resta, multiplicación y división.

Así mismo, se muestra el uso de los Try-Catchs para evitar errores como la inserción de caracteres inválidos u operaciones con valores nulos.

Este ejemplo esta dirigido a principiantes en esto de la programación.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;


namespace Funciones
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void bt_suma_Click(object sender, EventArgs e)
{

//Utilizamos un Try-Catch para evitar errores, por ejemplo, que se deje vacia una caja de texto o se ingresen caracteres incorrectos

try
{

//Declaramos una variable que almacenara el resultado que regrese de la funcion llamada "suma"
//Si no enviamos ningun parametro, entonces solo se colocan los parentesis vacios


string res = suma();

//La funcion "suma" evalua y devuelve un resultado que es almacenado en la cadena "res"

txt_res.Text = res;

//Y "res" es asignada a la propiedad Texto de la caja de texto llamada "txt_res", presentando el resultado
}
catch
{

//Si existe error, se mostrara un mensaje y no se cerrara la aplicacion

MessageBox.Show("Por favor, ingrese correctamente los valores a evaluar","Error en Tiempo de Ejecución",MessageBoxButtons.OK, MessageBoxIcon.Error,MessageBoxDefaultButton.Button1);

//Limpiamos las cajas de texto con el metodo clear

txt_1.Clear();
txt_2.Clear();
txt_res.Clear();

}
}

private void bt_resta_Click(object sender, EventArgs e)
{

//Utilizamos un Try-Catch para evitar errores, por ejemplo, que se deje vacia una caja de texto o se ingresen caracteres incorrectos

try
{

//Declaramos una variable que almacenara el resultado que regrese de la funcion llamada "resta"
//Si no enviamos ningun parametro, entonces solo se colocan los parentesis vacios


string res = resta();

//La funcion "resta" evalua y devuelve un resultado que es almacenado en la cadena "res"

txt_res.Text = res;

//Y "res" es asignada a la propiedad Texto de la caja de texto llamada "txt_res", presentando el resultado
}
catch
{

//Si existe error, se mostrara un mensaje y no se cerrara la aplicacion

MessageBox.Show("Por favor, ingrese correctamente los valores a evaluar", "Error en Tiempo de Ejecución", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);

//Limpiamos las cajas de texto con el metodo clear

txt_1.Clear();
txt_2.Clear();
txt_res.Clear();
}
}

private void bt_multi_Click(object sender, EventArgs e)
{

//Utilizamos un Try-Catch para evitar errores, por ejemplo, que se deje vacia una caja de texto o se ingresen caracteres incorrectos

try
{

//Declaramos una variable que almacenara el resultado que regrese de la funcion llamada "multi"
//Si no enviamos ningun parametro, entonces solo se colocan los parentesis vacios


string res = multi();

//La funcion "multi" evalua y devuelve un resultado que es almacenado en la cadena "res"

txt_res.Text = res;

//Y "res" es asignada a la propiedad Texto de la caja de texto llamada "txt_res", presentando el resultado
}
catch
{
//Si existe error, se mostrara un mensaje y no se cerrara la aplicacion

MessageBox.Show("Por favor, ingrese correctamente los valores a evaluar", "Error en Tiempo de Ejecución", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);

//Limpiamos las cajas de texto con el metodo clear

txt_1.Clear();
txt_2.Clear();
txt_res.Clear();
}
}

private void bt_div_Click(object sender, EventArgs e)
{

//Utilizamos un Try-Catch para evitar errores, por ejemplo, que se deje vacia una caja de texto o se ingresen caracteres incorrectos

try
{

//Declaramos una variable que almacenara el resultado que regrese de la funcion llamada "div"
//Si no enviamos ningun parametro, entonces solo se colocan los parentesis vacios

string res = div();

//La funcion "div" evalua y devuelve un resultado que es almacenado en la cadena "res"

txt_res.Text = res;

//Y "res" es asignada a la propiedad Texto de la caja de texto llamada "txt_res", presentando el resultado
}
catch
{
//Si existe error, se mostrara un mensaje y no se cerrara la aplicacion

MessageBox.Show("Por favor, ingrese correctamente los valores a evaluar", "Error en Tiempo de Ejecución", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);

//Limpiamos las cajas de texto con el metodo clear

txt_1.Clear();
txt_2.Clear();
txt_res.Clear();

}
}


string suma()

//Funcion "suma"`para sumar dos valores
{

//Se declaran dos variables tipo double, "no_1" y "no_2" cuyos valores seran asignados de los valores
//que el usuario ingrese en las cajas de texto. Al asignarlos, los convertimos a tipo double
mediante Convert.ToDouble()

double no_1 = Convert.ToDouble(txt_1.Text);
double no_2 = Convert.ToDouble(txt_2.Text);

//Retornamos a donde fue llamada la funcion, la suma de "no_1" y "no_2"
//Se le concatena un espacio en blanco para que el valor sea enviado en formato de cadena, ya que la variable que almacenara
//el resultado ("res") es de tipo Cadena


return (no_1 + no_2)+ "";
}


string resta()

//Funcion "resta"`para sumar dos valores
{

//Se declaran dos variables tipo double, "no_1" y "no_2" cuyos valores seran asignados de los valores
//que el usuario ingrese en las cajas de texto. Al asignarlos, los convertimos a tipo double mediante Convert.ToDouble()

double no_1 = Convert.ToDouble(txt_1.Text);
double no_2 = Convert.ToDouble(txt_2.Text);

//Retornamos a donde fue llamada la funcion, la resta de "no_1" y "no_2"
//Se le concatena un espacio en blanco para que el valor sea enviado en formato de cadena, ya que la variable que almacenara
//el resultado ("res") es de tipo Cadena

return (no_1 - no_2) + "";
}

string multi()
//Funcion "multi"`para sumar dos valores
{
//Se declaran dos variables tipo double, "no_1" y "no_2" cuyos valores seran asignados de los valores
//que el usuario ingrese en las cajas de texto. Al asignarlos, los convertimos a tipo double mediante Convert.ToDouble()

double no_1 = Convert.ToDouble(txt_1.Text);
double no_2 = Convert.ToDouble(txt_2.Text);

//Retornamos a donde fue llamada la funcion, la multiplicacion de "no_1" y "no_2"
//Se le concatena un espacio en blanco para que el valor sea enviado en formato de cadena, ya que la variable que almacenara
//el resultado ("res") es de tipo Cadena

return (no_1 * no_2) + "";
}


string div()
//Funcion "div"`para sumar dos valores
{

//Se declaran dos variables tipo double, "no_1" y "no_2" cuyos valores seran asignados de los valores
//que el usuario ingrese en las cajas de texto. Al asignarlos, los convertimos a tipo double mediante Convert.ToDouble()


double no_1 = Convert.ToDouble(txt_1.Text);
double no_2 = Convert.ToDouble(txt_2.Text);

//Retornamos a donde fue llamada la funcion, la division de "no_1" y "no_2"
//Se le concatena un espacio en blanco para que el valor sea enviado en formato de cadena, ya que la variable que almacenara
//el resultado ("res") es de tipo Cadena

return (no_1 / no_2) + "";
}
}
}


2 comentarios:

Julius dijo...

Excelente ejemplo, solo una pequenia observacion, las funciones sume, resta, multiplicacion y division puedes hacerlas mas genericas,como?
Las funciones no reciben parametros en su lugar tomas los valores de los text dentro de las funciones, esto te ahorrara mucho codigo mas o menos esta seria una funcion
public double Suma(double x, double y)
{
return (x + y);
}


Mas facil no??

BooM dijo...

Oye Mocito, si puedes publicar algo de Java se te agradeceria, y si es Subversion y JUnit test estaria mejor... Muy buen ejemplo, solo que como recomendacion deberias de cambiar el color de la letra...
Good Luck :)