Creación de Métodos en C# para Operaciones Matemáticas
Ha llegado el momento de aprender a crear tus propios métodos para tus programas en C#. Una vez que domines esta habilidad no querrás dejarla por lo poderosa que puede ser.
Creando nuestro método
Lo primero que debemos hacer es iniciar un nuevo proyecto con nuestra clase base tal cual lo hemos hecho hasta ahora. Nombra tu proyecto MyMethods y tendrás un código como este:
using System;publicclassMyMethods{publicstaticvoidMain(){Console.WriteLine("Hello World");}}
Arriba del método Main() crea tu primer método siguiendo una estructura similar de la siguiente manera:
publicvoidIntegerAddition(int a, int b){ int Addition= a + b;Console.WriteLine("El resultado es "+Addition);}
Este método tiene el objetivo de sumar dos números enteros. Para ello dentro de los paréntesis se incluyeron dos parámetros que son los dos números a sumar.
Dentro del cuerpo o bloque del método hay dos instrucciones. La primera int Addition = a + b; es donde se realiza la operación de suma, asignándose a una variable del mismo tipo, y en la siguiente imprimimos ese resultado.
Accediendo al método
Para utilizar nuestro método debemos llamarlo y lo haremos desde nuestro método Main().
publicstaticvoidMain(){// Aquí llamaremos al método}
Es necesario generar una referencia creando una instancia de nuestra clase donde se ejecuta el programa. Para ello escribe:
MyMethodsMyProgram=newMyMethods();
Donde MyMethods es la clase del programa y MyProgram el nombre que se le da a la instancia que se crea y que se usará como referencia para ejecutar el método las veces que sea necesario como se ve a continuación:
MyProgram.IntegerAddition(3,6);
Esta línea probablemente te parece más parecida a lo que has visto con los métodos que hemos utilizado antes. Lo que hace es llamar a la instancia MyProgram y a su método IntegerAddition() que es el que creamos. Dentro de sus paréntesis se ponen los argumentos que necesitan los parámetros int a e int b que se le asignaron.
Algo que quizá no notaste es que el método anterior tenía una palabra clave “void”, lo que significa que no retorna algún valor. Es por ello que dentro del mismo método se imprimió el resultado.
Para generar métodos de los que podamos obtener valores conocerás la palabra clave return y al momento de crear un método se le pondrá el tipo de dato que retornará en lugar de void:
public int IntegerMultiplication(int a, int b){ int Multiplication= a * b;returnMultiplication;}
Este es un método muy similar al anterior con la diferencia de que tiene un valor int a ser retornado.
Al final de todo el contenido del método se encuentra la instrucción return Multiplication; que indica, con la palabra clave return que regresará el valor que hay dentro de esa variable al punto donde se llame el método desde Main().
publicstaticvoidMain(){ int result =MyProgram.IntegerMultiplication(12,2);Console.WriteLine("El resultado de la multiplicación es "+ result);}
En este caso, como el método regresa un valor, es necesario almacenarlo en una variable. Al imprimir ese resultado se verá cómo el método funciona correctamente ejecutando la multiplicación.
using System;publicclassMyMethods{publicvoidIntegerAddition(int a, int b){ int Addition= a + b;Console.WriteLine("El resultado es "+Addition);}public int IntegerMultiplication(int a, int b){ int Multiplication= a * b;returnMultiplication;}publicstaticvoidMain(){MyMethodsMyProgram=newMyMethods();MyProgram.IntegerAddition(3,6); int result =MyProgram.IntegerMultiplication(12,2);Console.WriteLine("El resultado de la multiplicación es "+ result);}}
Ahora conoces cómo crear y utilizar tus propios métodos. Como reto de esta clase crea un método que ejecute la división de dos números. Como tip toma en cuenta que la mayoría de las divisiones no dan resultados enteros, por lo que necesitarás definir tu método y variables con otro tipo de dato.
Comparte tu resultado en el sistema de comentarios. ¡Nos vemos en la próxima clase!
No se, pero creo que esto mas que un solo texto debio ser una clase en video, no es que sea taaan complicado pero, pues si por eso pago, es lo minimo que esperaria, si no mejor busco las cosas en internet y hasta con mas detalle
Estoy de acuerdo, luego del texto debería haber un vídeo para los que tenemos problemas para entender algunas cosas
busca mejor en internet
using System;namespace Mis_metodos{classMisMetodos{public float division(float a,float b){ float operacion = a / b;return operacion;}publicstaticvoidMain(){MisMetodos metodo =newMisMetodos(); float imprimir= metodo.division(10,2);Console.WriteLine(imprimir);}}}
Gracias por el aporte, entendi mejor el ejemplo
Veo que no seguiste la nomenclatura, de iniciar con mayúsculas el método "Division"
Aquí hice un programa donde se le solicita un numero al usuario y este número se eleva al cuadrado...
using System;namespace MethodPractice{classMyMethods{public float square(float n1){ float result = n1 * n1;return result;}} internal classProgram{staticvoidMain(string[] args){MyMethods myProgram =newMyMethods();Console.WriteLine("escribe el numero que deseas elevar al cuadrado:"); float Number= float.Parse(Console.ReadLine()); float resultado = myProgram.square(Number);Console.WriteLine("el cuadrado de "+Number+" es: "+ resultado);}}}
Veo que no seguiste la nomenclatura, de iniciar con mayúsculas el método “Square”
¿Cómo se haría esto en el caso de usar .NET 6.0?
Es exactamente de la misma manera, solamente toca escribir el método Main como en las anteriores versiones de dotnet.
Aquí te dejo la información de referencia donde explica los cambios en los templates de los proyectos, y como puedes seguir utilizando el older style :)
New C# templates generate top-level statements
Así lo hice con VS2022 y funciona bien.
IntegerAddition(2,3);Console.WriteLine("Multiplicación 2 x 3 = "+IntegerMultiplication(2,3));voidIntegerAddition(int a, int b){ int Addition= a + b;Console.WriteLine("El resultado es 2 + 3 = "+Addition);}int IntegerMultiplication(int a, int b){ int Multiplication= a * b;returnMultiplication;}
compañeros tengo una pregunta:
estoy con Visual Studio 2022, y me genera el siguiente error:
Error CS0118 'MyMethods' is a namespace but is used like a type MyMethods
me ayudarían por favor?
Es porque MyMethods es el nombre de tu namespace, sin embargo, fíjate que en la lectura "MyMethods" debe ser el nombre de la clase y no del namespace, no puedes instanciar namespaces. Solamente puedes instanciar clases, es por ello que te da el error.
Una solución para que funcionen tus metodos, es que crees una instancia de la clase, es decir, de esta manera
Hola , hay un detalle con la lectura ,no se muestra la lectura solo su icono
Hice el metodo de una division entre 5 y 4 y me dio uno xd
float div =MyProgram.IntegerDivision(5,4);Console.WriteLine("Result is "+ div);
Puse float en todas las partes donde estaba int, asi que no entiendo el problema
public float IntegerDivision(int a, int b)
{
float Division = a / b;
return Division;
}
float div =MyProgram.IntegerDivision(5,4);Console.WriteLine("Result is "+ div);
Con la division modular me pasa lo mismo, da 1 en vez de 0.25
Y el video?
No le veo caso pagar por leer un texto que fácilmente lo encuentra uno en internet.
Buenas a todos, alguien sería tan amable de explicarme la diferencia entre el método IntegerAddition e IntegerMultiplication?
Explica que el método IntegerMultiplication devuelve un valor y por ello hay que escribir Public int en IntegerMultiplication, en vez de Public VOID IntegerMultiplication; tal y como está escrito el otro método (Public VOID IntegerAddition).
Lo que no entiendo es porque dice que con la suma no retorna ningún valor, y con la multiplicación sí. Cuando dice retorna valor ¿no se refiere a que la consola te da un resultado, y ese resultado es un valor retornado?
Os dejo la imagen del código, por si os ayuda a entender mi duda que a mí parecer es tan liosa. MIL GRACIAS! Saludos!
Existen dos formas de crear funciones,
Una donde se realiza un procedimiento dentro de la función, pero esta no retornara ningún valor, esto quiere decir que lo que se hace en esa función no se puede guardar en una variable.
cuando tu utilizas una función con retorno, se realiza un procedimiento dentro de la función y al final tu puedes retornar algún tipo de dato y almacenarlo en una nueva variable, con eso podrás usar ese dato muchas veces durante el código.
Espero que haya quedado mas claro.
El retorno no tiene que ver con lo que se muestra en pantalla.
Para eso se utiliza la función Console.WriteLine(");
la cual nos mostrara lo que sea que escribamos dentro de los parentesis.
Hola compañero,
Por lo que entiendo, el hecho de que el método que utiliza es "Void" (lo cual significa vacío), implica que no haya nada por hacer con el valor obtenido dentro del método. Es decir, se ejecuta el contenido del método sin buscar almacenar valores en memoria.
Sin embargo, cuando dentro del método se utiliza la palabra "int", "float", etc; esto significa que el método está contenido dentro de una variable, pero al invocarlo se debe almacenar entonces dentro de una variable para poder tenerlo en memoria y utilizarlo múltiples veces.
Esto es como lo entendi yo al menos.
Hola a todos, resulta que yo estoy trabajando con .NET 6 y el formato de inicio es diferente a este, de hecho no me aparece la clase publica para escribir MyMethods, entonces no se podría instanciar para llamar luego a IntegerAddition, Por favor me podrían decir que cambia?
IntegerAddition(2,3);Console.WriteLine("Multiplicación 2 x 3 = "+IntegerMultiplication(2,3));voidIntegerAddition(int a, int b){ int Addition= a + b;Console.WriteLine("El resultado es 2 + 3 = "+Addition);}int IntegerMultiplication(int a, int b){ int Multiplication= a * b;returnMultiplication;}
Operaciones básicas con métodos, sumar, resta multiplicación y división.
using System;publicclassHelloWorld{public int sumar(int a, int b){return a+b;}public int restar(int a, int b){return a-b;}public int multiplicar(int a, int b){return a*b;}public float dividir(int a, int b){return a/b;}publicstaticvoidMain(string[] args){HelloWorldMiProgrma=newHelloWorld();Console.WriteLine($"Suma 5+5: {MiProgrma.sumar(5,5)}");Console.WriteLine($"Resta 5-5: {MiProgrma.restar(5,5)}");Console.WriteLine($"Multiplicar 5*5: {MiProgrma.multiplicar(5,5)}");Console.WriteLine($"Division 5/5: {MiProgrma.dividir(5,5)}");}}
He utilizado metodo static, para que no dependieran de la clase:
public class MyMethods
{ public staticvoidMain(){ Console.WriteLine("Hola mundo"); Console.WriteLine($"La suma de 2 y 5 es {IntegerAddition(2,5)}"); Console.WriteLine($"La suma de 10 y 5 es {FloatDivision(10,5)}");} public staticintIntegerAddition(int a,int b){int addition = a + b;return addition;} public staticfloatFloatDivision(float a,float b){return a / b;}}
me hubiese gustado que no llamasen a la clase MyMethods porque confunde, hubiese sido mejor Calculator o algo asi, de tal forma que cuando llaman a la clase como "copia" se entenderia un poco mejor.
MyMethods MyProgram = new MyMethods(); ===>
Calculator firstCalculation = new Calculator ();
asi la clase en el ejemplo es la calculadora y cada metodo es una funcion de la calculadora ( suma, multiplicacion, resta y division)
firstCalculation.IntegerAddition(2, 6);
console out 8
Este video me ayudo mucho!! espero les sirva amigos ando motivadisimo
public class MyMethods
{
publicvoidIntegerAddition(int a, int b){ int Addition= a + b;Console.WriteLine("El resultado de la suma es "+Addition);}public int IntegerMultiplication(int a, int b){ int Multiplication= a * b;returnMultiplication;}public double Division(double a, double b){ double Division= a / b;returnDivision;}publicstaticvoidMain(){ int Value1=0; int Value2=0;Console.WriteLine("Ingrese el primer valor");Value1=Convert.ToInt32(Console.ReadLine());Console.WriteLine("Ingrese el segundo valor");Value2=Convert.ToInt32(Console.ReadLine());MyMethodsMyProgram=newMyMethods();MyProgram.IntegerAddition(Value1,Value2); int result =MyProgram.IntegerMultiplication(Value1,Value2);Console.WriteLine("El resultado de la multiplicación es "+ result); double result2 =MyProgram.Division(Value1,Value2);Console.WriteLine("El resultado de la división es "+ result2);}
}
Estoy usando Visual Studio 2022 con Net 6.0. Resolví el reto de la siguiente manera:
<double Division(double a, double b){return a / b;}double div =Division(3,2);Console.WriteLine($"El resultado de dividir estos números es {div}");>