<?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>Programación y desarrollo web &#187; Programacion</title>
	<atom:link href="http://www.puntopeek.com/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.puntopeek.com</link>
	<description>Programación en C#, PHP y software libre</description>
	<lastBuildDate>Thu, 29 Jul 2010 18:18:49 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Genericidad en C#. Ejemplos (parte I)</title>
		<link>http://www.puntopeek.com/programacion/genericidad-ejemplos-c-sharp-parte-1/</link>
		<comments>http://www.puntopeek.com/programacion/genericidad-ejemplos-c-sharp-parte-1/#comments</comments>
		<pubDate>Sun, 06 Jun 2010 07:03:14 +0000</pubDate>
		<dc:creator>Tomy</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Tutoriales C#]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[ejemplos C#]]></category>

		<guid isPermaLink="false">http://www.puntopeek.com/?p=296</guid>
		<description><![CDATA[Si no sabes que es la genericidad, te aconsejo que prestes atención, porque sin duda esta nueva característica, que se presenta a partir de la versión 2.0 del Framework .Net, te cambiará totalmente la forma de ver las cosas y te facilitará la vida a la hora de crear un programa con C#.  
¿Qué [...]


Entradas relacionadas<li><a href='http://www.puntopeek.com/programacion/herencia-programacion-en-c/' rel='bookmark' title='Permanent Link: Herencia. Programación en C#'>Herencia. Programación en C#</a></li>
]]></description>
			<content:encoded><![CDATA[<p>Si no sabes que es la genericidad, te aconsejo que prestes atención, porque sin duda esta nueva característica, que se presenta a partir de la versión 2.0 del Framework .Net, te cambiará totalmente la forma de ver las cosas y te facilitará la vida a la hora de crear un programa con C#.  <strong></strong></p>
<p><strong>¿Qué es la genericidad?</strong> Primero lo primero. La <em>genericidad</em> nos permite pasar un tipo genérico (o más), como parámetro a un método, clase, estructura o interfaz. O sea, este nuevo tipo (que llamaremos &lt;T&gt;), viene a sustituir al tipo <em>object</em>, que es usado sobre todo en estructuras de propósito general, como son los arraylist, pilas (stack), colas (queue) y otras que usamos frecuentemente, en las cuales todos los elementos deben ser de un mismo tipo. Por ejemplo, en una lista de números, en la que no queremos que hayan datos de tipo <em>strings</em> o <em>char</em>, solo de tipo <em>int.<span id="more-296"></span></em> Ahora se preguntarán <strong>¿Por qué sustituir el tipo Object?</strong></p>
<p>Recuerden que todos los tipos en C# (<em>int</em>, long, <em>string</em>, <em>char</em>, etc) heredan de la clase <em>Object</em>, lo cual es una ventaja para algunas cosas, pero a la vez es un problema a la hora de chequear el tipo de los elementos que se insertan en estas estructuras, ya que no hay una forma rápida y eficaz de verificar que todos los elementos sean del mismo tipo, para controlar esto, tendríamos que <a href="www.carlospes.com/minidiccionario/casting.php" target="_blank">castear</a>* cada vez que queramos obtener un valor de dicha estructura, lo cual puede llevar a errores, por no mencionar que es algo muy pesado, incómodo de programar y hay una gran posibilidad de errores en <a title="tiempo de ejecución" href="http://es.wikipedia.org/wiki/Tiempo_de_ejecución" target="_blank">tiempo de ejecución</a>.</p>
<p>Al usar genericidad también tenemos que tener en cuenta algunos cambios (para bien) en nuestra forma de programar, pero es mejor verlo en la práctica, veamos un ejemplo:  Supongamos que queremos crear una clase con un método o función que nos devuelva el menor de dos valores de un mismo tipo. Utilizando la genericidad, tendríamos algo así:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">class</span> Ejemplo<span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span> <span style="color: #008080; font-style: italic;">//T es el tipo de dato genérico</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #008080; font-style: italic;">//Método que devuelve un elemento de tipo T que es el mínimo</span>
    <span style="color: #008080; font-style: italic;">//entre el elemento x y el elemento &lt;em&gt;y&lt;/em&gt;</span>
    T Minimo<span style="color: #000000;">&#40;</span>T x, T y<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
       <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>x <span style="color: #008000;">&lt;</span> y<span style="color: #000000;">&#41;</span>
          <span style="color: #0600FF;">return</span> x<span style="color: #008000;">;</span>
       <span style="color: #0600FF;">else</span>
          <span style="color: #0600FF;">return</span> y<span style="color: #008000;">;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Ahora veamos qué pasa cuando invocamos este método:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">//Supongamos que tenemos una clase Figura</span>
Figura f1 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Figura<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Figura f2 <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Figura<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Ejemplo ej <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Ejemplo<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Figura min <span style="color: #008000;">=</span> ej.<span style="color: #0000FF;">Minimo</span><span style="color: #000000;">&#40;</span>f1, f2<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Este código ni siquiera se ejecutaría, y dará un error en <a href="http://es.wikipedia.org/wiki/Tiempo_de_compilación" target="_blank">tiempo de compilación</a> en la línea marcada de la clase <strong>Ejemplo&lt;T&gt;</strong> donde T es la clase Figura, ya que en ninguna parte especificamos cuando una instancia de <em>Figura</em> es menor, mayor o igual que otra, sin embargo, para el tipo <em>int </em>esto no supondría ningún problema verdad?</p>
<p><strong>¿Qué quiere decir esto?</strong></p>
<p>Cuando usemos genericidad tenemos que ser mucho más cuidadosos y formales cuando programemos, lo cual no es una mala práctica y es bueno ir acostumbrándose. Ahora arreglemos la clase <em>Ejemplo</em> para que el método <em>Minimo(T x, T y)</em> funcione con cualquier tipo de dato en general (que se pueda comparar):</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">class</span> Ejemplo<span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;</span> where T<span style="color: #008000;">:</span> IComparable<span style="color: #008000;">&lt;</span>T<span style="color: #008000;">&gt;;</span>
<span style="color: #000000;">&#123;</span>
    T Minimo<span style="color: #000000;">&#40;</span>T x, T y<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        <span style="color: #FF0000;">int</span> c <span style="color: #008000;">=</span> x.<span style="color: #0000FF;">CompareTo</span><span style="color: #000000;">&#40;</span>y<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>c<span style="color: #008000;">&lt;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
            <span style="color: #0600FF;">return</span> x<span style="color: #008000;">;</span>
        <span style="color: #0600FF;">else</span>
            <span style="color: #0600FF;">return</span> y<span style="color: #008000;">;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Ahora ya especificamos que T es un tipo que debe implementar la interfaz IComparable&lt;T&gt;. En otras palabras, obligamos a que los elementos de tipo T se pueden comparar entre ellos, ya que en otro caso, hallar el mínimo pierde el sentido. En estos casos, se utiliza la palabra reservada <em>where:</em> y a continuación todas las restricciones que debe cumplir T, separadas por coma.</p>
<p>Entonces usamos el método <em>CompareTo</em> que debe implementar toda clase T que sea <em>IComparable</em> para saber cuál es el menor elemento. Este método deberá devolver <strong>0 si x=y, 1 si x&gt;y,-1 si x&lt;y</strong>. Por tanto, el resultado de ejecutar <em>Minimo</em>, depende completamente de cómo implementemos el método <em>CompareTo()</em>.  Por ejemplo, si tenemos la clase Figura:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">class</span> Figura<span style="color: #008000;">:</span> IComparable<span style="color: #008000;">&lt;</span>Figura<span style="color: #008000;">&gt;</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #008080; font-style: italic;">//Supongamos que tenemos estos métodos implementados</span>
    <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">long</span> Area<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">long</span> Perimetro<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">//Ahora implementamos el método &lt;em&gt;CompareTo&lt;/em&gt;</span>
    <span style="color: #0600FF;">public</span> <span style="color: #FF0000;">int</span> CompareTo<span style="color: #000000;">&#40;</span>Figura f<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Area</span><span style="color: #008000;">&gt;</span>f.<span style="color: #0000FF;">Area</span><span style="color: #000000;">&#41;</span>
            <span style="color: #0600FF;">return</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF;">else</span> <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">Area</span><span style="color: #008000;">&lt;</span>f.<span style="color: #0000FF;">Area</span><span style="color: #000000;">&#41;</span>
            <span style="color: #0600FF;">return</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
        <span style="color: #0600FF;">else</span>
            <span style="color: #0600FF;">return</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>En este caso, decidimos que una Figura es mayor que otra, en función del área, pero podemos definir que se comparen por el diámetro, por el perímetro, etc. Noten que aquí si podemos usar los operadores binarios dentro del CompareTo, ya que en este caso comparamos implícitamente elementos de tipo long, que son IComparables por defecto.  Ya vas notando algunas ventajas de usar genericidad?</p>
<p>Ahora en un mismo método Mínimo, podemos devolver el elemento menor de cualquier tipo de dato que se pueda comparar, noten que este método nos servirá para Int, String, Long, Figuras, Personas y toda clase o tipo que implemente la interfaz IComparable.</p>
<p>Les dejo dos implementación de la clase <strong>Queue&lt;T&gt;</strong>, que es una cola con algunos métodos genéricos. En una de las implementaciones uso arrays, y en la otra colas enlazables. No lo he probado muy bien, pero funcionaba hace dos años cuando la implementé, jeje.</p>
<p>Veremos algunas otras cosas que podemos hacer con la genericidad en la segunda entrega de este tutorial, la semana próxima. Cualquier duda en los comentarios.</p>
<p>Descarga aquí el archivo en .zip:  <a href="http://www.puntopeek.com/wp-content/uploads/2010/06/cola.zip">Cola en C#</a></p>



Comparte este post:


	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F" title="Meneame"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F&amp;title=Genericidad%20en%20C%23.%20Ejemplos%20%28parte%20I%29&amp;bodytext=Si%20no%20sabes%20que%20es%20la%20genericidad%2C%20te%20aconsejo%20que%20prestes%20atenci%C3%B3n%2C%20porque%20sin%20duda%20esta%20nueva%20caracter%C3%ADstica%2C%20que%20se%20presenta%20a%20partir%20de%20la%20versi%C3%B3n%202.0%20del%20Framework%20.Net%2C%20te%20cambiar%C3%A1%20totalmente%20la%20forma%20de%20ver%20las%20cosas%20y%20te%20facilitar%C3%A1%20la%20vi" title="Digg"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F&amp;title=Genericidad%20en%20C%23.%20Ejemplos%20%28parte%20I%29&amp;notes=Si%20no%20sabes%20que%20es%20la%20genericidad%2C%20te%20aconsejo%20que%20prestes%20atenci%C3%B3n%2C%20porque%20sin%20duda%20esta%20nueva%20caracter%C3%ADstica%2C%20que%20se%20presenta%20a%20partir%20de%20la%20versi%C3%B3n%202.0%20del%20Framework%20.Net%2C%20te%20cambiar%C3%A1%20totalmente%20la%20forma%20de%20ver%20las%20cosas%20y%20te%20facilitar%C3%A1%20la%20vi" title="del.icio.us"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F&amp;t=Genericidad%20en%20C%23.%20Ejemplos%20%28parte%20I%29" title="Facebook"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://barrapunto.com/submit.pl?subj=Genericidad%20en%20C%23.%20Ejemplos%20%28parte%20I%29&amp;story=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F" title="BarraPunto"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/barrapunto.png" title="BarraPunto" alt="BarraPunto" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F&amp;title=Genericidad%20en%20C%23.%20Ejemplos%20%28parte%20I%29&amp;annotation=Si%20no%20sabes%20que%20es%20la%20genericidad%2C%20te%20aconsejo%20que%20prestes%20atenci%C3%B3n%2C%20porque%20sin%20duda%20esta%20nueva%20caracter%C3%ADstica%2C%20que%20se%20presenta%20a%20partir%20de%20la%20versi%C3%B3n%202.0%20del%20Framework%20.Net%2C%20te%20cambiar%C3%A1%20totalmente%20la%20forma%20de%20ver%20las%20cosas%20y%20te%20facilitar%C3%A1%20la%20vi" title="Google Bookmarks"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F&amp;title=Genericidad%20en%20C%23.%20Ejemplos%20%28parte%20I%29" title="Reddit"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F" title="Technorati"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F" title="Wikio"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio" alt="Wikio" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F&amp;title=Genericidad%20en%20C%23.%20Ejemplos%20%28parte%20I%29&amp;source=Programaci%C3%B3n+y+desarrollo+web+Programaci%C3%B3n+en+C%23%2C+PHP+y+software+libre&amp;summary=Si%20no%20sabes%20que%20es%20la%20genericidad%2C%20te%20aconsejo%20que%20prestes%20atenci%C3%B3n%2C%20porque%20sin%20duda%20esta%20nueva%20caracter%C3%ADstica%2C%20que%20se%20presenta%20a%20partir%20de%20la%20versi%C3%B3n%202.0%20del%20Framework%20.Net%2C%20te%20cambiar%C3%A1%20totalmente%20la%20forma%20de%20ver%20las%20cosas%20y%20te%20facilitar%C3%A1%20la%20vi" title="LinkedIn"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Genericidad%20en%20C%23.%20Ejemplos%20%28parte%20I%29&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F" title="Netvibes"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F" title="Bitacoras.com"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.diggita.it/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F&title=Genericidad%20en%20C%23.%20Ejemplos%20%28parte%20I%29" title="Diggita"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/diggita.png" title="Diggita" alt="Diggita" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Genericidad%20en%20C%23.%20Ejemplos%20%28parte%20I%29&amp;body=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F" title="email"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email link Genericidad en C#. Ejemplos (parte I)" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F&amp;t=Genericidad%20en%20C%23.%20Ejemplos%20%28parte%20I%29" title="MySpace"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Genericidad%20en%20C%23.%20Ejemplos%20%28parte%20I%29%20-%20http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fgenericidad-ejemplos-c-sharp-parte-1%2F" title="Twitter"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas<li><a href='http://www.puntopeek.com/programacion/herencia-programacion-en-c/' rel='bookmark' title='Permanent Link: Herencia. Programación en C#'>Herencia. Programación en C#</a></li>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/programacion/genericidad-ejemplos-c-sharp-parte-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ejercicios resueltos de string en C#</title>
		<link>http://www.puntopeek.com/programacion/ejercicios-resueltos-string-en-c-sharp/</link>
		<comments>http://www.puntopeek.com/programacion/ejercicios-resueltos-string-en-c-sharp/#comments</comments>
		<pubDate>Thu, 22 Apr 2010 21:33:35 +0000</pubDate>
		<dc:creator>Tomy</dc:creator>
				<category><![CDATA[Codigos C#]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[ejemplos C#]]></category>
		<category><![CDATA[ejercicios C#]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://www.puntopeek.com/?p=283</guid>
		<description><![CDATA[Aquí les pongo unos cuantos ejercicios resueltos y códigos escritos en C# relacionados con el manejo de strings (cadenas) que seguro te ayudará de muchas formas a mejorar el uso de este popular tipo de dato. Pero primero veamos cuales son los métodos y propiedades de esta clase String.
Métodos y propiedades fundamentales
public char this[int index] [...]


Entradas relacionadas<li><a href='http://www.puntopeek.com/tutoriales-c/la-clase-string-en-c/' rel='bookmark' title='Permanent Link: La clase String en C#'>La clase String en C#</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/tres-formas-de-invertir-un-string/' rel='bookmark' title='Permanent Link: Tres formas de Invertir un String'>Tres formas de Invertir un String</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/combinaciones-posibles-recursividad-c/' rel='bookmark' title='Permanent Link: Combinaciones posibles. Recursividad C#'>Combinaciones posibles. Recursividad C#</a></li>
<li><a href='http://www.puntopeek.com/programacion/ejercicios-resueltos-de-array-en-c/' rel='bookmark' title='Permanent Link: Ejercicios de array con C# (1ra. parte)'>Ejercicios de array con C# (1ra. parte)</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/mas-ejercicios-de-array-en-c/' rel='bookmark' title='Permanent Link: Ejercicios de array con C# (2da. parte)'>Ejercicios de array con C# (2da. parte)</a></li>
]]></description>
			<content:encoded><![CDATA[<p>Aquí les pongo unos cuantos ejercicios resueltos y códigos escritos en C# relacionados con el manejo de strings (cadenas) que seguro te ayudará de muchas formas a mejorar el uso de este popular tipo de dato. Pero primero veamos cuales son los métodos y propiedades de esta clase String.<span id="more-283"></span></p>
<p><strong>Métodos y propiedades fundamentales</strong></p>
<p><em>public char this[int index] {get;} </em><br />
Devuelve el caracter de la posición especificada de la cadena.</p>
<p><em>public int Length {get;}</em><br />
Devuelve la longitud de la cadena (cantidad de caracteres que contiene) empezando a contar desde 1.</p>
<p><em>public string Insert(int startIndex, string value); </em><br />
Inserta la cadena especificada a partir de la posición dada.</p>
<p><em>public string Remove(int startIndex,int count);</em><br />
Elimina el número especificado de caracteres a partir de la posición dada.</p>
<p><em>public string[] Split(params char[] separator); </em><br />
Busca las subcadenas contenidas dentro de la cadena, delimitándolas por los separadores que se le especifiquen, y las copia a un arreglo de cadenas.</p>
<p><em>public string Substring(int startIndex);</em><br />
Devuelve la subcadena contenida a partir de la posición especificada.</p>
<p><em>public string Substring(int index, int length);</em><br />
Devuelve la subcadena que empieza a partir del índice específico, y tiene la longitud indicada.</p>
<p><strong>Ejercicios resueltos</strong></p>
<p>1- Implemente un método que dado un string s cualquiera, devuelva un nuevo string que se el inverso de s. (ej: entrada: “puntopeek”; salida: “keepotnup”)</p>

<div class="wp_syntax"><div class="code"><pre class="c-sharp" style="font-family:monospace;">public string Invierte(string a)
{
  string b = &quot;&quot;;
  for (int i = 0; i &amp;lt; a.Length ; i++)
    b = a[i] + b;
  return b;
}</pre></div></div>

<p>2- Implemente una función que dado un string, una posición de comienzo y una cantidad de caracteres, devuelva una subcadena (substring) de una cadena dada a partir de los parámetros dados (ej: entrada: “puntopeek”, pos= 2, cant= 4; salida: “ntop”.)</p>

<div class="wp_syntax"><div class="code"><pre class="c-sharp" style="font-family:monospace;">public string SubString(string a, int pos, int cant)
{
   string pedazo = &quot;&quot; ;
   if((pos + cant) &amp;gt; a.Length)
      throw new Exception(&quot;&quot;);
   else
   {
      for (int j = pos; j &amp;lt; cant + pos ; j ++ )
         pedazo += a[j];
      return pedazo;
   }
}</pre></div></div>

<p>3- Implemente un método Replace, que reciba un string s, y dos caracteres old y new. Dicha función debe reemplazar todas las ocurrencias del caracter old por el carácter new, y devolver un nuevo string con dicha característica.  (ej: entrada: “programacion”, old= ‘a’, new=’i’; salida: “progrimicion”)</p>

<div class="wp_syntax"><div class="code"><pre class="c-sharp" style="font-family:monospace;">public string Replace (string a, char old, char new)
{
   string result = &quot;&quot;;
   for (int i = 0; i &amp;lt; a.Length ; i++)
   {
      if(a[i] == old)
         result += new;
      else
         result += a[i];
   }
   return result;
}</pre></div></div>

<p>4*- Implemente un método Combinar, que dado un string s, devuelva todas las combinaciones posibles que se pueden formar a partir de los caracteres de s. Este método es un poco más complicado, pero muy útil y práctico. Para esto usaremos recursividad, para ir generando todas las posibles combinaciones.<br />
(ej: entrada: “hoy”; salida: “hoy”, “hyo”, “ohy”, “oyh”, “yho”, “yoh”)</p>

<div class="wp_syntax"><div class="code"><pre class="c-sharp" style="font-family:monospace;">public void Combina(string s)
{
   bool[] marcas = new bool[s.Length];
   Combina(s, &quot;&quot;, marcas);
}
void Combina(string original, string combinado, bool[] marcas)
{
   if (original.Length == combinado.Length)
      Console.WriteLine(combinado);
   for (int i = 0; i &amp;lt; marcas.Length; i++)
   {
      if (!marcas[i])
      {
         marcas[i] = true;
         Combina(original, combinado + original[i], marcas);
         marcas[i] = false;
      }
   }
}</pre></div></div>

<p>Si tienes alguna duda sobre los códigos anteriores, o quieres agregar algo, en los comentarios.<br />
Bueno, hasta aquí esta entrega de ejercicios resueltos. Espero que te sirva, y si quieres practicar, guíate por estos ejemplos y trata de implementar otros métodos relacionados con string, como son:<br />
1- Eliminar un carácter dado de una cadena.</p>

<div class="wp_syntax"><div class="code"><pre class="c-sharp" style="font-family:monospace;">    public string Eliminar(string s, char c).</pre></div></div>

<p>2- Ver si un string es palíndromo ó no, o sea, se escribe igual al derecho que al revés.</p>

<div class="wp_syntax"><div class="code"><pre class="c-sharp" style="font-family:monospace;">    public  bool EsPalindromo(string s)</pre></div></div>

<p>3- Ver cuál es el letra que más se repite en una cadena.</p>

<div class="wp_syntax"><div class="code"><pre class="c-sharp" style="font-family:monospace;">    public char MasPopular(string s)</pre></div></div>

<p>Es muy aconsejable que traten de hacer estos ejercicios solos, auxiliándose de los ejemplos anteriores. De todos modos pondré la respuesta de estos ejercicios en una próxima entrega la semana que viene.</p>



Comparte este post:


	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F" title="Meneame"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F&amp;title=Ejercicios%20resueltos%20de%20string%20en%20C%23&amp;bodytext=Aqu%C3%AD%20les%20pongo%20unos%20cuantos%20ejercicios%20resueltos%20y%20c%C3%B3digos%20escritos%20en%20C%23%20relacionados%20con%20el%20manejo%20de%20strings%20%28cadenas%29%20que%20seguro%20te%20ayudar%C3%A1%20de%20muchas%20formas%20a%20mejorar%20el%20uso%20de%20este%20popular%20tipo%20de%20dato.%20Pero%20primero%20veamos%20cuales%20son%20los%20m%C3%A9t" title="Digg"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F&amp;title=Ejercicios%20resueltos%20de%20string%20en%20C%23&amp;notes=Aqu%C3%AD%20les%20pongo%20unos%20cuantos%20ejercicios%20resueltos%20y%20c%C3%B3digos%20escritos%20en%20C%23%20relacionados%20con%20el%20manejo%20de%20strings%20%28cadenas%29%20que%20seguro%20te%20ayudar%C3%A1%20de%20muchas%20formas%20a%20mejorar%20el%20uso%20de%20este%20popular%20tipo%20de%20dato.%20Pero%20primero%20veamos%20cuales%20son%20los%20m%C3%A9t" title="del.icio.us"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F&amp;t=Ejercicios%20resueltos%20de%20string%20en%20C%23" title="Facebook"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://barrapunto.com/submit.pl?subj=Ejercicios%20resueltos%20de%20string%20en%20C%23&amp;story=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F" title="BarraPunto"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/barrapunto.png" title="BarraPunto" alt="BarraPunto" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F&amp;title=Ejercicios%20resueltos%20de%20string%20en%20C%23&amp;annotation=Aqu%C3%AD%20les%20pongo%20unos%20cuantos%20ejercicios%20resueltos%20y%20c%C3%B3digos%20escritos%20en%20C%23%20relacionados%20con%20el%20manejo%20de%20strings%20%28cadenas%29%20que%20seguro%20te%20ayudar%C3%A1%20de%20muchas%20formas%20a%20mejorar%20el%20uso%20de%20este%20popular%20tipo%20de%20dato.%20Pero%20primero%20veamos%20cuales%20son%20los%20m%C3%A9t" title="Google Bookmarks"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F&amp;title=Ejercicios%20resueltos%20de%20string%20en%20C%23" title="Reddit"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F" title="Technorati"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F" title="Wikio"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio" alt="Wikio" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F&amp;title=Ejercicios%20resueltos%20de%20string%20en%20C%23&amp;source=Programaci%C3%B3n+y+desarrollo+web+Programaci%C3%B3n+en+C%23%2C+PHP+y+software+libre&amp;summary=Aqu%C3%AD%20les%20pongo%20unos%20cuantos%20ejercicios%20resueltos%20y%20c%C3%B3digos%20escritos%20en%20C%23%20relacionados%20con%20el%20manejo%20de%20strings%20%28cadenas%29%20que%20seguro%20te%20ayudar%C3%A1%20de%20muchas%20formas%20a%20mejorar%20el%20uso%20de%20este%20popular%20tipo%20de%20dato.%20Pero%20primero%20veamos%20cuales%20son%20los%20m%C3%A9t" title="LinkedIn"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Ejercicios%20resueltos%20de%20string%20en%20C%23&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F" title="Netvibes"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F" title="Bitacoras.com"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.diggita.it/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F&title=Ejercicios%20resueltos%20de%20string%20en%20C%23" title="Diggita"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/diggita.png" title="Diggita" alt="Diggita" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Ejercicios%20resueltos%20de%20string%20en%20C%23&amp;body=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F" title="email"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email link Ejercicios resueltos de string en C#" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F&amp;t=Ejercicios%20resueltos%20de%20string%20en%20C%23" title="MySpace"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Ejercicios%20resueltos%20de%20string%20en%20C%23%20-%20http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-string-en-c-sharp%2F" title="Twitter"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas<li><a href='http://www.puntopeek.com/tutoriales-c/la-clase-string-en-c/' rel='bookmark' title='Permanent Link: La clase String en C#'>La clase String en C#</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/tres-formas-de-invertir-un-string/' rel='bookmark' title='Permanent Link: Tres formas de Invertir un String'>Tres formas de Invertir un String</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/combinaciones-posibles-recursividad-c/' rel='bookmark' title='Permanent Link: Combinaciones posibles. Recursividad C#'>Combinaciones posibles. Recursividad C#</a></li>
<li><a href='http://www.puntopeek.com/programacion/ejercicios-resueltos-de-array-en-c/' rel='bookmark' title='Permanent Link: Ejercicios de array con C# (1ra. parte)'>Ejercicios de array con C# (1ra. parte)</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/mas-ejercicios-de-array-en-c/' rel='bookmark' title='Permanent Link: Ejercicios de array con C# (2da. parte)'>Ejercicios de array con C# (2da. parte)</a></li>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/programacion/ejercicios-resueltos-string-en-c-sharp/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Herencia. Programación en C#</title>
		<link>http://www.puntopeek.com/programacion/herencia-programacion-en-c/</link>
		<comments>http://www.puntopeek.com/programacion/herencia-programacion-en-c/#comments</comments>
		<pubDate>Sat, 12 Sep 2009 22:49:54 +0000</pubDate>
		<dc:creator>Tomy</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Tutoriales C#]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[herencia]]></category>

		<guid isPermaLink="false">http://www.puntopeek.com/?p=254</guid>
		<description><![CDATA[Como todo lenguaje de programación actual, C# es un lenguaje orientado a objetos y soporta todas las características propias del paradigma de programación orientada a objetos: encapsulación, herencia y polimorfismo.
En este post trataré de explicar de la forma más sencilla posible, lo que es la herencia en programación, y pondré algunos ejemplos al final para [...]


Entradas relacionadas<li><a href='http://www.puntopeek.com/programacion/genericidad-ejemplos-c-sharp-parte-1/' rel='bookmark' title='Permanent Link: Genericidad en C#. Ejemplos (parte I)'>Genericidad en C#. Ejemplos (parte I)</a></li>
]]></description>
			<content:encoded><![CDATA[<p>Como todo lenguaje de programación actual, C# es un lenguaje orientado a objetos y soporta todas las características propias del paradigma de programación orientada a objetos: <strong>encapsulación, herencia y polimorfismo.</strong></p>
<p>En este post trataré de explicar de la forma más sencilla posible, lo que es la herencia en programación, y pondré algunos ejemplos al final para ver si se llevan la idea, aunque seguro se quedan con algunas dudas, ya que es un concepto fácil de entender, pero difícil de aplicar en programación&#8230; después hablaremos entonces de lo que es la encapsulación y el polimorfismo<span id="more-254"></span></p>
<p>Por definición, la herencia no es más que la capacidad de un objeto de heredar las características de otro. Bueno, en programación, la herencia es la capacidad de una clase de heredar los métodos, las variables y las propiedades de otra (los constructores no se heredan). Esto permite ahorrar código, ya que varias funcionalidades no tendríamos que implementarlas nuevamente.</p>
<p>Una clase que herede de otra, puede usar los métodos, las propiedades o las variables de la clase padre. También se puede redefinir o modificar los métodos y propiedades, usando algunas palabras reservadas para esto, creando así un nuevo comportamiento del objeto. Una condición necesaria para que una clase herede de otra, es que la clase hija (la que hereda), debe poder usarse donde se use la clase padre (de la cual va a heredar). Si hay al menos un caso donde se puede usar la clase padre, y no se puede usar la clase hija, la herencia no tiene sentido.</p>
<p>En C#, una clase solo puede heredar de otra (por algunas razones difíciles de explicar). O sea, una clase no puede heredar de varias clases a la vez. Para que una clase herede de otra nada más hay que ponerle &#8216;<strong>:</strong>&#8216; después de su declaración, y seguido poner el nombre de la clase de la que se quiere heredar.</p>
<p>Ejemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">class</span> Circulo<span style="color: #008000;">:</span> Figura
<span style="color: #000000;">&#123;</span>
    <span style="color: #008080; font-style: italic;">// Implementación de la clase</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Si una clase hija tiene un <a href="http://www.puntopeek.com/tutoriales-c/clases-en-c-declarar-un-constructor/" target="_blank">constructor</a> que recibe los mismos parámetros que un constructor de la clase padre, y este constructor cumple las mismas funciones, que en la clase padre, el de la clase padre puede ser llamado desde la clase hija poniendo después de la declaración del constructor en la clase hija : y después la palabra reservada base. Dentro de los paréntesis van los parámetros del constructor base, (también veremos un ejemplo).</p>
<p>También es importante saber que si una clase hereda de otra, que a su vez hereda de otra, esta clase hereda también de la clase más arriba.</p>
<p>Por ejemplo, si un cuadrilátero es una figura y un paralelogramo es un cuadrilátero, entonces un paralelogramo es una figura&#8230;</p>
<p>Para que una clase padre permita que uno de sus métodos sea redefinido por sus clases herederas (las que heredan de ella) este método debe ser declarado usando la palabra reservada <strong>virtual</strong>, y cuando la clase hija vaya a redefinirlo, debe declararlo usando la palabra reservada <strong>override</strong>.</p>
<p>Ejemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">public</span> <span style="color: #008000;">&lt;</span>strong<span style="color: #008000;">&gt;</span><span style="color: #0600FF;">virtual</span><span style="color: #008000;">&lt;/</span>strong<span style="color: #008000;">&gt;</span> <span style="color: #0600FF;">void</span> Método<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #008080; font-style: italic;">//declaración del método en la clase Padre</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">//aquí va el codigo</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> Método<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #008080; font-style: italic;">//declaración del método en la clase Hijo</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">//nuevas instrucciones</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Si una clase hijo quiere redefinir un método de una clase padre, y este no fue declarado <strong>virtual</strong> en la clase padre, entonces hay que poner la palabra reservada <strong>new</strong> en la declaración del método.</p>
<p>Ejemplo:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Método<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #008080; font-style: italic;">//declaración del método en la clase Padre</span>
<span style="color: #000000;">&#123;</span>
   <span style="color: #008080; font-style: italic;">//aquí va el codigo</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #008000;">new</span> <span style="color: #0600FF;">void</span> Método<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #008080; font-style: italic;">//declaración del método en la clase Hijo</span>
<span style="color: #000000;">&#123;</span>
   <span style="color: #008080; font-style: italic;">//nuevas instrucciones</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p><strong>Ejemplo de herencia:</strong></p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> Hijo<span style="color: #008000;">:</span>Padre
<span style="color: #000000;">&#123;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//la clase Hijo hereda de la clase Padre</span>
<span style="color: #0600FF;">public</span> Hijo<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> n<span style="color: #000000;">&#41;</span><span style="color: #008000;">:</span><span style="color: #0600FF;">base</span><span style="color: #000000;">&#40;</span>n<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>El constructor de la clase Hijo que recibe como parámetros un entero llama al constructor de la clase Padre que recibe un entero pasándoselo como parámetro.</p>
<p>Ahora veremos un ejemplo real donde se vea la importancia de este importante mecanismo. Imaginen, que queremos tener algunas figuras geométricas, poder calcular el area, perimetro, moverlas en un plano, etc. Pero nos damos cuenta enseguida, que todas las figuras tienen area y perímetro, solo que se calculan de diferentes formas. Todas se pueden ocultar, mostrar y mover de igual forma, no? Veamos ya el código, para que sigan esta idea:</p>
<p>Antes de pasar al código, hay que definir que una jerarquía de clases es un grupo de clases, que heredan unas de otras, donde existe una clase base de la cual heredan todos los integrantes de la jerarquía, en este caso, la clase base es la clase figura.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">//Declaramos la clase padre, de la que todas las figuras heredarán</span>
<span style="color: #008080; font-style: italic;">//Es abstracta porque tendrá algunos metodos abstractos</span>
&nbsp;
<span style="color: #0600FF;">public</span> abstract <span style="color: #FF0000;">class</span> Figura
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">//Usamos &lt;strong&gt;protected,&lt;/strong&gt; para que solo tengan acceso</span>
<span style="color: #008080; font-style: italic;">//a estas variables, las clases que heredan de ella</span>
<span style="color: #0600FF;">protected</span> <span style="color: #FF0000;">int</span> x,y<span style="color: #008000;">;</span>
<span style="color: #0600FF;">protected</span> Control control<span style="color: #008000;">;</span>
<span style="color: #0600FF;">protected</span> Pen myPen<span style="color: #008000;">;</span>
<span style="color: #0600FF;">protected</span> <span style="color: #FF0000;">bool</span> visible<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Un constructor por defecto para todas las figuras</span>
<span style="color: #0600FF;">public</span> Figura<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> x, <span style="color: #FF0000;">int</span> y, Color color, Control control<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">//Validar parametros</span>
<span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">x</span> <span style="color: #008000;">=</span> x<span style="color: #008000;">;</span>
<span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">y</span> <span style="color: #008000;">=</span> y<span style="color: #008000;">;</span>
<span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">control</span> <span style="color: #008000;">=</span> control<span style="color: #008000;">;</span>
myPen <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Pen<span style="color: #000000;">&#40;</span>color,<span style="color: #FF0000;">4</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">public</span> abstract <span style="color: #0600FF;">void</span> Muestra<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">public</span> abstract <span style="color: #FF0000;">int</span> Area<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">virtual</span> <span style="color: #0600FF;">void</span> Oculta<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
Color temp <span style="color: #008000;">=</span> myPen.<span style="color: #0000FF;">Color</span><span style="color: #008000;">;</span>
myPen.<span style="color: #0000FF;">Color</span> <span style="color: #008000;">=</span> control.<span style="color: #0000FF;">BackColor</span><span style="color: #008000;">;</span>
Muestra<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
myPen.<span style="color: #0000FF;">Color</span> <span style="color: #008000;">=</span> temp<span style="color: #008000;">;</span>
visible <span style="color: #008000;">=</span> false<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">virtual</span> <span style="color: #0600FF;">void</span> Traslada<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> plusX, <span style="color: #FF0000;">int</span> plusY<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>visible<span style="color: #000000;">&#41;</span>
   <span style="color: #000000;">&#123;</span>
      Oculta<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
      x <span style="color: #008000;">+=</span> plusX<span style="color: #008000;">;</span>
      y <span style="color: #008000;">+=</span> plusY<span style="color: #008000;">;</span>
      Muestra<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
   <span style="color: #000000;">&#125;</span>
   <span style="color: #0600FF;">else</span>
   <span style="color: #000000;">&#123;</span>
      x <span style="color: #008000;">+=</span> plusX<span style="color: #008000;">;</span>
      y <span style="color: #008000;">+=</span> plusY<span style="color: #008000;">;</span>
   <span style="color: #000000;">&#125;</span></pre></div></div>

<p>Ahora veremos el código de otras dos figuras en concreto que heredarán de la clase figura, un circulo y un rectángulo.</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> Circulo<span style="color: #008000;">:</span>Figura
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">//Vemos que en esta clase solo hay que declarar</span>
<span style="color: #008080; font-style: italic;">//una variable</span>
<span style="color: #0600FF;">protected</span> <span style="color: #FF0000;">int</span> radio<span style="color: #008000;">;</span>
<span style="color: #008080; font-style: italic;">//Este constructor tendrá todos los parámetros</span>
<span style="color: #008080; font-style: italic;">//por defecto y un radio porque es un circulo</span>
<span style="color: #0600FF;">public</span> Circulo<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> x, <span style="color: #FF0000;">int</span> y, Color miColor, Control miControl,
 <span style="color: #FF0000;">int</span> radio<span style="color: #000000;">&#41;</span>
<span style="color: #008000;">:</span><span style="color: #0600FF;">base</span><span style="color: #000000;">&#40;</span>x,y,miColor,miControl<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   <span style="color: #008080; font-style: italic;">//Validacion</span>
   <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">radio</span> <span style="color: #008000;">=</span> radio<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #008080; font-style: italic;">//Ahora hay que programar como se mostrará la figura</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> Muestra<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   Graphics g <span style="color: #008000;">=</span> control.<span style="color: #0000FF;">CreateGraphics</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
   g.<span style="color: #0000FF;">DrawEllipse</span><span style="color: #000000;">&#40;</span>myPen,x<span style="color: #008000;">-</span>radio,y<span style="color: #008000;">-</span>radio,radio<span style="color: #008000;">*</span><span style="color: #FF0000;">2</span>,radio<span style="color: #008000;">*</span><span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
   visible <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Decimos como se calcula el area en este caso</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">int</span> Area<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   <span style="color: #0600FF;">return</span> Math.<span style="color: #0000FF;">PI</span> <span style="color: #008000;">*</span> Math.<span style="color: #0000FF;">PI</span> <span style="color: #008000;">*</span> radio<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Le podemos añadir otro método independiente</span>
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">int</span> Perimetro<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">return</span> <span style="color: #FF0000;">2</span> <span style="color: #008000;">*</span> Math.<span style="color: #0000FF;">PI</span> <span style="color: #008000;">*</span> radio<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Esta clase también heredará de figura</span>
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> Rectangulo<span style="color: #008000;">:</span>Figura
<span style="color: #000000;">&#123;</span>
   <span style="color: #0600FF;">protected</span> <span style="color: #FF0000;">int</span> ancho,alto<span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">public</span> Rectangulo<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> x, <span style="color: #FF0000;">int</span> y, Color miColor, Control miControl, 
<span style="color: #FF0000;">int</span> ancho, <span style="color: #FF0000;">int</span> alto<span style="color: #000000;">&#41;</span>
<span style="color: #008000;">:</span><span style="color: #0600FF;">base</span><span style="color: #000000;">&#40;</span>x,y,miColor,miControl<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   <span style="color: #008080; font-style: italic;">//Validar</span>
   <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">ancho</span> <span style="color: #008000;">=</span> ancho<span style="color: #008000;">;</span>
   <span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">alto</span> <span style="color: #008000;">=</span> alto<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #008080; font-style: italic;">//Redefinimos como mostrar la figura</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #0600FF;">void</span> Muestra<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   Graphics g <span style="color: #008000;">=</span> control.<span style="color: #0000FF;">CreateGraphics</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
   g.<span style="color: #0000FF;">DrawRectangle</span><span style="color: #000000;">&#40;</span>myPen,x,y,ancho,alto<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
   visible <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #008080; font-style: italic;">//Redefinimos como calcular el area</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">override</span> <span style="color: #FF0000;">int</span> Area<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
   <span style="color: #0600FF;">return</span> alto <span style="color: #008000;">*</span> ancho<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Bueno, hasta aquí este pequeño tutorial sobre herencia en C#, próximamente estaremos hablando sobre polimorfismo, y después de encapsulación. Cualquier duda en los comentarios. Hasta la próxima</p>



Comparte este post:


	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F" title="Meneame"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F&amp;title=Herencia.%20Programaci%C3%B3n%20en%20C%23&amp;bodytext=Como%20todo%20lenguaje%20de%20programaci%C3%B3n%20actual%2C%20C%23%20es%20un%20lenguaje%20orientado%20a%20objetos%20y%20soporta%20todas%20las%20caracter%C3%ADsticas%20propias%20del%20paradigma%20de%20programaci%C3%B3n%20orientada%20a%20objetos%3A%20encapsulaci%C3%B3n%2C%20herencia%20y%20polimorfismo.%0D%0A%0D%0AEn%20este%20post%20tratar%C3%A9%20de%20ex" title="Digg"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F&amp;title=Herencia.%20Programaci%C3%B3n%20en%20C%23&amp;notes=Como%20todo%20lenguaje%20de%20programaci%C3%B3n%20actual%2C%20C%23%20es%20un%20lenguaje%20orientado%20a%20objetos%20y%20soporta%20todas%20las%20caracter%C3%ADsticas%20propias%20del%20paradigma%20de%20programaci%C3%B3n%20orientada%20a%20objetos%3A%20encapsulaci%C3%B3n%2C%20herencia%20y%20polimorfismo.%0D%0A%0D%0AEn%20este%20post%20tratar%C3%A9%20de%20ex" title="del.icio.us"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F&amp;t=Herencia.%20Programaci%C3%B3n%20en%20C%23" title="Facebook"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://barrapunto.com/submit.pl?subj=Herencia.%20Programaci%C3%B3n%20en%20C%23&amp;story=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F" title="BarraPunto"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/barrapunto.png" title="BarraPunto" alt="BarraPunto" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F&amp;title=Herencia.%20Programaci%C3%B3n%20en%20C%23&amp;annotation=Como%20todo%20lenguaje%20de%20programaci%C3%B3n%20actual%2C%20C%23%20es%20un%20lenguaje%20orientado%20a%20objetos%20y%20soporta%20todas%20las%20caracter%C3%ADsticas%20propias%20del%20paradigma%20de%20programaci%C3%B3n%20orientada%20a%20objetos%3A%20encapsulaci%C3%B3n%2C%20herencia%20y%20polimorfismo.%0D%0A%0D%0AEn%20este%20post%20tratar%C3%A9%20de%20ex" title="Google Bookmarks"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F&amp;title=Herencia.%20Programaci%C3%B3n%20en%20C%23" title="Reddit"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F" title="Technorati"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F" title="Wikio"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio" alt="Wikio" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F&amp;title=Herencia.%20Programaci%C3%B3n%20en%20C%23&amp;source=Programaci%C3%B3n+y+desarrollo+web+Programaci%C3%B3n+en+C%23%2C+PHP+y+software+libre&amp;summary=Como%20todo%20lenguaje%20de%20programaci%C3%B3n%20actual%2C%20C%23%20es%20un%20lenguaje%20orientado%20a%20objetos%20y%20soporta%20todas%20las%20caracter%C3%ADsticas%20propias%20del%20paradigma%20de%20programaci%C3%B3n%20orientada%20a%20objetos%3A%20encapsulaci%C3%B3n%2C%20herencia%20y%20polimorfismo.%0D%0A%0D%0AEn%20este%20post%20tratar%C3%A9%20de%20ex" title="LinkedIn"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Herencia.%20Programaci%C3%B3n%20en%20C%23&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F" title="Netvibes"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F" title="Bitacoras.com"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.diggita.it/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F&title=Herencia.%20Programaci%C3%B3n%20en%20C%23" title="Diggita"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/diggita.png" title="Diggita" alt="Diggita" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Herencia.%20Programaci%C3%B3n%20en%20C%23&amp;body=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F" title="email"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email link Herencia. Programación en C#" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F&amp;t=Herencia.%20Programaci%C3%B3n%20en%20C%23" title="MySpace"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Herencia.%20Programaci%C3%B3n%20en%20C%23%20-%20http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fherencia-programacion-en-c%2F" title="Twitter"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas<li><a href='http://www.puntopeek.com/programacion/genericidad-ejemplos-c-sharp-parte-1/' rel='bookmark' title='Permanent Link: Genericidad en C#. Ejemplos (parte I)'>Genericidad en C#. Ejemplos (parte I)</a></li>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/programacion/herencia-programacion-en-c/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Calcular el día de la semana con C#</title>
		<link>http://www.puntopeek.com/programacion/calcular-el-dia-de-la-semana-con-c/</link>
		<comments>http://www.puntopeek.com/programacion/calcular-el-dia-de-la-semana-con-c/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 08:36:46 +0000</pubDate>
		<dc:creator>Tomy</dc:creator>
				<category><![CDATA[Codigos C#]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[ejemplos C#]]></category>

		<guid isPermaLink="false">http://www.puntopeek.com/?p=236</guid>
		<description><![CDATA[Hoy les traigo un sencillo ejemplo, y muy usado en C# y otros lenguajes de programación. Es una sencilla pregunta, pero la respuesta no es tan sencilla.
Que día de la semana cae el 20 de abril del 2020?
Que día de la semana será el 12 de agosto del 2011?
Estas respuestas sin la ayuda de la [...]


Entradas relacionadas<li><a href='http://www.puntopeek.com/programacion/ejercicios-resueltos-string-en-c-sharp/' rel='bookmark' title='Permanent Link: Ejercicios resueltos de string en C#'>Ejercicios resueltos de string en C#</a></li>
]]></description>
			<content:encoded><![CDATA[<p>Hoy les traigo un sencillo ejemplo, y muy usado en C# y otros lenguajes de programación. Es una sencilla pregunta, pero la respuesta no es tan sencilla.</p>
<p>Que día de la semana cae el 20 de abril del 2020?</p>
<p>Que día de la semana será el 12 de agosto del 2011?</p>
<p>Estas respuestas sin la ayuda de la computadora solo algunos eruditos pueden responderlas (yo conozco a uno). El problema no es tan sencullo como dividir y hallar restos de división.<span id="more-236"></span></p>
<p>Primero hay que buscar una forma de guardar cuantos días tiene cada mes, teniendo en cuenta claro, si el año es bisiesto o no&#8230;</p>
<p>Recuerden que <strong>un año es bisiesto si es divisible entre 400 ó es divisible entre 4 y no entre 100</strong>.</p>
<p>Bueno, vamos a hacer un programa de consola, que primero le pida al usuario que entre una fecha válida, con su día, mes y año y luego imprimiremos en consola que día de la semana será o fue la fecha recibida.</p>
<p>Vamos al código:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">using</span> <span style="color: #008080;">System</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">namespace</span> DiaDeLaSemana
<span style="color: #000000;">&#123;</span>
   <span style="color: #FF0000;">class</span> Class1
   <span style="color: #000000;">&#123;</span>
      <span style="color: #008080; font-style: italic;">//Esta es la aplicación de entrada</span>
      <span style="color: #0600FF;">static</span> <span style="color: #0600FF;">void</span> Main<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
      <span style="color: #000000;">&#123;</span>
         <span style="color: #0600FF;">while</span><span style="color: #000000;">&#40;</span><span style="color: #0600FF;">true</span><span style="color: #000000;">&#41;</span>
	 <span style="color: #000000;">&#123;</span>
		<span style="color: #008080; font-style: italic;">//Pedimos que entre la fecha y validamos que</span>
                <span style="color: #008080; font-style: italic;">//los datos sean correctos</span>
                Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;Escribe una fecha&quot;</span><span style="color: #008000;">+</span><span style="color: #666666;">'<span style="color: #008080; font-weight: bold;">\n</span>'</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
		Console.<span style="color: #0000FF;">Write</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;Dia: &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #FF0000;">int</span> d <span style="color: #008000;">=</span> <span style="color: #FF0000;">int</span>.<span style="color: #0000FF;">Parse</span><span style="color: #000000;">&#40;</span>Console.<span style="color: #0000FF;">ReadLine</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>d<span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;=</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span> break<span style="color: #008000;">;</span>
		Console.<span style="color: #0000FF;">Write</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;Mes: &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #FF0000;">int</span> m <span style="color: #008000;">=</span> <span style="color: #FF0000;">int</span>.<span style="color: #0000FF;">Parse</span><span style="color: #000000;">&#40;</span>Console.<span style="color: #0000FF;">ReadLine</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>m<span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;=</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span> break<span style="color: #008000;">;</span>
		Console.<span style="color: #0000FF;">Write</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;Año: &quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #FF0000;">int</span> a <span style="color: #008000;">=</span> <span style="color: #FF0000;">int</span>.<span style="color: #0000FF;">Parse</span><span style="color: #000000;">&#40;</span>Console.<span style="color: #0000FF;">ReadLine</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
		<span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>a<span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;=</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span> break<span style="color: #008000;">;</span>
                <span style="color: #008080; font-style: italic;">//Creamos un array con los días de la semanas</span>
		<span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> days <span style="color: #008000;">=</span> <span style="color: #000000;">&#123;</span><span style="color: #666666;">&quot;Domingo&quot;</span>, <span style="color: #666666;">&quot;Lunes&quot;</span>, <span style="color: #666666;">&quot;Martes&quot;</span>,
                <span style="color: #666666;">&quot;Miercoles&quot;</span>, <span style="color: #666666;">&quot;Jueves&quot;</span>, <span style="color: #666666;">&quot;Viernes&quot;</span>, <span style="color: #666666;">&quot;Sabado&quot;</span><span style="color: #000000;">&#125;</span><span style="color: #008000;">;</span>
           <span style="color: #008080; font-style: italic;">//Esta es la respuesta, usando el método DayOfWeek()</span>
	   Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;Ese dia es &quot;</span><span style="color: #008000;">+</span>days<span style="color: #000000;">&#91;</span>DayOfWeek<span style="color: #000000;">&#40;</span>d,m,a<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
	 <span style="color: #000000;">&#125;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #0600FF;">public</span> <span style="color: #0600FF;">static</span> <span style="color: #FF0000;">int</span> DayOfWeek<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> day, <span style="color: #FF0000;">int</span> month, <span style="color: #FF0000;">int</span> year<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
	<span style="color: #FF0000;">int</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> mesCode <span style="color: #008000;">=</span> <span style="color: #000000;">&#123;</span><span style="color: #FF0000;">0</span>,<span style="color: #FF0000;">6</span>,<span style="color: #FF0000;">2</span>,<span style="color: #FF0000;">2</span>,<span style="color: #FF0000;">5</span>,<span style="color: #FF0000;">0</span>,<span style="color: #FF0000;">3</span>,<span style="color: #FF0000;">5</span>,<span style="color: #FF0000;">1</span>,<span style="color: #FF0000;">4</span>,<span style="color: #FF0000;">6</span>,<span style="color: #FF0000;">2</span>,<span style="color: #FF0000;">4</span><span style="color: #000000;">&#125;</span><span style="color: #008000;">;</span>
     <span style="color: #FF0000;">int</span> result <span style="color: #008000;">=</span> year<span style="color: #008000;">%</span>100 <span style="color: #008000;">+</span> <span style="color: #000000;">&#40;</span>year<span style="color: #008000;">%</span>100<span style="color: #000000;">&#41;</span><span style="color: #008000;">/</span><span style="color: #FF0000;">4</span> <span style="color: #008000;">+</span> day <span style="color: #008000;">+</span> mesCode<span style="color: #000000;">&#91;</span>month<span style="color: #000000;">&#93;</span><span style="color: #008000;">;</span>
&nbsp;
	<span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>year<span style="color: #008000;">/</span><span style="color: #FF0000;">100</span><span style="color: #008000;">==</span><span style="color: #FF0000;">17</span><span style="color: #000000;">&#41;</span> result <span style="color: #008000;">+=</span> <span style="color: #FF0000;">5</span><span style="color: #008000;">;</span>
	<span style="color: #0600FF;">else</span> <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>year<span style="color: #008000;">/</span><span style="color: #FF0000;">100</span><span style="color: #008000;">==</span><span style="color: #FF0000;">18</span><span style="color: #000000;">&#41;</span> result <span style="color: #008000;">+=</span> <span style="color: #FF0000;">3</span><span style="color: #008000;">;</span>
	<span style="color: #0600FF;">else</span> <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>year<span style="color: #008000;">/</span><span style="color: #FF0000;">100</span><span style="color: #008000;">==</span><span style="color: #FF0000;">19</span><span style="color: #000000;">&#41;</span> result <span style="color: #008000;">+=</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>
	<span style="color: #0600FF;">else</span> <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>year<span style="color: #008000;">/</span><span style="color: #FF0000;">100</span><span style="color: #008000;">==</span><span style="color: #FF0000;">20</span><span style="color: #000000;">&#41;</span> result <span style="color: #008000;">+=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
	<span style="color: #0600FF;">else</span> <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>year<span style="color: #008000;">/</span><span style="color: #FF0000;">100</span><span style="color: #008000;">==</span><span style="color: #FF0000;">21</span><span style="color: #000000;">&#41;</span> result <span style="color: #008000;">+=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">2</span><span style="color: #008000;">;</span>
	<span style="color: #0600FF;">else</span> <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>year<span style="color: #008000;">/</span><span style="color: #FF0000;">100</span><span style="color: #008000;">==</span><span style="color: #FF0000;">22</span><span style="color: #000000;">&#41;</span>  result <span style="color: #008000;">+=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">4</span><span style="color: #008000;">;</span>
&nbsp;
        <span style="color: #008080; font-style: italic;">//Vemos si es bisiesto y quitamos un día si</span>
        <span style="color: #008080; font-style: italic;">//el mes es enero o febrero</span>
	<span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>EsBisiesto<span style="color: #000000;">&#40;</span>year<span style="color: #000000;">&#41;</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> <span style="color: #000000;">&#40;</span>month<span style="color: #008000;">==</span><span style="color: #FF0000;">1</span> <span style="color: #008000;">||</span> month<span style="color: #008000;">==</span><span style="color: #FF0000;">2</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
	    result <span style="color: #008000;">+=</span> <span style="color: #008000;">-</span><span style="color: #FF0000;">1</span><span style="color: #008000;">;</span>	
&nbsp;
        <span style="color: #008080; font-style: italic;">//Esto devuelve un número entre 0 y 7</span>
        <span style="color: #008080; font-style: italic;">//que nos dá el día de la semana</span>
	<span style="color: #0600FF;">return</span> result<span style="color: #008000;">%</span>7<span style="color: #008000;">;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
    <span style="color: #008080; font-style: italic;">//Método para saber si un año es bisiesto</span>
    <span style="color: #0600FF;">private</span> <span style="color: #0600FF;">static</span> <span style="color: #FF0000;">bool</span> EsBisiesto<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> a<span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
	<span style="color: #0600FF;">return</span> <span style="color: #000000;">&#40;</span>a<span style="color: #008000;">%</span>4<span style="color: #008000;">==</span><span style="color: #FF0000;">0</span> <span style="color: #008000;">&amp;</span>amp<span style="color: #008000;">;&amp;</span>amp<span style="color: #008000;">;</span> a<span style="color: #008000;">%</span>100<span style="color: #008000;">!=</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span> <span style="color: #008000;">||</span> a<span style="color: #008000;">%</span>400<span style="color: #008000;">==</span><span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Interesante verdad? Pues ya saben algo nuevo, si quieren este método puede ser un poco más elegante y con menos código, piensen en alguna otra solución y la discutimos en los comentarios.</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 509px; width: 1px; height: 1px;">

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #666666;">'<span style="color: #008080; font-weight: bold;">\n</span>'</span></pre></div></div>

</div>



Comparte este post:


	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F" title="Meneame"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F&amp;title=Calcular%20el%20d%C3%ADa%20de%20la%20semana%20con%20C%23&amp;bodytext=Hoy%20les%20traigo%20un%20sencillo%20ejemplo%2C%20y%20muy%20usado%20en%20C%23%20y%20otros%20lenguajes%20de%20programaci%C3%B3n.%20Es%20una%20sencilla%20pregunta%2C%20pero%20la%20respuesta%20no%20es%20tan%20sencilla.%0D%0A%0D%0AQue%20d%C3%ADa%20de%20la%20semana%20cae%20el%2020%20de%20abril%20del%202020%3F%0D%0A%0D%0AQue%20d%C3%ADa%20de%20la%20semana%20ser%C3%A1%20el%2012%20de%20ag" title="Digg"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F&amp;title=Calcular%20el%20d%C3%ADa%20de%20la%20semana%20con%20C%23&amp;notes=Hoy%20les%20traigo%20un%20sencillo%20ejemplo%2C%20y%20muy%20usado%20en%20C%23%20y%20otros%20lenguajes%20de%20programaci%C3%B3n.%20Es%20una%20sencilla%20pregunta%2C%20pero%20la%20respuesta%20no%20es%20tan%20sencilla.%0D%0A%0D%0AQue%20d%C3%ADa%20de%20la%20semana%20cae%20el%2020%20de%20abril%20del%202020%3F%0D%0A%0D%0AQue%20d%C3%ADa%20de%20la%20semana%20ser%C3%A1%20el%2012%20de%20ag" title="del.icio.us"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F&amp;t=Calcular%20el%20d%C3%ADa%20de%20la%20semana%20con%20C%23" title="Facebook"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://barrapunto.com/submit.pl?subj=Calcular%20el%20d%C3%ADa%20de%20la%20semana%20con%20C%23&amp;story=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F" title="BarraPunto"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/barrapunto.png" title="BarraPunto" alt="BarraPunto" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F&amp;title=Calcular%20el%20d%C3%ADa%20de%20la%20semana%20con%20C%23&amp;annotation=Hoy%20les%20traigo%20un%20sencillo%20ejemplo%2C%20y%20muy%20usado%20en%20C%23%20y%20otros%20lenguajes%20de%20programaci%C3%B3n.%20Es%20una%20sencilla%20pregunta%2C%20pero%20la%20respuesta%20no%20es%20tan%20sencilla.%0D%0A%0D%0AQue%20d%C3%ADa%20de%20la%20semana%20cae%20el%2020%20de%20abril%20del%202020%3F%0D%0A%0D%0AQue%20d%C3%ADa%20de%20la%20semana%20ser%C3%A1%20el%2012%20de%20ag" title="Google Bookmarks"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F&amp;title=Calcular%20el%20d%C3%ADa%20de%20la%20semana%20con%20C%23" title="Reddit"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F" title="Technorati"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F" title="Wikio"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio" alt="Wikio" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F&amp;title=Calcular%20el%20d%C3%ADa%20de%20la%20semana%20con%20C%23&amp;source=Programaci%C3%B3n+y+desarrollo+web+Programaci%C3%B3n+en+C%23%2C+PHP+y+software+libre&amp;summary=Hoy%20les%20traigo%20un%20sencillo%20ejemplo%2C%20y%20muy%20usado%20en%20C%23%20y%20otros%20lenguajes%20de%20programaci%C3%B3n.%20Es%20una%20sencilla%20pregunta%2C%20pero%20la%20respuesta%20no%20es%20tan%20sencilla.%0D%0A%0D%0AQue%20d%C3%ADa%20de%20la%20semana%20cae%20el%2020%20de%20abril%20del%202020%3F%0D%0A%0D%0AQue%20d%C3%ADa%20de%20la%20semana%20ser%C3%A1%20el%2012%20de%20ag" title="LinkedIn"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Calcular%20el%20d%C3%ADa%20de%20la%20semana%20con%20C%23&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F" title="Netvibes"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F" title="Bitacoras.com"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.diggita.it/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F&title=Calcular%20el%20d%C3%ADa%20de%20la%20semana%20con%20C%23" title="Diggita"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/diggita.png" title="Diggita" alt="Diggita" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Calcular%20el%20d%C3%ADa%20de%20la%20semana%20con%20C%23&amp;body=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F" title="email"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email link Calcular el día de la semana con C#" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F&amp;t=Calcular%20el%20d%C3%ADa%20de%20la%20semana%20con%20C%23" title="MySpace"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Calcular%20el%20d%C3%ADa%20de%20la%20semana%20con%20C%23%20-%20http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fcalcular-el-dia-de-la-semana-con-c%2F" title="Twitter"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas<li><a href='http://www.puntopeek.com/programacion/ejercicios-resueltos-string-en-c-sharp/' rel='bookmark' title='Permanent Link: Ejercicios resueltos de string en C#'>Ejercicios resueltos de string en C#</a></li>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/programacion/calcular-el-dia-de-la-semana-con-c/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Estructuras de C#. Pila (Stack)</title>
		<link>http://www.puntopeek.com/programacion/estructuras-de-c-pila-stack/</link>
		<comments>http://www.puntopeek.com/programacion/estructuras-de-c-pila-stack/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 07:06:05 +0000</pubDate>
		<dc:creator>Tomy</dc:creator>
				<category><![CDATA[Codigos C#]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[estructuras C#]]></category>

		<guid isPermaLink="false">http://www.puntopeek.com/programacion/estructuras-de-c-pila-stack/</guid>
		<description><![CDATA[Esta estructura es bastante usada para simular métodos recursivos y resolver algunos tipos de problemas. Esto viene simulando como un montón de objetos que se van apilando (uno encima de otro). La filosofía de una pila (stack) es &#8220;El último que entra es el primero que sale&#8221;. Pueden ver un poco más de que se [...]


Entradas relacionadas<li><a href='http://www.puntopeek.com/codigos-c/tres-formas-de-invertir-un-string/' rel='bookmark' title='Permanent Link: Tres formas de Invertir un String'>Tres formas de Invertir un String</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/la-clase-linkednode-en-c-interfaz-ilist/' rel='bookmark' title='Permanent Link: La clase LinkedNode en C#. Interfaz Ilist'>La clase LinkedNode en C#. Interfaz Ilist</a></li>
<li><a href='http://www.puntopeek.com/tutoriales-c/la-clase-string-en-c/' rel='bookmark' title='Permanent Link: La clase String en C#'>La clase String en C#</a></li>
]]></description>
			<content:encoded><![CDATA[<p>Esta estructura es bastante usada para simular métodos recursivos y resolver algunos tipos de problemas. Esto viene simulando como un montón de objetos que se van apilando (uno encima de otro). La filosofía de una pila (stack) es &#8220;El último que entra es el primero que sale&#8221;. Pueden ver un poco más de que se trata en la figura. Es importante también señalar que esta clase implementa la interfaz IEnumerable.<span id="more-210"></span></p>
<p>Una pila tiene un constructor con tres sobre cargas:</p>
<p>Contructor por defecto que crea una pila vacía</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">Stack s <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Stack<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Podemos indicar la cantidad inicial de elementos que tendrá la pila</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">Stack s <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Stack<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> initialCapacity<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Podemos también pasarle una colección de elementos (List, Quee, ArrayList). Este constructor copiará todos estos elementos a la pila iniciará</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">Stack s <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Stack<span style="color: #000000;">&#40;</span>ICollection col<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Además de los métodos de la interfaz ICollection (Contains, Remove, GetEnumerator, etc), encontramos básicamente 3 métodos que explico ahora:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">public</span> <span style="color: #FF0000;">object</span> Peek<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #008080; font-style: italic;">//Retorna el último elemento que se agregó en la pila.</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">object</span> Pop<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #008080; font-style: italic;">// Retorna el último elemento de la pila al igual que Peek(), pero elimina dicho elemento de la pila una vez devuelto.</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Push<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">object</span> x<span style="color: #000000;">&#41;</span>
<span style="color: #008080; font-style: italic;">//Agrega un nuevo elemento a la pila</span></pre></div></div>

<p>Ahora veamos la implementación de la clase Pila (Stack) de CSharp:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">public</span> <span style="color: #FF0000;">class</span> Pila<span style="color: #008000;">:</span> IEnumerable
<span style="color: #000000;">&#123;</span>
    Node primero<span style="color: #008000;">;</span>
    <span style="color: #FF0000;">int</span> cambios<span style="color: #008000;">;</span>
    <span style="color: #FF0000;">int</span> contador
&nbsp;
    <span style="color: #008080; font-style: italic;">//El constructor</span>
    <span style="color: #0600FF;">public</span> Pila<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
        contador<span style="color: #008000;">=</span><span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
        cambios<span style="color: #008000;">=</span><span style="color: #FF0000;">0</span><span style="color: #008000;">;</span>
    <span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">object</span> Peek<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>count<span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;=</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#41;</span>
         <span style="color: #0600FF;">throw</span> <span style="color: #008000;">new</span> InvalidOperationException<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;La pila esta vacia&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
     <span style="color: #0600FF;">return</span> primero.<span style="color: #0000FF;">value</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">object</span> Pop<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
     <span style="color: #FF0000;">object</span> temp<span style="color: #008000;">=</span>primero.<span style="color: #0000FF;">value</span><span style="color: #008000;">;</span>
     primero<span style="color: #008000;">=</span>primero.<span style="color: #0000FF;">next</span><span style="color: #008000;">;</span>
     contador<span style="color: #008000;">--;</span>
     cambios<span style="color: #008000;">++;</span>
     <span style="color: #0600FF;">return</span> temp<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">void</span> Push<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">object</span> x<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>primero<span style="color: #008000;">==</span><span style="color: #0600FF;">null</span><span style="color: #000000;">&#41;</span>
        primero<span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Node<span style="color: #000000;">&#40;</span>x<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
    <span style="color: #0600FF;">else</span>
    <span style="color: #000000;">&#123;</span>
        primero<span style="color: #008000;">=</span><span style="color: #008000;">new</span> Node<span style="color: #000000;">&#40;</span>x,primero<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
        cambios<span style="color: #008000;">++;</span>
        contador<span style="color: #008000;">++;</span>
    <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">int</span> Count
<span style="color: #000000;">&#123;</span>
    get<span style="color: #000000;">&#123;</span>
       <span style="color: #0600FF;">return</span> contador<span style="color: #008000;">;</span>
   <span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">bool</span> Contiene<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">object</span> x<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
    Node temp<span style="color: #008000;">=</span> primero<span style="color: #008000;">;</span>
    <span style="color: #0600FF;">for</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> i<span style="color: #008000;">=</span><span style="color: #FF0000;">0</span><span style="color: #008000;">;</span> i<span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span>contador<span style="color: #008000;">;</span>i<span style="color: #008000;">++</span><span style="color: #000000;">&#41;</span>
    <span style="color: #000000;">&#123;</span>
       <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>temp.<span style="color: #0000FF;">value</span>.<span style="color: #0000FF;">Equals</span><span style="color: #000000;">&#40;</span>x<span style="color: #000000;">&#41;</span><span style="color: #000000;">&#41;</span>
          <span style="color: #0600FF;">return</span> true<span style="color: #008000;">;</span>
       temp<span style="color: #008000;">=</span>temp.<span style="color: #0000FF;">next</span><span style="color: #008000;">;</span>
    <span style="color: #000000;">&#125;</span>
    <span style="color: #0600FF;">return</span> false<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Por supuesto, le faltan algunos métodos de la interfaz ICollection, pero esos ya los vimos cuando hablamos de <a href="http://www.puntopeek.com/codigos-c/la-clase-linkednode-en-c-interfaz-ilist/" target="_blank"> la clase LinkedNode en C# y la Interfaz Ilist.</a></p>
<p>También implementé esta clase usando <a href="http://www.puntopeek.com/codigos-c/la-clase-linkednode-en-c-interfaz-ilist/" target="_blank">nodos enlazables</a>, pero por supuesto sería mucho más sencillo con arrays o listas&#8230;</p>
<p>Si tienen alguna duda o creen que falta algo, ya saben, comenten&#8230;</p>
<p>Proximamente hablaremos de otras dos estructuras (colas, lista generica) y de genericidad.</p>



Comparte este post:


	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F" title="Meneame"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F&amp;title=Estructuras%20de%20C%23.%20Pila%20%28Stack%29&amp;bodytext=Esta%20estructura%20es%20bastante%20usada%20para%20simular%20m%C3%A9todos%20recursivos%20y%20resolver%20algunos%20tipos%20de%20problemas.%20Esto%20viene%20simulando%20como%20un%20mont%C3%B3n%20de%20objetos%20que%20se%20van%20apilando%20%28uno%20encima%20de%20otro%29.%20La%20filosof%C3%ADa%20de%20una%20pila%20%28stack%29%20es%20%22El%20%C3%BAltimo%20que%20e" title="Digg"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F&amp;title=Estructuras%20de%20C%23.%20Pila%20%28Stack%29&amp;notes=Esta%20estructura%20es%20bastante%20usada%20para%20simular%20m%C3%A9todos%20recursivos%20y%20resolver%20algunos%20tipos%20de%20problemas.%20Esto%20viene%20simulando%20como%20un%20mont%C3%B3n%20de%20objetos%20que%20se%20van%20apilando%20%28uno%20encima%20de%20otro%29.%20La%20filosof%C3%ADa%20de%20una%20pila%20%28stack%29%20es%20%22El%20%C3%BAltimo%20que%20e" title="del.icio.us"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F&amp;t=Estructuras%20de%20C%23.%20Pila%20%28Stack%29" title="Facebook"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://barrapunto.com/submit.pl?subj=Estructuras%20de%20C%23.%20Pila%20%28Stack%29&amp;story=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F" title="BarraPunto"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/barrapunto.png" title="BarraPunto" alt="BarraPunto" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F&amp;title=Estructuras%20de%20C%23.%20Pila%20%28Stack%29&amp;annotation=Esta%20estructura%20es%20bastante%20usada%20para%20simular%20m%C3%A9todos%20recursivos%20y%20resolver%20algunos%20tipos%20de%20problemas.%20Esto%20viene%20simulando%20como%20un%20mont%C3%B3n%20de%20objetos%20que%20se%20van%20apilando%20%28uno%20encima%20de%20otro%29.%20La%20filosof%C3%ADa%20de%20una%20pila%20%28stack%29%20es%20%22El%20%C3%BAltimo%20que%20e" title="Google Bookmarks"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F&amp;title=Estructuras%20de%20C%23.%20Pila%20%28Stack%29" title="Reddit"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F" title="Technorati"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F" title="Wikio"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio" alt="Wikio" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F&amp;title=Estructuras%20de%20C%23.%20Pila%20%28Stack%29&amp;source=Programaci%C3%B3n+y+desarrollo+web+Programaci%C3%B3n+en+C%23%2C+PHP+y+software+libre&amp;summary=Esta%20estructura%20es%20bastante%20usada%20para%20simular%20m%C3%A9todos%20recursivos%20y%20resolver%20algunos%20tipos%20de%20problemas.%20Esto%20viene%20simulando%20como%20un%20mont%C3%B3n%20de%20objetos%20que%20se%20van%20apilando%20%28uno%20encima%20de%20otro%29.%20La%20filosof%C3%ADa%20de%20una%20pila%20%28stack%29%20es%20%22El%20%C3%BAltimo%20que%20e" title="LinkedIn"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Estructuras%20de%20C%23.%20Pila%20%28Stack%29&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F" title="Netvibes"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F" title="Bitacoras.com"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.diggita.it/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F&title=Estructuras%20de%20C%23.%20Pila%20%28Stack%29" title="Diggita"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/diggita.png" title="Diggita" alt="Diggita" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Estructuras%20de%20C%23.%20Pila%20%28Stack%29&amp;body=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F" title="email"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email link Estructuras de C#. Pila (Stack)" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F&amp;t=Estructuras%20de%20C%23.%20Pila%20%28Stack%29" title="MySpace"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Estructuras%20de%20C%23.%20Pila%20%28Stack%29%20-%20http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Festructuras-de-c-pila-stack%2F" title="Twitter"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas<li><a href='http://www.puntopeek.com/codigos-c/tres-formas-de-invertir-un-string/' rel='bookmark' title='Permanent Link: Tres formas de Invertir un String'>Tres formas de Invertir un String</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/la-clase-linkednode-en-c-interfaz-ilist/' rel='bookmark' title='Permanent Link: La clase LinkedNode en C#. Interfaz Ilist'>La clase LinkedNode en C#. Interfaz Ilist</a></li>
<li><a href='http://www.puntopeek.com/tutoriales-c/la-clase-string-en-c/' rel='bookmark' title='Permanent Link: La clase String en C#'>La clase String en C#</a></li>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/programacion/estructuras-de-c-pila-stack/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>La clase Random con C#</title>
		<link>http://www.puntopeek.com/programacion/la-clase-random-con-c/</link>
		<comments>http://www.puntopeek.com/programacion/la-clase-random-con-c/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 16:37:05 +0000</pubDate>
		<dc:creator>Tomy</dc:creator>
				<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Tutoriales C#]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Codigos C#]]></category>

		<guid isPermaLink="false">http://www.puntopeek.com/programacion/la-clase-random-con-c/</guid>
		<description><![CDATA[Hace un tiempo recibí un comentario en el que alguien preguntaba como crear un array de números aleatorios. Aunque hice este ejemplo en otro post (no recuerdo cual) vendría bien hablarles un poco más sobre la clase Random del namespace System. La clase Random es la que nos permite hacer unas cuantas cosas con números [...]


Entradas relacionadas<li><a href='http://www.puntopeek.com/codigos-c/mas-ejercicios-de-array-en-c/' rel='bookmark' title='Permanent Link: Ejercicios de array con C# (2da. parte)'>Ejercicios de array con C# (2da. parte)</a></li>
<li><a href='http://www.puntopeek.com/tutoriales-c/la-clase-string-en-c/' rel='bookmark' title='Permanent Link: La clase String en C#'>La clase String en C#</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/la-clase-linkednode-en-c-interfaz-ilist/' rel='bookmark' title='Permanent Link: La clase LinkedNode en C#. Interfaz Ilist'>La clase LinkedNode en C#. Interfaz Ilist</a></li>
]]></description>
			<content:encoded><![CDATA[<p>Hace un tiempo recibí un comentario en el que alguien preguntaba como crear un array de números aleatorios. Aunque hice este ejemplo en otro post (no recuerdo cual) vendría bien hablarles un poco más sobre la clase Random del namespace System.<span id="more-206"></span> La clase Random es la que nos permite hacer unas cuantas cosas con números aleatorios. Yo uso generalmente la uso para probar algoritmos y en alguno que otro proyecto. Luego veremos algunos ejemplos:  Aclarar que esta clase no es recomendada para encriptar cosas ni mucho menos, pero si vamos a poder conseguir un número aleatorio bastante respetable. Bueno, vamos ya:  En la clase Random con C# (también sirve en ASP.Net) tenemos tres métodos que nos generan un número aleatorio, pero primero de todo tenemos que crear una instancia de la clase Random:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">Random r <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Random
<span style="color: #008080; font-style: italic;">// Creamos el objeto Random, que tiene un constructor por defecto</span>
<span style="color: #008080; font-style: italic;">// O para los más exigentes, añadimos un plus de</span>
<span style="color: #008080; font-style: italic;">// aleatoriedad, algo así:</span>
Random r <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Random<span style="color: #000000;">&#40;</span>DateTime.<span style="color: #0000FF;">Now</span>.<span style="color: #0000FF;">Millisecond</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Y una vez tenemos el objeto, utilizaremos uno de esos tres métodos.  <strong></strong></p>
<p><strong>1.- El método Next</strong> Tiene tres sobrecargas:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">int</span> aleatorio1 <span style="color: #008000;">=</span> r.<span style="color: #0000FF;">Next</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">// Le imponemos un máximo</span>
<span style="color: #FF0000;">int</span> aleatorio2 <span style="color: #008000;">=</span> r.<span style="color: #0000FF;">Next</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">100</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">// Le imponemos un rango, por ejemplo queremos</span>
<span style="color: #008080; font-style: italic;">// un número de 3 cifras</span>
<span style="color: #FF0000;">int</span> aleatorio3 <span style="color: #008000;">=</span> r.<span style="color: #0000FF;">Next</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">100</span>, <span style="color: #FF0000;">999</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">// Queremos un número entre el 3 y el 12,</span>
<span style="color: #FF0000;">int</span> aleatorio4 <span style="color: #008000;">=</span> r.<span style="color: #0000FF;">Next</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">3</span>, <span style="color: #FF0000;">12</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>2.- El método NextDouble</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">// Devuelve un double entre 0 y 1</span>
<span style="color: #FF0000;">int</span> aleatorio5 <span style="color: #008000;">=</span> r.<span style="color: #0000FF;">NextDouble</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>3.- El método NextBytes</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #FF0000;">byte</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> buffer <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #FF0000;">byte</span><span style="color: #000000;">&#91;</span><span style="color: #FF0000;">100</span><span style="color: #000000;">&#93;</span><span style="color: #008000;">;</span>
r.<span style="color: #0000FF;">NextBytes</span><span style="color: #000000;">&#40;</span>buffer<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>¡¡Como ven, es super sencillo trabajar con esta clase, ahora veamos un ejemplo de como trabajar con esta clase.</p>
<p>1 &#8211; Crear un array de tamaño aleatorio con números aleatorios. Esto nos puede servir para probar varios métodos que usan arrays (ordenación, búsqueda, etc).</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #008080; font-style: italic;">//Inicializamos la clase Random</span>
Random r <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Random<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Creamos un array que va a contener cantidad</span>
<span style="color: #008080; font-style: italic;">//aleatoria de elementos menor que 50.</span>
<span style="color: #FF0000;">int</span> <span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> numeros <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #FF0000;">int</span> <span style="color: #000000;">&#91;</span>r.<span style="color: #0000FF;">Next</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span>,<span style="color: #FF0000;">50</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#93;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Recorremos el array y vamos asignando a cada</span>
<span style="color: #008080; font-style: italic;">//posición un número aleatorio</span>
<span style="color: #0600FF;">for</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> i<span style="color: #008000;">=</span><span style="color: #FF0000;">0</span><span style="color: #008000;">;</span> i<span style="color: #008000;">&amp;</span>lt<span style="color: #008000;">;</span>numeros.<span style="color: #0000FF;">Lenght</span><span style="color: #008000;">;</span> i<span style="color: #008000;">++</span><span style="color: #000000;">&#41;</span>
   numeros<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span> <span style="color: #008000;">=</span> r.<span style="color: #0000FF;">Next</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">0</span>,<span style="color: #FF0000;">50</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Y hasta aquí, ya veremos después como es por dentro esta clase&#8230;</p>



Comparte este post:


	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F" title="Meneame"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F&amp;title=La%20clase%20Random%20con%20C%23&amp;bodytext=Hace%20un%20tiempo%20recib%C3%AD%20un%20comentario%20en%20el%20que%20alguien%20preguntaba%20como%20crear%20un%20array%20de%20n%C3%BAmeros%20aleatorios.%20Aunque%20hice%20este%20ejemplo%20en%20otro%20post%20%28no%20recuerdo%20cual%29%20vendr%C3%ADa%20bien%20hablarles%20un%20poco%20m%C3%A1s%20sobre%20la%20clase%20Random%20del%20namespace%20System.%20La" title="Digg"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F&amp;title=La%20clase%20Random%20con%20C%23&amp;notes=Hace%20un%20tiempo%20recib%C3%AD%20un%20comentario%20en%20el%20que%20alguien%20preguntaba%20como%20crear%20un%20array%20de%20n%C3%BAmeros%20aleatorios.%20Aunque%20hice%20este%20ejemplo%20en%20otro%20post%20%28no%20recuerdo%20cual%29%20vendr%C3%ADa%20bien%20hablarles%20un%20poco%20m%C3%A1s%20sobre%20la%20clase%20Random%20del%20namespace%20System.%20La" title="del.icio.us"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F&amp;t=La%20clase%20Random%20con%20C%23" title="Facebook"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://barrapunto.com/submit.pl?subj=La%20clase%20Random%20con%20C%23&amp;story=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F" title="BarraPunto"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/barrapunto.png" title="BarraPunto" alt="BarraPunto" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F&amp;title=La%20clase%20Random%20con%20C%23&amp;annotation=Hace%20un%20tiempo%20recib%C3%AD%20un%20comentario%20en%20el%20que%20alguien%20preguntaba%20como%20crear%20un%20array%20de%20n%C3%BAmeros%20aleatorios.%20Aunque%20hice%20este%20ejemplo%20en%20otro%20post%20%28no%20recuerdo%20cual%29%20vendr%C3%ADa%20bien%20hablarles%20un%20poco%20m%C3%A1s%20sobre%20la%20clase%20Random%20del%20namespace%20System.%20La" title="Google Bookmarks"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F&amp;title=La%20clase%20Random%20con%20C%23" title="Reddit"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F" title="Technorati"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F" title="Wikio"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio" alt="Wikio" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F&amp;title=La%20clase%20Random%20con%20C%23&amp;source=Programaci%C3%B3n+y+desarrollo+web+Programaci%C3%B3n+en+C%23%2C+PHP+y+software+libre&amp;summary=Hace%20un%20tiempo%20recib%C3%AD%20un%20comentario%20en%20el%20que%20alguien%20preguntaba%20como%20crear%20un%20array%20de%20n%C3%BAmeros%20aleatorios.%20Aunque%20hice%20este%20ejemplo%20en%20otro%20post%20%28no%20recuerdo%20cual%29%20vendr%C3%ADa%20bien%20hablarles%20un%20poco%20m%C3%A1s%20sobre%20la%20clase%20Random%20del%20namespace%20System.%20La" title="LinkedIn"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=La%20clase%20Random%20con%20C%23&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F" title="Netvibes"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F" title="Bitacoras.com"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.diggita.it/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F&title=La%20clase%20Random%20con%20C%23" title="Diggita"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/diggita.png" title="Diggita" alt="Diggita" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=La%20clase%20Random%20con%20C%23&amp;body=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F" title="email"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email link La clase Random con C#" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F&amp;t=La%20clase%20Random%20con%20C%23" title="MySpace"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=La%20clase%20Random%20con%20C%23%20-%20http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fla-clase-random-con-c%2F" title="Twitter"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas<li><a href='http://www.puntopeek.com/codigos-c/mas-ejercicios-de-array-en-c/' rel='bookmark' title='Permanent Link: Ejercicios de array con C# (2da. parte)'>Ejercicios de array con C# (2da. parte)</a></li>
<li><a href='http://www.puntopeek.com/tutoriales-c/la-clase-string-en-c/' rel='bookmark' title='Permanent Link: La clase String en C#'>La clase String en C#</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/la-clase-linkednode-en-c-interfaz-ilist/' rel='bookmark' title='Permanent Link: La clase LinkedNode en C#. Interfaz Ilist'>La clase LinkedNode en C#. Interfaz Ilist</a></li>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/programacion/la-clase-random-con-c/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Ejercicios de array con C# (1ra. parte)</title>
		<link>http://www.puntopeek.com/programacion/ejercicios-resueltos-de-array-en-c/</link>
		<comments>http://www.puntopeek.com/programacion/ejercicios-resueltos-de-array-en-c/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 16:34:05 +0000</pubDate>
		<dc:creator>Tomy</dc:creator>
				<category><![CDATA[Codigos C#]]></category>
		<category><![CDATA[Programacion]]></category>
		<category><![CDATA[Tutoriales C#]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[ejercicios C#]]></category>

		<guid isPermaLink="false">http://www.puntopeek.com/?p=64</guid>
		<description><![CDATA[Aquí les dejo una pequeña colección con ejercicios resueltos de arrays en C#, que en mi opinión, son los más importantes y prácticos. Si todavía no tienen mucho conocimiento sobre esto, lean primero esta entrada donde se explica todo lo relacionado a trabajar con &#8220;arrays en C#&#8221;.
Aclarar que seguro hay mejores soluciones y mucho menos [...]


Entradas relacionadas<li><a href='http://www.puntopeek.com/codigos-c/ejercicios-resueltos-de-c-3ra-parte/' rel='bookmark' title='Permanent Link: Ejercicios de array con C# (3ra. parte)'>Ejercicios de array con C# (3ra. parte)</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/mas-ejercicios-de-array-en-c/' rel='bookmark' title='Permanent Link: Ejercicios de array con C# (2da. parte)'>Ejercicios de array con C# (2da. parte)</a></li>
<li><a href='http://www.puntopeek.com/programacion/ejercicios-resueltos-string-en-c-sharp/' rel='bookmark' title='Permanent Link: Ejercicios resueltos de string en C#'>Ejercicios resueltos de string en C#</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/la-clase-linkednode-en-c-interfaz-ilist/' rel='bookmark' title='Permanent Link: La clase LinkedNode en C#. Interfaz Ilist'>La clase LinkedNode en C#. Interfaz Ilist</a></li>
]]></description>
			<content:encoded><![CDATA[<p>Aquí les dejo una pequeña colección con <strong>ejercicios resueltos de arrays en C#</strong>, que en mi opinión, son los más importantes y prácticos. Si todavía no tienen mucho conocimiento sobre esto, lean primero esta entrada donde se explica todo lo relacionado a trabajar con &#8220;arrays en C#&#8221;.</p>
<p>Aclarar que seguro hay mejores soluciones y mucho menos costosas a estos problemas con arrays, pero traté de resolverlos por la forma más instuitiva, para que les sirva a la mayoría. <span id="more-64"></span>Bueno, empezemos ya:</p>
<p>1- Como saber cual es el número menor, el mayor y el promedio entre los elementos de un array:</p>
<p><strong>Respuesta:</strong><br />
Para hacer todo esto recorriendo una sola vez el array, hice un método que recibe un array de int y devuelve un array de 3 elementos, donde el primero es el mayor numero del array, el segundo es el menor y el tercero el promedio entre todos los elementos del array.</p>
<p>Este sería el código:</p>
<p><img class="size-full wp-image-65 alignnone" title="1" src="http://www.puntopeek.com/wp-content/uploads/2009/02/1.png" alt="1 Ejercicios de array con C# (1ra. parte)" width="427" height="400" /></p>
<p>2- Ahora queremos saber cual es el número que más se repite en un array. O sea, el número que &#8220;está de moda&#8221;.</p>
<p><strong>Respuesta:</strong><br />
Como dije antes, este es un claro ejemplo donde hay muchas formas de resolver el problema planteado. Vamos a ver la forma más instuitiva (y no la más sencilla). Primero crearemos un array auxiliar del mismo tamaño que el array dado, donde cada elemento del array auxiliar va a ser la cantidad de veces que se repite cada numero. Así, luego solo tenemos que retornar el elemento cuya posición es la del mayor elemento del array auxiliar. Quizás me estoy enredando un poco, vamos a ver:</p>
<p><img class="alignnone size-full wp-image-66" title="2" src="http://www.puntopeek.com/wp-content/uploads/2009/02/2.png" alt="2 Ejercicios de array con C# (1ra. parte)" width="416" height="532" /><br />
Proponemos al lector que solucione este problema por otra vía usando solamente un contador y dos ciclos for.</p>
<p>3- Ahora veremos un método para<strong> insertar un elemento en un array</strong> dada una posición.</p>
<p><strong>Respuesta:</strong><br />
Esto se convierte en una tarea muy sencilla utilizando el método Array.Copy(), pero en este caso lo haremos todo nosotros. Crearemos un nuevo array del mismo tamaño que el original+1. Despues copiamos los elementos del array hasta la posicion donde se quiere ubicar el elemento x, luego a partir de ahi volvemos a copiar los elementos hasta la ultima posicion del array. Veamos:</p>
<p><img class="alignnone size-full wp-image-67" title="3" src="http://www.puntopeek.com/wp-content/uploads/2009/02/3.png" alt="3 Ejercicios de array con C# (1ra. parte)" width="480" height="330" /></p>
<p>Como ejercicio para entrenar te recomiendo que hagas el método Eliminar, con la siguiente signatura.</p>
<p>public int[] Elimina(int [] array, int posicion, int elemento){};</p>
<p>4- Veamos ya el último problema de estos primeros ejemplos. Supongamos que tenemos dos cadenas de texto. Necesitamos un método que devuelva true si una cadena de texto está contenida dentro de otra.<br />
O sea, si tenemos un string &#8220;palanca&#8221;, y queremos saber si la cadena &#8220;pala&#8221; esta contenida dentro de &#8220;palanca&#8221;, el método devolvería true, en caso contrario devolvería false.<br />
El código del método sería el siguiente:</p>
<p><img class="alignnone size-full wp-image-68" title="4" src="http://www.puntopeek.com/wp-content/uploads/2009/02/4.png" alt="4 Ejercicios de array con C# (1ra. parte)" width="483" height="367" /></p>
<p>Bueno, hasta aquí esta entrega, mañana o pasado mañana pondré otros 4 o 5 ejemplos resueltos sobre trabajo con arrays.</p>
<p>Algunos adelantos<br />
Entre los ejercicios que veremos en próximas entregas están:<br />
1- Invertir un array<br />
2- Saber si una cadena de texto es palíndromo. Es decir, que se lee igual de derecha a izquierda, que de izquierda a derecha. Por ejemplo: &#8220;otto&#8221;, &#8220;somos&#8221;.<br />
3- Sabremos como calcular el n-simo número primo<br />
4- Rotar un array. Por ejemplo, rotar el array (1,2,3,4,5) 3 veces a la derecha, devolvería (4,5,1,2,3).</p>
<p>También puedas enviar un ejercicio en los comentarios y lo resolvemos aquí entre todos.</p>
<p><strong>Ya está completa esta colección de ejercicios resueltos de array con C#. </strong> Estas son las otras partes:</p>
<p><a href="http://www.puntopeek.com/wp-admin/post.php?action=edit&amp;post=149">Ejercicios resueltos de array con C#</a> (2da. parte)</p>
<p><a href="http://www.puntopeek.com/codigos-c/ejercicios-resueltos-de-c-3ra-parte/">Ejercicios resueltos de array con C#</a> (3ra. parte)</p>
<p>Y por si no sabes ni trabajar con arrays, debes<a href="http://www.puntopeek.com/programacion/arrays-en-c/"> leer esto</a></p>



Comparte este post:


	<a rel="nofollow"  target="_blank" href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F" title="Meneame"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/meneame.png" title="Meneame" alt="Meneame" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F&amp;title=Ejercicios%20de%20array%20con%20C%23%20%281ra.%20parte%29&amp;bodytext=Aqu%C3%AD%20les%20dejo%20una%20peque%C3%B1a%20colecci%C3%B3n%20con%20ejercicios%20resueltos%20de%20arrays%20en%20C%23%2C%20que%20en%20mi%20opini%C3%B3n%2C%20son%20los%20m%C3%A1s%20importantes%20y%20pr%C3%A1cticos.%20Si%20todav%C3%ADa%20no%20tienen%20mucho%20conocimiento%20sobre%20esto%2C%20lean%20primero%20esta%20entrada%20donde%20se%20explica%20todo%20lo%20relaci" title="Digg"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://delicious.com/post?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F&amp;title=Ejercicios%20de%20array%20con%20C%23%20%281ra.%20parte%29&amp;notes=Aqu%C3%AD%20les%20dejo%20una%20peque%C3%B1a%20colecci%C3%B3n%20con%20ejercicios%20resueltos%20de%20arrays%20en%20C%23%2C%20que%20en%20mi%20opini%C3%B3n%2C%20son%20los%20m%C3%A1s%20importantes%20y%20pr%C3%A1cticos.%20Si%20todav%C3%ADa%20no%20tienen%20mucho%20conocimiento%20sobre%20esto%2C%20lean%20primero%20esta%20entrada%20donde%20se%20explica%20todo%20lo%20relaci" title="del.icio.us"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F&amp;t=Ejercicios%20de%20array%20con%20C%23%20%281ra.%20parte%29" title="Facebook"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://barrapunto.com/submit.pl?subj=Ejercicios%20de%20array%20con%20C%23%20%281ra.%20parte%29&amp;story=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F" title="BarraPunto"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/barrapunto.png" title="BarraPunto" alt="BarraPunto" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F&amp;title=Ejercicios%20de%20array%20con%20C%23%20%281ra.%20parte%29&amp;annotation=Aqu%C3%AD%20les%20dejo%20una%20peque%C3%B1a%20colecci%C3%B3n%20con%20ejercicios%20resueltos%20de%20arrays%20en%20C%23%2C%20que%20en%20mi%20opini%C3%B3n%2C%20son%20los%20m%C3%A1s%20importantes%20y%20pr%C3%A1cticos.%20Si%20todav%C3%ADa%20no%20tienen%20mucho%20conocimiento%20sobre%20esto%2C%20lean%20primero%20esta%20entrada%20donde%20se%20explica%20todo%20lo%20relaci" title="Google Bookmarks"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/googlebookmark.png" title="Google Bookmarks" alt="Google Bookmarks" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://reddit.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F&amp;title=Ejercicios%20de%20array%20con%20C%23%20%281ra.%20parte%29" title="Reddit"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/reddit.png" title="Reddit" alt="Reddit" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F" title="Technorati"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F" title="Wikio"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/wikio.png" title="Wikio" alt="Wikio" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F&amp;title=Ejercicios%20de%20array%20con%20C%23%20%281ra.%20parte%29&amp;source=Programaci%C3%B3n+y+desarrollo+web+Programaci%C3%B3n+en+C%23%2C+PHP+y+software+libre&amp;summary=Aqu%C3%AD%20les%20dejo%20una%20peque%C3%B1a%20colecci%C3%B3n%20con%20ejercicios%20resueltos%20de%20arrays%20en%20C%23%2C%20que%20en%20mi%20opini%C3%B3n%2C%20son%20los%20m%C3%A1s%20importantes%20y%20pr%C3%A1cticos.%20Si%20todav%C3%ADa%20no%20tienen%20mucho%20conocimiento%20sobre%20esto%2C%20lean%20primero%20esta%20entrada%20donde%20se%20explica%20todo%20lo%20relaci" title="LinkedIn"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.netvibes.com/share?title=Ejercicios%20de%20array%20con%20C%23%20%281ra.%20parte%29&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F" title="Netvibes"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/netvibes.png" title="Netvibes" alt="Netvibes" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F" title="Bitacoras.com"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/bitacoras.png" title="Bitacoras.com" alt="Bitacoras.com" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="javascript:AddToFavorites();" title="Add to favorites"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/addtofavorites.png" title="Add to favorites" alt="Add to favorites" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.diggita.it/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F&title=Ejercicios%20de%20array%20con%20C%23%20%281ra.%20parte%29" title="Diggita"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/diggita.png" title="Diggita" alt="Diggita" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="mailto:?subject=Ejercicios%20de%20array%20con%20C%23%20%281ra.%20parte%29&amp;body=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F" title="email"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/email_link.png" title="email" alt="email link Ejercicios de array con C# (1ra. parte)" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F&amp;t=Ejercicios%20de%20array%20con%20C%23%20%281ra.%20parte%29" title="MySpace"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow"  target="_blank" href="http://twitter.com/home?status=Ejercicios%20de%20array%20con%20C%23%20%281ra.%20parte%29%20-%20http%3A%2F%2Fwww.puntopeek.com%2Fprogramacion%2Fejercicios-resueltos-de-array-en-c%2F" title="Twitter"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/twitter.png" title="Twitter" alt="Twitter" class="sociable-hovers" /></a>


<br/><br/>

<p>Entradas relacionadas<li><a href='http://www.puntopeek.com/codigos-c/ejercicios-resueltos-de-c-3ra-parte/' rel='bookmark' title='Permanent Link: Ejercicios de array con C# (3ra. parte)'>Ejercicios de array con C# (3ra. parte)</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/mas-ejercicios-de-array-en-c/' rel='bookmark' title='Permanent Link: Ejercicios de array con C# (2da. parte)'>Ejercicios de array con C# (2da. parte)</a></li>
<li><a href='http://www.puntopeek.com/programacion/ejercicios-resueltos-string-en-c-sharp/' rel='bookmark' title='Permanent Link: Ejercicios resueltos de string en C#'>Ejercicios resueltos de string en C#</a></li>
<li><a href='http://www.puntopeek.com/codigos-c/la-clase-linkednode-en-c-interfaz-ilist/' rel='bookmark' title='Permanent Link: La clase LinkedNode en C#. Interfaz Ilist'>La clase LinkedNode en C#. Interfaz Ilist</a></li>
</p>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/programacion/ejercicios-resueltos-de-array-en-c/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 1.582 seconds -->
