<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4421509544201813588</id><updated>2012-02-16T23:52:03.285-06:00</updated><category term='string'/><category term='TimeSpan'/><category term='DateTime'/><category term='Format'/><category term='ACM'/><category term='parametro'/><category term='Tour Tecnologico 2007'/><category term='Automatic Properties'/><category term='.NET Framework 3.5'/><category term='Douglas Adams'/><category term='out'/><category term='Recursivo'/><title type='text'>ATI - Programmers</title><subtitle type='html'>Todo lo que un ITIC intenso necesita...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-1877629435224687097</id><published>2008-03-08T16:20:00.002-06:00</published><updated>2008-03-08T20:47:15.603-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Framework 3.5'/><title type='text'>Object Initializer</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Una de las nuevas caracteristicas del framework es el inicializador de objetos, una forma facil y eficaz de crear objetos con la ayuda del constructor y de las propiedades.&lt;/p&gt; Por ejemplo tenemos la clase Person:   &lt;p&gt;&lt;/p&gt;  &lt;p&gt;public class Person    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public Person()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; { &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string Name { get; set; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string LastName { get; set; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public DateTime BirthDay { get; set; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Si quiero crear un objeto Person con nombre de Arthur, apellido Dent y con fecha de nacimiento de 13 de septiembre de 1986, entonces el codigo se veria asi:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Person person1 = new Person(); &lt;/p&gt;  &lt;p&gt;person1.Name = &amp;quot;Arthur&amp;quot;; &lt;/p&gt;  &lt;p&gt;person1.LastName = &amp;quot;Dent&amp;quot;; &lt;/p&gt;  &lt;p&gt;Name = &amp;quot;Dent&amp;quot;; &lt;/p&gt;  &lt;p&gt;person1.BirthDay = new DateTime(1986, 9, 23);&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Con la nueva sintaxis del Object Initializer ahora podemos crear objetos con su constructor y a la vez inicializando sus propiedades de la siguiente manera:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Person person1 = new Person() { Name = &amp;quot;Arthur&amp;quot;, LastName = &amp;quot;Dent&amp;quot;, BirthDay = new DateTime(1986,9,23) };&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;De esta manera creamos un objeto con su constructor de default (puede se cualquier constructor), despues entre llaves (&amp;quot;{ }&amp;quot;) se manifiesta el nombre de la propiedades con sus respectivos valores separadas por comas. Asi la inicializacion del objeto sera mas compacta a la hora de programar y mas eficaz.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-1877629435224687097?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/1877629435224687097/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=1877629435224687097' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/1877629435224687097'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/1877629435224687097'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2008/03/object-initializer.html' title='Object Initializer'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-4669263207469981919</id><published>2008-03-07T10:41:00.003-06:00</published><updated>2008-03-07T11:22:46.049-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Douglas Adams'/><title type='text'>Reflexion sobre el universo</title><content type='html'>There is a theory which states that if ever anybody discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable. There is another theory which states that this has already happened.&lt;br /&gt;&lt;div style="text-align: right;"&gt;-Douglas Adams&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-4669263207469981919?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/4669263207469981919/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=4669263207469981919' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/4669263207469981919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/4669263207469981919'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2008/03/reflexion-sobre-el-universo.html' title='Reflexion sobre el universo'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-6447730710803424588</id><published>2008-03-06T13:47:00.008-06:00</published><updated>2008-03-06T14:22:30.752-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET Framework 3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='Automatic Properties'/><title type='text'>Automatic Properties</title><content type='html'>Desde el año pasado salio al publico el nuevo .NET Framework 3.5 y durante los proximos   articulos que haga hablare de las caracteristicas que traen consigo.&lt;br /&gt;&lt;br /&gt;En primera estan las propiedades automaticas (Automatic Properties), las cuales nos sirven para evitar codigo monotono e innecesario al momento de crear una clase.&lt;br /&gt;&lt;br /&gt;Por ejemplo, en el framework 2.0 las propiedades se declaraban como simples metodos (getters y setters) que obtenian o modificaban una variable privada:&lt;br /&gt;&lt;br /&gt;public class Person   {&lt;br /&gt;      private string name;&lt;br /&gt;      public string Name&lt;br /&gt;      {&lt;br /&gt;          get&lt;br /&gt;          {&lt;br /&gt;              return name;&lt;br /&gt;          }&lt;br /&gt;          set&lt;br /&gt;          {&lt;br /&gt;              name = value;&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      private string lastName;&lt;br /&gt;      public string LastName&lt;br /&gt;      {&lt;br /&gt;          get&lt;br /&gt;          {&lt;br /&gt;              return lastName;&lt;br /&gt;          }&lt;br /&gt;          set&lt;br /&gt;          {&lt;br /&gt;              lastName = value;&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      private DateTime birthDay;&lt;br /&gt;      public DateTime BirthDay&lt;br /&gt;      {&lt;br /&gt;          get&lt;br /&gt;          {&lt;br /&gt;              return birthDay;&lt;br /&gt;          }&lt;br /&gt;          set&lt;br /&gt;          {&lt;br /&gt;              birthDay = value;&lt;br /&gt;          }&lt;br /&gt;      }&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Ahora en el framework 3.5 las propiedades son declaradas de la siguiente manera:&lt;br /&gt;&lt;br /&gt;public class Person&lt;br /&gt;{&lt;br /&gt;     public string Name { get; set; }&lt;br /&gt;     public string LastName { get; set; }&lt;br /&gt;     public DateTime BirthDay { get; set; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;El mismo compilador crea la variable privada, y las propiedades funcionaran de manera comun, como metodos que obtienen y modifican una variable privada, pero en este caso, esta variable es interna del compilador, lo que a uno como programador le ayuda para tener un codigo mas limpio y con menos lineas para un mejor mantenimiento.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-6447730710803424588?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/6447730710803424588/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=6447730710803424588' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/6447730710803424588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/6447730710803424588'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2008/03/automatic-properties.html' title='Automatic Properties'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-4078055966871455595</id><published>2007-10-18T14:57:00.000-05:00</published><updated>2007-10-18T15:00:15.272-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tour Tecnologico 2007'/><title type='text'>Tour Tecnologico 2007</title><content type='html'>Hola  a todos los invito a participar en el &lt;a href="http://www.mslatam.com/spanish/msdn/mexico/tour2007/"&gt;Tour Tecnologico 2007&lt;/a&gt;, que consiste en 20 eventos enfocados a las últimas tecnologías del software, los cuales se realizarán en las principales ciudades del país. Tu participación es muy importante, por lo que te invitamos a crear la agenda del tour con los temas que más te interesan y adémas podrás ganar un Xbox 360!&lt;br /&gt;&lt;br /&gt;Participa ingresando al link que aparece en la seccion de enlaces!!!&lt;br /&gt;&lt;br /&gt;Saludos!!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-4078055966871455595?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/4078055966871455595/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=4078055966871455595' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/4078055966871455595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/4078055966871455595'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/10/tour-tecnologico-2007.html' title='Tour Tecnologico 2007'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-2417708940353434736</id><published>2007-10-15T18:43:00.000-05:00</published><updated>2007-10-16T00:17:55.768-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='Format'/><title type='text'>String.Format como concatenador</title><content type='html'>Hola que tal!!!! Estoy de vuelta para darles otro tip de programacion en C#.&lt;br /&gt;Ahora les mostrare como utilizar el string.Format para evitar la tediosa concatenacion, para eso utilizaremos el metodo Format con los siguientes parametros:&lt;br /&gt;&lt;br /&gt;string.Format(string format, params object[] args);&lt;br /&gt;&lt;br /&gt;Como veran recibe dos parametros, la string format que guardara el enunciado que se quiere crear junto con los espacios donde se suponia habria una concatenacion; y ademas se recibiran una serie de objetos, los cuales representan los valores que entrarian en la concatenacion; para explicar el tema de una mejor manera vayamos a un ejemplo:&lt;br /&gt;&lt;br /&gt;           string miNombre = "Felipe";&lt;br /&gt;           string hobby = "programacion";&lt;br /&gt;           string cadenaConcatenada = string.Format("Hola me llamo {0} y me gusta la {1}", miNombre, hobby);&lt;br /&gt;&lt;br /&gt;           Console.WriteLine(cadenaConcatenada);&lt;br /&gt;&lt;br /&gt;Como veran, el primero parametro siempre es una string donde se almacena el enunciado o la cadena a crear y los espacios donde iria la concatenacion, los cuales se representan con llaves y un numero entre ellas, este numero representa el indice un un arreglo, ese arreglo es el segundo parametro que recibe el metodo Format.&lt;br /&gt;Como el parametro es del tipo params esto quiere decir que el metodo recibe ya sea un arreglo tal y como se conoce o una serie de objetos que al iniciar la ejecucion de string.Format formaran un arreglo de objetos; en este ejemplo las variables miNombre y hobby forman un arreglo de objetos, miNombre en la primera posicion y hobby en la segunda, logicamente con indices 0 y 1 respectivamente.&lt;br /&gt;&lt;br /&gt;Por lo tanto en el ejemplo "Hola me llamo {0} y me gusta la {1}" el "{0}" sera reemplazado por el objeto con indice 0, es decir  por miNombre, y el "{1}" sere reemplazado por el objeto con indice 1, es decir por hobby; por lo tanto el resultado que el metodo string.Format va a regresar seria el siguiente enunciado:&lt;br /&gt;&lt;br /&gt;Hola me llamo Felipe y me gusta la programacion&lt;br /&gt;&lt;br /&gt;Como el arreglo es de objetos y no exclusivamente de strings se puede usar cualquier tipo de informacion, por ejemplo:&lt;br /&gt;&lt;br /&gt;            DateTime cumple = new DateTime(1987,06,05);&lt;br /&gt;            int miNumero = 42;&lt;br /&gt;            cadenaConcatenada = string.Format("Hola me llamo {0}  cumplo años el {1:dd/MMM} y  mi numero de la suerte es {2}",miNombre, cumple, miNumero);&lt;br /&gt;&lt;br /&gt;            Console.WriteLine(cadenaConcatenada);&lt;br /&gt;&lt;br /&gt;El resultado de cadenaConcatenada seria Hola me llamo Felipe cumplo años el 05/jun y mi numero de la suerte es 42.&lt;br /&gt;Como veran se puede aparte de la concatenacion seguir dando formato a la informacion, la cual puede ser de cualquier tipo, solo hay que tener cuidado de no cometer errores como el siguiente:&lt;br /&gt;&lt;br /&gt;            cadenaConcatenada = string.Format("Hola me llamo {0}  cumplo años el {1:dd/MMM} y  mi numero de la suerte es {2} y tengo {3:c} en mi cuenta bancaria",miNombre, cumple, miNumero);&lt;br /&gt;&lt;br /&gt;En este string.Format habria un FormatException porque en el arreglo de objetos que recibe el metodo no hay uno que tenga como indice 3, ya que solo hay tres elementos y los indices irian desde el 0 hasta el 2, por lo que utilizar "{3:c}" provocaria que la aplicacion dejara de funcionar.&lt;br /&gt;&lt;br /&gt;Eso es todo por hoy pero tratare de seguir agregando nuevos tips al blog, recuerde que para cualquier duda solo escriban su cometario. Saludos!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-2417708940353434736?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/2417708940353434736/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=2417708940353434736' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/2417708940353434736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/2417708940353434736'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/10/stringformat-como-concatenador.html' title='String.Format como concatenador'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-6380553883827972407</id><published>2007-10-08T20:05:00.000-05:00</published><updated>2007-10-08T20:42:04.640-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TimeSpan'/><title type='text'>TimeSpan</title><content type='html'>Hola a todos!!!&lt;br /&gt;Ya regrese, despues de varios dias de ausencia debido a los examenes, pero con un nuevo tip para la programacion en C#; ahora les traigo esta estructura llamada TimeSpan, que es un dato que guarda horas, minutos y segundos.&lt;br /&gt;&lt;br /&gt;El contructor principal de TimeSpan es el que recibe tres parametros del tipo int, el primero es representa la hora, el segundo los minutos y el tercero los segundo; de tal modo que si queremos crear una variable que guarde la hora 2:20:42, hariamos lo siguiente:&lt;br /&gt;&lt;br /&gt;TimeSpan time = new TimeSpan(2, 20, 42);&lt;br /&gt;&lt;br /&gt;Si queremos obtener especificamente la hora en la que se encuentra la variable, se usa la propiedad Hours:&lt;br /&gt;&lt;br /&gt;time.Hours;&lt;br /&gt;&lt;br /&gt;Tambien existen la propiedades Minutes y Seconds; pero si quieres ser mas especifico hay todavia otras dos propiedades mas que son muy importantes, la primera es la de Day, cuyo valor se puede especificar en el constructor de 4 parametros:&lt;br /&gt;&lt;br /&gt;TimeSpan time2 = new TimeSpan(2, 5, 12, 54);&lt;br /&gt;Console.WriteLine(time2.Days);//2&lt;br /&gt;&lt;br /&gt;El valor de time2 seria de 2 dias, 5 horas, 12 minutos y 54 segundos; tambien esta la propiedad Miliseconds, los cuales se pueden inicializar en el constructor de 5 parametros:&lt;br /&gt;&lt;br /&gt;TimeSpan time3 = new TimeSpan(2, 5, 12, 54, 66);&lt;br /&gt;Console.WriteLine(time3.Miliseconds);//66&lt;br /&gt;&lt;br /&gt;El valor de time3 seria de 2 dias, 5 horas, 12 minutos y  54.066 segundos, o 54 segundos y 66 milisegundos.&lt;br /&gt;&lt;br /&gt;El TimeSpan es una herramienta muy util al momento de programar aplicaciones que dependan mucho del tiempo. Con eso me despido por hoy pero luego les dare un nuevo tip para la programacion en C#. Saludos a todos.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-6380553883827972407?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/6380553883827972407/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=6380553883827972407' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/6380553883827972407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/6380553883827972407'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/10/timespan.html' title='TimeSpan'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-5661196185559498413</id><published>2007-10-01T23:06:00.000-05:00</published><updated>2007-10-01T23:06:42.188-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DateTime'/><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='Format'/><title type='text'>string.Format, con fechas (DateTime)</title><content type='html'>Hola a todos!!!!&lt;br /&gt;Ya estoy aqui de nuevo con un nuevo tip para programar en c#, el post pasado hable un poco sobre el string.format y de como este metodo estatico de la clase string nos ayudaba a darle formato a los numeros, pero ahora les voy a decir como nos ayudara a darle formato a las fechas utilizando el struct DateTime. &lt;br /&gt;&lt;br /&gt;Tenemos un DateTime que guarda una fecha, por ejemplo 5 de junio de 1987:&lt;br /&gt; &lt;br /&gt;DateTime fecha = new DateTime(1987, 06, 05);&lt;br /&gt;&lt;br /&gt;Si queremos imprimir en pantalla esa fecha de esta manera 05/06/87 hariamos lo siguiente:&lt;br /&gt;&lt;br /&gt;Console.WriteLine(fecha.Day + "/" + fecha.Month + "/" + fecha.Year);&lt;br /&gt;&lt;br /&gt;y lo que obtendriamos seria lo siguiente: 5/6/1987 lo cual no era exactamente lo que queriamos, por lo tanto es una buena oportunidad para utilizar el string.Format, el cual para las fechas presenta una gran cantidad de formatos por ejemplo:&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:d}", fecha);//fecha corta&lt;br /&gt;            Console.WriteLine(fechaString);//05/06/1987&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:D}", fecha);//fecha larga&lt;br /&gt;            Console.WriteLine(fechaString);//viernes, 5 de junio de 1987&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:M}", fecha);//dia y mes&lt;br /&gt;            Console.WriteLine(fechaString);//05 junio&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:Y}", fecha);// mes y año&lt;br /&gt;            Console.WriteLine(fechaString);//junio de 1987&lt;br /&gt;&lt;br /&gt;Los formatos anteriores son los de uso comun, pero hay otras opciones que nos permiten crear nuestro formato, por ejemplo:&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:dd}", fecha);//dia en numero&lt;br /&gt;            Console.WriteLine(fechaString);//05&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:ddd}", fecha);//dia en letra abreviado&lt;br /&gt;            Console.WriteLine(fechaString);//vie&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:dddd}", fecha);//dia en letra&lt;br /&gt;            Console.WriteLine(fechaString);//viernes&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:MM}", fecha);//mes en numero&lt;br /&gt;            Console.WriteLine(fechaString);//06&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:MMM}", fecha);//mes en letra abreviado&lt;br /&gt;            Console.WriteLine(fechaString);//jun&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:MMMM}", fecha);//mes en letra&lt;br /&gt;            Console.WriteLine(fechaString);//junio&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:yy}", fecha);//año dos digitos&lt;br /&gt;            Console.WriteLine(fechaString);//87&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:yyyy}", fecha);//año cuatro digitos&lt;br /&gt;            Console.WriteLine(fechaString);//1987&lt;br /&gt;&lt;br /&gt;Para crear nuestro formato se utilizan estos 8 ultimos formatos y se combinan con el "-" guion o la "/" diagonal, por ejemplo si quiero el formato 05/06/87 pondria:&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:dd/MM/yy}", fecha);&lt;br /&gt;            Console.WriteLine(fechaString);//05/06/87&lt;br /&gt;&lt;br /&gt;O si quiero jun-05-1987 seria asi:&lt;br /&gt;&lt;br /&gt;            fechaString = string.Format("{0:MMM-dd-yyyy}", fecha);&lt;br /&gt;            Console.WriteLine(fechaString);//jun-05-1987&lt;br /&gt;&lt;br /&gt;De esa manera cual quier formato deseado para las fechas se podra adquirir por medio del string.Format, en otra ocasion seguire explicando el string.Format ya que nos falta darle formato a los TimeSpan y ver como se utiliza este metodo para evitar la concatenacion.&lt;br /&gt;&lt;br /&gt;Saludos y recuerden que cualquier duda solo ponganla en los comentarios y en breve la respondere.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-5661196185559498413?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/5661196185559498413/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=5661196185559498413' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/5661196185559498413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/5661196185559498413'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/09/stringformat-con-fechas-datetime.html' title='string.Format, con fechas (DateTime)'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-2608366433135811883</id><published>2007-09-27T23:10:00.001-05:00</published><updated>2007-09-27T23:31:55.316-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DateTime'/><title type='text'>DateTime parte 1</title><content type='html'>Hola a todos!!!!&lt;br /&gt;&lt;br /&gt;Aqui estoy presentandoles un nuevo tip para la programacion en C#, hoy les mostrare el uso del DateTime que es una tipo de dato que almacena informacion acerca de una fecha y una hora en particular.&lt;br /&gt;&lt;br /&gt;Empecemos con el contructor, esta estructura tiene 12 contructores, desde el que no recibe parametros, pasando por el que recibe año, mes y dia hasta llegar al contructor que recibe año, mes, dia, hora, minuto, segundo y milisegundo. Para este post solo manejaremos el principal que es el que recibe año, mes y dia; la hora, el minuto, el segundo y el milisegundo son propiedades que le pertenecen a otra estructura llamada TimeSpan de la cual hablaremos luego.&lt;br /&gt;&lt;br /&gt;Para crear una variable DateTime que almacene la informacion de la fecha 6 de septiembre de 1990 se inicializa de la siguiente manera:&lt;br /&gt;&lt;br /&gt; DateTime date = new DateTime(1990, 9, 6);&lt;br /&gt;&lt;br /&gt;Donde el primer parametro es un entero representando el año, el segundo parametro es un entero representando el mes, y el tercer parametro es un entero representando el dia.&lt;br /&gt;&lt;br /&gt;Una vez inicializado se podra acceder a los diferentes metodos o propiedades que DateTime tiene, por ejemplo si quiero obtener el dia de date, haria lo siguiente:&lt;br /&gt;&lt;br /&gt;Console.WriteLine(date.Day);//6&lt;br /&gt;&lt;br /&gt;Donde Day es una propiedad de DateTime que me regresa el entero que representa el dia que date esta guardando; tambien existen las propiedades Month y Year, cuyo nombre lo dice, regresarian el entero que representa el mes y el año, respectivamente, de la informacion que esta guardando date.&lt;br /&gt;&lt;br /&gt;Console.WriteLine(date.Month);//9&lt;br /&gt;Console.WriteLine(date.Year);//1990&lt;br /&gt;&lt;br /&gt;Hay muchos metodos en DateTime que pueden ser utiles para la manipulacion de las fechas pero, este blog esta dedicado a solo la introduccion, luego se analizara con mas calma DateTime en su totalidad ya que es muy extenso. &lt;br /&gt;&lt;br /&gt;Saludos a todos, y recuerden en dejar comentarios ya sea sobre el blog o cualquier duda que tengan.&lt;br /&gt;&lt;br /&gt;Hasta luego!!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-2608366433135811883?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/2608366433135811883/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=2608366433135811883' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/2608366433135811883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/2608366433135811883'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/09/datetime-parte-1.html' title='DateTime parte 1'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-5907635896297847426</id><published>2007-09-24T09:01:00.000-05:00</published><updated>2007-09-27T23:09:03.196-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='string'/><category scheme='http://www.blogger.com/atom/ns#' term='Format'/><title type='text'>string.Format, con numeros</title><content type='html'>Hola a todos!!! Que tal!!! Aqui estoy de vuelta para traerles otro tip de programacion en C#.&lt;br /&gt;&lt;br /&gt;Lo que les voy a presentar es un metodo estatico muy apreciado que esta en la clase string, y se utiliza para darle formato a ciertas palabras o numeros, ademas se usa tambien como una alternativa para la concatenacion pero eso lo veremos en otra ocacion.&lt;br /&gt;&lt;br /&gt;Lo que hoy les voy a presentar es como podemos obtener diferentes formatos en c# si tener muchas complicaciones, por ejemplo que pasa si queremos que un numero me aparezca con un signo de pesos, entonces lo que hariamos a la antigua seria esto:&lt;br /&gt;&lt;br /&gt;class Program&lt;br /&gt;    {&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            int numero = 42;&lt;br /&gt;            string numeroPesos = "$" + numero + ".00";&lt;br /&gt;            Console.WriteLine(numeroPesos);&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;El codigo anterior lanzaria a consola lo siguiente: $42.00&lt;br /&gt;&lt;br /&gt;Pero con el string.Format se puede hacer lo mismo pero de una manera mas facil:&lt;br /&gt;&lt;br /&gt;static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            int numero = 42;&lt;br /&gt;            string numeroPesos = string.Format("{0:C}", numero);&lt;br /&gt;            Console.WriteLine(numeroPesos);&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;Al poner {0:C} entre comillas automaticamente el metodo Format pondra en valor de numero en formato de Currency, es decir, formato monetario y lanzara a pantalla $42.00.&lt;br /&gt;&lt;br /&gt;Esto nos ayuda mucho en casos como el siguiente:&lt;br /&gt;&lt;br /&gt;static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            int numero = 42;&lt;br /&gt;            string numeroPesos = string.Format("Jorge tiene {0:C} en su cuenta bancaria", numero);&lt;br /&gt;            Console.WriteLine(numeroPesos);&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;Donde lo que se mostraria en pantalla seria: Jorge tiene $42.00 en su cuenta bancaria, y no tuvimos que recurrir a la laboriosa concatenacion:&lt;br /&gt;&lt;br /&gt;string numerosPesos = "Jorge tiene $"+numero+".00 en su cuenta bancaria";&lt;br /&gt;&lt;br /&gt;Al igual que el Currency ("{0:C}") hay otros formatos que se pueden utilizar y que reciben numeros, como los siguientes:&lt;br /&gt;&lt;br /&gt;            numeroPesos = string.Format("{0:0.00}", 43.8975);//redondeo a dos digitos&lt;br /&gt;            Console.WriteLine(numeroPesos);//43.90&lt;br /&gt;            numeroPesos = string.Format("{0:0,0}", 12345);//separado por comas&lt;br /&gt;            Console.WriteLine(numeroPesos);//12,345&lt;br /&gt;            numeroPesos = string.Format("{0:0,0.00}", 12345.8973);&lt;br /&gt;            Console.WriteLine(numeroPesos);//12,345.90&lt;br /&gt;            numeroPesos = string.Format("{0:X}", 42);//hexadecimal&lt;br /&gt;            Console.WriteLine(numeroPesos);//2A&lt;br /&gt;            numeroPesos = string.Format("{0:e}", 12345.8673);//exponente&lt;br /&gt;            Console.WriteLine(numeroPesos);//1.234587e+004&lt;br /&gt;            numeroPesos = string.Format("{0:0%}", 0.1234);//porcentaje&lt;br /&gt;            Console.WriteLine(numeroPesos);//12%&lt;br /&gt;&lt;br /&gt;En el proximo tip les mostrare como darle formato a las fechas y al tiempo&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-5907635896297847426?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/5907635896297847426/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=5907635896297847426' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/5907635896297847426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/5907635896297847426'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/09/stringformat-con-numeros.html' title='string.Format, con numeros'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-1838561650156190528</id><published>2007-09-14T01:27:00.001-05:00</published><updated>2007-09-14T01:28:35.225-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ACM'/><title type='text'>Solución a Explorer - ACM (tEa)</title><content type='html'>&lt;p&gt;Bien esta es mi primer entrada para el blog de ATI- Programers, debo decir que estoy muy orgulloso de ella, y también que ya era hora de que publicara algo.&lt;br /&gt;Pues aquí va la solución que encontré para el problema de esta semana del taller de ACM, espero la solución de Aleks para comparar y ver que se puede mejorar:&lt;/p&gt; &lt;p&gt;&lt;br /&gt;import java.io.*;  &lt;/p&gt;&lt;p&gt;/***&lt;br /&gt; *&lt;br /&gt; * @author tEa&lt;br /&gt; * @version 1.0&lt;br /&gt; * @time 180 min&lt;br /&gt; */&lt;br /&gt;public class Explorer {&lt;br /&gt;    public static int camino = 1;&lt;br /&gt;    public static int [] [] matriz;&lt;br /&gt;    public static int columnas = 0;&lt;br /&gt;    public static int filas = 0;&lt;br /&gt;    public static void main(String[] args) throws IOException&lt;br /&gt;    {&lt;br /&gt;        BufferedReader fr = new BufferedReader(new FileReader("input.txt"));&lt;br /&gt;        int casos = Integer.parseInt(fr.readLine());&lt;br /&gt;        int xIn, yIn, xFin, yFin;&lt;br /&gt;        for (int i = 1; i &amp;lt;= casos; i++){&lt;br /&gt;            String [] c = fr.readLine().split(" ");&lt;br /&gt;            columnas = Integer.parseInt(c[0]);&lt;br /&gt;            filas = Integer.parseInt(c[1]);&lt;br /&gt;            matriz = new int[filas][columnas];&lt;br /&gt;            for(int j=0 ; j &amp;lt;= filas-1; j++){&lt;br /&gt;                String [] fila = fr.readLine().split(" ");&lt;br /&gt;                for(int k=0; k &amp;lt;= columnas-1; k++){&lt;br /&gt;                    matriz[j][k] = Integer.parseInt(fila[k]);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            String [] coord = fr.readLine().split(" ");       &lt;br /&gt;            xIn = Integer.parseInt(coord[0]);&lt;br /&gt;            yIn = Integer.parseInt(coord[1]);&lt;br /&gt;            String [] coord2 = fr.readLine().split(" ");&lt;br /&gt;            xFin = Integer.parseInt(coord2[0]);&lt;br /&gt;            yFin = Integer.parseInt(coord2[1]);&lt;br /&gt;            System.out.println(Explorar(xIn, yIn, xFin, yFin, xIn, yIn));&lt;br /&gt;            camino = 1;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    public static int Explorar(int x1, int y1, int x2, int y2, int x3, int y3)&lt;br /&gt;    {&lt;br /&gt;        if((x1 != x2) || (y1 != y2))&lt;br /&gt;        {&lt;br /&gt;            if((x1 + 1) &amp;lt;= (filas - 1))&lt;br /&gt;            {&lt;br /&gt;                if((matriz[x1 + 1][y1] == 0) &amp;amp;&amp; ((x1 + 1) != x3))&lt;br /&gt;                {&lt;br /&gt;                    Explorar((x1 + 1), y1, x2, y2, x1, y1);&lt;br /&gt;                    camino++;&lt;br /&gt;                    return camino;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            if((x1 - 1) &amp;gt;= 0)&lt;br /&gt;            {&lt;br /&gt;                if((matriz[x1 - 1][y1] == 0) &amp;amp;&amp; ((x1 - 1) != x3))&lt;br /&gt;                {&lt;br /&gt;                    Explorar((x1 - 1), y1, x2, y2, x1, y1);&lt;br /&gt;                    camino++;&lt;br /&gt;                    return camino;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            if((y1 + 1) &amp;lt;= (columnas - 1))&lt;br /&gt;            {&lt;br /&gt;                if((matriz[x1][y1 + 1] == 0) &amp;amp;&amp; ((y1 + 1) != y3))&lt;br /&gt;                {&lt;br /&gt;                    Explorar(x1, (y1 + 1), x2, y2, x1, y1);&lt;br /&gt;                    camino++;&lt;br /&gt;                    return camino;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            if((y1 - 1) &amp;gt;= 0)&lt;br /&gt;            {&lt;br /&gt;                if((matriz[x1][y1 - 1] == 0) &amp;amp;&amp; ((y1 - 1) != y3))&lt;br /&gt;                {&lt;br /&gt;                    Explorar(x1, (y1 - 1), x2, y2, x1, y1);&lt;br /&gt;                    camino++;&lt;br /&gt;                    return camino;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        return 0;&lt;br /&gt;    }&lt;br /&gt;}&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-1838561650156190528?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/1838561650156190528/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=1838561650156190528' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/1838561650156190528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/1838561650156190528'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/09/solucin-explorer-acm-tea.html' title='Solución a Explorer - ACM (tEa)'/><author><name>jOrGe tEa</name><uri>http://www.blogger.com/profile/15100360000028232693</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-7984392991716401924</id><published>2007-09-12T22:50:00.000-05:00</published><updated>2007-09-12T22:56:48.940-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ACM'/><title type='text'>Solucion R2D2 - ACM</title><content type='html'>Aqui les dejo la solucion al segundo problema del taller de ACM.&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; *&lt;br /&gt; * @author Alejandro Correa&lt;br /&gt; * @version 1.1&lt;br /&gt; * @time 90 min&lt;br /&gt; */&lt;br /&gt;public class R2D2 {&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;    public static void main(String[] args)throws IOException{&lt;br /&gt;       &lt;br /&gt;        BufferedReader in = new BufferedReader(new FileReader("R2D2in.txt"));&lt;br /&gt;       &lt;br /&gt;        int sol;&lt;br /&gt;        long N=0, M=0, L=0;&lt;br /&gt;//leer el archivo y separar los numeros&lt;br /&gt;        String[] entrada = in.readLine().split(",");&lt;br /&gt;       &lt;br /&gt;        for(int p = 0 ; p &lt; entrada.length ;p++){&lt;br /&gt;           &lt;br /&gt;            sol = Integer.parseInt(entrada[p]);&lt;br /&gt;           &lt;br /&gt;//calcular la primera funcion&lt;br /&gt;            for(int j = 1 ; j &lt;= sol ; j++)&lt;br /&gt;                N += ((j*j*j*j)/j);&lt;br /&gt;           &lt;br /&gt;            N = (N*sol);&lt;br /&gt;           &lt;br /&gt;//calcular la segunda funcion&lt;br /&gt;            for(int j = 1 ; j &lt;= sol ; j++)&lt;br /&gt;                M += ((j*j*j)/j);&lt;br /&gt;           &lt;br /&gt;            for(int j = 1 ; j &lt;= sol ; j++)&lt;br /&gt;                L += ((j*j)/j);&lt;br /&gt;           &lt;br /&gt;            M = (M*L);&lt;br /&gt;           &lt;br /&gt;//simplificar la fraccion si no es entera e imprimir&lt;br /&gt;            if(N%M != 0){&lt;br /&gt;                for(int j = m/2 ; j&gt;0 ; j--)&lt;br /&gt;                    if((N%j==0)&amp;&amp;amp;(M%j==0)){&lt;br /&gt;                        N=(N/j);&lt;br /&gt;                        M=(M/j);&lt;br /&gt;                    }&lt;br /&gt;                if(p &lt; entrada.length-1)&lt;br /&gt;                    System.out.println(N+"/"+M);&lt;br /&gt;                else&lt;br /&gt;                    System.out.print(N+"/"+M);&lt;br /&gt;            }else if(p&lt;entrada.length-1)&lt;br /&gt;                System.out.println(N/M);&lt;br /&gt;            else&lt;br /&gt;                System.out.print(N/M);&lt;br /&gt;           &lt;br /&gt;//resetear las variables&lt;br /&gt;            N=0;&lt;br /&gt;            M=0;&lt;br /&gt;            L=0;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-7984392991716401924?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/7984392991716401924/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=7984392991716401924' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/7984392991716401924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/7984392991716401924'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/09/solucion-r2d2-acm.html' title='Solucion R2D2 - ACM'/><author><name>aLeKs</name><uri>http://www.blogger.com/profile/16448600824688068034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://i104.photobucket.com/albums/m197/ilovefunco/yocollage.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-1860427850965850876</id><published>2007-09-09T00:22:00.000-05:00</published><updated>2007-09-09T00:30:22.432-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='string'/><title type='text'>StringNullOrEmpty</title><content type='html'>Hola que tal!!!&lt;br /&gt;Aqui estoy de nuevo con el siguiente tip de programacion en C#.&lt;br /&gt;&lt;br /&gt;En esta ocasion sera un tip sencillo pero a la vez util, ya que aunque se vea simple utiliza menos recursos en tu compu.&lt;br /&gt;&lt;br /&gt;Si tu quieres checar si una cadena esta vacia, lo que se hace comunmente es:&lt;br /&gt;&lt;br /&gt;string cadena;&lt;br /&gt;&lt;br /&gt;if(cadena.Equals("")){&lt;br /&gt;      //codigo&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;En C# hay una manera mas eficiente de hacer esto, para lo cual simplemente mandamos llamar un metodo estatico de la clase string con la variable que queramos evaluar, y el metodo se encargara de todo:&lt;br /&gt;&lt;br /&gt;string cadena;&lt;br /&gt;&lt;br /&gt;if(string.IsNullOrEmpty(cadena)){&lt;br /&gt;       //codigo&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Luego explicare lo que es un metodo estatico, por el momento solo les recomiendo que utilicen esta forma de para revisar si el valor de la cadena es vacio, porque les aseguro que el usar el Equals toma mas trabajo para tu programa.&lt;br /&gt;&lt;br /&gt;Saludos a todos!!!!!!!!!!!!!!!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-1860427850965850876?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/1860427850965850876/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=1860427850965850876' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/1860427850965850876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/1860427850965850876'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/09/stringnullorempty.html' title='StringNullOrEmpty'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-5532928217154759361</id><published>2007-09-04T13:55:00.000-05:00</published><updated>2007-09-04T14:15:23.175-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ACM'/><category scheme='http://www.blogger.com/atom/ns#' term='Recursivo'/><title type='text'>Recursividad</title><content type='html'>Se dice que un método es recursivo cuando el método se llama a ejecutarse a si mismo. Como este ejemplo:&lt;br /&gt;&lt;br /&gt;public void metodoRecursivo(){&lt;br /&gt;    //instrucciones del metodo&lt;br /&gt;    metodoRecursivo();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La recursividad es muy util cuando se quiere analizar, simultaneamente, varios caminos que puede tomar un metodo o variable. En especial cuando queremos encontrar el camino mas rapido de un punto a otro o cuando queremos recorrer un arbol de opciones.&lt;br /&gt;&lt;br /&gt;Suponiendo que tenemos un arbol binario cuyos nodos estan definidos de las siguiente forma:&lt;br /&gt;&lt;br /&gt;public class Nodo {&lt;br /&gt;&lt;br /&gt;    Nodo izq;&lt;br /&gt;    Nodo der;&lt;br /&gt;    String value;&lt;br /&gt;   &lt;br /&gt;    public Nodo(){&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Nodo getDer() {&lt;br /&gt;        return der;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public Nodo getIzq() {&lt;br /&gt;        return izq;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;podemos hacer una busqueda de cuantos nodos contienen un valor X usando unicamente la raiz del arbol y un metodo recursivo como el que sigue:&lt;br /&gt;&lt;br /&gt;    int num = 0;&lt;br /&gt;&lt;br /&gt;    public static int buscarX(Nodo raiz, String X){&lt;br /&gt;       &lt;br /&gt;        if(raiz.value.equals(X))&lt;br /&gt;            num++;&lt;br /&gt;       &lt;br /&gt;        if(raiz.getIzq() != null)&lt;br /&gt;            buscarx(raiz.getIzq(),X);&lt;br /&gt;       &lt;br /&gt;        if(raiz.getDer() != null)&lt;br /&gt;            buscarx(raiz.getDer(),X);&lt;br /&gt;       &lt;br /&gt;        return num;&lt;br /&gt;       &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;Este metodo primero revisa si el nodo que se esta analizando contiene el valor X buscado, y luego se llama a si mismo para analizar la rama izquierda del arbol (para la cual realizara el mismo procedimiento), finalmente se llama nuevamente a si mismo para analizar la rama derecha. La variable num que nos regresa el metodo contiene el numero de nodos cuyo valor es X.&lt;br /&gt;&lt;br /&gt;Metodos similares a este se pueden usar para recorrer arboles que no sean binarios, o para realizar busquedas en grafos no dirigidos.&lt;br /&gt;&lt;br /&gt;La recursividad les puede ahorrar el trabajo de muchos FORs o WHILEs si lo saben usar bien. Y su programa se vera mas profesional al ocupar muy pocas lineas y recursos de la computadora.&lt;br /&gt;&lt;br /&gt;Espero que les sirva.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-5532928217154759361?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/5532928217154759361/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=5532928217154759361' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/5532928217154759361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/5532928217154759361'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/09/recursividad.html' title='Recursividad'/><author><name>aLeKs</name><uri>http://www.blogger.com/profile/16448600824688068034</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='27' height='32' src='http://i104.photobucket.com/albums/m197/ilovefunco/yocollage.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-4373773733094918490</id><published>2007-09-02T17:14:00.001-05:00</published><updated>2007-09-02T17:17:10.000-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ACM'/><title type='text'>Solucion Encrypt - ACM</title><content type='html'>Hola a todos!!&lt;br /&gt;Aqui les dejo la solucion del primer problema que se vio en la primera sesion de ACM&lt;br /&gt;&lt;br /&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt; * &lt;br /&gt; * @author Alejandro Correa&lt;br /&gt; * @version1.0&lt;br /&gt; * @tiempo 50 minutos&lt;br /&gt; */&lt;br /&gt;public class encrypt_solucion {&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;  * todo el procedimiento esta en el metodo main&lt;br /&gt;  * se incluyen comentarios con la explicacion&lt;br /&gt;  * &lt;br /&gt;  * Se recomienda ke primero traten de hacerlo antes de ver la solucion&lt;br /&gt;  * &lt;br /&gt;  */&lt;br /&gt; public static void main(String[] args)throws IOException {&lt;br /&gt;  &lt;br /&gt;  BufferedReader in = new BufferedReader(new FileReader("prueba.txt"));&lt;br /&gt;  String line = ""; //aqui se guarda cada linea que se va leyendo&lt;br /&gt;  String[] pares;  //aqui se guardan los pares de letras ke se invierten las lineas pares&lt;br /&gt;  String AA = "";  //aqui se guarda el string de las lineas impares ya invertidas&lt;br /&gt;  String BB = "";  //aqui se guarda el string de las lineas pares ya invertidas&lt;br /&gt;  char[] arr;   //aqui se guarda la conversion a arreglo de caracteres de cada linea ke se lee&lt;br /&gt;  char[] temp;  //aqui se guardan los caracteres ya invertidos de cada linea&lt;br /&gt;  int cont = 0;  // se usa para contar el numero de lineas ke se han leido&lt;br /&gt;  &lt;br /&gt;  while(!(line = in.readLine()).equals("0")){ //se lee linea por linea hasta encontrar un cero&lt;br /&gt;   if(cont %2 == 0){      //se verifica ke la linea sea par&lt;br /&gt;    arr = line.toCharArray();   //se convierte a arreglo de chars&lt;br /&gt;    temp = new char[arr.length];  //se crea el nuevo arreglo donde se van a guardar ya invertidos&lt;br /&gt;    /**&lt;br /&gt;     * este ciclo avanza de dos en dos los caracteres del arreglo original(arr)&lt;br /&gt;     * y reescribiendo esos dos caracteres de forma invertida en el &lt;br /&gt;     * arreglo temporal(temp)&lt;br /&gt;     */&lt;br /&gt;    for(int i = 1 ; i &lt; arr.length ; i+=2){&lt;br /&gt;     temp[i-1] = arr[i]; &lt;br /&gt;     temp[i] = arr[i-1];&lt;br /&gt;    }&lt;br /&gt;    /**&lt;br /&gt;     * este if se utiliza para escribir las letras ke pudieran haber kedado sin&lt;br /&gt;     * invertir en el caso de ke la linea contenga un numero impar de caracteres&lt;br /&gt;     */&lt;br /&gt;    if(arr.length % 2 != 0)&lt;br /&gt;     temp[arr.length-1] = arr[arr.length-1];&lt;br /&gt;    &lt;br /&gt;    for(int i =0 ; i &lt;temp.length ; i++){ //se guardan los caracteres invertidos en un string&lt;br /&gt;     AA += ""+temp[i];&lt;br /&gt;    }&lt;br /&gt;   }else{       //esto es para las lineas impares&lt;br /&gt;    arr = line.toCharArray(); //la primera parte del proceso es igual que &lt;br /&gt;    temp = new char[arr.length];//para las lineas pares&lt;br /&gt;    for(int i = 1 ; i &lt; arr.length ; i+=2){&lt;br /&gt;     temp[i-1] = arr[i];&lt;br /&gt;     temp[i] = arr[i-1];&lt;br /&gt;    }&lt;br /&gt;    if(arr.length % 2 != 0)&lt;br /&gt;     temp[arr.length-1] = arr[arr.length-1];&lt;br /&gt;    &lt;br /&gt;    int num = 0;&lt;br /&gt;    pares = new String[temp.length/2+1];&lt;br /&gt;    /**&lt;br /&gt;     * este ciclo sirve para invertir las letras por pares&lt;br /&gt;     * el for avanza de 4 en 4 para cubrir los elementos ke&lt;br /&gt;     * se van a invertir, y los guarda como strings en pares[]&lt;br /&gt;     */&lt;br /&gt;    for(int i = 3 ; i &lt;temp.length ; i+=4){&lt;br /&gt;     pares[num] = (""+(char)temp[i-1]+(char)temp[i]);&lt;br /&gt;     num++;&lt;br /&gt;     pares[num] = (""+(char)temp[i-3]+(char)temp[i-2]);&lt;br /&gt;     num++;&lt;br /&gt;    }&lt;br /&gt;    /**&lt;br /&gt;     * este if se usa para escribir los caracteres ke pudieron haber&lt;br /&gt;     * kedado sin invertir en caso de ke la linea contenga un numero impar&lt;br /&gt;     * de caracteres&lt;br /&gt;     */&lt;br /&gt;    if(temp.length % 4 != 0)&lt;br /&gt;     pares[num] = ""+temp[temp.length-1];&lt;br /&gt;    &lt;br /&gt;    for(int i =0 ; i &lt;pares.length ; i++)&lt;br /&gt;     BB += pares[i];   //se guardan los pares invertidos en un string&lt;br /&gt;    &lt;br /&gt;   }&lt;br /&gt;   cont++;&lt;br /&gt;   if(cont% 2 == 0){   //se imprimen las lineas en forma invertida&lt;br /&gt;   System.out.println(BB);&lt;br /&gt;   System.out.print(AA);&lt;br /&gt;   AA = "";&lt;br /&gt;   BB = "";&lt;br /&gt;   }&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;  }&lt;br /&gt;         //este if se utiliza para imprimir las lineas ke &lt;br /&gt;         //pudieron haber kedado sin invertir en caso de ke&lt;br /&gt;         //el numero de lineas sea impar&lt;br /&gt;  if (cont % 2 != 0)&lt;br /&gt;   System.out.println(AA);&lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt; }&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;patrocinada por aleks&lt;br /&gt;&lt;br /&gt;Saludos a todos!!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-4373773733094918490?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/4373773733094918490/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=4373773733094918490' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/4373773733094918490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/4373773733094918490'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/09/solucion-encrypt-acm.html' title='Solucion Encrypt - ACM'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-8019268979164447926</id><published>2007-08-31T20:09:00.000-05:00</published><updated>2007-08-31T20:48:06.720-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='parametro'/><category scheme='http://www.blogger.com/atom/ns#' term='out'/><title type='text'>Palabra reservada out</title><content type='html'>Hola que tal!!!&lt;br /&gt;En esta ocasion voy a dedicar el blog para explicar la palabra out, la cual se utiliza en los parametros de los metodos.&lt;br /&gt;&lt;br /&gt;Esta palabra reservada se usa para hacer una referencia directa a la varible que se esta usando como parametro.&lt;br /&gt;&lt;br /&gt;Por ejemplo tenemos una clase aqui de un proyecto de consola que utiliza dos metodos, uno con parametro out y otro sin.&lt;br /&gt;&lt;br /&gt;class Program&lt;br /&gt;    {&lt;br /&gt;        static void Main(string[] args)&lt;br /&gt;        {&lt;br /&gt;            int number1 = 1;&lt;br /&gt;            int number2 = 2;&lt;br /&gt;&lt;br /&gt;            metodoConOut(out number1);&lt;br /&gt;            metodoSinOut(number2);&lt;br /&gt;&lt;br /&gt;            Console.WriteLine("Number1 = " +number1);&lt;br /&gt;            Console.WriteLine("Number2 = " + number2);&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public static void metodoConOut(out int num)&lt;br /&gt;        {&lt;br /&gt;            num = 100;&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        public static void metodoSinOut(int num2)&lt;br /&gt;        {&lt;br /&gt;            num2 = 200;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;El resultado de este programa seria&lt;br /&gt;Number1 = 100&lt;br /&gt;Number2 = 2&lt;br /&gt;&lt;br /&gt;Si no me creen pruebenlo jeje&lt;br /&gt;&lt;br /&gt;Esto es debido a que con la palabra reservada out  la variable number1 esta referenciada en el metodo, por lo que num y number1 son la misma variable, por otro lado en el metodo sin out, se crea una nueva variable num2 la cual al principio toma el valor de 2 pero se modifica por 200, pero eso no quiere decir que number2 lo haya hecho tambien.&lt;br /&gt;&lt;br /&gt;Noten que esta palabra solo se usa con Value Types, (lo cual explicare en otra ocasion a mas detalle) pero en si quiero decir que solo es para valores del tipo int, flout, double, decimal, string, char, etc.&lt;br /&gt;&lt;br /&gt;Saludos y cuidense!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-8019268979164447926?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/8019268979164447926/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=8019268979164447926' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/8019268979164447926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/8019268979164447926'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/08/value-types.html' title='Palabra reservada out'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-2523026957764294544</id><published>2007-08-29T15:17:00.000-05:00</published><updated>2007-08-29T15:33:38.279-05:00</updated><title type='text'>TryParse</title><content type='html'>Hola a todos!!&lt;br /&gt;He aqui algo muy util en C# para verificar que un valor String sea un numero&lt;br /&gt;en lugar de hacer un try con su respectivo catch como por ejemplo:&lt;br /&gt;&lt;br /&gt;string numberString = "";&lt;br /&gt;//codigo&lt;br /&gt;try{&lt;br /&gt;         int number = int.Parse(numberString);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;catch(FormatException e)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;//No hacer nada ya que number es 0;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//Hacer algo con number&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Se puede evitar cierto codigo para eficientar el programa, como por ejemplo:&lt;br /&gt;&lt;br /&gt;string numberString = "";&lt;br /&gt;//codigo&lt;br /&gt;int number =0;&lt;br /&gt;&lt;br /&gt;if(int.TryParse(numberString, out number)){&lt;br /&gt;            //Hacer algo con number&lt;br /&gt;   &lt;br /&gt;}&lt;br /&gt;else{&lt;br /&gt;       //No hacer nada ya que number es 0&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;De esta manera las excepciones ya no las estamos cachando nosotros, sino el mismo metodo TryParse que ya esta &lt;br /&gt;implementado en el Framework, y ademas con ese mismo metodo y la palabra reservada de out le estamos dando el valor &lt;br /&gt;int de numberString a la variable number.&lt;br /&gt;&lt;br /&gt;Les recuerdo que el tanto el Parse como el TryParse se pueden usar con el int, el float, el double, el decimal, etc.&lt;br /&gt;&lt;br /&gt;Recuerde que si tienen alguna duda, aqui les podremos ayudar, y no solo con dudas sobre el tema actual, si podemos&lt;br /&gt;resolveremos cualquier duda de programacion.&lt;br /&gt;&lt;br /&gt;Saludos!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-2523026957764294544?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/2523026957764294544/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=2523026957764294544' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/2523026957764294544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/2523026957764294544'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/08/tryparse.html' title='TryParse'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-4354692246668145694</id><published>2007-08-28T19:03:00.000-05:00</published><updated>2007-08-28T21:32:42.961-05:00</updated><title type='text'>Propiedades</title><content type='html'>Hola a todos!!!&lt;br /&gt;&lt;br /&gt;He aqui mi primer tip para empezar a programar en C#!!!&lt;br /&gt;&lt;br /&gt;Como sabran en java por convencion debe de haber accesors y mutators para poder obtener o modificar algun atributo de un objeto o clase, y se usan de la siguiente manera:&lt;br /&gt;&lt;br /&gt;public class MyClass&lt;br /&gt;{&lt;br /&gt;         public MyClass{ }&lt;br /&gt;&lt;br /&gt;         private String myVar;&lt;br /&gt;&lt;br /&gt;         public void setMyVar(String myVar){&lt;br /&gt;                   this.myVar = myVar;&lt;br /&gt;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;         public String getMyVar(){&lt;br /&gt;                   return myVar; &lt;br /&gt;&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Como veran el atributo es privado pero los metodos son publicos, a esto se le llama encapsulamiento, pero en C# hay una forma mucho mas eficiente de hacer esto, y es mediante las propiedades:&lt;br /&gt;&lt;br /&gt;public class MyClass&lt;br /&gt;{&lt;br /&gt;         public MyClass{ }&lt;br /&gt;&lt;br /&gt;         private String myVar;&lt;br /&gt;&lt;br /&gt;         public String MyVar{&lt;br /&gt;                  get { return myVar; } &lt;br /&gt;                  set { myVar = value; }&lt;br /&gt;&lt;br /&gt;         }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;De esta manera se simplifican los metodos que se uitlizan en java, y todo de una manera muy sencilla.&lt;br /&gt;&lt;br /&gt;Si tiene alguna pregunta no duden en hacerla, mediante los comentarios de blog&lt;br /&gt;&lt;br /&gt;Saludos&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-4354692246668145694?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/4354692246668145694/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=4354692246668145694' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/4354692246668145694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/4354692246668145694'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/08/propiedades.html' title='Propiedades'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4421509544201813588.post-4651333435767552525</id><published>2007-08-28T16:51:00.000-05:00</published><updated>2007-08-28T17:08:25.826-05:00</updated><title type='text'>Bienvenida</title><content type='html'>Hola a todos!!&lt;br /&gt;&lt;br /&gt;Bienvenidos a ATI - Programers!!&lt;br /&gt;&lt;br /&gt;En este blog encontraran tips acerca de la programacion ya sea en java o en C#, los invitamos a que&lt;br /&gt;participen y entre todos nos ayudemos para poder aprender en este ambito, el cual puede generar &lt;br /&gt;muchos frutos en lo academico y en loprofesional!!!!!!!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4421509544201813588-4651333435767552525?l=atiprogramers.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://atiprogramers.blogspot.com/feeds/4651333435767552525/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4421509544201813588&amp;postID=4651333435767552525' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/4651333435767552525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4421509544201813588/posts/default/4651333435767552525'/><link rel='alternate' type='text/html' href='http://atiprogramers.blogspot.com/2007/08/bienvenida.html' title='Bienvenida'/><author><name>Felipe Bros</name><uri>http://www.blogger.com/profile/01349322891984802830</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://4.bp.blogspot.com/_QKG5gfwuGJE/SVAcwgCTwdI/AAAAAAAAAMQ/-kYICNzWwdU/S220/Photo+18.jpg'/></author><thr:total>0</thr:total></entry></feed>
