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

<channel>
	<title>Nullable Blog [Ignoranto.Info] &#187; Métodos</title>
	<atom:link href="http://ignoranto.info/tags/metodos/feed/" rel="self" type="application/rss+xml" />
	<link>http://ignoranto.info</link>
	<description>grbr.says(&#34;a little bit of everything and a lot of nothing&#34;);</description>
	<lastBuildDate>Sat, 24 Jul 2010 01:42:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Problema de Syracuse (Conjetura de Collatz)</title>
		<link>http://ignoranto.info/ricercando/problema-de-syracuse/</link>
		<comments>http://ignoranto.info/ricercando/problema-de-syracuse/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 04:07:54 +0000</pubDate>
		<dc:creator>gerWare</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Algoritmo]]></category>
		<category><![CDATA[Conjetura de Collatz]]></category>
		<category><![CDATA[Métodos]]></category>
		<category><![CDATA[Problema de Syracuse]]></category>
		<category><![CDATA[Recursividad]]></category>

		<guid isPermaLink="false">http://codigo.ignoranto.info/?p=70</guid>
		<description><![CDATA[Hola, en este artículo vamos a ejemplificar y aplicar la recursividad de la conjetura de Collatz, si necesitas información matemática puedes recurrir a la wikipedia, quien redacta este artículo es estudiante de Ingeniería de Sistemas (futuro programador). El problema Syracuse o Conjetura de Collatz es una función recursiva y las condiciones son las siguientes: Si [...]]]></description>
			<content:encoded><![CDATA[<p>Hola, en este artículo vamos a ejemplificar y aplicar la recursividad de la <strong>conjetura de Collatz</strong>, si necesitas información matemática puedes recurrir a la <a href="http://es.wikipedia.org/wiki/Conjetura_de_Collatz">wikipedia</a>, quien redacta este artículo es estudiante de Ingeniería de Sistemas (futuro programador).<span style="text-decoration: line-through;"><br />
</span></p>
<p>El problema Syracuse o Conjetura de Collatz es una función recursiva y las condiciones son las siguientes:</p>
<blockquote><p>Si N es par, lo dividimos [N/2];<br />
Si N es impar, lo multiplicamos por 3 y sumamos +1 [3N+1];</p></blockquote>
<p>Siendo N un numero entero positivo; es necesario que N sea un numero entero positivo ya que si fuese real (con coma decimal) nuestro ordenador no podría saber si es &#8220;par o impar&#8221; debido a que una de las formas de saber si un número es par o impar es mediante el &#8220;módulo&#8221; el cual halla el residuo de una división, si el residuo de N y 2 es 0, entonces N es par!.</p>
<p><strong>Comencemos:</strong><br />
Necesitamos crear una funcion recursiva, nuestra función se llamará syr(), el parámetro de entrada es una variable de tipo entero (por que si fuera double o float simplemente no existiría el módulo (residuo)), obviamente nuestra función syr() devuelve un valor entero!</p>
<p>Si N es 1, retornamos 1;<br />
Sino, Si el módulo (residuo) de N y 2 es 0, retornamos N/2;<br />
Sino, retornamos 3*N+1;</p>
<p>Veamos lo que pasa si N valiese 5:<br />
5 % 2 == 0 ?? NO!<br />
entonces &gt;&gt; n = 3*5 + 1, [n = 16];<br />
16% 2 == 0 ?? SI!<br />
entonces &gt;&gt; n = 16/2, [n = 8];<br />
8% 2 == 0?? SI!<br />
entonces &gt;&gt; n = 8/2, [n = 4];<br />
4 % 2 == 0?? SI!<br />
entonces &gt;&gt; n = 4/2, [n = 2];<br />
2%2 == 0?? SI!<br />
entonces &gt;&gt; n = 2/2. [n= 1]<br />
1 == 1?? SI!<br />
Fin de la secuencia, llegamos a 1!</p>
<p><strong>EN PHP sería de la siguiente manera:</strong></p>
<pre>syr($n)
{
  echo $n; //mostramos $n
  if ($n == 1) //si $n es 1, devolvemos 1
    return 1;
  else //sino ...
  {
    if ($n%2 == 0) // si es par
      return syr($n/2); // lo dividimos
    else //sino
      return syr(3*n+1); // multiplicamos por 3 y sumamos 1;
  }
}</pre>
<p><a href="http://develop.ignoranto.info" target="_blank">El código ignoranto</a> tiene el algoritmo escrito en <a href="http://develop.ignoranto.info/csharp/syracuse.cs">C#</a> y <a href="http://develop.ignoranto.info/LeerPHP?Carpeta=php&amp;Archivo=syracuse.php">PHP</a>; también podemos probar la <a href="http://develop.ignoranto.info/php/syracuse.php">Serie de Syracuse</a> solo con números enteros menores de 1e5 (sino se sobre carga el server)!</p>
]]></content:encoded>
			<wfw:commentRss>http://ignoranto.info/ricercando/problema-de-syracuse/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Una Piramide con Métodos</title>
		<link>http://ignoranto.info/ricercando/una-piramide-con-metodos/</link>
		<comments>http://ignoranto.info/ricercando/una-piramide-con-metodos/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 05:17:38 +0000</pubDate>
		<dc:creator>gerWare</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Do Sostenido]]></category>
		<category><![CDATA[Funciones]]></category>
		<category><![CDATA[Métodos]]></category>

		<guid isPermaLink="false">http://codigo.ignoranto.info/?p=62</guid>
		<description><![CDATA[Aqui explicaré como podemos hacer esta gráfica en consola usando caracteres, espacios  y un bucle. La figura es la siguiente: x xxx xxxxx xxxxxxx Pues como vemos en la primera fila tenemos 3 espacios y 1 caracter, luego 2 espacios y 3 caracteres (sumamos 2 en caracteres), luego 1 espacio y 5 caracteres y por [...]]]></description>
			<content:encoded><![CDATA[<p>Aqui explicaré como podemos hacer esta gráfica en consola usando caracteres, espacios  y un bucle. La figura es la siguiente:</p>
<pre>   x
  xxx
 xxxxx
xxxxxxx</pre>
<p>Pues como vemos en la primera fila tenemos 3 espacios y 1 caracter, luego 2 espacios y 3 caracteres (sumamos 2 en caracteres), luego 1 espacio y 5 caracteres y por último tenemos 0 espacios (ninguno) y 7 caracteres!</p>
<p><strong>¿Cómo lo hacemos?</strong><br />
Primero necesitamos tener como base un número impar (cuyo módulo del número y 2 sea diferente de 0 (caso contrario sería par)) y luego creamos el algoritmo!</p>
<p>Trabajaremos con el número 7 y haremos una copia de Número como NN;</p>
<p><strong>Para la primera fila sería asi:</strong><br />
Espacios = Numero / 2;  (7/2 =3)<br />
Caracteres = NN &#8211; Espacios *2; (7 &#8211; 6 = 1)<br />
Numero = Numero -2;  (7-2 = 5)<br />
Imprimir Espacios, Imprimir caracteres! &gt;&gt; ___X</p>
<p><strong>Entonces nuesto bucle sería el siguiente:</strong></p>
<p>Mientras Numero sea mayor que 0 hacemos:<br />
Espacios = Numero / 2;<br />
Caracteres = Copia de Numero &#8211; Espacios *2;<br />
Numero = Numero -2;<br />
Imprimir espacios, Imprimir Caracteres</p>
<p>En C# sería asi:</p>
<pre>int esp, ch, tt = n, x = 0;
while (x &lt; n)
{
    esp = n / 2;
    ch = tt - (esp * 2);
    n = n - 2;
    espacio(esp);
    caract(ch);
    Console.WriteLine();
}</pre>
<p>Nuestras funciones &#8220;espacio()&#8221; y &#8220;caract()&#8221; serían las siguientes, lo único que hacen es imprimir la cantidad de espacios y caracteres según el valor de la variable recibida!</p>
<pre>void espacio(int x) //void, quiere decir que no devuelve valores
{
   int a; // declaramos a pero no le asignamos valor
   for (a = 0; a &lt; x; a++) // por que el bucle le dara un valor
   {
     Console.Write(" "); // cuantas veces 'a' sea menor que 'x'
   } // imprimiremos espacios en la consola!
}
void caract(int x) // no devolvemos valor!
{
   int a;
   for (a = 0; a &lt; x; a++) //bucle para cantidad de caracteres
   {
     Console.Write("x"); // imprimimos caracteres
   }
}</pre>
<p>Este código no puede mostrarse en funcionamiento (debido a que es C#) de todos modos encuentran el código (con las funciones de entrada de datos) listo para compilar en <a href="http://develop.ignoranto.info" target="_self">develop.ignoranto.info</a> en la sección de C#, o simplemente <a href="http://develop.ignoranto.info/csharp/piramide.cs" target="_blank">haciendo clic aquí!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ignoranto.info/ricercando/una-piramide-con-metodos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
