<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2spanishfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Programación y desarrollo web</title>
	
	<link>http://www.puntopeek.com</link>
	<description>Programación en C#, PHP y software libre</description>
	<lastBuildDate>Sat, 03 Oct 2009 06:09:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/puntopeek" type="application/rss+xml" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">puntopeek</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/content?lg=es&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://eur.i1.yimg.com/eur.yimg.com/i/es/my/addto1.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.feedness.com/alta/http://feeds.feedburner.com/puntopeek" src="http://www.feedness.com/ayuda/wp-content/square_b_sh_feed.gif">Subscribe with Feedness</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/puntopeek" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.yourminis.com/subscribe.aspx?u=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://www.yourminis.com/images/addtoyourminisbadge.gif">Subscribe with Yourminis.com</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://download.attensa.com/app/get_attensa.html?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://www.attensa.com/blogs/attensa/WindowsLiveWriter/BadgeredintoBadges_10C02/attensa_feed_button5.gif">Subscribe with Attensa for Outlook</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.flurry.com/pushRssFeed.do?r=fb&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://www.flurry.com/images/flurry_rss_logo2.gif">Subscribe with Flurry</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Fpuntopeek" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Tres formas de Invertir un String</title>
		<link>http://www.puntopeek.com/codigos-c/tres-formas-de-invertir-un-string/</link>
		<comments>http://www.puntopeek.com/codigos-c/tres-formas-de-invertir-un-string/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 06:09:00 +0000</pubDate>
		<dc:creator>Tomy</dc:creator>
				<category><![CDATA[Codigos C#]]></category>
		<category><![CDATA[Tutoriales C#]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[string]]></category>

		<guid isPermaLink="false">http://www.puntopeek.com/?p=261</guid>
		<description><![CDATA[Estos son algunos ejemplos para que vean que en la programación hay muchas formas de hacer las cosas, aunque siempre hay una que es la más eficiente, aunque casi nunca es muy evidente.
Veamos como invertir un string de tres formas distintas. Por ejemplo, si tenemos el string &#8220;puntopeek&#8221;, el método devolvería &#8220;keepotnup&#8221;.
Veamos el primer ejemplo, [...]]]></description>
			<content:encoded><![CDATA[<p>Estos son algunos ejemplos para que vean que en la programación hay muchas formas de hacer las cosas, aunque siempre hay una que es la más eficiente, aunque casi nunca es muy evidente.</p>
<p>Veamos como invertir un <a href="http://www.puntopeek.com/tutoriales-c/la-clase-string-en-c/">string</a> de tres formas distintas. Por ejemplo, si tenemos el <a href="http://www.puntopeek.com/tag/string/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con string">string</a> &#8220;puntopeek&#8221;, el método devolvería &#8220;keepotnup&#8221;.<span id="more-261"></span></p>
<p>Veamos el primer ejemplo, es el que casi todos conocemos, y es muy fácil de implementar, vamos recorriendo la palabra desde el ultimo caracter hasta el primero y vamos guardando cada letra en un nuevo <a href="http://www.puntopeek.com/tag/string/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con string">string</a>, que es el que devolverá el método. El código sería algo así:</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;">string</span> Invertir<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> s<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #FF0000;">string</span> aux <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Recorremos el string en orden inverso</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> s.<span style="color: #0000FF;">Length</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">1</span><span style="color: #008000;">;</span> i <span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;=</span> <span style="color: #FF0000;">0</span><span style="color: #008000;">;</span> i<span style="color: #008000;">--</span><span style="color: #000000;">&#41;</span>
aux <span style="color: #008000;">+=</span> s<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//retornamos la nueva cadena</span>
<span style="color: #0600FF;">return</span> aux<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Otra opción (pero hay que <a href="http://www.puntopeek.com/programacion/estructuras-de-c-pila-stack/">conocer que es una pila</a>), es ir guardando cada letra en una pila (stack), y luego cuando esten todas las letras las sacamos de la pila. Noten que en esta estructura, el primer elemento que entra, es el último en salir, por eso nos sirve también para invertir un <a href="http://www.puntopeek.com/tag/string/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con string">string</a>. El código sería este:</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;">string</span> Invertir2<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> s<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">//Declaramos una pila usando genericidad.</span>
<span style="color: #008080; font-style: italic;">//Esto se puede hacer con el framework 2.0</span>
Stack stack <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>
&nbsp;
<span style="color: #008080; font-style: italic;">//Recorremos el string y vamos metiendo en la pila</span>
<span style="color: #008080; font-style: italic;">//cada caracter</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> s.<span style="color: #0000FF;">Length</span><span style="color: #008000;">;</span> i<span style="color: #008000;">++</span><span style="color: #000000;">&#41;</span>
stack.<span style="color: #0000FF;">Push</span><span style="color: #000000;">&#40;</span>s<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #FF0000;">string</span> aux <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Vamos sacando de la pila los caracteres y los</span>
<span style="color: #008080; font-style: italic;">//ponemos uno a uno en un nuevo string</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> s.<span style="color: #0000FF;">Length</span><span style="color: #008000;">;</span> i<span style="color: #008000;">++</span><span style="color: #000000;">&#41;</span>
aux <span style="color: #008000;">+=</span> stack.<span style="color: #0000FF;">Pop</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #0600FF;">return</span> aux<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Ahora veremos la versión recursiva del problema. Si lo analizan paso a paso, verán que hace practicamente lo mismo que Invertir2. Como verán, este método no necesita almacenar ningun caracter, ni copiar, <a href="http://www.puntopeek.com/tutoriales-c/recursividad-con-c-1/">la recursividad</a> se encarga de todo. En realidad la <a href="http://www.puntopeek.com/tag/recursividad/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con recursividad">recursividad</a> funciona como una pila (Invertir2) pero no hay que declarar variables ni nada de eso. A veces algunos métodos recursivos parecen mágicos, pero una vez dominemos esta técnica dominaremos el arte de programar. Al menos lo esencial. Veamos el código:</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;">string</span> Invertir3 <span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> s, <span style="color: #FF0000;">int</span> lenght<span style="color: #000000;">&#41;</span>
<span style="color: #008080; font-style: italic;">//El parametro lenght es el tamaño del string s</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #008080; font-style: italic;">//Condicion de parada</span>
<span style="color: #0600FF;">if</span> <span style="color: #000000;">&#40;</span>lenght <span style="color: #008000;">==</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
<span style="color: #0600FF;">return</span> s<span style="color: #008000;">;</span>
<span style="color: #0600FF;">else</span>
<span style="color: #008080; font-style: italic;">//Llamado recursivo</span>
<span style="color: #0600FF;">return</span> Invertir3 <span style="color: #000000;">&#40;</span>s.<span style="color: #0000FF;">Substring</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">1</span>, s.<span style="color: #0000FF;">Length</span> <span style="color: #008000;">-</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>, lenght <span style="color: #008000;">-</span> <span style="color: #FF0000;">1</span><span style="color: #000000;">&#41;</span>
<span style="color: #008000;">+</span> s<span style="color: #000000;">&#91;</span><span style="color: #FF0000;">0</span><span style="color: #000000;">&#93;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Para que se den cuenta de lo que hace el método, es necesario que le hagan un debug paso a paso, y vayan viendo como se transforman las variables locales. Si tienen alguna otra solución de como Invertir un <a href="http://www.puntopeek.com/tag/string/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con string">string</a> pueden ponerla en los comentarios. Y hasta aquí este post, espero escribir un poco más seguido, pero estoy con muchos proyectos en la universidad y mucho trabajo. Han oido hablar del WinZip o el WinRar? Proximamente estaremos hablando del Algoritmo de Huffman, que se utiliza mucho en el compactación de texto y archivos.</p>



Compártelo:


	<a rel="nofollow"  href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%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"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%2F&amp;title=Tres%20formas%20de%20Invertir%20un%20String&amp;bodytext=Estos%20son%20algunos%20ejemplos%20para%20que%20vean%20que%20en%20la%20programaci%C3%B3n%20hay%20muchas%20formas%20de%20hacer%20las%20cosas%2C%20aunque%20siempre%20hay%20una%20que%20es%20la%20m%C3%A1s%20eficiente%2C%20aunque%20casi%20nunca%20es%20muy%20evidente.%0D%0A%0D%0AVeamos%20como%20invertir%20un%20string%20de%20tres%20formas%20distintas.%20Por" 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"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%2F&amp;title=Tres%20formas%20de%20Invertir%20un%20String&amp;notes=Estos%20son%20algunos%20ejemplos%20para%20que%20vean%20que%20en%20la%20programaci%C3%B3n%20hay%20muchas%20formas%20de%20hacer%20las%20cosas%2C%20aunque%20siempre%20hay%20una%20que%20es%20la%20m%C3%A1s%20eficiente%2C%20aunque%20casi%20nunca%20es%20muy%20evidente.%0D%0A%0D%0AVeamos%20como%20invertir%20un%20string%20de%20tres%20formas%20distintas.%20Por" 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"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%2F&amp;t=Tres%20formas%20de%20Invertir%20un%20String" 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"  href="http://barrapunto.com/submit.pl?subj=Tres%20formas%20de%20Invertir%20un%20String&amp;story=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%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"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%2F&amp;title=Tres%20formas%20de%20Invertir%20un%20String&amp;annotation=Estos%20son%20algunos%20ejemplos%20para%20que%20vean%20que%20en%20la%20programaci%C3%B3n%20hay%20muchas%20formas%20de%20hacer%20las%20cosas%2C%20aunque%20siempre%20hay%20una%20que%20es%20la%20m%C3%A1s%20eficiente%2C%20aunque%20casi%20nunca%20es%20muy%20evidente.%0D%0A%0D%0AVeamos%20como%20invertir%20un%20string%20de%20tres%20formas%20distintas.%20Por" 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"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%2F&amp;title=Tres%20formas%20de%20Invertir%20un%20String" 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"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%2F&amp;title=Tres%20formas%20de%20Invertir%20un%20String" title="StumbleUpon"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%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"  href="" title="TwitThis"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%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"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%2F&amp;title=Tres%20formas%20de%20Invertir%20un%20String&amp;source=Programaci%C3%B3n+y+desarrollo+web+Programaci%C3%B3n+en+C%23%2C+PHP+y+software+libre&amp;summary=Estos%20son%20algunos%20ejemplos%20para%20que%20vean%20que%20en%20la%20programaci%C3%B3n%20hay%20muchas%20formas%20de%20hacer%20las%20cosas%2C%20aunque%20siempre%20hay%20una%20que%20es%20la%20m%C3%A1s%20eficiente%2C%20aunque%20casi%20nunca%20es%20muy%20evidente.%0D%0A%0D%0AVeamos%20como%20invertir%20un%20string%20de%20tres%20formas%20distintas.%20Por" 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"  href="http://www.netvibes.com/share?title=Tres%20formas%20de%20Invertir%20un%20String&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%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"  href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Ftres-formas-de-invertir-un-string%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>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/codigos-c/tres-formas-de-invertir-un-string/feed/</wfw:commentRss>
		<slash:comments>0</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 [...]]]></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, <a href="http://www.puntopeek.com/tag/herencia/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con herencia">herencia</a> y polimorfismo.</strong></p>
<p>En este post trataré de explicar de la forma más sencilla posible, lo que es la <a href="http://www.puntopeek.com/tag/herencia/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con herencia">herencia</a> 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 <a href="http://www.puntopeek.com/tag/herencia/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con herencia">herencia</a> no es más que la capacidad de un objeto de heredar las características de otro. Bueno, en programación, la <a href="http://www.puntopeek.com/tag/herencia/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con herencia">herencia</a> 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 <a href="http://www.puntopeek.com/tag/herencia/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con herencia">herencia</a> 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 <a href="http://www.puntopeek.com/tag/herencia/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con herencia">herencia</a>:</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 <a href="http://www.puntopeek.com/tag/herencia/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con herencia">herencia</a> en C#, próximamente estaremos hablando sobre polimorfismo, y después de encapsulación. Cualquier duda en los comentarios. Hasta la próxima</p>



Compártelo:


	<a rel="nofollow"  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"  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"  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"  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"  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"  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"  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"  href="http://www.stumbleupon.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="StumbleUpon"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  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"  href="" title="TwitThis"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow"  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"  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"  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"  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>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/programacion/herencia-programacion-en-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Combinaciones posibles. Recursividad C#</title>
		<link>http://www.puntopeek.com/codigos-c/combinaciones-posibles-recursividad-c/</link>
		<comments>http://www.puntopeek.com/codigos-c/combinaciones-posibles-recursividad-c/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 05:20:23 +0000</pubDate>
		<dc:creator>Tomy</dc:creator>
				<category><![CDATA[Codigos C#]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[ejemplos C#]]></category>
		<category><![CDATA[recursividad]]></category>

		<guid isPermaLink="false">http://www.puntopeek.com/?p=251</guid>
		<description><![CDATA[Muchas veces para resolver algunos problemas, necesitamos saber cuantas formas posibles hay de escribir un número, una palabra. A través de los algoritmos de combinaciones podemos resolver muchos problemas, que no podemos hacer facilmente con una calculadora, o con la mente. Por ejemplo, de cuantas formas posibles se puede descomponer un número en sumandos? De [...]]]></description>
			<content:encoded><![CDATA[<p>Muchas veces para resolver algunos problemas, necesitamos saber cuantas formas posibles hay de escribir un número, una palabra. A través de los algoritmos de combinaciones podemos resolver muchos problemas, que no podemos hacer facilmente con una calculadora, o con la mente. Por ejemplo, de cuantas formas posibles se puede descomponer un número en sumandos? De cuantas formas posibles podemos combinar ciertas letras? Este tipo de problemas son los que trataremos en este post.<span id="more-251"></span></p>
<p>Primero veremos y comentaremos el algoritmo que nos permite saber cuantas combinaciones posibles se pueden hacer con ciertas letras.</p>
<p>Veamos el código:</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;">static</span> <span style="color: #0600FF;">void</span> Combina<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> s<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
        <span style="color: #008080; font-style: italic;">//Iniciamos este array auxiliar para</span>
        <span style="color: #008080; font-style: italic;">//marcar los caracteres que ya combinamos</span>
	<span style="color: #FF0000;">bool</span> <span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span>marcas <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #FF0000;">bool</span><span style="color: #000000;">&#91;</span>s.<span style="color: #0000FF;">Length</span><span style="color: #000000;">&#93;</span><span style="color: #008000;">;</span>
        <span style="color: #008080; font-style: italic;">//Llamamos al método recursivo</span>
	Combina<span style="color: #000000;">&#40;</span>s, <span style="color: #666666;">&quot;&quot;</span>, marcas<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
&nbsp;
<span style="color: #0600FF;">static</span> <span style="color: #0600FF;">void</span> Combina<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> original, <span style="color: #FF0000;">string</span> combinado, <span style="color: #FF0000;">bool</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span>marcas<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
        <span style="color: #008080; font-style: italic;">//Imprimimos la combinación si ya cambiamos</span>
        <span style="color: #008080; font-style: italic;">//todas las letras una vez</span>
	<span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span>original.<span style="color: #0000FF;">Length</span> <span style="color: #008000;">==</span> combinado.<span style="color: #0000FF;">Length</span><span style="color: #000000;">&#41;</span>
		Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span>combinado<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
	<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> marcas.<span style="color: #0000FF;">Length</span><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: #008080; font-style: italic;">//Vemos si está marcada para no volverla a combinar</span>
	   <span style="color: #0600FF;">if</span><span style="color: #000000;">&#40;</span><span style="color: #008000;">!</span>marcas<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span><span style="color: #000000;">&#41;</span>
	   <span style="color: #000000;">&#123;</span>
                <span style="color: #008080; font-style: italic;">//Marcamos el caracter que vamos a combinar</span>
		marcas<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span> <span style="color: #008000;">=</span> true<span style="color: #008000;">;</span>
                <span style="color: #008080; font-style: italic;">//Invocamos al metodo recursivo añadiendo</span>
                <span style="color: #008080; font-style: italic;">//un caracter al string que combinamos</span>
		Combina<span style="color: #000000;">&#40;</span>original, combinado <span style="color: #008000;">+</span> original<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span>, marcas<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
                <span style="color: #008080; font-style: italic;">//Desmarcamos el caracter para poder usarlo</span>
                <span style="color: #008080; font-style: italic;">//en otras combinaciones</span>
		marcas<span style="color: #000000;">&#91;</span>i<span style="color: #000000;">&#93;</span> <span style="color: #008000;">=</span> false<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>Como ven es un algoritmo muy sencillo, y no tan largo, donde usamos la técnica de backtracking, o vuelta atrás, que vimos hace un tiempo en <a href="http://www.puntopeek.com/programacion/recursividad-con-c-3/">este post</a>. Espero les halla servido de ayuda este problemita, con esto podrá por ejemplo, saber de cuantas formas posibles se pueden combinar las letras a, n y c.</p>
<p>Si hacemos algo así:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">Combina<span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;abc&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Console.<span style="color: #0000FF;">ReadLine</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>esto es lo que devolvería el programa:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;">abc
acb
bac
bca
cab
cba</pre></div></div>

<p>Ya se encargarán ustedes de buscarle las aplicaciones que lleva, también pueden tratar de hacer este algoritmo un poco más eficientes, piensen un poco en el como&#8230;</p>
<p>En el proximo post, veremos entonces todas las permutaciones que podemos hacer para descomponer un número en sumandos.</p>
<p>dudas=&gt; comentarios</p>



Compártelo:


	<a rel="nofollow"  href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-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"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-c%2F&amp;title=Combinaciones%20posibles.%20Recursividad%20C%23&amp;bodytext=Muchas%20veces%20para%20resolver%20algunos%20problemas%2C%20necesitamos%20saber%20cuantas%20formas%20posibles%20hay%20de%20escribir%20un%20n%C3%BAmero%2C%20una%20palabra.%20A%20trav%C3%A9s%20de%20los%20algoritmos%20de%20combinaciones%20podemos%20resolver%20muchos%20problemas%2C%20que%20no%20podemos%20hacer%20facilmente%20con%20una%20c" 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"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-c%2F&amp;title=Combinaciones%20posibles.%20Recursividad%20C%23&amp;notes=Muchas%20veces%20para%20resolver%20algunos%20problemas%2C%20necesitamos%20saber%20cuantas%20formas%20posibles%20hay%20de%20escribir%20un%20n%C3%BAmero%2C%20una%20palabra.%20A%20trav%C3%A9s%20de%20los%20algoritmos%20de%20combinaciones%20podemos%20resolver%20muchos%20problemas%2C%20que%20no%20podemos%20hacer%20facilmente%20con%20una%20c" 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"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-c%2F&amp;t=Combinaciones%20posibles.%20Recursividad%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"  href="http://barrapunto.com/submit.pl?subj=Combinaciones%20posibles.%20Recursividad%20C%23&amp;story=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-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"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-c%2F&amp;title=Combinaciones%20posibles.%20Recursividad%20C%23&amp;annotation=Muchas%20veces%20para%20resolver%20algunos%20problemas%2C%20necesitamos%20saber%20cuantas%20formas%20posibles%20hay%20de%20escribir%20un%20n%C3%BAmero%2C%20una%20palabra.%20A%20trav%C3%A9s%20de%20los%20algoritmos%20de%20combinaciones%20podemos%20resolver%20muchos%20problemas%2C%20que%20no%20podemos%20hacer%20facilmente%20con%20una%20c" 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"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-c%2F&amp;title=Combinaciones%20posibles.%20Recursividad%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"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-c%2F&amp;title=Combinaciones%20posibles.%20Recursividad%20C%23" title="StumbleUpon"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-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"  href="" title="TwitThis"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-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"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-c%2F&amp;title=Combinaciones%20posibles.%20Recursividad%20C%23&amp;source=Programaci%C3%B3n+y+desarrollo+web+Programaci%C3%B3n+en+C%23%2C+PHP+y+software+libre&amp;summary=Muchas%20veces%20para%20resolver%20algunos%20problemas%2C%20necesitamos%20saber%20cuantas%20formas%20posibles%20hay%20de%20escribir%20un%20n%C3%BAmero%2C%20una%20palabra.%20A%20trav%C3%A9s%20de%20los%20algoritmos%20de%20combinaciones%20podemos%20resolver%20muchos%20problemas%2C%20que%20no%20podemos%20hacer%20facilmente%20con%20una%20c" 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"  href="http://www.netvibes.com/share?title=Combinaciones%20posibles.%20Recursividad%20C%23&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-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"  href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.puntopeek.com%2Fcodigos-c%2Fcombinaciones-posibles-recursividad-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>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/codigos-c/combinaciones-posibles-recursividad-c/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Clases en C#. Declarar un constructor</title>
		<link>http://www.puntopeek.com/tutoriales-c/clases-en-c-declarar-un-constructor/</link>
		<comments>http://www.puntopeek.com/tutoriales-c/clases-en-c-declarar-un-constructor/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 08:42:46 +0000</pubDate>
		<dc:creator>Tomy</dc:creator>
				<category><![CDATA[Tutoriales C#]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[estructuras C#]]></category>

		<guid isPermaLink="false">http://www.puntopeek.com/?p=248</guid>
		<description><![CDATA[Un constructor, es un miembro de una clase, es a través del constructor, que se crea una instancia de una clase, el nombre de todo constructor de una clase, tiene que ser el mismo nombre que la clase a la cual pertenece, cuando en una clase no se declara un constructor en .net, a esta [...]]]></description>
			<content:encoded><![CDATA[<p>Un constructor, es un miembro de una clase, es a través del constructor, que se crea una instancia de una clase, el nombre de todo constructor de una clase, tiene que ser el mismo nombre que la clase a la cual pertenece, cuando en una clase no se declara un constructor en .net, a esta se le asigna, el constructor por defecto, que no recibe parámetros, y no hace nada. <span id="more-248"></span></p>
<p>En un constructor, es donde se construye un objeto del tipo de la clase, es donde se inicializan las variables, se verifica que sus valores sean admisibles, y se le asignan valores a estas. Una clase puede contener varios constructores, estos se deben diferenciar en la cantidad de<br />
parámetros, o en el tipo de los parámetros que reciben. Los constructores no se heredan, pero pueden ser llamados desde clases herederas usando la palabra reservada base y pasándole los parámetros que recibe. Esto lo veremos un poco más adelante cuando hablemos de <a href="http://www.puntopeek.com/tag/herencia/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con herencia">herencia</a> y polimorfismo, que son las bases de la programación orientada a objetos (POO).</p>
<p>Para declarar un constructor de una clase, se usa la siguiente sintaxis:</p>
<p>&lt;modificador de visibilidad&gt; &lt;nombre de la clase a la que pertenece&gt; (parámetros){instrucciones}</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: #FF0000;">class</span> <span style="color: #0600FF;">Auto</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #FF0000;">string</span> marca<span style="color: #008000;">;</span>
<span style="color: #FF0000;">int</span> modelo<span style="color: #008000;">;</span>
Color color<span style="color: #008000;">;</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">Auto</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #000000;">&#123;</span><span style="color: #000000;">&#125;</span> <span style="color: #008080; font-style: italic;">//constructor por defecto</span>
&nbsp;
<span style="color: #008080; font-style: italic;">//Otro constructor</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">Auto</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> marca<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">marca</span><span style="color: #008000;">=</span> marca<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span>
<span style="color: #008080; font-style: italic;">//Otro constructor al que le pasamos todos los datos</span>
<span style="color: #0600FF;">public</span> <span style="color: #0600FF;">Auto</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> marca, <span style="color: #FF0000;">int</span> modelo, Color color<span style="color: #000000;">&#41;</span>
<span style="color: #000000;">&#123;</span>
<span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">modelo</span> <span style="color: #008000;">=</span> modelo<span style="color: #008000;">;</span>
<span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">color</span> <span style="color: #008000;">=</span> color
<span style="color: #0600FF;">this</span>.<span style="color: #0000FF;">marca</span><span style="color: #008000;">=</span> marca<span style="color: #008000;">;</span>
<span style="color: #000000;">&#125;</span></pre></div></div>

<p>Nótese que los constructores se diferencian en la cantidad de parámetros o en el tipo de estos. Pero el constructor es uno solo, pero con varias sobrecargas, de modo que puedes elegir después como quieres crear un auto, dependiendo de los datos que tengas o no&#8230; además puedes crear  propiedades y métodos propios de una clase, pero eso lo veremos en el proximo post. Ahora  para crear un nuevo auto, o sea, una instancia de la clase Auto, podemos hacerlo de tres formas:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF;">Auto</span> miAuto <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #0600FF;">Auto</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">Auto</span> ford <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #0600FF;">Auto</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;Ford Explorer&quot;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #0600FF;">Auto</span> audi <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> <span style="color: #0600FF;">Auto</span><span style="color: #000000;">&#40;</span><span style="color: #666666;">&quot;Audi&quot;</span>, <span style="color: #FF0000;">404</span>, Color.<span style="color: #0000FF;">Red</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Por ahora practiquen, ya veremos un poco más adelante todo lo que podemos y se nos permite hacer detro de las clases. Si tienen duda, comentarios&#8230;</p>



Compártelo:


	<a rel="nofollow"  href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%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"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%2F&amp;title=Clases%20en%20C%23.%20Declarar%20un%20constructor&amp;bodytext=Un%20constructor%2C%20es%20un%20miembro%20de%20una%20clase%2C%20es%20a%20trav%C3%A9s%20del%20constructor%2C%20que%20se%20crea%20una%20instancia%20de%20una%20clase%2C%20el%20nombre%20de%20todo%20constructor%20de%20una%20clase%2C%20tiene%20que%20ser%20el%20mismo%20nombre%20que%20la%20clase%20a%20la%20cual%20pertenece%2C%20cuando%20en%20una%20clase%20no%20se%20de" 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"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%2F&amp;title=Clases%20en%20C%23.%20Declarar%20un%20constructor&amp;notes=Un%20constructor%2C%20es%20un%20miembro%20de%20una%20clase%2C%20es%20a%20trav%C3%A9s%20del%20constructor%2C%20que%20se%20crea%20una%20instancia%20de%20una%20clase%2C%20el%20nombre%20de%20todo%20constructor%20de%20una%20clase%2C%20tiene%20que%20ser%20el%20mismo%20nombre%20que%20la%20clase%20a%20la%20cual%20pertenece%2C%20cuando%20en%20una%20clase%20no%20se%20de" 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"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%2F&amp;t=Clases%20en%20C%23.%20Declarar%20un%20constructor" 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"  href="http://barrapunto.com/submit.pl?subj=Clases%20en%20C%23.%20Declarar%20un%20constructor&amp;story=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%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"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%2F&amp;title=Clases%20en%20C%23.%20Declarar%20un%20constructor&amp;annotation=Un%20constructor%2C%20es%20un%20miembro%20de%20una%20clase%2C%20es%20a%20trav%C3%A9s%20del%20constructor%2C%20que%20se%20crea%20una%20instancia%20de%20una%20clase%2C%20el%20nombre%20de%20todo%20constructor%20de%20una%20clase%2C%20tiene%20que%20ser%20el%20mismo%20nombre%20que%20la%20clase%20a%20la%20cual%20pertenece%2C%20cuando%20en%20una%20clase%20no%20se%20de" 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"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%2F&amp;title=Clases%20en%20C%23.%20Declarar%20un%20constructor" 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"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%2F&amp;title=Clases%20en%20C%23.%20Declarar%20un%20constructor" title="StumbleUpon"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%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"  href="" title="TwitThis"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%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"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%2F&amp;title=Clases%20en%20C%23.%20Declarar%20un%20constructor&amp;source=Programaci%C3%B3n+y+desarrollo+web+Programaci%C3%B3n+en+C%23%2C+PHP+y+software+libre&amp;summary=Un%20constructor%2C%20es%20un%20miembro%20de%20una%20clase%2C%20es%20a%20trav%C3%A9s%20del%20constructor%2C%20que%20se%20crea%20una%20instancia%20de%20una%20clase%2C%20el%20nombre%20de%20todo%20constructor%20de%20una%20clase%2C%20tiene%20que%20ser%20el%20mismo%20nombre%20que%20la%20clase%20a%20la%20cual%20pertenece%2C%20cuando%20en%20una%20clase%20no%20se%20de" 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"  href="http://www.netvibes.com/share?title=Clases%20en%20C%23.%20Declarar%20un%20constructor&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%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"  href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fclases-en-c-declarar-un-constructor%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>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/tutoriales-c/clases-en-c-declarar-un-constructor/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>La clase String en C#</title>
		<link>http://www.puntopeek.com/tutoriales-c/la-clase-string-en-c/</link>
		<comments>http://www.puntopeek.com/tutoriales-c/la-clase-string-en-c/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 02:58:50 +0000</pubDate>
		<dc:creator>Tomy</dc:creator>
				<category><![CDATA[Tutoriales C#]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[Codigos C#]]></category>
		<category><![CDATA[Programacion]]></category>

		<guid isPermaLink="false">http://www.puntopeek.com/?p=245</guid>
		<description><![CDATA[Ahora hablaremos de una de las clases más importantes y usadas en C# para todo tipo de cosas. Si no dominamos esta clase, posiblemente no podamos hacer casi ningún programa o algoritmo, claro que hablamos de la clase String (Cadena).
Un string es una cadena de caracteres, y hay que saber dominar todos estos caracteres y [...]]]></description>
			<content:encoded><![CDATA[<p>Ahora hablaremos de una de las clases más importantes y usadas en C# para todo tipo de cosas. Si no dominamos esta clase, posiblemente no podamos hacer casi ningún programa o algoritmo, claro que hablamos de la clase <a href="http://www.puntopeek.com/tag/string/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con string">String</a> (Cadena).</p>
<p>Un <a href="http://www.puntopeek.com/tag/string/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con string">string</a> es una cadena de caracteres, y hay que saber dominar todos estos caracteres y hacer con ellos lo que nosvenga en gana. La clase <a href="http://www.puntopeek.com/tag/string/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con string">String</a>, nos da bastante ayuda, ya que trae algunos métodos que nos hacen la vida mucho más fácil a todos. Ahora explicaré los más importantes:<span id="more-245"></span></p>
<p>Métodos fundamentales</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;">char</span> <span style="color: #0600FF;">this</span><span style="color: #000000;">&#91;</span><span style="color: #FF0000;">int</span> index<span style="color: #000000;">&#93;</span> <span style="color: #000000;">&#123;</span>get<span style="color: #008000;">;</span><span style="color: #000000;">&#125;</span>
Devuelve el caracter de la posición especificada de la cadena.
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">int</span> Length <span style="color: #000000;">&#123;</span>get<span style="color: #008000;">;</span><span style="color: #000000;">&#125;</span>
Devuelve la longitud de la cadena<span style="color: #000000;">&#40;</span>cantidad de caracteres
que contiene<span style="color: #000000;">&#41;</span> empezando a contar desde 1.
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">string</span> Insert<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> startIndex,<span style="color: #FF0000;">string</span> value<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Inserta la cadena especificada a partir de la posición dada.
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">string</span> Remove<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> startIndex,<span style="color: #FF0000;">int</span> count<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Elimina el número especificado de caracteres a partir de la
posición dada.
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">string</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> Split<span style="color: #000000;">&#40;</span><span style="color: #0600FF;">params</span> <span style="color: #FF0000;">char</span><span style="color: #000000;">&#91;</span><span style="color: #000000;">&#93;</span> separator<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
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.
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">string</span> Substring<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> startIndex<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
Devuelve la subcadena contenida a partir de la posición
especificada.
&nbsp;
<span style="color: #0600FF;">public</span> <span style="color: #FF0000;">string</span> Substring<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">int</span> index, <span style="color: #FF0000;">int</span> length<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
devuelve la subcadena que empieza a partir del índice
específico, y tiene la longitud indicada<span style="color: #000000;">&#41;</span>.</pre></div></div>

<p>Ahora veamos un ejemplo donde se usan algunos de estos métodos.</p>
<p><strong> Invertir una cadena</strong>. O sea si invocamos al método <strong>Invierte (&#8221;puntopeek&#8221;)</strong>, imprimiría en pantalla la palabra al reves, <strong>keepotnup</strong>.</p>
<p>Veamos ahora el código de este primer 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;">static</span> <span style="color: #0600FF;">void</span> Invierte<span style="color: #000000;">&#40;</span><span style="color: #FF0000;">string</span> s<span style="color: #000000;">&#41;</span>
 <span style="color: #000000;">&#123;</span>
 Stack pila <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>
<span style="color: #008080; font-style: italic;">//Guardamos cada caracter en la pila</span>
 <span style="color: #0600FF;">foreach</span><span style="color: #000000;">&#40;</span><span style="color: #FF0000;">char</span> ch <span style="color: #0600FF;">in</span> s<span style="color: #000000;">&#41;</span>
    pila.<span style="color: #0000FF;">Push</span><span style="color: #000000;">&#40;</span>ch<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #008080; font-style: italic;">//Declaramos una nueva cadena</span>
 <span style="color: #FF0000;">string</span> aux <span style="color: #008000;">=</span> <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">;</span>
<span style="color: #008080; font-style: italic;">//ahora vamos poniendo en aux, cada caracter, como</span>
<span style="color: #008080; font-style: italic;">//usamos una pila, nos quedaría la palabra invertida</span>
 <span style="color: #0600FF;">while</span><span style="color: #000000;">&#40;</span>pila.<span style="color: #0000FF;">Count</span><span style="color: #008000;">&amp;</span>gt<span style="color: #008000;">;</span><span style="color: #FF0000;">0</span>
    aux <span style="color: #008000;">+=</span> pila.<span style="color: #0000FF;">Pop</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>.<span style="color: #0000FF;">ToString</span><span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
<span style="color: #008080; font-style: italic;">//Imprimimos en consola la palabra invertida</span>
 Console.<span style="color: #0000FF;">WriteLine</span><span style="color: #000000;">&#40;</span>aux<span style="color: #000000;">&#41;</span><span style="color: #008000;">;</span>
 <span style="color: #000000;">&#125;</span></pre></div></div>

<p>Y hasta aquí este pequeño manual sobre la clase <a href="http://www.puntopeek.com/tag/string/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con string">string</a> y sus métodos, si quieren compartir algún otro ejemplo o les quedó alguna duda, usen los comentarios</p>



Compártelo:


	<a rel="nofollow"  href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-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"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-en-c%2F&amp;title=La%20clase%20String%20en%20C%23&amp;bodytext=Ahora%20hablaremos%20de%20una%20de%20las%20clases%20m%C3%A1s%20importantes%20y%20usadas%20en%20C%23%20para%20todo%20tipo%20de%20cosas.%20Si%20no%20dominamos%20esta%20clase%2C%20posiblemente%20no%20podamos%20hacer%20casi%20ning%C3%BAn%20programa%20o%20algoritmo%2C%20claro%20que%20hablamos%20de%20la%20clase%20String%20%28Cadena%29.%0D%0A%0D%0AUn%20string%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"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-en-c%2F&amp;title=La%20clase%20String%20en%20C%23&amp;notes=Ahora%20hablaremos%20de%20una%20de%20las%20clases%20m%C3%A1s%20importantes%20y%20usadas%20en%20C%23%20para%20todo%20tipo%20de%20cosas.%20Si%20no%20dominamos%20esta%20clase%2C%20posiblemente%20no%20podamos%20hacer%20casi%20ning%C3%BAn%20programa%20o%20algoritmo%2C%20claro%20que%20hablamos%20de%20la%20clase%20String%20%28Cadena%29.%0D%0A%0D%0AUn%20string%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"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-en-c%2F&amp;t=La%20clase%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"  href="http://barrapunto.com/submit.pl?subj=La%20clase%20String%20en%20C%23&amp;story=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-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"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-en-c%2F&amp;title=La%20clase%20String%20en%20C%23&amp;annotation=Ahora%20hablaremos%20de%20una%20de%20las%20clases%20m%C3%A1s%20importantes%20y%20usadas%20en%20C%23%20para%20todo%20tipo%20de%20cosas.%20Si%20no%20dominamos%20esta%20clase%2C%20posiblemente%20no%20podamos%20hacer%20casi%20ning%C3%BAn%20programa%20o%20algoritmo%2C%20claro%20que%20hablamos%20de%20la%20clase%20String%20%28Cadena%29.%0D%0A%0D%0AUn%20string%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"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-en-c%2F&amp;title=La%20clase%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"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-en-c%2F&amp;title=La%20clase%20String%20en%20C%23" title="StumbleUpon"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-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"  href="" title="TwitThis"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-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"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-en-c%2F&amp;title=La%20clase%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=Ahora%20hablaremos%20de%20una%20de%20las%20clases%20m%C3%A1s%20importantes%20y%20usadas%20en%20C%23%20para%20todo%20tipo%20de%20cosas.%20Si%20no%20dominamos%20esta%20clase%2C%20posiblemente%20no%20podamos%20hacer%20casi%20ning%C3%BAn%20programa%20o%20algoritmo%2C%20claro%20que%20hablamos%20de%20la%20clase%20String%20%28Cadena%29.%0D%0A%0D%0AUn%20string%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"  href="http://www.netvibes.com/share?title=La%20clase%20String%20en%20C%23&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-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"  href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.puntopeek.com%2Ftutoriales-c%2Fla-clase-string-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>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/tutoriales-c/la-clase-string-en-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Crear themes para wordpress</title>
		<link>http://www.puntopeek.com/wordpress/crear-themes-para-wordpress/</link>
		<comments>http://www.puntopeek.com/wordpress/crear-themes-para-wordpress/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 02:22:34 +0000</pubDate>
		<dc:creator>Tomy</dc:creator>
				<category><![CDATA[Diseño web]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[themes wordpress]]></category>

		<guid isPermaLink="false">http://www.puntopeek.com/?p=242</guid>
		<description><![CDATA[Hace un tiempo empecé a rediseñar y modificar algunos templates, y me puse a buscar algunos tutoriales, alguna forma de empezar&#8230; aunque ya sabía PHP, CSS y algo de MySQL, necesitaba por supuesto saber las funciones de wordpress, que me facilitarían mucho la vida a la hora de modificar o crear un template para wordpress. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.puntopeek.com/wp-content/uploads/2009/08/wordp2.jpg"><img class="alignnone size-full wp-image-243" title="funciones wordpress" src="http://www.puntopeek.com/wp-content/uploads/2009/08/wordp2.jpg" alt="funciones wordpress" width="450" height="186" /></a>Hace un tiempo empecé a rediseñar y modificar algunos templates, y me puse a buscar algunos tutoriales, alguna forma de empezar&#8230; aunque ya sabía PHP, CSS y algo de MySQL, necesitaba por supuesto saber las funciones de <a href="http://www.puntopeek.com/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con wordpress">wordpress</a>, que me facilitarían mucho la vida a la hora de modificar o crear un template para <a href="http://www.puntopeek.com/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con wordpress">wordpress</a>. <span id="more-242"></span>Me encontré con <a href="http://www.dbswebsite.com/design/wordpress-reference/" target="_blank">este estupendo sitio</a>, que tiene un listado con todas las funciones organizadas por tags, muy muy bien diseñado, utilizando el efecto acordeon al estilo jQuery (algo de lo que estaremos hablando pronto). Además les dejo otro par de direcciones donde encontrarán algunos buenos sitios con información y tutoriales para modificar templates de <a href="http://www.puntopeek.com/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con wordpress">wordpress</a> y mejorarlos, algo que siempre puede hacerse.</p>
<p>Bueno, de la mano de Anieto2k.com tenemos esta <a href="http://www.anieto2k.com/2006/04/21/si-no-haces-un-theme-es-por-que-no-quieres/" target="_blank">recopilación de 4 manuales</a> para crear tu primer theme para <a href="http://www.puntopeek.com/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con wordpress">wordpress</a>, incluyendo el suyo propio (muy bueno).</p>
<p>Este es el <a href="este es el tutorial oficial de Wordpress" target="_blank">tutorial oficial de wordpress</a> (inglés) para diseñar templates. Nos da algunos buenos consejos y sobre todo se explica muy bien la estructura que debe tener un theme de <a href="http://www.puntopeek.com/tag/wordpress/" class="st_tag internal_tag" rel="tag" title="Entradas etiquetadas con wordpress">wordpress</a>.</p>
<p>Si no dispones de mucho tiempo puedes echarle un vistazo a este <a href="http://maestrosdelblog.com.ar/posicionamiento/tutorial-como-crear-un-theme-para-wordpress-desde-cero/">post de Maestros del Blog</a> en los que nos dan algunas buenas ideas para personalizar nuestra plantilla.</p>
<p>Para los que tenga conexión rápida (yo no lo pude ver), pueden ver este <a href="http://ayudawordpress.com/videotutorial-crear-un-theme-wordpress-partiendo-de-default/" target="_blank">videotutorial en Ayuda Wordpress</a>, que según he leído parece estar muy bueno y concreto, aunque un poco largo&#8230;.</p>
<p>Y por último, les dejo <a href="http://designshack.co.uk/gallery/category/blog/">este sitio</a>, que es el que casi siempre visito cuando busco inspiración para mis diseños, aunque por alguna extraña razón mis diseños nunca son tan buenos, será porque soy programador, dicen que no tenemos buen gusto.</p>



Compártelo:


	<a rel="nofollow"  href="http://meneame.net/submit.php?url=http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%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"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%2F&amp;title=Crear%20themes%20para%20wordpress&amp;bodytext=Hace%20un%20tiempo%20empec%C3%A9%20a%20redise%C3%B1ar%20y%20modificar%20algunos%20templates%2C%20y%20me%20puse%20a%20buscar%20algunos%20tutoriales%2C%20alguna%20forma%20de%20empezar...%20aunque%20ya%20sab%C3%ADa%20PHP%2C%20CSS%20y%20algo%20de%20MySQL%2C%20necesitaba%20por%20supuesto%20saber%20las%20funciones%20de%20wordpress%2C%20que%20me%20facilitar" 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"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%2F&amp;title=Crear%20themes%20para%20wordpress&amp;notes=Hace%20un%20tiempo%20empec%C3%A9%20a%20redise%C3%B1ar%20y%20modificar%20algunos%20templates%2C%20y%20me%20puse%20a%20buscar%20algunos%20tutoriales%2C%20alguna%20forma%20de%20empezar...%20aunque%20ya%20sab%C3%ADa%20PHP%2C%20CSS%20y%20algo%20de%20MySQL%2C%20necesitaba%20por%20supuesto%20saber%20las%20funciones%20de%20wordpress%2C%20que%20me%20facilitar" 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"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%2F&amp;t=Crear%20themes%20para%20wordpress" 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"  href="http://barrapunto.com/submit.pl?subj=Crear%20themes%20para%20wordpress&amp;story=http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%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"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%2F&amp;title=Crear%20themes%20para%20wordpress&amp;annotation=Hace%20un%20tiempo%20empec%C3%A9%20a%20redise%C3%B1ar%20y%20modificar%20algunos%20templates%2C%20y%20me%20puse%20a%20buscar%20algunos%20tutoriales%2C%20alguna%20forma%20de%20empezar...%20aunque%20ya%20sab%C3%ADa%20PHP%2C%20CSS%20y%20algo%20de%20MySQL%2C%20necesitaba%20por%20supuesto%20saber%20las%20funciones%20de%20wordpress%2C%20que%20me%20facilitar" 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"  href="http://reddit.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%2F&amp;title=Crear%20themes%20para%20wordpress" 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"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%2F&amp;title=Crear%20themes%20para%20wordpress" title="StumbleUpon"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%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"  href="" title="TwitThis"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%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"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%2F&amp;title=Crear%20themes%20para%20wordpress&amp;source=Programaci%C3%B3n+y+desarrollo+web+Programaci%C3%B3n+en+C%23%2C+PHP+y+software+libre&amp;summary=Hace%20un%20tiempo%20empec%C3%A9%20a%20redise%C3%B1ar%20y%20modificar%20algunos%20templates%2C%20y%20me%20puse%20a%20buscar%20algunos%20tutoriales%2C%20alguna%20forma%20de%20empezar...%20aunque%20ya%20sab%C3%ADa%20PHP%2C%20CSS%20y%20algo%20de%20MySQL%2C%20necesitaba%20por%20supuesto%20saber%20las%20funciones%20de%20wordpress%2C%20que%20me%20facilitar" 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"  href="http://www.netvibes.com/share?title=Crear%20themes%20para%20wordpress&amp;url=http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%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"  href="http://bitacoras.com/anotaciones/http%3A%2F%2Fwww.puntopeek.com%2Fwordpress%2Fcrear-themes-para-wordpress%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>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/wordpress/crear-themes-para-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</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 [...]]]></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>



Compártelo:


	<a rel="nofollow"  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"  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"  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"  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"  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"  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"  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"  href="http://www.stumbleupon.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="StumbleUpon"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/stumbleupon.png" title="StumbleUpon" alt="StumbleUpon" class="sociable-hovers" /></a>
	<a rel="nofollow"  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"  href="" title="TwitThis"><img src="http://www.puntopeek.com/wp-content/plugins/sociable/images/" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow"  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"  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"  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"  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>


<br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.puntopeek.com/programacion/calcular-el-dia-de-la-semana-con-c/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 2.475 seconds -->
