<?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>Tordek &#187; basicos</title>
	<atom:link href="http://blog.tordek.com.ar/tag/basicos/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tordek.com.ar</link>
	<description>Linux, Programación, Diseño Web, y todo lo bueno de la Internet.</description>
	<lastBuildDate>Sun, 10 Jul 2011 12:51:09 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Básicos PHPianos</title>
		<link>http://blog.tordek.com.ar/2007/08/basicos-phpianos/</link>
		<comments>http://blog.tordek.com.ar/2007/08/basicos-phpianos/#comments</comments>
		<pubDate>Thu, 16 Aug 2007 17:59:16 +0000</pubDate>
		<dc:creator>Tordek</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[basicos]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://blog.tordek.com.ar/2007/08/basicos-phpianos/</guid>
		<description><![CDATA[Tehsis dijo algo que ahora es más que obvio: estoy explicando las constantes y variables y demás en PHP&#8230; pero si se supone que el que lee esto quiere aprender PHP, no está por saber cómo ejecutar ese código&#8230; Para ejecutar código PHP, primero hay que tener un intérprete a mano. Hay varias formas de [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.tordek.com.ar/2007/08/comienzo-de-clases/#comment-580">Tehsis dijo algo</a> que ahora es más que obvio: estoy explicando las constantes y variables y demás en PHP&#8230; pero si se supone que el que lee esto quiere aprender PHP, no está por saber cómo ejecutar ese código&#8230;</p>
<p>Para ejecutar código PHP, primero hay que tener un intérprete a mano. Hay varias formas de hacerlo: Instalar sólo el ejecutable (poco recomendable para no-linuxeros), instalar el ejecutable con algún servidor web (IIS, Apache, el que más le guste a cada uno), o conseguirse un hosting que provea PHP.</p>
<p>Los que opten por el primer camino suelen saber cómo hacerlo solos, así que los dejo (para probar uno de sus scripts, ejecutan <code>php &lt; script.php</code>). Para los que elijan el segundo, tienen <a href="http://www.php.net/manual/es/install.php">amplia documentación</a> en el sitio de PHP. Y para los últimos, a usar Google.</p>
<p>PHP es un lenguaje que se &#8220;embebe&#8221; en el código HTML; se lo entremezcla con el contenido estático, cosa de no tener que poner un echo adelante de cada línea.</p>
<p>El intérprete simplemente imprime todo el contenido que entra, hasta que encuentra uno de los símbolos de apertura. por lo general es la secuencia <code>&lt;?php</code>, aunque en algunos casos basta con <code>&lt;?</code>. Luego, procesa toda la entrada hasta llegar a un <code>?&gt;</code>. Entonces, un archivo test.php que contenga:</p>
<pre lang="php">echo "hola";
&lt; ?php
echo "ejecutable";
?&gt;</pre>
<p>Daría como salida:</p>
<pre>echo "hola";
ejecutable</pre>
<p>(Aunque, dado que en HTML cualquier fin de línea, espacio, tabulación, etc., se reemplaza por un espacio (independientemente de la cantidad de espacios que haya), en un navegador se vería &#8216;echo &#8220;hola&#8221;; ejecutable&#8217;, todo en una misma línea.)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tordek.com.ar/2007/08/basicos-phpianos/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comienzo de clases</title>
		<link>http://blog.tordek.com.ar/2007/08/comienzo-de-clases/</link>
		<comments>http://blog.tordek.com.ar/2007/08/comienzo-de-clases/#comments</comments>
		<pubDate>Mon, 13 Aug 2007 03:05:41 +0000</pubDate>
		<dc:creator>Tordek</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[basicos]]></category>
		<category><![CDATA[principiantes]]></category>

		<guid isPermaLink="false">http://blog.tordek.com.ar/2007/08/comienzo-de-clases/</guid>
		<description><![CDATA[Dado que hace casi un mes que puse la currícula, y no hubieron cambios, así que empiezo: Una variable es un contenedor que almacena un valor. Una constante también. La diferencia radica, como indican sus nombres, en que el valor que guarda una variable puede cambiar en el transcurso de un programa, mientras que el [...]]]></description>
			<content:encoded><![CDATA[<p>Dado que hace casi un mes que puse <a href="http://blog.tordek.com.ar/2007/07/el-profe/">la currícula</a>, y no hubieron cambios, así que empiezo:</p>
<p>Una variable es un contenedor que almacena un valor. Una constante también. La diferencia radica, como indican sus nombres, en que el valor que guarda una variable puede cambiar en el transcurso de un programa, mientras que el de una constante se determina en un momento, y permanece igual hasta que éste se termina.</p>
<p>El ejemplo típico de constante es pi.</p>
<p>En algunos lenguajes, como en C, es necesario declarar una variable antes de poder utilizarla. En otros, como en PHP, una variable se declara tan pronto se le otorga un valor.</p>
<p>Variables:</p>
<pre lang="php">$valor=1;</pre>
<p>Constantes:</p>
<pre lang="php">define("PI",3.14159);</pre>
<p>Al principio puede parecer inútil una constante, después de todo se la puede reemplazar por una variable, pero con el tiempo se aprende que sí son útiles: si un valor se usa repetidamente en varios lugares diferentes, es bueno definirlo como una constante para evitar errores, o por si luego queremos cambiar su valor&#8230; en el primer caso, si en algún lugar escribimos 31.4159, el valor final estará mal. En el segundo, si queremos cambiar la precisión de PI de 3.14159 a un valor con 15 decimales, simplemente cambiamos el valor de la constante, y no en todos los lugares donde lo usemos (ejemplo: podemos calcular el área y perímetro de un círculo, y el volumen y superficie de una esfera, a partir de un radio, y todos éstos cálculos involucran a PI).</p>
<p>La asignación, simplemente, es el hecho de poner un valor en una variable. Se hace con el operador =. El valor asignado puede ser un literal (5, &#8220;Tordek&#8221;, 3.14159&#8230;), o el resultado de una operación (matemática, la aplicación de una función, una operación sobre cadenas, o alguna combinación de esto):</p>
<pre lang="php">$a = 5;
$nombre = "Tordek";
$cuadrado = 4 * 4;
$saludo = "Hola, " . $nombre;</pre>
<p>Para ver el valor de una variable (o el resultado de una operación), llamamos a echo.</p>
<p>Si no tuviéramos variables ni constantes, para imprimir los 4 valores que dije antes (perímerto y área de un círculo, y superficie y volumen de una esfera), deberíamos escribir algo así (para un radio 10):</p>
<p>(Nota: el punto es un operador de concatenación, es decir, &#8220;a&#8221;.&#8221;b&#8221;=&#8221;ab&#8221;. Cuando veamos cadenas lo explicaré más profundamente.)</p>
<pre lang="php">echo "Perimetro: ". 2 * 3.14159 * 10;
echo "Superficie: ". 3.14159 * 10 * 10;
echo "Area: ". 4 * 3.14159 * 10 * 10;
echo "Volumen: ". 4/3 * 3.14159 * 10 * 10 * 10;</pre>
<p>Si ahora hacemos que PI sea una constante, se ve todo más limpio:</p>
<pre lang="php">define("PI", 3.14159);
echo "Perimetro: ".2 * PI * 10;
echo "Superficie: ". PI * 10 * 10;
echo "Area: ". 4 * PI * 10 * 10;
echo "Volumen: ". 4/3 * PI * 10 * 10 * 10;</pre>
<p>Ahora, podemos poner el valor del radio en una variable, y si lo queremos cambiar,  sólo tocamos un lugar:</p>
<pre lang="php">define("PI", 3.14159);
$r=10;
echo "Perimetro: ".2 * PI * r;
echo "Superficie: ". PI * r * r;
echo "Area: ". 4 * PI *  r * r;
echo "Volumen: ". 4/3 * PI *  r *  r * r</pre>
<p>Pero se sigue viendo algo apretado&#8230; podríamos hacer todos los cálculos primero, e imprimirlos después:</p>
<pre lang="php">define("PI", 3.14159);
$r=10;

$perimetro = 2 * PI * r;
$superficie =  PI *  r * r;
$area = 4 * PI *  r * r;
$volumen = 4/3 * PI *  r *  r * r;

echo "Perimetro: ". $perimetro;
echo "Superficie: ". $superficie;
echo "Area: ". $area;
echo "Volumen: ". $volumen;</pre>
<p>Sí, ahora es un poco más amplio, pero es discutiblemente más legible. Algún matemático en la audiencia puede notar que la operación PI * r se repite siempre, así que podría almacenar su valor en una constante, y reemplazarlo donde se lo necesite&#8230; pero esto termina haciendo que el código sea más difícil de leer (y feo), y lo que ganamos en velocidad en ahorrarnos tres multiplicaciones (se usa 4 veces, y se calcula 1) es tan minúsculo que es despreciable. Siempre se tiene que intentar que lo que se escribe sea fácil de entender, y por las variables se empieza.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tordek.com.ar/2007/08/comienzo-de-clases/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Básicos: Algoritmos</title>
		<link>http://blog.tordek.com.ar/2007/04/basicos-algoritmos/</link>
		<comments>http://blog.tordek.com.ar/2007/04/basicos-algoritmos/#comments</comments>
		<pubDate>Thu, 12 Apr 2007 18:03:00 +0000</pubDate>
		<dc:creator>Tordek</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[algoritmos]]></category>
		<category><![CDATA[basicos]]></category>

		<guid isPermaLink="false">http://tordek.com.ar/blog/?p=95</guid>
		<description><![CDATA[Un programa es, básicamente, la representación de un algoritmo en código; un algoritmo es una serie de pasos que se realizan para obtener un resultado. Hay tres características principales: Resultado: El propósito es, precisamente, hacer algo&#8230; Orden: No podemos cocinar la torta antes de mezclar los ingredientes. Fin: En algún momento tiene que terminar. Un [...]]]></description>
			<content:encoded><![CDATA[<p>Un programa es, básicamente, la representación de un algoritmo en código; un algoritmo es una serie de pasos que se realizan para obtener un resultado. Hay tres características principales:</p>
<ul>
<li><strong>Resultado</strong>: El propósito es, precisamente, hacer algo&#8230;</li>
<li><strong>Orden</strong>: No podemos cocinar la torta antes de mezclar los ingredientes.</li>
<li><strong>Fin</strong>: En algún momento tiene que terminar. Un bucle infinito no sirve para nada.</li>
</ul>
<p>Casi siempre existe más de un algoritmo para resolver la misma tarea. Por ejemplo, los algoritmos de ordenamiento: Dada una lista de elementos (por lo general son números en los ejemplos, pero se puede ordenar cualquier cosa que se pueda comparar como mayor/menor/igual que), devolver los elementos en orden.</p>
<p>Uno de los más simples es el llamado &#8220;Burbuja&#8221;:</p>
<p>Dada una lista L[1..n] de n elementos desordenados, recorrerla comparando cada par de elemento L[i] y L[i+1]; si L[i] &gt; L[i+1], intercambiarlos. Si se hizo un cambio, repetir.</p>
<p>El algoritmo es simple y llega a un resultado ordenado, pero tiene un problema:</p>
<p>Por ejemplo, la lista L = [3,4,2,1]:</p>
<ol>
<li>Primera pasada:
<ol>
<li>3</li>
<li>4 &gt; 2: intercambiar. L = [3, 2, 4, 1]</li>
<li>4 &gt; 1: intercambiar. L = [3, 2, 1, 4]</li>
</ol>
</li>
<li>Segunda pasada:
<ol>
<li>3 &gt; 2: intercambiar. L = [2, 3, 1, 4]</li>
<li>3 &gt; 1: intercambiar. L = [2, 1, 3, 4]</li>
<li>3</li>
</ol>
</li>
<li>Tercera pasada:
<ol>
<li>2 &gt; 1: intercambiar. L = [1, 2, 3, 4]</li>
<li>2</li>
<li>3</li>
</ol>
</li>
<li>Cuarta pasada (comprobación):
<ol>
<li>Nada cambia.</li>
</ol>
</li>
</ol>
<p>Lista devuelta: [1, 2, 3, 4].</p>
<p>El problema del algoritmo: la velocidad. En el mejor de los casos (la lista está ordenada), es necesario hacer n-1 comparaciones. En el peor, n²-n (n pasadas de n-1 comparaciones). Para números chicos, no pasa nada, pero en una lista medianamente grande, digamos, 1000 elementos, son <strong>999000</strong> pasadas.</p>
<p>Se puede arreglar un poco: en cada pasada, el elemento más grande se va al final (pruebenlo todas las veces que quieran), así que no es necesario comparar los dos últimos elementos (entonces cada recorrido hacemos n, n-1, n-2, &#8230;, 3, 2, 1 comparaciones). La cantidad de pasadas total entonces se hace igual a la suma de todos los números entre 1 y n-1 (inclusive): n²/2. Sigue siendo <strong>medio millón</strong>.</p>
<p>Claro que, así como este algoritmo es lentísimo, ocupa muy poca memoria; al elegir un algoritmo se tienen que comparar todas las ventajas y desventajas que tenga.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.tordek.com.ar/2007/04/basicos-algoritmos/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

