<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux, Java y programación &#187; C-Sharp</title>
	<atom:link href="http://casidiablo.net/category/programacion/net/c-sharp/feed/" rel="self" type="application/rss+xml" />
	<link>http://casidiablo.net</link>
	<description>Blog de Java, Programación y Linux</description>
	<lastBuildDate>Fri, 11 Nov 2011 05:41:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Video Tutorial de Introducción a MonoDevelop</title>
		<link>http://casidiablo.net/video-introduccion-monodevelop/</link>
		<comments>http://casidiablo.net/video-introduccion-monodevelop/#comments</comments>
		<pubDate>Thu, 11 Jun 2009 03:22:08 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mono]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[video tutoriales]]></category>
		<category><![CDATA[monodevelop]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3063</guid>
		<description><![CDATA[¡Hola de nuevo! En esta ocasión me gustaría compartir con ustedes este video tutorial acerca de MonoDevelop. No es nada avanzado, solo muestra algunas características de este IDE. El video en cuestión lo grabé hace más o menos siete meses, pero casualmente había olvidado que lo había grabado Y, aunque ya vamos en la versión [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fvideo-introduccion-monodevelop%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Video%20Tutorial%20de%20Introducci%C3%B3n%20a%20MonoDevelop%22%20%7D);"></div>
<p style="text-align: justify;">¡Hola de nuevo! En esta ocasión me gustaría compartir con ustedes este video tutorial acerca de MonoDevelop. No es nada avanzado, solo muestra algunas características de este IDE. El video en cuestión lo grabé hace más o menos siete meses, pero casualmente había olvidado que lo había grabado <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  Y, aunque ya vamos en la versión 2 de MonoDevelop, no quiero perder el trabajo que alguna vez hice.</p>
<p style="text-align: justify;"><embed src="http://blip.tv/play/g9MGgYjCR5OibA%2Em4v" type="application/x-shockwave-flash" width="640" height="430" allowscriptaccess="always" allowfullscreen="true"></embed></p>
<p style="text-align: justify;">Como siempre, pueden encontrar el vídeo en <a title="Esta dividido en dos partes (Youtube solo deja videos menores de 10 minutos)" href="http://www.youtube.com/watch?v=sbdI1iSoRYE">Youtube</a> o en <a href="http://www.vimeo.com/5084692">Vimeo</a>. Aunque creo que hay un pedazo que se ve feo y el sonido no es el mejor, espero que les guste y disculpen lo feo <img src='http://casidiablo.net/wordpress/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/video-introduccion-monodevelop/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Constantes en C#</title>
		<link>http://casidiablo.net/constantes-en-c/</link>
		<comments>http://casidiablo.net/constantes-en-c/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 13:44:58 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[constantes]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ejercicio]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2280</guid>
		<description><![CDATA[Existen dos maneras de definir constantes en C Sharp: usando const o readonly. Cuando se usa const, es posible acceder a la variable directamente desde la clase (sin instanciar un objeto), como si se tratase de un atributo estático; mientras que con readonly, es un tipo de constantes que funciona como un atributo normal, y [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fconstantes-en-c%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Constantes%20en%20C%23%22%20%7D);"></div>
<p style="text-align: justify;">Existen dos maneras de definir constantes en <a href="http://casidiablo.net/category/programacion/net/c-sharp/">C Sharp</a>: usando <code>const</code> o <code>readonly</code>. Cuando se usa <code>const</code>, es posible acceder a la variable directamente desde la clase (sin instanciar un objeto), como si se tratase de un <a href="http://casidiablo.net/atributos-estaticos-destructores-c-sharp/">atributo estático</a>; mientras que con <code>readonly</code>, es un tipo de constantes que funciona como un atributo normal, y que una vez inicializada no se le puede cambiar el valor.</p>
<p>Veamos un ejemplo sencillo para aclararnos:<span id="more-2280"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
public class Constantes {
  // crear constante PI
  public const double PI = 3.14159;
  // radio es una constante esta sin iniciar
  public readonly int radio;
  public Constantes( int radioValue ) {
     radio = radioValue;
  }
}
// Clase UsarConstantes
public class UsarConstantes {
  // metodo Main crea un objeto de tipo 'Constantes'
  // y muestra los valores
  static void Main( string[] args ) {
     Random random = new Random();
     Constantes valoresConstantes =
        new Constantes( random.Next( 1, 20 ) );
     Console.WriteLine( &quot;Radio = &quot; + valoresConstantes.radio +
        &quot;\nCircunferencia = &quot; +
        2 * Constantes.PI * valoresConstantes.radio);
  }
}</pre>
<p><strong>Resultado&#8230;<strong></strong></strong></p>
<div class="consola"><strong><strong>Radio = 10<br />
Circunferencia = 62.8318 </strong></strong></div>
<p><strong><strong><a class="tooltip descargacodigo" title="Constantes en C#::Contiene archivo fuente .cs" href="http://casidiablo.net/descargar/Constantes+C+Sharp">Descargar código fuente</a></strong></strong></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/constantes-en-c/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Variables estáticas y destructores en C#</title>
		<link>http://casidiablo.net/atributos-estaticos-destructores-c-sharp/</link>
		<comments>http://casidiablo.net/atributos-estaticos-destructores-c-sharp/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 11:52:32 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[destructor]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ejercicio]]></category>
		<category><![CDATA[estatico]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2283</guid>
		<description><![CDATA[Las variables estáticas son atributos de una clase que están disponibles para todas las instancias de dicha clase, y a los cuales puedes acceder directamente (sin instanciar un objeto) de la forma Clase.Variable. Los destructores son métodos que se ejecutan cuando se elimina un objeto; son especialmente útiles si deseamos hacer algo en particular, antes [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fatributos-estaticos-destructores-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Variables%20est%C3%A1ticas%20y%20destructores%20en%20C%23%22%20%7D);"></div>
<p style="text-align: justify;">Las variables estáticas son atributos de una clase que están disponibles para todas las instancias de dicha clase, y a los cuales puedes acceder directamente (sin instanciar un objeto) de la forma Clase.Variable.</p>
<p style="text-align: justify;">Los destructores son métodos que se ejecutan cuando se elimina un objeto; son especialmente útiles si deseamos hacer algo en particular, antes de eliminar la referencia al objeto. A continuación un sencillo ejercicio, en donde se ejemplifica el uso de las variables estáticas y de los destructores en <a href="http://casidiablo.net/category/programacion/net/c-sharp/">C Sharp</a>:</p>
<p><span id="more-2283"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
namespace Estatico{
   public class Clase {
      //un atributo normal
      private string variable;
      //esta variable esta disponible para todas
      //las instancias de esta clase
      private static int contador;
      //constructor
      public Clase(string x) {
         variable = x;
         //aumentar valor de la variable estatica
         ++contador;
         Console.WriteLine(&quot;Constructor de &quot;+variable);
      }
      ~Clase(){
         --contador;
         Console.WriteLine(&quot;Se destruyo una de las instancias (&quot;+variable+&quot;)&quot;+contador);
      }
      public static int Contador{
         get{
            return contador;
         }
      }
   }
}</pre>
<p>Clase que utiliza los valores estáticos de la clase anterior:</p>
<pre class="brush: csharp; title: ; notranslate">using System;
namespace Estatico{
   public class Principal{
      static void Main(string[] args){
         Console.WriteLine(&quot;Contador antes de crear objetos: &quot;+Clase.Contador);
         //crear 2 instancias de la clase
         Clase objeto1 = new Clase(&quot;primero&quot;);
         Clase objeto2 = new Clase(&quot;segundo&quot;);
         Console.WriteLine(&quot;Contador despues de crear objetos: &quot;+Clase.Contador);
         //eliminar referencias a los objetos
         objeto1 = null;
         objeto2 = null;
         //forzar al recolector de basura a ejecutarse
         System.GC.Collect();
         //esperar hasta que el recolector de basura termine su trabajo
         System.GC.WaitForPendingFinalizers();
         //despues de la recolecta de basura...
         Console.WriteLine(&quot;Despues de la recolecta de basura, contador: &quot;+Clase.Contador);
      }
   }
}</pre>
<p><a class="tooltip descargacodigo" title="Estáticas y destructores en C#::Contiene archivo fuente .cs" href="http://casidiablo.net/descargar/Variables+estaticas+constructrores+C+Sharp">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/atributos-estaticos-destructores-c-sharp/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Uso de propiedades para acceder a los atributos de objetos en C#</title>
		<link>http://casidiablo.net/get-set-c-sharp/</link>
		<comments>http://casidiablo.net/get-set-c-sharp/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 14:56:07 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ejercicio]]></category>
		<category><![CDATA[getter]]></category>
		<category><![CDATA[setter]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2276</guid>
		<description><![CDATA[Al momento de acceder a los atributos de una clase, podemos usar métodos para asignar y obtener dichos datos (normalmente llamados getters y setters). En C Sharp podemos usar una caracterí­stica llamada &#8216;propiedades&#8217;, por medio de la cual declaramos un alias de acceso público para los atributos de acceso privado. Me explico. Cuando declaramos atributos [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fget-set-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Uso%20de%20propiedades%20para%20acceder%20a%20los%20atributos%20de%20objetos%20en%20C%23%22%20%7D);"></div>
<p style="text-align: justify;">Al momento de acceder a los atributos de una clase, podemos usar métodos para asignar y obtener dichos datos (normalmente llamados getters y setters). En C Sharp podemos usar una caracterí­stica llamada &#8216;propiedades&#8217;, por medio de la cual declaramos un alias de acceso público para los atributos de acceso privado.</p>
<p style="text-align: justify;">Me explico. <strong>Cuando declaramos atributos en una clase, lo más aconsejable es crearlos con el modificador de acceso <code>private</code></strong>. Por tal motivo no es posible acceder a dichos atributos directamente desde el objeto (de la manera: objeto.atributo), porque como vimos en esta entrada nos arrojará errores de compilación.</p>
<p style="text-align: justify;">Aquí­ es cuando las &#8216;propiedades&#8217; son especialmente útiles. <strong>Una propiedad es como un alias que nos permite acceder a los atributos de manera segura</strong>, y con la que nos ahorramos tiempo y espacio en nuestro código. Vamos directamente con un ejemplo, y posteriormente una breve explicación del mismo.</p>
<p style="text-align: justify;">Clase de ejemplo, que implementa una &#8216;propiedad&#8217; para acceder al atributo:</p>
<p><span id="more-2276"></span></p>
<pre class="brush: csharp; title: ; notranslate">public class Clase {
	//atributo
	private int variable;
	//constructor
	public Clase(int variable) {
		this.variable = variable;
	}
	//declaracion de la propiedad
	public int atributo{
		//get sirve para devolver el valor del atributo
		get{
			return variable;
		}
		//set sirve para cambiar el valor del atributo
		set{
			variable = value;
		}
	}
}</pre>
<p style="text-align: justify;">En la lí­nea 9 tenemos la declaración de la propiedad; en dicha declaración debemos especificar un nombre (diferente al del atributo al que vamos a acceder), y un tipo (en este caso int, entero). Dentro de la propiedad tenemos dos bloques: <code>get</code> y <code>set</code>. Dentro de get debemos poner los valores a retornar cuando se acceda a la propiedad; mientras que en set podemos usar la palabra clave <code>value</code> para asignar un valor al atributo.</p>
<p style="text-align: justify;">En la siguiente clase se utiliza la propiedad de la clase anterior, para obtener y modificar los valores del atributo:</p>
<pre class="brush: csharp; title: ; notranslate">using System;
public class Propiedades {
	public Propiedades() {
		//declaracion del objeto
		Clase objeto = new Clase(5);
		//obteniendo el valor de la variable 'variable'
		//usando la propiedad 'atributo' (se usa el bloque get)
		Console.WriteLine(&quot;El atributo del objeto es &quot;+ objeto.atributo);
		Console.WriteLine(&quot;Cambiando el valor usando la propiedad 'atributo'...&quot;);
		//cambiando el valor de la variable 'variable'
		//usando la propiedad 'atributo' (se usa get)
		objeto.atributo = 10;
		Console.WriteLine(&quot;Ahora el atributo del objeto es &quot;+ objeto.atributo);
	}
	static void Main(string[] args){
		new Propiedades();
	}
}</pre>
<p style="text-align: justify;">Como puedes observar, es posible obtener y modificar los datos de un atributo privado usando una &#8216;propiedad&#8217; pública, y todo de una manera totalmente segura, puesto que dentro de la &#8216;propiedad&#8217; podemos verificar la consistencia de los datos.</p>
<p><strong>El resultado&#8230;</strong></p>
<div class="consola">El atributo del objeto es 5<br />
Cambiando el valor usando la propiedad &#8216;atributo&#8217;&#8230;<br />
Ahora el atributo del objeto es 10</div>
<p><a class="tooltip descargacodigo" title="Uso de propiedades en C Sharp::Contiene archivos fuentes .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Propiedades+C+Sharp">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/get-set-c-sharp/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Ejemplo de constructores de clases en C#</title>
		<link>http://casidiablo.net/constructores-clases-c-sharp/</link>
		<comments>http://casidiablo.net/constructores-clases-c-sharp/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 23:45:42 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ejercicio]]></category>
		<category><![CDATA[objetos]]></category>
		<category><![CDATA[orientada]]></category>
		<category><![CDATA[poo]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2271</guid>
		<description><![CDATA[Tal como veí­amos en el ejemplo anterior, en donde explicabamos las nociones básicas de la programación orientada a objetos en C Sharp, los objetos pueden tener uno o más constructores. El siguiente ejemplo es una modificación del anterior ejercicio, en donde declaramos y usamos varios constructores. El código&#8230; La clase Tiempo2 que declara 5 constructores; [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fconstructores-clases-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Ejemplo%20de%20constructores%20de%20clases%20en%20C%23%22%20%7D);"></div>
<p style="text-align: justify;">Tal como veí­amos en el ejemplo anterior, en donde explicabamos las nociones básicas de la <a href="http://casidiablo.net/poo-c-sharp/">programación orientada a objetos en C Sharp</a>, los objetos pueden tener uno o más constructores. El siguiente ejemplo es una modificación del anterior ejercicio, en donde declaramos y usamos varios constructores.</p>
<h3>El código&#8230;</h3>
<p><span id="more-2271"></span></p>
<p style="text-align: justify;">La clase Tiempo2 que declara 5 constructores; el primero de ellos (lí­nea 9) no recibe argumentos e inicia las variables a cero; el segundo recibe solo parámetro e inica solo una de los atributos de la clase; mientras que el quinto constructor (lí­nea 32) recibe como parámetro un objeto del mismo tipo de la clase, y usando los atributos de dicho objeto inicia los atributos propios:</p>
<pre class="brush: csharp; title: ; notranslate">using System;
public class Tiempo2
{
  private int hora;    // 0 -23
  private int minuto;  // 0-59
  private int segundo;  // 0-59
  // Constructor de la clase Tiempo que inicialize
  //las variables a cero para poner la hora en media noche
  public Tiempo2()
  {
     cambiarHora( 0, 0, 0 );
  }
  // Contructor que recibe unicamente la
  // hora, y lo demas lo inicia a 0
  public Tiempo2( int hora )
  {
     cambiarHora( hora, 0, 0 );
  }
  // Contructor que recibe la hora y el
  // minuto, y lo demas lo inicia a 0
  public Tiempo2( int hora, int minuto )
  {
     cambiarHora( hora, minuto, 0 );
  }
  // Contructor que recibe los tres atributos
  public Tiempo2( int hora, int minuto, int segundo )
  {
     cambiarHora( hora, minuto, segundo );
  }
  // Constructor que utiliza los datos de otro
  //metodo de tipo Tiempo2 para inciar los datos
  public Tiempo2( Tiempo2 hora )
  {
     cambiarHora( hora.hora, hora.minuto, hora.segundo );
  }
  // este metodo asigna una nueva hora en formato 24-horas.
  public void cambiarHora(
     int valorHora, int valorMinuto, int valorSegundo )
  {
     hora = ( valorHora &gt;= 0 &amp;amp;amp;&amp;amp;amp; valorHora &lt; 24 ) ?
        valorHora : 0;
     minuto = ( valorMinuto &gt;= 0 &amp;amp;amp;&amp;amp;amp; valorMinuto &lt; 60 ) ?
        valorMinuto : 0;
     segundo = ( valorSegundo &gt;= 0 &amp;amp;amp;&amp;amp;amp; valorSegundo &lt; 60 ) ?
        valorSegundo : 0;
  }
  // convertir a hora universal con el metodo format
  public string horaUniversal()
  {
     return String.Format(
        &quot;{0:D2}:{1:D2}:{2:D2}&quot;, hora, minuto, segundo );
  }
  // convertir a tiempo estandar (12 horas) usando el metodo format
  public string horaEstandar()
  {
     return String.Format( &quot;{0}:{1:D2}:{2:D2} {3}&quot;,
        ( ( hora == 12 || hora == 0 ) ? 12 : hora % 12 ),
        minuto, segundo, ( hora &lt; 12 ? &quot;AM&quot; : &quot;PM&quot; ) );
  }
}</pre>
<p>Clase en donde se utilizan los diferentes tipos de constructores:</p>
<pre class="brush: csharp; title: ; notranslate">using System;
class PruebaTiempo2 {
  static void Main( string[] args ) {
     Tiempo2 hora1, hora2, hora3, hora4, hora5, hora6;
     hora1 = new Tiempo2();               // 00:00:00
     hora2 = new Tiempo2( 2 );            // 02:00:00
     hora3 = new Tiempo2( 21, 34 );       // 21:34:00
     hora4 = new Tiempo2( 12, 25, 42 );   // 12:25:42
     hora5 = new Tiempo2( 27, 74, 99 );   // 00:00:00
     hora6 = new Tiempo2( hora4 );        // 12:25:42
     String salida = &quot;Construido con: &quot; +
        &quot;\nhora1: todos los argumentos por defecto&quot; +
        &quot;\n\t&quot; + hora1.horaUniversal() +
        &quot;\n\t&quot; + hora1.horaEstandar();
     salida += &quot;\nhora2: hora especifica; minuto y segundo por defecto&quot; +
        &quot;\n\t&quot; + hora2.horaUniversal() +
        &quot;\n\t&quot; + hora2.horaEstandar();
     salida += &quot;\nhora3: hora y minuto especifico; segundo por defecto&quot; +
        &quot;\n\t&quot; + hora3.horaUniversal() +
        &quot;\n\t&quot; + hora3.horaEstandar();
     salida += &quot;\nhora4: los tres argumentos especificamente&quot; +
        &quot;\n\t&quot; + hora4.horaUniversal() +
        &quot;\n\t&quot; + hora4.horaEstandar();
     salida += &quot;\nhora5: los tres argumentos especificamente&quot; +
        &quot;\n\t&quot; + hora5.horaUniversal() +
        &quot;\n\t&quot; + hora5.horaEstandar();
     salida += &quot;\nhora6: otro objeto de tipo Tiempo2 (hora4)&quot; +
        &quot;\n\t&quot; + hora6.horaUniversal() +
        &quot;\n\t&quot; + hora6.horaEstandar();
     Console.WriteLine( salida );
  }
}</pre>
<p>El resultado del programa es el siguiente:</p>
<div class="consola">Construido con:<br />
hora1: todos los argumentos por defecto<br />
	00:00:00<br />
	12:00:00 AM<br />
hora2: hora especifica; minuto y segundo por defecto<br />
	02:00:00<br />
	2:00:00 AM<br />
hora3: hora y minuto especifico; segundo por defecto<br />
	21:34:00<br />
	9:34:00 PM<br />
hora4: los tres argumentos especificamente<br />
	12:25:42<br />
	12:25:42 PM<br />
hora5: los tres argumentos especificamente<br />
	00:00:00<br />
	12:00:00 AM<br />
hora6: otro objeto de tipo Tiempo2 (hora4)<br />
	12:25:42<br />
	12:25:42 PM</div>
<p><a class="tooltip descargacodigo" title="Constructores en C Sharp::Contiene archivos fuentes .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Constructores+C+Sharp">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/constructores-clases-c-sharp/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Programación Orientada a Objetos en C Sharp</title>
		<link>http://casidiablo.net/poo-c-sharp/</link>
		<comments>http://casidiablo.net/poo-c-sharp/#comments</comments>
		<pubDate>Thu, 20 Nov 2008 23:30:30 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ejercicio]]></category>
		<category><![CDATA[objetos]]></category>
		<category><![CDATA[orientada]]></category>
		<category><![CDATA[poo]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2268</guid>
		<description><![CDATA[La POO es un paradigma de programación que intenta abstraer los módulos de cada programa en objetos. Los objetos son instancias de clases, en las que se declaran/especifican al menos dos cosas: los atributos, los métodos y opcionalmente los constructores. Los atributos son las variables que posee el objeto, mientras que los métodos son las [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fpoo-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Programaci%C3%B3n%20Orientada%20a%20Objetos%20en%20C%20Sharp%22%20%7D);"></div>
<p style="TEXT-ALIGN: justify">La POO es un paradigma de programación que intenta abstraer los módulos de cada programa en objetos. Los objetos son instancias de clases, en las que se declaran/especifican al menos dos cosas: <strong>los atributos, los métodos</strong> y opcionalmente los constructores.</p>
<p style="TEXT-ALIGN: justify">Los atributos son las variables que posee el objeto, mientras que los métodos son las funciones o procedimientos que podemos invocar para realizar operaciones especí­ficas sobre los atributos.</p>
<p style="TEXT-ALIGN: justify">Como en Java, en C Sharp utilizamos siempre clases y objetos, aún cuando no tengamos claro el concepto. Por ejemplo, el simple <em>hola mundo</em>:</p>
<pre class="brush: csharp; title: ; notranslate">using System;
class Hola{
   static void Main(string[] args){
      Console.WriteLine(&quot;Hola parce!&quot;);
   }
}</pre>
<p style="TEXT-ALIGN: justify">En cada lí­nea de código estamos usando la programación orientada a objetos: lí­nea 1, creamos una clase (llamada <em>Hola</em>); lí­nea 2, declaramos un método (función) para nuestra clase; lí­nea 3, usando <strong>la clase</strong> <code>Console</code> invocamos <strong>el método</strong> <code>WriteLine</code>. Todo, programación orientada a objetos.</p>
<h3>Ejemplo de POO en C Sharp</h3>
<p style="TEXT-ALIGN: justify">En el siguiente ejemplo tomado del libro <em>Cómo programar en C Sharp de Deitel</em>, se utiliza una clase llamada <strong>tiempo</strong>. Dicha clase posee tres atributos (hora, minuto, segundo; todos variables enteras), y tres métodos. Vamos con el código, y mí¡s abajo una explicación:</p>
<p><span id="more-2268"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
public class Tiempo
{
  private int hora;    // 0 -23
  private int minuto;  // 0-59
  private int segundo;  // 0-59
  // Constructor de la clase Tiempo que inicialize
  //las variables a cero para poner la hora en media noche
  public Tiempo()
  {
     cambiarHora( 0, 0, 0 );
  }
  // este metodo asigna una nueva hora en formato 24-horas.
  public void cambiarHora(
     int valorHora, int valorMinuto, int valorSegundo )
  {
     hora = ( valorHora &gt;= 0 &amp;&amp; valorHora &lt; 24 ) ?
        valorHora : 0;
     minuto = ( valorMinuto &gt;= 0 &amp;&amp; valorMinuto &lt; 60 ) ?
        valorMinuto : 0;
     segundo = ( valorSegundo &gt;= 0 &amp;&amp; valorSegundo &lt; 60 ) ?
        valorSegundo : 0;
  }
  // convertir a hora universal con el metodo format
  public string horaUniversal()
  {
     return String.Format(
        &quot;{0:D2}:{1:D2}:{2:D2}&quot;, hora, minuto, segundo );
  }
  // convertir a tiempo estandar (12 horas) usando el metodo format
  public string horaEstandar()
  {
     return String.Format( &quot;{0}:{1:D2}:{2:D2} {3}&quot;,
        ( ( hora == 12 || hora == 0 ) ? 12 : hora % 12 ),
        minuto, segundo, ( hora &lt; 12 ? &quot;AM&quot; : &quot;PM&quot; ) );
  }
}</pre>
<ul>
<li style="text-align: justify;">En la segunda lí­nea vemos la instrucción <code>public class Tiempo</code>; esto no es mí¡s que la declaración de nuestra clase. Las clases por lo general son de tipo <code>public</code>, aunque si usamos clases internas anónimas es recomendable que sean <code>private</code>, aunque eso es otro tema&#8230; sigamos.</li>
<li style="text-align: justify;">En las lí­neas 4, 5 y 6 tenemos la declaración de los atributos de nuestra clase. Fí­jate como todos ellos son <code>private</code>; es un buen tip de programación que los atributos de nuestras clases sean privados, lo que significa que sólamente serí¡n accesibles desde los métodos de la clase.</li>
<li style="text-align: justify;">En la lí­nea 9 tenemos la declaración de un constructor. Los constructores son los métodos invocados en el momento de crear objetos; su función es la darle valores a los atributos del objeto. Podemos tener cuantos constructores necesitemos, por supuesto con diferente tipo de argumentos. Ademí¡s, es necesario tener en cuenta que <strong>los constructores son métodos que NO tienen ningún valor de retorno</strong>, y que <strong>deben llevar el mismo nombre de la clase</strong>.</li>
<li style="text-align: justify;">En las lí­neas 14, 25 y 31 estí¡n declarados los métodos o funciones, que permiten realizar operaciones sobre nuestro objeto. Por ejemplo, el método <code>cambiarHora</code> recibe tres argumentos, con los cuales modifica los atributos. Por lo general, los métodos de las clases son de tipo <code>public</code>, lo que permite invocarlos directamente a través de una instancia de la clase (es decir, un objeto).</li>
</ul>
<p style="text-align: justify;">Con el siguiente código, utilizamos la clase Tiempo:</p>
<pre class="brush: csharp; title: ; notranslate">using System;
class PruebaTiempo {
  static void Main( string[] args ) {
     Tiempo tiempo = new Tiempo();  // llamada al constructor de Tiempo
     string salida;
     // mostrar datos iniciales
     salida = &quot;Hora universal inicial es: &quot; +
        tiempo.horaUniversal() +
        &quot;\nHora estandar inicial es: &quot; +
        tiempo.horaEstandar();
     // cambiar hora (valida)
     tiempo.cambiarHora( 13, 27, 6 );
     // aniadir nueva hora a la salida
     salida += &quot;\n\nHora universal despues de cambiada: &quot; +
        tiempo.horaUniversal() +
        &quot;\nHora estandar despues de cambiada: &quot; +
        tiempo.horaEstandar();
     // cambiar hora (invalida)
     tiempo.cambiarHora( 99, 99, 99 );
     salida += &quot;\n\nDespues de poner valores invalidos: &quot; +
        &quot;\nHora universal: &quot; + tiempo.horaUniversal() +
        &quot;\nHora estandar: &quot; + tiempo.horaEstandar();
     Console.WriteLine( salida );
  }
}</pre>
<ul>
<li style="text-align: justify;">En la lí­nea 3 creamos un objeto de tipo tiempo. Por lo general la sintaxis para crear objetos es la siguiente: <code>Clase objeto = new Clase()</code>. Es decir, el nombre de la clase, el nombre del objeto, y posteriormente se incia el objeto haciendo una invocación al constructor de la clase (anteponiendo la instrucción <code>new</code>).</li>
<li style="text-align: justify;">En la lí­nea 8, invocamos uno de los métodos de la clase (<code>horaUniversal</code>). La sintaxis para la invocación de los métodos es: <code>objeto.nombreMetodo(arg1, arg2, ...)</code>. Así­, en la lí­nea 12 podemos ver otro ejemplo de invocación, en la que pasamos algunos argumentos al método.</li>
</ul>
<p style="text-align: justify;">El resultado del programa es el siguiente:</p>
<div class="consola">Hora universal inicial es: 00:00:00<br />
Hora estandar inicial es: 12:00:00 AM</p>
<p>Hora universal despues de cambiada: 13:27:06<br />
Hora estandar despues de cambiada: 1:27:06 PM</p>
<p>Despues de poner valores invalidos:<br />
Hora universal: 00:00:00<br />
Hora estandar: 12:00:00 AM</p></div>
<p><a class="tooltip descargacodigo" title="Ejemplo POO en C Sharp::Contiene archivos fuentes .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Programacion+Orientada+a+Objetos+C+Sharp">Descargar código fuente</a></p>
<h3>Acceso a los atributos de un objeto</h3>
<p style="text-align: justify;">Si al momento de declarar los atributos de una clase utilizamos el modificador de acceso <code>public</code>, es posible acceder a dichos atributos directamente de la siguiente manera: <code>objeto.variable;</code> ó <code>objeto.variable = unValor;</code>. Esto por supuesto NO es recomendable, es decir, los atributos de una clase deberí­an ser SIEMPRE privados.</p>
<p style="text-align: justify;">De igual forma, si hemos declarado atributos con el modificador de acceso <code>private</code>, NO es posible acceder directamente a ellos. Así­ que para modificarlos, debemos crear métodos de acceso público, algo por supuesto mí¡s seguro. Si intentamos acceder directamente a atributos que se han declarado como privados, obtendremos errores de compilación.</p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/poo-c-sharp/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Arreglos bidimensionales en C#</title>
		<link>http://casidiablo.net/matrices-en-c-sharp/</link>
		<comments>http://casidiablo.net/matrices-en-c-sharp/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 21:47:41 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[bidimensionales]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ejercicios]]></category>
		<category><![CDATA[foreach]]></category>
		<category><![CDATA[matrices]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2264</guid>
		<description><![CDATA[Las matrices o arreglos de dos dimensiones, son arrays bidimensionales cuyos elementos tienen dos indices. En C Sharp existen dos tipos de arreglos bidimensionales, los rectangulares y los din&#225;micos. Por lo general, cuando accedemos a arreglos bidimensionales utilizamos los t&#233;rminos filas y columnas. En los arreglos bidimensionales rectangulares, cada fila tiene la misma cantidad de [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fmatrices-en-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Arreglos%20bidimensionales%20en%20C%23%22%20%7D);"></div>
<p style="text-align: justify;">Las matrices o arreglos de dos dimensiones, son arrays bidimensionales cuyos elementos tienen dos indices. En C Sharp existen dos tipos de arreglos bidimensionales, los rectangulares y los din&aacute;micos. Por lo general, cuando accedemos a arreglos bidimensionales utilizamos los t&eacute;rminos <em>filas</em> y <em>columnas</em>.</p>
<p style="text-align: justify;">En <strong>los arreglos bidimensionales rectangulares, cada fila tiene la misma cantidad de columnas</strong>. Por otro lado, las filas de <strong>los arreglos bidimensionales din&aacute;micos pueden tener diferente cantidad de columnas</strong>. A continuaci&oacute;n, una serie de ejemplos en donde se explica c&oacute;mo se declara e inician los dos tipos de arreglos:</p>
<p><span id="more-2264"></span></p>
<h3>Declaraci&oacute;n e iniciaci&oacute;n de arreglos de dos dimensiones</h3>
<pre class="brush: csharp; title: ; notranslate">using System;
public class ArregloDosDimensiones {
  static void Main() {
     // declaracion e iniciaci&amp;amp;amp;oacute;n de arreglos rectangulares
     int[,] arreglo1 = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
     // declaraci&amp;amp;amp;oacute;n e iniciaci&amp;amp;amp;oacute;n de arreglos dinamicos
     int[][] arreglo2 = new int[ 3 ][];
     string salida = &quot;&quot;;
     arreglo2[ 0 ] = new int[] { 1, 2 };
     arreglo2[ 1 ] = new int[] { 3 };
     arreglo2[ 2 ] = new int[] { 4, 5, 6 };
     salida = &quot;Valores en arreglo1 por fila\n&quot;;
     // salida del arreglo1
     for ( int i = 0; i &lt; arreglo1.GetLength( 0 ); i++ ) {
        for ( int j = 0; j &lt; arreglo1.GetLength( 1 ); j++ )
           salida += arreglo1[ i, j ] + &quot;  &quot;;
        salida += &quot;\n&quot;;
     }
     salida += &quot;\nValores en arreglo2 por fila\n&quot;;
     // salida del arreglo2
     for ( int i = 0; i &lt; arreglo2.Length; i++ ) {
        for ( int j = 0; j &lt; arreglo2[ i ].Length; j++ )
           salida += arreglo2[ i ][ j ] + &quot;  &quot;;
        salida += &quot;\n&quot;;
     }
     Console.WriteLine(salida);
  }
}</pre>
<p><strong>Salida&#8230;</strong></p>
<div class="consola">Valores en arreglo1 por fila<br />
1  2  3<br />
4  5  6  </p>
<p>Valores en arreglo2 por fila<br />
1  2<br />
3<br />
4  5  6  </p></div>
<p><a class="tooltip descargacodigo" title="Arreglos bidimensionales en C Sharp::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Arreglos+Bidimensionales">Descargar c&oacute;digo fuente</a></p>
<h3>Ejemplo con arreglos bidimensionales</h3>
<pre class="brush: csharp; title: ; notranslate">using System;
public class DoubleArray {
  static int[][] calificacion;
  static int estudiantes, examenes;
  static void Main() {
     string salida = &quot;                   &quot;;
     calificacion = new int[ 3 ][];
     calificacion[ 0 ] =  new int[]{ 77, 68, 86, 73 };
     calificacion[ 1 ] =  new int[]{ 96, 87, 89, 81 };
     calificacion[ 2 ] =  new int[]{ 70, 90, 86, 81 };
     estudiantes = calificacion.Length;      // numero de estudiantes
     examenes = calificacion[ 0 ].Length;    // numero de examenes
     // columnas
     for ( int i = 0; i &lt; examenes; i++ )
        salida += &quot;[&quot; + i + &quot;]  &quot;;
     // filas
     for ( int i = 0; i &lt; estudiantes; i++ ) {
        salida += &quot;\ncalificaciones[&quot; + i + &quot;]   &quot;;
        for ( int j = 0; j &lt; examenes; j++ )
           salida += calificacion[ i ][ j ] + &quot;   &quot;;
     }
     salida += &quot;\n\nCal. m&amp;amp;amp;aacute;s baja: &quot; + minimo() +
        &quot;\nCal. m&amp;amp;amp;aacute;s alta: &quot; + maximo() + &quot;\n&quot;;

     for ( int i = 0; i &lt; estudiantes; i++ )
        salida += &quot;\nEl promedio por estudiante &quot; + i + &quot; es &quot; +
           promedio( calificacion[ i ] );
     Console.WriteLine(salida);
  }
  // buscar calificacion minima en el arreglo
  static public int minimo() {
     int baja = 100;
     for ( int i = 0; i &lt; estudiantes; i++ )
        for ( int j = 0; j &lt; examenes; j++ )
           if ( calificacion[ i ][ j ] &lt; baja )
              baja = calificacion[ i ][ j ];
       return baja;
  }
  // buscar calificacion maxima en en arreglo
  static public int maximo() {
     int alta = 0;
     for ( int i = 0; i &lt; estudiantes; i++ )
        for ( int j = 0; j &lt; examenes; j++ )
           if ( calificacion[ i ][ j ] &gt; alta )
              alta = calificacion[ i ][ j ];
       return alta;
  }
  // determinar el promedio de la calificacion
  static public double promedio( int[] calificaciones ) {
     int total = 0;
     for ( int i = 0; i &lt; calificaciones.Length; i++ )
        total += calificaciones[ i ];
     return ( double ) total / calificaciones.Length;
  }
}</pre>
<p><strong>Salida&#8230;</strong></p>
<div class="consola">                   [0]  [1]  [2]  [3]<br />
calificaciones[0]   77   68   86   73<br />
calificaciones[1]   96   87   89   81<br />
calificaciones[2]   70   90   86   81   </p>
<p>Cal. m&aacute;s baja: 68<br />
Cal. m&aacute;s alta: 96</p>
<p>El promedio por estudiante 0 es 76<br />
El promedio por estudiante 1 es 88,25<br />
El promedio por estudiante 2 es 81,75</p></div>
<p><a class="tooltip descargacodigo" title="Arreglos bidimensionales en C Sharp::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Ejemplo+Arreglos+Bidimensionales">Descargar c&oacute;digo fuente</a></p>
<h3>Bonus: sentencia foreach en C#</h3>
<p>Cuando de recorrer arreglos se trata, existe una sentencia bastante &uacute;til: <em>foreach</em>. Foreach es similar a un for, solo que es un poco m&aacute;s simple. La sintaxis es <code>foreach(<em>VARIABLE</em> in ARREGLO)</code>, y cada vez que ocurre una iteraci&oacute;n, VARIABLE va tomando los valores del arreglo en orden:</p>
<pre class="brush: csharp; title: ; notranslate">using System;
class Foreach {
   // main entry point for the application
   static void Main(string[] args) {
      int[,] calificaciones = { { 77, 68, 86, 73 },
         { 98, 87, 89, 81 }, { 70, 90, 86, 81 } };
      int baja = 100;
      foreach ( int calificacion in calificaciones ) {
         if ( calificacion &lt; baja )
            baja = calificacion;
      }
      Console.WriteLine( &quot;La calificacion mas baja es: &quot; + baja );
   }
}</pre>
<p><a class="tooltip descargacodigo" title="Foreach en C Sharp::Contiene archivo fuente .cs" href="http://casidiablo.net/descargar/Foreach+C+Sharp">Descargar c&oacute;digo fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/matrices-en-c-sharp/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Busqueda Binaria &#8211; C Sharp</title>
		<link>http://casidiablo.net/ejemplo-localizacion-binaria-c-sharp/</link>
		<comments>http://casidiablo.net/ejemplo-localizacion-binaria-c-sharp/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 00:43:32 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[binaria]]></category>
		<category><![CDATA[busqueda]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ejercicios]]></category>
		<category><![CDATA[mono]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2259</guid>
		<description><![CDATA[Hace unos dí­as y poní­a un ejemplo acerca de búsquedas lineales en arreglos, ésta vez hablaremos acerca de las búsquedas lineales, un método mucho más rápido para buscar elementos. ¿Cómo funciona este método? Para poder aplicar éste método de búsqueda es necesario que el arreglo esté ordenado; posteriormente, se aplica el siguiente algoritmo: se ubica [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fejemplo-localizacion-binaria-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Busqueda%20Binaria%20-%20C%20Sharp%22%20%7D);"></div>
<p style="text-align: justify;">Hace unos dí­as y poní­a un ejemplo acerca de <a href="http://casidiablo.net/buscar-elementos-dentro-array-csharp-metodo-lineal/">búsquedas lineales en arreglos</a>, ésta vez hablaremos acerca de las búsquedas lineales, un método mucho más rápido para buscar elementos.</p>
<p style="text-align: justify;"><em>¿Cómo funciona este método?</em> Para poder aplicar éste método de búsqueda <strong>es necesario que el arreglo esté ordenado</strong>; posteriormente, se aplica el siguiente algoritmo: se ubica el elemento de la mitad del arreglo, entonces, si el número que se está buscando dentro del arreglo es menor al número de la mitad, se busca el número de la mitad entre el inicio del y la mitad del mismo, y así­ hasta encontrar el elemento deseado.</p>
<p style="text-align: justify;">Por ejemplo, suponiendo que tenemos un  arreglo con los siguientes valores:</p>
<p style="text-align: justify;"><code>2, 4, 5 , 6, 8, 9, 10, 12, 24, 34, 46, 56, 60, 67, 78, 89, 90</code></p>
<p style="text-align: justify;">&#8230;y queremos buscar el valor 10; tenemos que, el elemento de la mitad contiene el valor 24. Puesto que 24 &gt; 10, buscamos el valor intermedio entre el principio del arreglo y la mitad del mismo, esto es 8. Puesto que 8 &lt; 10, buscamos el valor intermedio entre 8 y la mitad del arreglo (24), esto es 10. Así­, con tan solo 3 bucles, hemos conseguido el valor buscado.</p>
<p style="text-align: justify;">Vamos con el código del programa, que nos sacará de toda duda:</p>
<p style="text-align: center;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2008/11/busquedabinaria.png"  /></p>
<p><span id="more-2259"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
using System.Drawing;
using System.Windows.Forms;
public class EjemploBusquedaBinaria : Form
{
  private Label labelSolicitar;
  private TextBox cajaEntrada;
  private Label labelResultado;
  private Label labelMostrar;
  private Label labelSalida;
  private Button botonBuscar;
  int[] a = { 0, 2, 4, 6, 8, 10, 12, 14, 16,
              18, 20, 22, 24, 26, 28 };
  public EjemploBusquedaBinaria(){
     InitializeComponent();
  }
  private void InitializeComponent() {
     this.labelMostrar = new Label();
     this.labelResultado = new Label();
     this.cajaEntrada = new TextBox();
     this.labelSolicitar = new Label();
     this.botonBuscar = new Button();
     this.labelSalida = new Label();
     this.SuspendLayout();
     //
     // labelMostrar
     //
     this.labelMostrar.Location = new System.Drawing.Point(261, 8);
     this.labelMostrar.Name = &quot;labelMostrar&quot;;
     this.labelMostrar.Size = new System.Drawing.Size(152, 20);
     this.labelMostrar.TabIndex = 3;
     //
     // labelResultado
     //
     this.labelResultado.Location = new System.Drawing.Point(213, 8);
     this.labelResultado.Name = &quot;labelResultado&quot;;
     this.labelResultado.Size = new System.Drawing.Size(50, 16);
     this.labelResultado.TabIndex = 2;
     this.labelResultado.Text = &quot;Resultado:&quot;;
     //
     // cajaEntrada
     //
     this.cajaEntrada.Location = new System.Drawing.Point(99, 8);
     this.cajaEntrada.Name = &quot;cajaEntrada&quot;;
     this.cajaEntrada.TabIndex = 1;
     this.cajaEntrada.Text = &quot;&quot;;
     //
     // labelSolicitar
     //
     this.labelSolicitar.Location = new System.Drawing.Point(27, 8);
     this.labelSolicitar.Name = &quot;labelSolicitar&quot;;
     this.labelSolicitar.Size = new System.Drawing.Size(56, 16);
     this.labelSolicitar.TabIndex = 0;
     this.labelSolicitar.Text = &quot;Digite el dato&quot;;
     //
     // botonBuscar
     //
     this.botonBuscar.Location = new System.Drawing.Point(152, 40);
     this.botonBuscar.Name = &quot;botonBuscar&quot;;
     this.botonBuscar.Size = new System.Drawing.Size(136, 24);
     this.botonBuscar.TabIndex = 5;
     this.botonBuscar.Text = &quot;Buscar dato&quot;;
     this.botonBuscar.Click += new System.EventHandler(this.botonBuscar_Click);
     //
     // labelSalida
     //
     this.labelSalida.Font = new System.Drawing.Font(&quot;Courier New&quot;, 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
     this.labelSalida.Location = new System.Drawing.Point(10, 80);
     this.labelSalida.Name = &quot;labelSalida&quot;;
     this.labelSalida.Size = new System.Drawing.Size(420, 72);
     this.labelSalida.TabIndex = 4;
     //
     // EjemploBusquedaBinaria
     //
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(440, 157);
     this.Controls.AddRange(new Control[] {
            this.botonBuscar,
            this.labelSalida,
            this.labelMostrar,
            this.labelResultado,
            this.cajaEntrada,
            this.labelSolicitar});
     this.Name = &quot;EjemploBusquedaBinaria&quot;;
     this.Text = &quot;Busqueda Binaria&quot;;
     this.ResumeLayout(false);
  }
  static void Main() {
     Application.Run( new EjemploBusquedaBinaria() );
  }
  private void botonBuscar_Click( object sender,
     System.EventArgs e )
  {
     int valorBuscar = Int32.Parse( cajaEntrada.Text );
     // iniciar los datos de salida
     labelSalida.Text = &quot;Portions of array searched\n&quot;;
     // realizar busqueda binaria
     int elemento = Buscar( a, valorBuscar );
     if ( elemento != -1 )
        labelMostrar.Text = &quot;Valor encontrado en indice &quot; +
           elemento;
     else
        labelMostrar.Text = &quot;Valor no encontrado&quot;;
  } // fin botonBuscar_Click
  // buscar mediante metodo binario
  public int Buscar( int[] array, int dato ) {
     int bajo = 0;
     int alto = array.Length - 1;
     int medio;
     while ( bajo &lt;= alto ) {
        medio = ( bajo + alto ) / 2;
        // el siguiente método nos muestra la porción del
        // arreglo donde se está llevando a cabo la busqueda
        // del dato en cada iteración del bucle
        construirSalida( a, bajo, medio, alto );
        if ( dato == array[ medio ] )   // si se encuentra el valor
           return medio;
        else if ( dato &lt; array[ medio ] )
           alto = medio - 1;   // buscar en la mitad más baja
        else
           bajo = medio + 1;   // buscar en la mitad más alta
     } // fin de la busqueda binaria
     return -1;  // dato no encontrado
  } // fin del metodo Buscar
  public void construirSalida(
     int[] array, int bajo, int mid, int alto ) {
     for ( int i = 0; i &lt; array.Length; i++ ) {
        if ( i &lt; bajo || i &gt; alto )
           labelSalida.Text += &quot;    &quot;;
        // marcar el elemento de la mitad en la salida
        else if ( i == mid )
           labelSalida.Text +=
              array[ i ].ToString( &quot;00&quot; ) + &quot;* &quot;;
        else
           labelSalida.Text +=
              array[ i ].ToString( &quot;00&quot; ) + &quot;  &quot;;
     }
     labelSalida.Text += &quot;\n&quot;;
  } // fin de construirSalida
} // fin de la clase EjemploBusquedaBinaria</pre>
<p><a class="tooltip descargacodigo" title="Búsqueda Binaria en C Sharp::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Busqueda+Binaria+C+Sharp">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/ejemplo-localizacion-binaria-c-sharp/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Buscar datos dentro de arreglos C# &#8211; Método Lineal</title>
		<link>http://casidiablo.net/buscar-elementos-dentro-array-csharp-metodo-lineal/</link>
		<comments>http://casidiablo.net/buscar-elementos-dentro-array-csharp-metodo-lineal/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 16:52:01 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[buscar]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[ejercicios]]></category>
		<category><![CDATA[lineal]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2216</guid>
		<description><![CDATA[En el siguiente ejemplo se muestra cómo realizar búsquedas dentro de un arreglo de manera lineal. Ejemplo&#8230; Descargar código fuente]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fbuscar-elementos-dentro-array-csharp-metodo-lineal%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Buscar%20datos%20dentro%20de%20arreglos%20C%23%20-%20M%C3%A9todo%20Lineal%22%20%7D);"></div>
<p>En el siguiente ejemplo se muestra cómo realizar búsquedas dentro de un <a href="http://casidiablo.net/arreglos-en-c-sharp/">arreglo</a> de manera lineal.</p>
<h3>Ejemplo&#8230;</h3>
<p style="text-align: center;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2008/11/busquedalineal.png" alt="busqueda lineal"/></p>
<p><span id="more-2216"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
using System.Drawing;
using System.Windows.Forms;
namespace BusquedaLineal
{
   public class BusquedaLineal : Form
   {
      private Button botonBuscar;
      private TextBox cajaEntrada;
      private Label labelSalida;
      int[] a = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26,
                  28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50 };
      public BusquedaLineal()
      {
         InitializeComponent();
      }
      private void InitializeComponent()
      {
         this.botonBuscar = new Button();
         this.cajaEntrada = new TextBox();
         this.labelSalida = new Label();
         this.SuspendLayout();
         //
         // botonBuscar
         //
         this.botonBuscar.Location = new System.Drawing.Point(8, 8);
         this.botonBuscar.Name = &quot;botonBuscar&quot;;
         this.botonBuscar.TabIndex = 0;
         this.botonBuscar.Text = &quot;Buscar&quot;;
         this.botonBuscar.Click += new System.EventHandler(this.botonBuscar_Click);
         //
         // cajaEntrada
         //
         this.cajaEntrada.Location = new System.Drawing.Point(96, 9);
         this.cajaEntrada.Name = &quot;cajaEntrada&quot;;
         this.cajaEntrada.Size = new System.Drawing.Size(88, 20);
         this.cajaEntrada.TabIndex = 1;
         this.cajaEntrada.Text = &quot;&quot;;
         //
         // labelSalida
         //
         this.labelSalida.Location = new System.Drawing.Point(8, 40);
         this.labelSalida.Name = &quot;labelSalida&quot;;
         this.labelSalida.Size = new System.Drawing.Size(184, 23);
         this.labelSalida.TabIndex = 2;
         //
         // BusquedaLineal
         //
         this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
         this.ClientSize = new System.Drawing.Size(200, 69);
         this.Controls.AddRange(new Control[] {
                  this.labelSalida,
                  this.cajaEntrada,
                  this.botonBuscar});
         this.Name = &quot;BusquedaLineal&quot;;
         this.Text = &quot;BusquedaLineal&quot;;
         this.ResumeLayout(false);
      }
      static void Main()
      {
         Application.Run(new BusquedaLineal());
      }
      private void botonBuscar_Click( object sender,
         System.EventArgs e )
      {
         int datoBuscar = Int32.Parse( cajaEntrada.Text );
         int indiceElemento = BuscarLineal( a, datoBuscar );
         if ( indiceElemento != -1 )
            labelSalida.Text =
               &quot;Encontrado en el indice &quot; + indiceElemento;
         else
            labelSalida.Text = &quot;Valor no encontrado&quot;;
      } // fin del metodo botonBuscar_Click
      // buscar valor dentro del array
      public int BuscarLineal( int[] array, int dato )
      {
         for ( int n = 0; n &lt; array.Length; n++ )
         {
            if ( array[ n ] == dato )
               return n;
         }
         return -1;
      } // fin del metodo BusquedaLineal
   }
}</pre>
<p><a class="tooltip descargacodigo" title="Busqueda lineal en C#::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Busqueda+Lineal+C+Sharp">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/buscar-elementos-dentro-array-csharp-metodo-lineal/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ordenar arreglos C# &#8211; Método burbuja</title>
		<link>http://casidiablo.net/ordenamiento-array-c-sharp-metodo-burbuja/</link>
		<comments>http://casidiablo.net/ordenamiento-array-c-sharp-metodo-burbuja/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 15:48:32 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[burbuja]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[ejercicios]]></category>
		<category><![CDATA[ordenar]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2212</guid>
		<description><![CDATA[En el siguiente ejemplo se muestra cómo realizar el ordenamiento de arreglos de enteros, usando el método burbuja en C#. Ejemplo&#8230; Resultado&#8230; Valores de los items originales 54 6 4 8 10 12 89 68 45 37 Valores de los items en orden descendente 89 68 54 45 37 12 10 8 6 4 Descargar [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fordenamiento-array-c-sharp-metodo-burbuja%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Ordenar%20arreglos%20C%23%20-%20M%C3%A9todo%20burbuja%22%20%7D);"></div>
<p>En el siguiente ejemplo se muestra cómo realizar el ordenamiento de arreglos de enteros, usando el método burbuja en C#.</p>
<h3>Ejemplo&#8230;</h3>
<p><span id="more-2212"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
public class OrdenamientoBurbuja
{
  static void Main()
  {
     int[] a =  { 54, 6, 4, 8, 10, 12, 89, 68, 45, 37 };
     string salida = &quot;Valores de los items originales\n&quot;;
     for ( int i = 0; i &lt; a.Length; i++ )
        salida += &quot;   &quot; + a[ i ];
     // ordenar elementos del arreglo
     OrdenarBurbuja( a );
     salida += &quot;\n\nValores de los items en orden descendente\n&quot;;
     for ( int i = 0; i &lt; a.Length; i++ )
        salida += &quot;   &quot; + a[ i ];
     Console.WriteLine(salida);
  } // fin del metodo main
  // ordenar elementos de un arreglo con el metodo burbuja
  static public void OrdenarBurbuja( int[] b )
  {
     for ( int pasadas = 1; pasadas &lt; b.Length; pasadas++ ) // pasadas
        for ( int i = 0; i &lt; b.Length - 1; i++ )
           if ( b[ i ] &gt; b[ i + 1 ] )      // comparar
              intercambio( b, i );         // intercambiar
  }
  // intercambio de dos elementos en un arreglo
  static public void intercambio( int[] c, int primero )
  {
     int temp;      // variable temporal para el intercambio
     temp = c[ primero ];
     c[ primero ] = c[ primero + 1 ];
     c[ primero + 1 ] = temp;
  }
}</pre>
<p><strong>Resultado&#8230;</strong></p>
<div class="consola">Valores de los items originales<br />
   54   6   4   8   10   12   89   68   45   37</p>
<p>Valores de los items en orden descendente<br />
   89   68   54   45   37   12   10   8   6   4</p></div>
<p><a class="tooltip descargacodigo" title="Método burbuja en C#::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Ordenar+Arreglo+Metodo+Burbuja">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/ordenamiento-array-c-sharp-metodo-burbuja/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
	</channel>
</rss>

