<?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>Cursos para aprender</title>
	<atom:link href="http://www.aprendercurso.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.aprendercurso.com</link>
	<description>Manuales, Ejemplos y Cursos que necesitas para aprender C#, XNA, PHP y más</description>
	<lastBuildDate>Tue, 20 Sep 2011 21:59:58 +0000</lastBuildDate>
	<language>es-ES</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Clase en Programación Orientada a Objetos – II</title>
		<link>http://www.aprendercurso.com/clase-en-programacion-orientada-a-objetos-%e2%80%93-ii</link>
		<comments>http://www.aprendercurso.com/clase-en-programacion-orientada-a-objetos-%e2%80%93-ii#comments</comments>
		<pubDate>Tue, 20 Sep 2011 21:59:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[POO curso]]></category>
		<category><![CDATA[atributos]]></category>
		<category><![CDATA[clase]]></category>
		<category><![CDATA[constantes]]></category>
		<category><![CDATA[constructores]]></category>
		<category><![CDATA[delegados]]></category>
		<category><![CDATA[destructores]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[indexers]]></category>
		<category><![CDATA[metodos]]></category>
		<category><![CDATA[msdn]]></category>
		<category><![CDATA[operadores]]></category>
		<category><![CDATA[propiedades]]></category>

		<guid isPermaLink="false">http://www.aprendercurso.com/?p=241</guid>
		<description><![CDATA[¿Que puede contener una clase?. Una clase puede contener en su declaración los siguientes elementos (que podremos ver en el curso de C#): Constructores Destructores Constantes Atributos o campos (fields) que es como los llama la MSDN Métodos Propiedades Indexers Operadores Eventos Delegates Otras clases, structs e interfaces dentro de esta clase (anidados) Las clases...<a href="http://www.aprendercurso.com/clase-en-programacion-orientada-a-objetos-%e2%80%93-ii">&#187;</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.aprendercurso.com/wp-content/uploads/2011/09/poo-clase-ii.png"><img class="alignnone size-full wp-image-242" title="poo-clase-ii" src="http://www.aprendercurso.com/wp-content/uploads/2011/09/poo-clase-ii.png" alt="Clase poo " width="286" height="160" /></a></p>
<p>¿Que puede contener una clase?.</p>
<p>Una clase puede contener en su declaración los siguientes elementos (que podremos ver en el curso de C#):</p>
<ul>
<li><em>Constructores</em></li>
</ul>
<ul>
<li><em>Destructores</em></li>
</ul>
<ul>
<li><em>Constantes</em></li>
</ul>
<ul>
<li><em>Atributos</em> o campos (fields) que es como los llama la <strong>MSDN</strong></li>
</ul>
<ul>
<li><em>Métodos</em></li>
</ul>
<ul>
<li><em>Propiedades</em></li>
</ul>
<ul>
<li><em>Indexers</em></li>
</ul>
<ul>
<li><em>Operadores</em></li>
</ul>
<ul>
<li><em>Eventos</em></li>
</ul>
<ul>
<li><em>Delegates</em></li>
</ul>
<ul>
<li>Otras <em>clases</em>, structs e interfaces dentro de esta clase (anidados)</li>
</ul>
<p>Las clases tiene algunos de estos elementos de forma básica, es decir, que son inherentes a u las clases.</p>
<p><strong>Constructores</strong><br />
Se puede evitar que un usuario inicialice una clase con unos parámetros concretos declarando un constructor privado (con esos parámetros).</p>
<p>Si un constructor tiene uno o más constructores privados y no tiene constructores públicos, otras clases (excepto clases anidadas) no podrán crear instancias de esa clase.</p>
<div><em>Ejemplo</em>:</div>
<p>&nbsp;</p>
<pre class="brush: csharp; gutter: true">class Circle
{
  private float radius;
  private float x;
  private float y;

  public Circle() { }

  public Circle(float r, float x, float y)
  {
  this.radius = r;
  this.x = x;
  this.y = y;
  }
};</pre>
<p>En este ejemplo opdemos ver una clase que tiene 3 atributos y 2 constructores. Uno de ellos no hace nada, y el otro toma 3 parámetros de entrada y hace operaciones con ellos. En este caso los asigna a los atributos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aprendercurso.com/clase-en-programacion-orientada-a-objetos-%e2%80%93-ii/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Clase en Programación Orientada a Objetos &#8211; I</title>
		<link>http://www.aprendercurso.com/clase-en-programacion-orientada-a-objetos-i</link>
		<comments>http://www.aprendercurso.com/clase-en-programacion-orientada-a-objetos-i#comments</comments>
		<pubDate>Wed, 14 Sep 2011 14:59:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[POO curso]]></category>
		<category><![CDATA[atributos]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[clase]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[funciones]]></category>
		<category><![CDATA[instanciar]]></category>
		<category><![CDATA[metodos]]></category>
		<category><![CDATA[objeto]]></category>
		<category><![CDATA[orientada]]></category>
		<category><![CDATA[poo]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[propiedades]]></category>
		<category><![CDATA[sintaxis]]></category>

		<guid isPermaLink="false">http://www.aprendercurso.com/?p=230</guid>
		<description><![CDATA[¿Que es una clase?. Una clase es una construcción usada como plano o patrón para crear los objetos de esa clase. Este plano describe el estado y comportamiento que comparten los objetos de esa clase. Un objeto es contenedor con el que podremos utilizar las propiedades y los métodos públicos de una clase y se...<a href="http://www.aprendercurso.com/clase-en-programacion-orientada-a-objetos-i">&#187;</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.aprendercurso.com/wp-content/uploads/2011/09/poo-clase.png"><img class="alignnone size-full wp-image-231" title="poo-clase" src="http://www.aprendercurso.com/wp-content/uploads/2011/09/poo-clase.png" alt="Programación orientada a objetos - clase I" width="280" height="155" /></a></p>
<p>¿Que es una <strong>clase</strong>?. Una <strong>clase</strong> es una construcción usada como plano o patrón para crear los objetos de esa <em>clase</em>. Este plano describe el estado y comportamiento que comparten los objetos de esa <em>clase</em>. Un <strong>objeto</strong> es contenedor con el que podremos utilizar las <strong>propiedades</strong> y los <strong>métodos</strong> públicos de una clase y se pueden crear(<strong>instanciar</strong>) tantos <em>objetos</em> como necesitemos y todos tendrán los mismos <em>métodos</em> y <em>propiedades</em>.</p>
<p>Una <em>clase</em> puede tener <strong>propiedades (atributos)</strong> y métodos(funciones) que hacen interactuar a la <em>clase</em> consigo misma o con el mundo exterior</p>
<p>La clase es la base de la <strong>Programación Orientada a Objetos</strong>, por loque conviene entenderlo bien. Vamos a ver un <strong>ejemplo</strong>:</p>
<p>Tenemos una clase llamada Coche que representa coches en nuestro programa y tiene, por ejemplo, los atributos color y posición, y un método mover() que haría que que el coche se moviera, (por ejemplo si nuestro programa fuera un videojuego).<br />
La <strong>sintaxis</strong> de la definición de clases es bastante parecida en todos los lenguajes, así que vamos a ver como se hace en <strong>C#</strong>.</p>
<pre class="brush: csharp; gutter: true">[private/protected/public/internal] class NameOfClass [: BaseClass] [, Interface1, Interface2…]
{
  // Attributes, Properties, Methods,…
}</pre>
<p>Las <strong>clases en C#</strong> pueden tener una única clase base, pero pueden implementar tantos interfaces como quieran esto es Herencia que es una característica de la <strong>POO</strong> que veremos más tarde.</p>
<p>Microsoft recomienta que los nombres de las clases empiecen con mayúscula, pero esto es opcional, aunque mucha gente lo usa así en el mundo laboral.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aprendercurso.com/clase-en-programacion-orientada-a-objetos-i/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introducción a la POO</title>
		<link>http://www.aprendercurso.com/introduccion-poo</link>
		<comments>http://www.aprendercurso.com/introduccion-poo#comments</comments>
		<pubDate>Tue, 13 Sep 2011 17:37:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[POO curso]]></category>
		<category><![CDATA[codigo]]></category>
		<category><![CDATA[funcional]]></category>
		<category><![CDATA[objetos]]></category>
		<category><![CDATA[orientada]]></category>
		<category><![CDATA[poo]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[reutilizar]]></category>

		<guid isPermaLink="false">http://www.aprendercurso.com/?p=222</guid>
		<description><![CDATA[En la programación funcional la compartición de datos se implementa normalmente usando funciones y estructuras de datos globales. Esto significa que cualquiera puede acceder a esos datos, independientemente de si debería poder o no. Quizás en la programación unipersonal, esto no sea ningún problema pero cuando se programa en grupo puede suponer grandes quebraderos de...<a href="http://www.aprendercurso.com/introduccion-poo">&#187;</a>]]></description>
				<content:encoded><![CDATA[<div><a href="http://www.aprendercurso.com/wp-content/uploads/2011/09/poo-introduccion.png"><img class="alignnone size-full wp-image-223" title="poo-introduccion" src="http://www.aprendercurso.com/wp-content/uploads/2011/09/poo-introduccion.png" alt="Poo introduccion a la programacion orientada a objetos" width="351" height="198" /></a></div>
<div>En la <strong>programación funcional</strong> la compartición de datos se implementa normalmente usando funciones y estructuras de datos globales. Esto significa que cualquiera puede acceder a esos datos, independientemente de si debería poder o no. Quizás en la programación unipersonal, esto no sea ningún problema pero cuando se programa en grupo puede suponer grandes quebraderos de cabeza.</div>
<div>Por ejemplo, si estamos haciendo un programa sobre una moto y se exponen los datos de la moto, las funciones que manejan las luces tendrían  acceso a las ruedas (que puede ser razonable), pero las ruedas también tendrán acceso (y podrán modificar) a los datos de las luces (que ya no tiene tanto sentido)</div>
<div>Esto acarrea un incremento en la complejidad del manejo y actualización del programa conforme va creciendo. La complejidad en programación conlleva más errores (bugs) y más difíciles de encontrar. Así aumenta el coste y el mantenimiento. Tampoco es sencillo <strong>reutilizar código</strong> y esto es algo fundamental en la programación.</p>
<div>El paradigma de <strong>Programación Orientada a Objetos</strong> (<strong>POO</strong>) intenta solucionar estos problemas usando un punto de vista que es bastante ‘natural’ algo similar a como normalmente pensamos de las cosas como vemos en el siguiente capítulo.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.aprendercurso.com/introduccion-poo/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Funciones ó Métodos en C-Sharp</title>
		<link>http://www.aprendercurso.com/funciones-y-metodos-definicion-y-uso-csharp</link>
		<comments>http://www.aprendercurso.com/funciones-y-metodos-definicion-y-uso-csharp#comments</comments>
		<pubDate>Mon, 12 Sep 2011 22:16:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C# curso]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[declaración]]></category>
		<category><![CDATA[definición]]></category>
		<category><![CDATA[diferencia]]></category>
		<category><![CDATA[funciones]]></category>
		<category><![CDATA[keywords]]></category>
		<category><![CDATA[metodos]]></category>
		<category><![CDATA[out]]></category>
		<category><![CDATA[ref]]></category>
		<category><![CDATA[sintaxis]]></category>
		<category><![CDATA[uso]]></category>
		<category><![CDATA[void]]></category>

		<guid isPermaLink="false">http://www.aprendercurso.com/?p=209</guid>
		<description><![CDATA[Definición y Uso: Una función es un bloque de código que realiza x operaciones y puede devolver o no algún valor. La principal usabilidad de las funciones y los métodos es aclarar y resusar la programación. Si tuviéramos todo el código de una apicación del tirón sería muy difcícil de leer y de mantener. Por...<a href="http://www.aprendercurso.com/funciones-y-metodos-definicion-y-uso-csharp">&#187;</a>]]></description>
				<content:encoded><![CDATA[<div><a href="http://www.aprendercurso.com/wp-content/uploads/2011/09/c-c-sharp-logo-funciones-metodos.jpg"><img class="alignnone size-full wp-image-210" title="c#-c-sharp-logo-funciones-metodos" src="http://www.aprendercurso.com/wp-content/uploads/2011/09/c-c-sharp-logo-funciones-metodos.jpg" alt="Logotipo de funciones y métodos en csharp " width="210" height="231" /></a></div>
<p><strong>Definición y Uso:</strong></p>
<p>Una <strong>función</strong> es un bloque de código que realiza x operaciones y puede devolver o no algún valor.<br />
La principal usabilidad de las <strong>funciones y los métodos</strong> es aclarar y resusar la programación. Si tuviéramos todo el código de una apicación del tirón sería muy difcícil de leer y de mantener.<br />
Por ejemplo si tenemos un programa en el que hacemos una operación de sumar dos números y luego mostrárla por pantalla, podríamos hacer una función a la que le diéramos los 2 números y ya nos hiciera ella el resto.</p>
<p>La <strong>diferencia</strong> entre un <em>método</em> y una <em>función</em> es simplemente que los métodos están dentro de las clases, es decir, a las funciones dentro de las clases les llamamos métodos.</p>
<p>Ya que <strong>C#</strong> sólo admite funciones dentro de clases, todo lo que nos encontramos son métodos.</p>
<p><strong>Declaración:</strong></p>
<p><em>Sintaxis</em>:</p>
<pre class="brush: csharp; gutter: true">[private/protected/public/internal] [virtual/override/new] [static]
returnType NameOfFunction(
  [ref/out] typeParam1 nameParam1,
  …
  [ref/out] typeParamN nameParamN)
{
  // Code
}</pre>
<p>Se puede especificar la visibilidad del método <em>(privada/protegida/pública</em>), si no se especifica, los métodos son privados.</p>
<p>Si el <em>keyword</em> <em>static</em> se declara quiere decir que es un método estático. Estos métodos pueden llamarse sin necesidad de tener un objeto de la clase a la que pertencen, aunque no podrán acceder tampoco a los miembros no estáticos de la clase (sean métodos, atributos, propiedades, etc)<br />
También se puede especificar si un método es virtual, sobrecargado o se debe ignorar la virtualidad.</p>
<p>En <strong>C#</strong> hay que especificar un valor de retorno, aunque si el método no devuelve nada se especifica con el valor void. Si el valor especificado es distinto de void es obligatorio devolver algo en la función (usando <em>return</em>).</p>
<p>Hay que especificar un nombre para los métodos, normalmente es una buena idea que el nombre sea explicatorio de lo que hace la función. También se recomienda escribir un comentario sobre el método explicando su funcionamiento.</p>
<p>Se pueden incluir tantos parámeteros como se quiera (e incluso no poner parámetro). Todos los parámetros especifican primero el tipo y luego el nombre que tienen dentro de la función.</p>
<p>Se puede especificar algunos atributos a los parámetros que se pasan. Vamos a ver 2 posibles valores para estos atributos:<br />
<em><strong>ref</strong></em>: es usado para pasar un parámetro por referencia. Para los tipos por referencia esto significa que se pueden asignar objetos a las variables pasadas. Para los tipos por valor, lo que significa es que pueden ser modificados dentro de la función.<br />
<em><strong>out</strong></em>: es como ref (pasa el valor por referencia) pero además fuerza al método a inicializar el valor antes del final de la función (para cualquier posible punto de retorno).</p>
<p><strong>Como llamar a una función / método en C#</strong>:</p>
<p><em>Sintaxis</em>:</p>
<div>Si el método pertenece a la misma clase:</div>
<pre class="brush: csharp; gutter: false">[val = ]MyFunc([ref/out] param1, [ref/out] param2,…);</pre>
<div>Si pertence a otra clase:</div>
<pre class="brush: csharp; gutter: false">[val = ]myObj.MyFunc([ref/out] param1,…);</pre>
<div>Si es un método estático (de otra clase):</div>
<pre class="brush: csharp; gutter: false">[val = ]MyClass.MyFunc([ref/out] param1,…);</pre>
<div>Si el valor de retorno es void o no es necesario guardarlo, se puede ahorrar esa primera parte. Si la función toma parámetros ref/out éstos deben indicarse también en la llamada a la función.</div>
<p><strong>Ejemplos</strong>:</p>
<p><em>Declaración</em>:</p>
<pre class="brush: csharp; gutter: true">//Funcion que devuelve la suma de los parámetros que le pasamos
public int suma (int operando1, int operando2)
{
    int resultado = operando1 + operando2;
    return resultado;
}</pre>
<p><em>Utilización</em>:</p>
<pre class="brush: csharp; gutter: true">//Mostramos por pantalla el resultado de la suma de dos números
Console.WriteLine("El resultado de la suma es: " + suma(2,4).ToString());
//Esto tendría como resultado en la consola
//El resultado de la suma es: 6</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aprendercurso.com/funciones-y-metodos-definicion-y-uso-csharp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bucles en C-Sharp. While, For, Foreach</title>
		<link>http://www.aprendercurso.com/bucles-en-c-sharp-while-for-foreach</link>
		<comments>http://www.aprendercurso.com/bucles-en-c-sharp-while-for-foreach#comments</comments>
		<pubDate>Sat, 27 Aug 2011 22:15:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C# curso]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[break]]></category>
		<category><![CDATA[bucle]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[continue]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[for]]></category>
		<category><![CDATA[foreach while]]></category>
		<category><![CDATA[keywords]]></category>
		<category><![CDATA[listas]]></category>
		<category><![CDATA[sintaxis]]></category>

		<guid isPermaLink="false">http://www.aprendercurso.com/?p=200</guid>
		<description><![CDATA[Los bucles permiten ejecutar un bloque de código varias veces seguidas. Se utilizan para muchas cosas como por ejemplo recorrer arrays y listas de elementos. Vamos a ver 3, que son los más utilizados y con estos 3 bucles podremos hacer casi todo lo que queramos con relación a los bucles. While, el más generico...<a href="http://www.aprendercurso.com/bucles-en-c-sharp-while-for-foreach">&#187;</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.aprendercurso.com/wp-content/uploads/2011/08/c-c-sharp-logo-bucles.png"><img class="alignnone size-full wp-image-201" title="c#-c-sharp-logo-bucles" src="http://www.aprendercurso.com/wp-content/uploads/2011/08/c-c-sharp-logo-bucles.png" alt="C-sharp, logo, logotipo bucles en c# while, for, foreach" width="198" height="218" /></a></p>
<p>Los <strong>bucles</strong> permiten ejecutar un bloque de código varias veces seguidas. Se utilizan para muchas cosas como por ejemplo recorrer <em>arrays</em> y <em>listas</em> de elementos.</p>
<p>Vamos a ver 3, que son los más utilizados y con estos 3 bucles podremos hacer casi todo lo que queramos con relación a los bucles.</p>
<div>
<ul>
<li><strong>While</strong>, el más generico y siempre una buena opción.</li>
</ul>
</div>
<div>
<ul>
<li><strong>For</strong>, muy útil cuando sabes exactamente cuántas veces quieres iterar un bucle.</li>
</ul>
</div>
<ul>
<li><strong>Foreach</strong>, muy útil para iterar sobre estructuras de datos, aunque presenta ciertas restricciones.</li>
</ul>
<div>- Un <em>bucle</em> <em>while</em> ejecutará un trozo de código mientras una condición sea true. La condición es comprobada antes de ejecutar el código.</div>
<div>Hay otro tipo de bucle while que comprueba la condición después de ejecutar el código: <em>do/while</em>.</div>
<div>
<div>Los <strong>bucles while</strong> son los más simples y fáciles de entender, pero además, también son los más versátiles.</div>
<p>Cualquier otro tipo de bucle puede ser reescrito como un bucle while.</p>
</div>
<div><strong>Sintaxis</strong>:</div>
<pre class="brush: csharp; gutter: true">while (condition)
{
// code
}</pre>
<p><strong>Ejemplo:</strong></p>
<pre class="brush: csharp; gutter: true">int numero = 0;
while (numero != 7) //mientras la variable numero sea distinta de 7 hara lo que hay entre paréntesis
{
numero++; //sumamos uno a la variable
}</pre>
<div>El <strong>bucle For</strong> es como el bucle while pero teniendo una inicialización y una modificación de la condición formando parte de la sintanxis</div>
<div>Es particularmente útil cuando sabes cuántas veces quieres ejecutar un bloque de código</div>
<div>Y esto es algo muy habitual, especialmente trabajando con datos.</div>
<p>Las variables declaradas en la inicialización tienen como scope el código dentro del bucle y la condición y modificación, no pueden ser accedidas fuera del bucle.</p>
<div><strong>Sintaxis</strong>:</div>
<pre class="brush: csharp; gutter: true">for (initialization; condition; modification)
{
// code
}</pre>
<p><strong>Ejemplo</strong>:</p>
<pre class="brush: csharp; gutter: true">for(int i=0; i&lt;10; ++i)</pre>
<div>El <strong>bucle foreach</strong> sólo se puede usar con colecciones de objetos.</div>
<div>Itera sobre todos los objetos en orden, desde el elemento 0 al último.</div>
<div>Se pueden definir clases que se pueden iterar con el bucle foreach implementando el interfaz IEnumerable.</div>
<div>No se puede cambiar el tamaño de una colección desde dentro del bucle foreach.</div>
<div>No se puede usar foreach para inicializar o modificar el valor de los objetos en la colección.</div>
<p>Usar <strong>foreach</strong> puede ayudar al compilador a optimizar e incluso a generar código multithread.</p>
<div><strong>Sintaxis</strong>:</div>
<pre class="brush: csharp; gutter: true">foreach (Type nameOfObj in arrayToIterate)
{
// code where we can use nameOfObj
}</pre>
<p><strong>Ejemplo</strong>:</p>
<pre class="brush: csharp; gutter: true">// Declaro el array de 10 elementos de tipo int y le doy los valores de 1 a 10
int[] myArray = new int[10] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
foreach (int number in myArray)
{  //por cada numero en el array escribo el valor
Console.WriteLine(“myArray has {0} inside”, number);
}</pre>
<p>Si en cualquier punto dentro de un bucle se ejecuta un return, se sale de la función.<br />
Hay 2 <strong>keywords</strong> que se pueden usar dentro de los bucles para modificar su comportamiento por defecto: <strong>continue y break</strong>.<br />
<strong>Continue</strong> moverá el puntero de ejecución a la condición del bucle y continuará con la siguiente iteración (si la condición no se cumple), saltándose el resto de código que quede dentro del bucle a ejecutar en esa iteración.<br />
<strong>Break</strong> saldrá del bucle independientemente de la condición, colocándose en la primera instrucción justo después del bucle</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aprendercurso.com/bucles-en-c-sharp-while-for-foreach/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Estructuras de Control: If y Switch en C#</title>
		<link>http://www.aprendercurso.com/estructuras-de-control-if-y-switch-en-c</link>
		<comments>http://www.aprendercurso.com/estructuras-de-control-if-y-switch-en-c#comments</comments>
		<pubDate>Wed, 03 Aug 2011 20:20:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C# curso]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[estructuras de control]]></category>
		<category><![CDATA[if]]></category>
		<category><![CDATA[switch]]></category>

		<guid isPermaLink="false">http://www.aprendercurso.com/?p=194</guid>
		<description><![CDATA[Las estructuras de control en c-sharp es la forma de hacer elecciones entre unas porciones de código u otras. Las 2 más utilizadas son if y switch. La estructura de control IF permite ejecutar una porción de código sólo si la expresión entre paréntesis () es verdadera. Luego se puede incluir la cláusula else para...<a href="http://www.aprendercurso.com/estructuras-de-control-if-y-switch-en-c">&#187;</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.aprendercurso.com/wp-content/uploads/2011/08/c-c-sharp-logo-estructuras-control.jpg"><img class="alignnone size-full wp-image-195" title="c#-c-sharp-logo-estructuras-control" src="http://www.aprendercurso.com/wp-content/uploads/2011/08/c-c-sharp-logo-estructuras-control.jpg" alt="Logotipo - Logo c-sharp c# estructuras de control" width="178" height="195" /></a></p>
<p>Las <strong>estructuras de control</strong> en <strong>c-sharp</strong> es la forma de hacer elecciones entre unas porciones de código u otras. Las 2 más utilizadas son<strong> if</strong> y <strong>switch</strong>.</p>
<p>La estructura de control IF permite ejecutar una porción de código sólo si la expresión entre paréntesis () es verdadera. Luego se puede incluir la cláusula <em>else</em> para ejecutar código en caso de que la expresión sea falsa.</p>
<pre>int suma = 2 + 2;
if (suma == 4)
{
   Console.WriteLine("La suma es cuatro");
}
else
{
   Console.WriteLine("La suma es distinta de cuatro");
}</pre>
<p>Se pueden anidar varios IF para formar una estrucutra con más opciones.</p>
<pre>int suma = 2 + 2;
if (suma == 4)
{
   Console.WriteLine("La suma es cuatro");
}else if(suma == 5)
{
   Console.WriteLine("La suma es cinco");
}else
{
   Console.WriteLine("La suma es distina de cuatro y cinco");
}</pre>
<p>Para el ejemplo anterior hay otra opción más económica que es la estructura switch, aunque ésta sólo compara cadenas de texto.</p>
<pre>string miCadena = "HolaMundo";
swtich (variable to evaluate):
{
case "HolaMundo":
   Console.WriteLine("Ha entrado en este caso");
   break;
case "NoEntro":
   Console.WriteLine("Ha entrado en este otro caso");
   break;
default:
   Console.WriteLine("Entraría aquí si no coincide en ningún caso anterior");
   break;
}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.aprendercurso.com/estructuras-de-control-if-y-switch-en-c/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arrays en C#</title>
		<link>http://www.aprendercurso.com/arrays-en-c</link>
		<comments>http://www.aprendercurso.com/arrays-en-c#comments</comments>
		<pubDate>Mon, 25 Jul 2011 14:39:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C# curso]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[arrays]]></category>
		<category><![CDATA[colecciones]]></category>
		<category><![CDATA[funciones]]></category>
		<category><![CDATA[list]]></category>
		<category><![CDATA[multidimensionales]]></category>
		<category><![CDATA[tamaño]]></category>
		<category><![CDATA[variable]]></category>

		<guid isPermaLink="false">http://www.aprendercurso.com/?p=187</guid>
		<description><![CDATA[Los arrays se usan para guardar colecciones de un número determinado de objetos del mismo tipo. Para colecciones de objetos con tamaño variable se pueden utilizar otras clases como List&#60;&#62;, definida en System.Collections.Generic. Los arrays se pueden definir de varias manera como vemos en estos ejemplos: Type[] nombreArray = new Type[numeroElementos]; int[] arrayDeEnteros = new...<a href="http://www.aprendercurso.com/arrays-en-c">&#187;</a>]]></description>
				<content:encoded><![CDATA[<div><a href="http://www.aprendercurso.com/wp-content/uploads/2011/07/c-c-sharp-logo-arrays.jpg"><img class="alignnone size-full wp-image-190" title="c#-c-sharp-logo-arrays" src="http://www.aprendercurso.com/wp-content/uploads/2011/07/c-c-sharp-logo-arrays.jpg" alt="Arrays en c-sharp c#" width="180" height="199" /></a></div>
<div>Los <strong>arrays</strong> se usan para guardar colecciones de un número determinado de objetos del mismo tipo.</div>
<div>Para <strong>colecciones</strong> de objetos con <strong>tamaño variable</strong> se pueden utilizar otras clases como<strong> List</strong>&lt;&gt;, definida en System.Collections.Generic.</div>
<div>Los arrays se pueden definir de varias manera como vemos en estos ejemplos:</div>
<pre>Type[] nombreArray = new Type[numeroElementos];

int[] arrayDeEnteros = new int[10]; 

string[] listaDeFrases = new string[20];</pre>
<div>Se pueden definir los miembros de un array en su declaración usando {}:</div>
<pre>Type[] nameOfArray = new Type[numElems] { elem1,… }

int[] myArray = new int[5] { 1, 2, 3, 4, 5 };</pre>
<div>Para acceder a los miembros de un array se usa el operador []</div>
<div>Se empieza a indexar por el cero.</div>
<pre>float[] myArray = new float[4] { 4.0f, 3.0f, 2.0f, 1.0f };

Console.WriteLine(“Mi tercer elemento es: {0}”, myArray[2]); //resultado-&gt; Mi tercer elemento es: 2.0

myArray[1] = 0.0f;  //resultado-&gt; { 4.0f, 0.0f, 2.0f, 1.0f }</pre>
<div>Se pueden definir <strong>arrays multidimensionales</strong>:</div>
<pre>int[,] my2DArray = new int[2,3] { {1, 2, 3}, {3, 2, 1} };

float[,,] my3DArray = new float[3, 3, 3];

int a = my2DArray[0,2];   // a == 3</pre>
<p>También se pueden definir arrays de arrays aunque no tengan todos el mismo tamaño:</p>
<pre>int[][] arrayOfArrays = new int[2][] { new int[3] {1, 2, 3}, new int[4] {4, 3, 2, 1} };

int a = arrayOfArrays[1][3];  // a == 1</pre>
<p>Al igual que en los Strings los arrays tienen un monton de <strong>funciones</strong>. Algunas de estas son las más usadas:</p>
<p>La propiedad Length devuelve el tamaño del array</p>
<pre>int[] myArray = new int[100];
int arraySize = myArray.Length; // arraySize == 100</pre>
<p>Los arrays son tipos por referencia. Si quieres copiar un array entero (con sus valores) se pueden usar las funciones CopyTo() o Copy():</p>
<pre>int[] array1 = new int[4] { 1, 2, 3, 4 };
int[] array2 = new int[4];
Array.Copy(array1, array2, array1.Length);</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.aprendercurso.com/arrays-en-c/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Strings en C-Sharp</title>
		<link>http://www.aprendercurso.com/strings-en-c-sharp</link>
		<comments>http://www.aprendercurso.com/strings-en-c-sharp#comments</comments>
		<pubDate>Mon, 18 Jul 2011 21:31:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C# curso]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[funciones]]></category>
		<category><![CDATA[string]]></category>
		<category><![CDATA[tipo de datos]]></category>

		<guid isPermaLink="false">http://www.aprendercurso.com/?p=183</guid>
		<description><![CDATA[Sin duda uno de los principales tipos de datos es el tipo de dato String (&#8220;cadena de texto&#8221;). Por ello C# tiene implementadas un montón de funciones que nos harán la vida mucho más fácil al manejar este tipo de datos. Vamos a ver algunas de las más &#8220;usadas&#8221;. ToLower() y ToUpper(), convierten una string...<a href="http://www.aprendercurso.com/strings-en-c-sharp">&#187;</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.aprendercurso.com/wp-content/uploads/2011/07/c-c-sharp-logo-strings.jpg"><img class="alignnone size-full wp-image-184" title="c#-c-sharp-logo-strings" src="http://www.aprendercurso.com/wp-content/uploads/2011/07/c-c-sharp-logo-strings.jpg" alt="Logotipo de C# strings " width="180" height="197" /></a></p>
<p>Sin duda uno de los principales tipos de datos es el <strong>tipo de dato String</strong> (&#8220;cadena de texto&#8221;). Por ello <strong>C#</strong> tiene implementadas un montón de <strong>funciones</strong> que nos harán la vida mucho más fácil al manejar este <strong>tipo de datos</strong>.</p>
<p>Vamos a ver algunas de las más &#8220;usadas&#8221;.<br />
ToLower() y ToUpper(), convierten una string a minúsculas/mayúsculas:</p>
<pre>string s = “My String”
s = s.ToUpper();  // s == “MY STRING”
s = s.ToLower();  // s == “my string”</pre>
<p>Hay una propiedad Length que devuelve el tamaño de una string:</p>
<p><code>int numLetters = myString.Length;</code></p>
<p>Format() se usa para generar una string usando parámetros (al estilo de Write()/WriteLine()):</p>
<p><code>string s = string.Format(“My number is {0}”, 69);</code></p>
<p>StartsWith(), EndsWith() se usa para determinar si una string comienza o termina con un determinado texto:</p>
<p><code>string s = “This is my string”;</code><br />
<code>bool b = s.StartsWith(“This is”);  // b == true</code></p>
<p>IndexOf() devuelve el índice del primer carácter de la primera aparición de un texto:</p>
<p><code>string s = “This is my string”;</code><br />
<code>int index = s.IndexOf(“is”);  // index == 5</code></p>
<p>LastIndexOf() devuelve el índice de la última ocurrencia de un texto o carácter.</p>
<pre>string s = “This is a string”;
int index = s.LastIndexOf(‘i’);	// index == 13</pre>
<p>Replace() permite reemplazar las ocurrencias de un texto por otro</p>
<pre>string s = “The teacher is good”;
s = s.Replace(“good”, “crap”);</pre>
<p>Casi cualquier objeto en C# puede ser transformado en una string usando la función ToString()</p>
<pre>string s1 = myFloat.ToString();
string s2 = myBool.ToString();</pre>
<p>Se puede acceder a los caracteres de una string directamente usando el operador [].</p>
<pre>string s = “My string”;
char c1 = s[4];  // c1 == ‘s’</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.aprendercurso.com/strings-en-c-sharp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Snake – Clase Items</title>
		<link>http://www.aprendercurso.com/snake-la-clase-items</link>
		<comments>http://www.aprendercurso.com/snake-la-clase-items#comments</comments>
		<pubDate>Tue, 12 Jul 2011 15:04:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Serpiente]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[clase items]]></category>
		<category><![CDATA[constructor]]></category>
		<category><![CDATA[content]]></category>
		<category><![CDATA[juego]]></category>
		<category><![CDATA[models]]></category>
		<category><![CDATA[serpiente]]></category>
		<category><![CDATA[texturas]]></category>
		<category><![CDATA[xna]]></category>

		<guid isPermaLink="false">http://www.aprendercurso.com/?p=173</guid>
		<description><![CDATA[La clase Items es muy sencilla. La idea de esta clase es sacar lo que se va a comer la serpiente en un punto aleatorio de la pantalla.Para hacerlo un poco más estético he incluido unos cuantos dibujos de frutas al directorio Content, en el que he creado una carpeta que se llama Models. El...<a href="http://www.aprendercurso.com/snake-la-clase-items">&#187;</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.aprendercurso.com/wp-content/uploads/2011/07/serpiente-video-juego-xna-clase-items.jpg"><img class="alignnone size-full wp-image-176" title="serpiente-video-juego-xna-clase-items" src="http://www.aprendercurso.com/wp-content/uploads/2011/07/serpiente-video-juego-xna-clase-items.jpg" alt="Clase items del video juego en xna serpiente" width="299" height="107" /></a></p>
<p>La <strong>clase Items</strong> es muy sencilla. La idea de esta clase es sacar lo que se va a comer la <strong>serpiente</strong> en un punto aleatorio de la pantalla.Para hacerlo un poco más estético he incluido unos cuantos dibujos de frutas al directorio Content, en el que he creado una carpeta que se llama Models.</p>
<p>El <strong>constructor</strong> de la clase es la parte más importante, puesto que cada vez que instanciemos un objeto de tipo Item en la clase principal del juego, tendrá que salir una nueva fruta en una parte aleatoria de la pantalla para ello he hecho lo siguiente:</p>
<p>Pongo las variables estáticas de la clase que me indicarán cuál es el tamaño de la pantalla.</p>
<pre class="brush: csharp; gutter: true">//inicialize the variables with screen size
Game1.windowHeight = Game1.graphics.PreferredBackBufferHeight;
Game1.windowWidth = Game1.graphics.PreferredBackBufferWidth;</pre>
<p>Cargo la lista de <strong>texturas</strong> con los modelos que tenemos en la carpeta <strong>Models</strong> del <strong>Content</strong> de nuestro <strong>juego</strong>.</p>
<pre class="brush: csharp; gutter: true">//Inicialize Items list with content.
_fruitList.Add(game.Content.Load("Models\\Apple"));
_fruitList.Add(game.Content.Load("Models\\Banana"));
_fruitList.Add(game.Content.Load("Models\\Cherry"));
_fruitList.Add(game.Content.Load("Models\\Orange"));
_fruitList.Add(game.Content.Load("Models\\Pear"));
_fruitList.Add(game.Content.Load("Models\\Strawberry"));</pre>
<p>Ahora llamo a la función que hubicará, la fruta, en un posición de la pantalla aleatoria. Dentro de esta función llamo a otra de la serpiente para saber si la posición elegida por la fruta no está ocupada por la serpiente.</p>
<pre class="brush: csharp; gutter: true">//Inicialize itemPosition
this.mtInicializeRandomPosition();</pre>
<p>Ahora el item seleccionado al azar (para que vayan rotando) de la lista de modelos</p>
<pre class="brush: csharp; gutter: true">//Select a random item from fruiList
Random rnd = new Random();
_fruitSelectedItem = _fruitList[rnd.Next(0,_fruitList.Count)];</pre>
<p>Con esto ya tengo un item cargado en una posición aleatoria y buena de la pantalla. Ya estaría listo para ser dibujado, cosa que hará el bucle principal con la función Draw().</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aprendercurso.com/snake-la-clase-items/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Comparaciones C#</title>
		<link>http://www.aprendercurso.com/comparaciones-c</link>
		<comments>http://www.aprendercurso.com/comparaciones-c#comments</comments>
		<pubDate>Tue, 12 Jul 2011 13:25:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[C# curso]]></category>
		<category><![CDATA[aprender]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c-sharp]]></category>
		<category><![CDATA[comparaciones]]></category>
		<category><![CDATA[comparar]]></category>
		<category><![CDATA[estructuras de control]]></category>

		<guid isPermaLink="false">http://www.aprendercurso.com/?p=168</guid>
		<description><![CDATA[Las comparaciones en C-Sharp, son muy útilies para las estructuras de control, como veremos más adelante. Vamos a aprender a comparar tipos de número, cadenas y booleanos. Las expresiones de comparación siempre devuelven un boolean Booleans y números sólo comparten == (es igual que)  and != (no es igual que). bool b = (1 ==...<a href="http://www.aprendercurso.com/comparaciones-c">&#187;</a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.aprendercurso.com/wp-content/uploads/2011/07/comparaciones.jpg"><img class="alignnone size-full wp-image-170" title="comparaciones" src="http://www.aprendercurso.com/wp-content/uploads/2011/07/comparaciones.jpg" alt="Comparaciones en C#" width="179" height="196" /></a></p>
<p>Las <strong>comparaciones</strong> en <strong>C-Sharp</strong>, son muy útilies para las <strong>estructuras de control</strong>, como veremos más adelante.</p>
<p>Vamos a <strong>aprender</strong> a <strong>comparar</strong> tipos de número, cadenas y booleanos.</p>
<div>Las expresiones de comparación siempre devuelven un boolean</div>
<div>Booleans y números sólo comparten == (es igual que)  and != (no es igual que).</div>
<pre>bool b = (1 == 5); //el resultado sería falso puesto que 1 es distinto que 5

bool c = (1 != 4); //el resultado sería verdadero puesto que 1 es distino que 4</pre>
<p>Hay más operadores de comparación para números:</p>
<pre>&gt; y &gt;= la parte de la izq más grande y más grande o igual que la parte de la dch
&lt; y &lt;= la parte de la izq más pequeño y más pequeño o igual que la parte de la dch</pre>
<p>El operador de negación se usa con los booleans: !, y nos indica el contrario.</p>
<pre>a = !b;  // si b fuera verdadero, a sería falso
a = !(1 == c);  // a = (1 != c);</pre>
<p>En las cadenas también se puede usar los operadores == y != que funcionan como se podría esperar (igualdad y desigualdad). Esto son ‘<em>case sensitive</em>’ es decir discrimina entre mayúsculas y minúsculas:</p>
<pre>"hola" == "Hola"; //el resultado sería false

"Hola" == "Hola"; //el resultado sería true

"hola" != "Hola"; //el resultado sería true</pre>
<p><strong>C#</strong> proporicona un montón de funciones para comparar strings:<br />
Compare() tiene un montón de variantes pero una de las que más se usa es la función Compare (string, string, bool). El último valor que le pasamos a la función es si queremos que ignore las mayúsculas y las minúsculas.</p>
<pre>string s1 = “My String”;
string s2 = “my string”;

//haciendo la comparación con operador
bool b1 = (s1 == s2);  // b1 sería false</pre>
<pre>//haciendo la comparación con función
//le pasamos a la función la cadena1, la cadena2 y le decimos que ingore las mayusculas y minusculas
bool b2 = string.Compare(s1, s2, true);  // b2 sería true</pre>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aprendercurso.com/comparaciones-c/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
