Documentos de Académico
Documentos de Profesional
Documentos de Cultura
formulario:
Código de Formulario:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using BusinessObject;
namespace EventosyDelegados
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
escribirtxt(objPrimos.VerificarNumeroPrimo(Convert.ToInt32(txtNumeroaverificar.Text)
).ToString());
}
escribirtxt(objPrimos.CuentaPrimosEvento(Convert.ToInt16(txtvrIncial.Text),
Convert.ToInt16(txtvrFinal.Text)).ToString());
}
escribirtxt(objPrimos.CuentaPrimosDelegado(Convert.ToInt16(txtvrIncial.Text),
Convert.ToInt16(txtvrFinal.Text), escribeprimoencontrado).ToString());
}
}
}
Clase:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BusinessObject
{
public class NumerosPrimos
{
#region Delegados
//Un delegado es un puntero hacia un metodo
//El delegado debe tener la misma forma que los metodos a los que //va a
hacer referencia
//La firma del delegado es la “FORMA O ESTRUCTURA” del método que //va a
ejecutar la acción, en este caso el delegado es llamado //desde el metodo
CuentaPrimosDelegado, y tiene la misma firma //del metodo escribeprimoencontrado,
//escrito en el codigo del formulario, el tipo void, el nombre del delegado
//y los parámetros requeridos para ejecutar la acción
public delegate void PrimoEncontrado(int primo);
#endregion
#region Eventos
//un metodo es una accion que puede ejecutar una clase
//Un eventos es una accion que notifica a una clase, es una accion que
//puede avisar cuado se ejecuta una clase
//La funcion de un evento es invocar a un delegado
//Un evento debe ser de tipo publico,la palabra reservada event, el tipo
//de delegado (nombre del delegado que va a ejecutar ese evento)
//y finalmente el nombre del evento
//Para tener un evento, necesariamente debo tener un delegado
//Finalmente un evento se lanza de la misma forma en que se lanza un
//delegado metodo
public event PrimoEncontrado eventoPrimoEncontrado;
#endregion
#region Constructores
public NumerosPrimos()
{}
#endregion
#region Metodos
/// <summary>
/// Metodo que permite verificar si el numero es primo o no, los primos
///son los divisibles por
/// si mismos o por la unidad, si se puede dividir por otro ya no es
///primo.
/// </summary>
/// <param name="numero de tipo Entero"></param>
public bool VerificarNumeroPrimo(int numero)
{
//variable boleana prino en la que se asume q el numero es primo //hasta que
se demuestre lo contrario
bool primo = true;
for (int i = 2; i < numero; i++)
{
// si el residuo es 0 significa que lo pudo dividir y por lo tanto //ya no
es primo
var r = numero % i;
if (r == 0)
{
primo = false;
}
}
return primo;
}
/// <summary>
/// Genera un numero que cuenta primos
/// </summary>
/// <param name="vrinicial de tipo entero."></param>
/// <param name="vrfinal de tipo entero."></param>
/// <returns></returns>
public int CuentaPrimos(int vrinicial, int vrfinal)
{
int contador = 0;
for (int i = vrinicial; i <= vrfinal; i++)
{
if (VerificarNumeroPrimo(i))
{
contador++;
}
}
return contador;
}
/// <summary>
/// Genera un numero que cuenta primos invocado desde un delegado
/// </summary>
/// <param name="vrinicial de tipo entero."></param>
/// <param name="vrfinal de tipo entero."></param>
/// <param name="metodo de tipo Delegado PrimoEncontrado."></param>
/// <returns></returns>
/// es este caso, metodo es un parametro de tipo delegado creado en la
///region delegados llamado primoencontrado
public int CuentaPrimosDelegado(int vrinicial, int vrfinal, PrimoEncontrado
metodo)
{
int contador = 0;
for (int i = vrinicial; i <= vrfinal; i++)
{
if (VerificarNumeroPrimo(i))
{
contador++;
if (metodo != null)
{
metodo(i);
}
}
}
return contador;
/// <summary>
/// metodo que se ejecuta al ser solicitado por el evento
eventoPrimoEncontrado
/// </summary>
/// <param name="vrinicial"></param>
/// <param name="vrfinal"></param>
/// <returns></returns>
public int CuentaPrimosEvento(int vrinicial, int vrfinal)
{
int contador = 0;
for (int i = vrinicial; i <= vrfinal; i++)
{
if (VerificarNumeroPrimo(i))
{
contador++;
if (eventoPrimoEncontrado != null)
{
eventoPrimoEncontrado(i);
}
}
}
return contador;
}
#endregion
}
}