tag:blogger.com,1999:blog-87173394161095599262024-03-13T08:41:20.067-05:00Usando javaCódigo fuente, descripción y ejemplos en JavaRey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.comBlogger64125tag:blogger.com,1999:blog-8717339416109559926.post-74258587278815754522022-07-07T15:33:00.002-05:002022-07-07T15:33:54.346-05:00byjusfutureschool<span style="color: red; font-size: x-large;">Gratis un mes de programación en Byjus Future School.</span><div><span style="color: red; font-size: x-large;"><br /></span></div><div><span style="font-size: medium;">Llena el formulario que esta debajo del vídeo para que agendes un mes gratis de programación para los mas pequeños.</span></div><div><div><span style="color: red; font-size: large;"><br /></span><div> </div><div><iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="480" src="https://www.youtube.com/embed/-7hQQ0L51Fo" title="La programación es el lenguaje del futuro" width="853"></iframe><iframe frameborder="0" height="978" marginheight="0" marginwidth="0" src="https://docs.google.com/forms/d/e/1FAIpQLSdyb7z3LY8OiMWJDDcdP9fJq6dq2SKbfWo3VSflTijsxGH3qg/viewform?embedded=true" width="640">Cargando…</iframe></div></div></div><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-474868364925158142016-08-13T01:48:00.000-05:002016-09-07T00:39:35.037-05:00Matriz de adyacencia para un grafo<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: center;">
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/NeWjtyhyU9A" width="560"></iframe><br /></div>
<br />
<div style="text-align: justify;">
"La matriz de adyacencia es una matriz cuadrada que se utiliza como una forma de representar relaciones binarias."; aunque para nuestro caso será una de las formas de representar un grafo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
¿Por que matriz cuadrada? (si fuera profesor lo preguntaría para pescar a más de un distraído), la razón es que tanto las filas como las columnas representan cada uno de los nodos del grafo, si el grafo es de n nodos, la matriz correspondiente sería de n * n, es decir matriz cuadrada, fácil.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Continuemos analizando el paso de grafo a una matriz.</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-SgrnV1-dZn4/V661x5P2GUI/AAAAAAAAEac/Pfwd6E2_K7IObftnUdxAKhUXB2KjCqO5ACLcB/s1600/6n-graf.svg.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://1.bp.blogspot.com/-SgrnV1-dZn4/V661x5P2GUI/AAAAAAAAEac/Pfwd6E2_K7IObftnUdxAKhUXB2KjCqO5ACLcB/s1600/6n-graf.svg.png" /></a><a href="https://3.bp.blogspot.com/-REtQisp4y60/V668-KS-P5I/AAAAAAAAEa0/0GewJOxz5U8bz9krPnABDWenI9s59nwVACLcB/s1600/kkk.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://3.bp.blogspot.com/-REtQisp4y60/V668-KS-P5I/AAAAAAAAEa0/0GewJOxz5U8bz9krPnABDWenI9s59nwVACLcB/s1600/kkk.png" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div style="text-align: justify;">
Como ya sabemos al tener 6 nodos nuestro grafo, nuestra matriz tendrá unas dimensiones de 6 * 6, es decir 6 filas y seis columnas.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Si nos fijamos en lo que consideraremos nuestro primer nodo, el nodo uno solo esta conectado con el nodo 2 y 5; en la fila 1 que representa el nodo 1 se ha marcado con ceros los nodos con que no se tiene relación y se ha fijado un 1 en los que si, el nodo 2 y 5.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Si nos fijamos en lo que consideraremos nuestro segundo nodo, el nodo dos esta conectado con el nodo 1, 3 y 5; en la fila 2 que representa el nodo 2 se ha marcado con ceros los nodos con que no se tiene relación y se ha fijado un 1 en los que si, el nodo 1, 3 y 5.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Análogamente hacemos de igual forma con los demás nodos hasta terminar el grafo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Les dejo algunos ejemplo y un ejecutable en Java de mi autoría para que se diviertan.<br />
<br /></div>
<a href="https://goo.gl/AQIMX1" target="_blank"><span style="font-size: x-large;">Clic aquí para descargar ejecutable.</span></a><br />
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top">
<input name="cmd" type="hidden" value="_s-xclick" /><br />
<input name="hosted_button_id" type="hidden" value="WL467954SUT7G" /><br />
<input alt="PayPal - The safer, easier way to pay online!" border="0" name="submit" src="https://1.bp.blogspot.com/-3CH_o6P9J2g/V67JZANf_oI/AAAAAAAAEbE/nDqm_KROEhA3j8oEO41bVfLcPMLT1seCgCLcB/s320/button.png" type="image" /><br />
<img alt="" border="0" height="1" src="https://www.paypalobjects.com/es_XC/i/scr/pixel.gif" width="1" /></form>
</div>
<div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com1tag:blogger.com,1999:blog-8717339416109559926.post-85667912712357244692016-02-19T14:37:00.002-05:002016-02-19T14:59:19.824-05:00Métodos de ordenamiento usando java<div dir="ltr" style="text-align: left;" trbidi="on">
<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Cuando tenemos una estructura de datos una de las operaciones más relevantes es ordenar el contenido de la misma, ya sea para hacerla más amistosa de leer o mejor aún para aplicar más operaciones sobre dichos datos como por ejemplo hacer búsquedas en ellas, (véase <a href="http://usandojava.blogspot.com.co/2012/11/busqueda-binaria-en-un-arreglo-usando.html" target="_blank">búsqueda binaria</a> y <a href="http://usandojava.blogspot.com.co/2012/10/busqueda-secuencial-en-un-arreglo.html" target="_blank">búsqueda secuencial</a>).<br />
<br />
El ordenamiento en una estructura de datos la podemos definir como los posibles cambios aplicados a la posición de los datos que la llevaría a estar una relación de orden, ésta relación de orden puede ser alfabética, numérica, entre otras.<br />
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
Aunque la formulación del problema es fácil y hasta cotidiana, tanto como dar una secuencia de números aleatorios a alguien y pedirle de los ordene de mayor a menor; existen muchos métodos para la resolución de éste problema, y aún en la actualidad se sigue trabajando en ello para lograr cada vez más rapidez y eficacia.<br />
<br />
En éste blog abordaré varios de los métodos más usados para la ordenación de datos y que a su vez nos servirán como introducción a éste tema usando Java como lenguaje de programación.<br />
<br />
<span style="font-size: large;"><a href="http://usandojava.blogspot.com.co/2016/02/metodo-de-ordenamiento-por-seleccion.html" target="_blank">Clic para ver el método de selección</a>.</span><br />
<span style="font-size: large;">Clic para ver el método de inserción. (próximamente)</span><br />
<span style="font-size: large;">Clic para ver el método de burbuja. (próximamente)</span><br />
<span style="font-size: large;">Clic para ver el método de shell. (próximamente)</span></div>
</div>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-81614753111126973342016-02-19T14:29:00.000-05:002016-02-19T14:41:14.992-05:00Método de ordenamiento por selección usando Java<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="line-height: 100%; margin-bottom: 0cm;">
Es un método poco eficiente pero fácil de entender, en caso de ordenar números éste consistirá en determinar cual es el menor de todos y ubicarlo en la primera posición, luego determinar cual es el segundo menor y ubicarlo en la segunda posición hasta terminar con todo los numero.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<div style="line-height: 100%; margin-bottom: 0cm;">
La cantidad de comparaciones para éste método de ordenamiento está dada por la fórmula: c(n) = (n² – n)/2; es decir para un arreglo de 10 elementos el numero de comparaciones es de (10² – 10)/2 = 45; en el siguiente código fuente al descomentariar la linea 7 y compilar notarán el número de comparaciones.</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Analizando podemos darnos cuenta que aunque nuestro arreglo a mitad del proceso este ordenado, el método seguirá haciendo comparaciones innecesarios haciéndolo poco eficiente sobre todo para grandes cantidades de elementos.</div>
</div>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br /></div>
<div style="line-height: 100%; margin-bottom: 0cm;">
Sin más preámbulos, el código:</div>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<pre class="prettyprint">class seleccion{
public static void ordenar(int[] arreglo){
int contador = 1;//solo util para contar las comparaciones
for (int i = 0; i < arreglo.length - 1; i++){
int min = i;
for (int j = i + 1; j < arreglo.length; j++){
//System.out.println("Comparacion #" + contador);
contador++;
if (arreglo[j] < arreglo[min]){
min = j;
}
}
if (i != min){
int aux= arreglo[i];
arreglo[i] = arreglo[min];
arreglo[min] = aux;
}
}
}
public static void imprimirLista(int[] arreglo){
for(int i = 0; i < arreglo.length;i++){
System.out.print(arreglo[i]+",");
}
System.out.println();
}
public static void main(String[] args){
int lista[] = {9,1,4,2,8,3,5,6,7,0};
System.out.print("Lista desordenada: ");
imprimirLista(lista);
ordenar(lista);
System.out.print("Lista ordenada: ");
imprimirLista(lista);
}
}
</pre>
<div style="line-height: 100%; margin-bottom: 0cm;">
<br />
Deseaba en ésta entrada hacer una prueba de escritorio al método, pero haré algo mejor, agregaré comentarios de salida al codigo para detallar cada comparación de la lista que ustedes introduzcan, abajo está el link de descarga, espero les guste y hagan sus comentarios.<br />
<br />
<a href="https://goo.gl/fP1t8M" target="_blank"><span style="font-size: large;">Descarga aqui codigo con prueba de escritorio</span></a> </div>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com2tag:blogger.com,1999:blog-8717339416109559926.post-79460807315769708792015-12-10T20:02:00.000-05:002016-02-19T14:23:46.753-05:00Recursividad usando java<div dir="ltr" style="text-align: left;" trbidi="on">
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
Saludos lectores, aunque éste tema está muy bien documentado en Internet, a continuación lo expongo de manera fácil y como de costumbre con código.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<b>Definición</b>: Un algoritmo recursivo es un algoritmo que expresa la solución de un problema en términos de una llamada a sí mismo. La llamada a sí mismo se conoce como llamada recursiva o recurrente (Por Wikipedia).</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
En pocas palabras, usamos recursividad cuando un método se llama a sí mismo para resolver un problema.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Expongo un método no muy común para darlo como ejemplo, pero fácil de entender:</div>
<br />
<pre class="prettyprint">public class recursividad{
private static int suma(int a,int b){
return a + b;
}
private static int suma(int a,int b,int c){
return suma(suma(a,b),c);
}
private static int suma(int a,int b,int c,int d){
return suma(suma(a,b),suma(c,d));
}
private static int suma(int a,int b,int c,int d, int e){
return suma(suma(a,b,c,d),e);
}
public static void main(String []args){
int a = 1;
int b = 3;
int c = 4;
int d = 5;
int e = 6;
System.out.println(suma(a,b));
System.out.println(suma(a,b,c));
System.out.println(suma(a,b,c,d));
System.out.println(suma(a,b,c,d,e));
}
}
</pre>
<br />
<div style="text-align: justify;">
El anterior código desde el punto de vista de <b>algoritmo</b> no es exactamente recursividad ya que éste codigo funciona gracias a una propiedad presente en Java llamada poliformismo; pero es un buen ejemplo de inicio para entender.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Si observamos el primer método suma que recibe por parámetros dos número enteros es el que hace la operación arismetica de la suma, los demás métodos suma se benefician de manera recursiva del primero.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Muchos problemas mátematicos se pueden resolver de manera recursiva, pero por lo general es el problema y nuestra forma de abordarlos lo que define si se puede o no resolver de manera recursiva.</div>
<div style="text-align: justify;">
<a href="http://goo.gl/a885nE" target="_blank"><img alt="Hosting" border="0" src="http://www.hostinger.es/banners/es/hostinger-728x90-1.gif" height="90" width="728" /></a></div>
<div style="text-align: justify;">
<br />
Pasemos a un ejemplo más practico y usado para enseñar recursividad, hallar el factorial de un numero usando la recursividad en Java.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
El factorial de un numero se define de la siguiente forma:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
n! = 1 X 2 X 3 X 4 X ... X (n -1) X n</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
O de ésta otra forma más facil para nosotros: n! = 1 * 2 * 3 * 4 * ... * (n -1) * n</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para entender mejor miremos ejemplos y lo facil que es calculemos 5! que se lee factorial de 5.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
5! = 1 * 2 * 3 * 4 * 5 = 120</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Calculemos otros factoriales.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
3! = 1 * 2 * 3 = 6</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
2! = 1 * 2 = 2</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Surge una pregunta, cual es el factorial 0?, por definición el factorial de cero es uno, es decir ( 0! = 1 ), ¿Por que?, soy sincero, ésta respuesta la saben los matematicos y ellos la pueden explicar mejor que yo, con todo y demostración.</div>
<br />
<div style="text-align: justify;">
Antes de seguir hay algo muy importante al momento de hacer métodos recursivos, hay que tener un caso base; el caso base es el punto en el código donde acaba la recursividad, sin este caso base se generaría una recursividad infinita, más adelante mostraremos con ejemplo el caso base.</div>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div style="text-align: justify;">
Sigamos calculando factoriales:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Ya sabemos que factorial de 5 es 1 * 2 * 3 * 4 * 5; pero podemos decir que es igual a (1 * 2 * 3 * 4) * 5; hasta aqui lo unico que hicimos fue agrupar (1 * 2 * 3 * 4) y multiplicarlo por 5; asi:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
5! = 1 * 2 * 3 * 4 * 5 = (1 * 2 * 3 * 4) * 5 = 120</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
pero a que es igual (1 * 2 * 3 * 4) ?</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
(1 * 2 * 3 * 4) = 4!</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Es decir que:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
5! = 4! * 5<br />
<br />
Si se fijan aqui ya hay recursividad, para hallar el factorial de 5 necesitamos hallar el factorial de 4.<br />
<br />
Este orden de idea resolveremos el factorial de 5 paso a paso, y usando algo asi como una prueba de escritorio.<br />
<br />
Factorial de 5?<br />
5! = ?<br />
<br />
Factorial de 5 es factorial de 4 por 5<br />
5! = 4! * 5<br />
<br />
Pero no se cual es el factorial de 4, facil, factorial de 4 es factorial de 3 por 4<br />
4! = 3! * 4<br />
<br /></div>
<div style="text-align: justify;">
Pero no se cual es el factorial de 3, facil, factorial de 3 es factorial de 2 por 3<br />
3! = 2! * 3<br />
<br /></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Pero no se cual es el factorial de 2, facil, factorial de 2 es factorial de 1 por 2<br />
2! = 1! * 2<br />
<br /></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Pero no se cual es el factorial de 1, facil, factorial de 1 es factorial de 0 por1<br />
1! = 0! * 1<br />
<br /></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Pero yo si se cual es el factorial de 0, por definición 0! = 1; éste es nuestro caso base.<br />
<br /></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Ahora toca devolverse para ir resolviendo lo calculos que dejamos pendientes atras asi:</div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
si: 0! = 1</div>
<div style="text-align: justify;">
y si: 1! = 0! * 1</div>
<div style="text-align: justify;">
entonces: </div>
<div style="text-align: justify;">
1! = 1 * 1 = 1<br />
<br /></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
si: 1! = 1 </div>
<div style="text-align: justify;">
y si: 2! = 1! * 2<br />
entonces: </div>
<div style="text-align: justify;">
2¡ = 1 * 2 = 2</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<div style="text-align: justify;">
si: 2! = 2 </div>
<div style="text-align: justify;">
y si: 3! = 2! * 3<br />
entonces: </div>
<div style="text-align: justify;">
3¡ = 2 * 3 = 6</div>
</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<div style="text-align: justify;">
<div style="text-align: justify;">
si: 3! = 6 </div>
<div style="text-align: justify;">
y si: 4! = 3! * 4<br />
entonces: </div>
<div style="text-align: justify;">
4¡ = 6 * 4 = 24</div>
</div>
</div>
<div style="text-align: justify;">
<br />
<div style="text-align: justify;">
<div style="text-align: justify;">
<div style="text-align: justify;">
si: 4! = 24 </div>
<div style="text-align: justify;">
y si: 5! = 4! * 5<br />
entonces: </div>
<div style="text-align: justify;">
5¡ = 24 * 5 = 120</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Cuando nos regresamos a resolver las operaciones que dejamos pendientes, nuestros computadores también lo hacen cuando resuelven algoritmos recursivos, dichas operaciones pendientes por resolver las almacenan en las llamadas pilas de procesos, es por esta razón que <b>nuestros algoritmos recursivos exigen más de nuestros computadores que los algoritmos no recursivos.</b></div>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div style="text-align: justify;">
Una cosa curiosa que ustedes han notado, es que hacer nuestras pruebas de escritorio de algoritmos recursivos resultan largos pero ironicamente las linea de código que usamos es menor vs no recursivos.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Como ya habiamos visto la forma de representar el factorial de un numero es:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
n! = 1 * 2 * 3 * 4 * ... * (n -1) * n; ésta es la forma iterativa y se resumen en una sucesión de multiplicaciones que parten de uno y terminan hasta el numero que deseamos calcular.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<a href="http://usandojava.blogspot.com.co/2010/12/hallar-el-factorial-de-un-numero.html" target="_blank">Clic aqui para ver el codigo para hallar factorial iterativamente</a>.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Ahora miremos como representar el calculo de un número factorial usando recursividad:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
n¡ = (n - 1)! * n</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
pero para tener encuenta el caso base para que no se nos valla la recursividad al infinito la definiremos mejor así:</div>
<div style="text-align: justify;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://upload.wikimedia.org/math/d/1/9/d198809e8bde2386224638e0be454243.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://upload.wikimedia.org/math/d/1/9/d198809e8bde2386224638e0be454243.png" /></a></div>
</div>
<div style="text-align: justify;">
<br />
Sin más preambulo, les comparto el sencillo código para calcular factorial de un número de manera recursiva.</div>
<pre class="prettyprint">public class factorial{
private static double factorial(int n){
if (n==0){//caso base
return 1;
}else{
return (factorial(n-1))*n;
}
}
public static void main(String []args){
System.out.print(factorial(5));
}
}
</pre>
<br />
Otro problema que se puede resolver recursivamente es la sucesión de Fibonacci, el codigo ya lo hice en una entrada anterior, aquí te dejo el <a href="http://usandojava.blogspot.com.co/2011/01/fibonacci-recursivo.html" target="_blank">link</a><br />
<br />
Chao y exitos a todos</div>
</div>
</div>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-38463781610164567502015-12-01T02:30:00.000-05:002015-12-01T02:30:59.606-05:00DJ Java Decompiler<div dir="ltr" style="text-align: left;" trbidi="on">
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<a href="https://goo.gl/9oq40W"><img border="0" src="http://regnow.img.digitalriver.com/vendor/17387/dj_shot_sm.jpg" /></a><br />
<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
Saludos a todos, me gustaría compartir con ustedes esta útil herramienta <span style="font-size: large;"><b>DJ Java Decompiler</b></span>, que nos permite descompilar archivos de java class-file y guardarlos posteriormente en archivos de textos de manera simple y fácil.<br />
<div>
<br /></div>
<div>
Es compatible para las plataformas Windows 7, Windows 8, Windows NT/2000, Windows NT/2000/2003/SBS2003, Windows Vista, Windows XP.</div>
<div>
<br /></div>
<div>
Funciona descompilando y/o reconstruyendo el código fuente original de los archivos CLASS binarios compilados.</div>
<div>
<br /></div>
<div>
Ademas esta aplicación no necesita tener instalado Java para funcionar y como punto adicionar sirve como editor y todas las funciones típicas.</div>
<div>
<br /></div>
<div>
DJ Java Decompiler es adecuado para el estudio de bytescode de Java. El programa permite a los usuarios guardar, imprimir, editar y compilar el código Java generado. Incluido Applet Tag Editor permite a los usuarios crear applets rápidamente.</div>
<div>
<br /></div>
<div>
Aquí les dejo el link para que descarguen una versión trial y exploren esta herramienta</div>
<div>
<br /></div>
<div>
<a href="http://hotdownloads.com/trialware/download/Download_SetupDJ312RN7.exe?item=17387-1&affiliate=619750" target="_blank">Link de descarga trial</a></div>
<div>
<br /></div>
<div>
Si les gustó pueden tener la versión completa en este otro link, <a href="https://goo.gl/9oq40W" target="_blank">descarga completa</a></div>
<div>
<br /></div>
<div>
EXITOS</div>
</div>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-81950504116764283742014-07-28T13:05:00.002-05:002016-04-12T13:44:29.405-05:00Web scraping para consultar contenido en paginas web ajenas, llenar formularios y capturar respuesta usando Java.<div dir="ltr" style="text-align: left;" trbidi="on"><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div style="text-align: justify;"><style type="text/css">P { margin-bottom: 0.21cm; }</style> </div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;">Saludos a todos.</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;"><br />
</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;">La siguiente entrada resolverá las siguientes incógnitas:</span></div><ul style="text-align: justify;"><li><div style="margin-bottom: 0cm;"><span style="font-size: large;">¿Cómo capturar el contenido de una pagina web usando Java?</span></div></li>
<li><div style="margin-bottom: 0cm;"><span style="font-size: large;">¿Cómo llenar con datos un formulario de una web ajena y enviar los datos usando Java?</span></div></li>
<li><div style="margin-bottom: 0cm;"><span style="font-size: large;">¿Cómo llenar con datos un formulario de una web ajena, enviar los datos y capturar la respuesta usando Java?</span></div></li>
</ul><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;">La solución a las anteriores dudas nos será de mucha utilidad si por ejemplo tienes muchos datos que deseas consultar en un formulario web y deseas automatizar dicha tarea.</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;"><br />
</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;">Empecé a practicar web <a href="http://es.wikipedia.org/wiki/Web_scraping" target="_blank">scraping</a> sin saber que lo hacia, a mi esposa le encomendaron la tarea de consultar un poco mas de 1000 cédulas (dni en otros países) para determinar, mesa de votación, lugar y dirección donde debía realizar el sufragio para elección de senado y cámara en mi país Colombia, todo esto lo debía hacer desde una desde la pagina que el gobierno habilita <a href="http://wsr.registraduria.gov.co/servicios/elec-presidente2014.htm">http://wsr.registraduria.gov.co/servicios/elec-presidente2014.htm</a>.</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;"><br />
</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;">Mi esposa me solicitó ayuda para realizar la descomunal tarea, para mi dicha tarea es tediosa y representa perder mi tiempo en algo que no quería hacer, pesé que debía haber una forma de automatizar dicha tarea; así que con ayuda de mi amigo <a href="http://google.com/" target="_blank">Google</a> nos pusimos en la tarea de averiguar como hacer tal cosas.</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;"><br />
</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;">Las sugerencia que encontramos nos dirigirían a que debía integrar un web browser a una aplicación Java, después de intentar con muchas librerías de las cuales la mayoría hacían el problema más grande, me quede con <a href="http://htmlunit.sourceforge.net/" target="_blank">htmlunit</a>.</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;"><br />
</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;">¿Porque integrar un web browser? Mi idea era emular un navegador web y consultar dato por dato, pero aclaro que esto no lo haría yo, lo haría mi PC el cual no se aburre y hace esta tarea mucho más rápido que yo.</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;"><br />
</span></div><a href="http://goo.gl/a885nE" target="_blank"><img alt="Hosting" border="0" src="http://www.hostinger.es/banners/es/hostinger-728x90-1.gif" height="90" width="728" /></a><br />
<div style="margin-bottom: 0cm; text-align: justify;"><br />
<span style="font-size: large;">Les dejo un vistazo de la aplicación funcionando.</span></div><div style="text-align: justify;"><span style="font-size: large;"><iframe allowfullscreen="" frameborder="0" height="500" src="//www.youtube.com/embed/9IJbbEZqKCw" width="100%"></iframe><br />
</span></div><div style="margin-bottom: 0cm; text-align: justify;"><br />
<br />
<span style="font-size: large;">Es hora de ver código, le ofrezco uno muy básico y fácil de comprender que les ayudara a hacer cosas mas complicadas después; en el código emulé una consulta al buscador de <a href="http://google.com/" target="_blank">Google</a>.</span><br />
<span style="font-size: large;"><br />
</span></div><div style="margin-bottom: 0cm; text-align: justify;"><pre class="prettyprint"><span style="font-size: large;">package scraping;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlForm;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput;
import com.gargoylesoftware.htmlunit.html.HtmlTextInput;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author rey salcedo
*/
public class Scraping {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
//emulamos un navegador web
final WebClient webClient = new WebClient();
try {
//Pagina donde se hara la consulta
HtmlPage page1 = webClient.getPage("https://www.google.com.co/search");
//nombre del formulario
final HtmlForm form = page1.getFormByName("f");
//el valor "f" no es arbitrario es el nombre del formulario web de google
//nombre de la caja de texto
final HtmlTextInput textField = form.getInputByName("q");
//el valor "q" no es arbitrario es el nombre de la caja de texto del formulario web de google
//nombre del boton del formulario
final HtmlSubmitInput button = form.getInputByName("btnG");
//el valor "btnG" no es arbitrario es el nombre del boton del formulario web de google
//llenamos la caja de texto
textField.setValueAttribute("usandojava");
//Creamos la pagina que nos devolverá el resultado
final HtmlPage pageResultado;
//hacemos clic en el boton del formulario y asignamos el resultado a la pagina pageResultado
pageResultado = button.click();
//imprimimos el resultado
System.out.println(pageResultado.asText());
//cerramos el navegador emulado, para liberar todo esto de la memoria
webClient.closeAllWindows();
} catch (IOException ex) {
Logger.getLogger(Scraping.class.getName()).log(Level.SEVERE, null, ex);
} catch (FailingHttpStatusCodeException ex) {
Logger.getLogger(Scraping.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
</span></pre><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<span style="font-size: large;">Advierto que para el caso del formulario de google no es estrictamente necesario llenar un formulario como lo he hecho, ya que solo bastas con un simple link <a href="https://www.google.com.co/search?q=usandojava">https://www.google.com.co/search?q=usandojava</a></span><br />
<span style="font-size: large;"><br />
</span> <br />
<div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;">Para la consulta de los nombre de los componentes les sugiero que descarguen la pagina web donde está el formulario y como<span style="color: red;"> nota importante les sugiero de no usen chrome</span>, <b><span style="color: #274e13;">mejor usen FireFox</span></b> ya que chrome no me daba los nombres apropiados de los componentes del formulario, para la descarga de las librerías necesarias les dejo el link de la pagina oficial <a href="http://sourceforge.net/projects/htmlunit/files/htmlunit/">http://sourceforge.net/projects/htmlunit/files/htmlunit/</a></span></div><div style="margin-bottom: 0cm; text-align: justify;"><a href="https://drive.google.com/file/d/0Bz73YINsRe1kVWVmblJYcm1BM28/edit?usp=sharing" target="_blank"><span style="font-size: large;"></a><br />
</span><br />
<span style="font-size: large;"><br />
</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;">Como siempre esperando serles de ayuda.</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;"><br />
</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="color: #274e13;"><span style="font-size: x-large;">No olviden comentar.</span></span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;"><br />
</span></div><div style="margin-bottom: 0cm; text-align: justify;"><span style="font-size: large;"><br />
</span></div></div><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com9tag:blogger.com,1999:blog-8717339416109559926.post-83135516167723857542014-04-29T15:30:00.001-05:002016-02-08T20:55:50.026-05:00Aprendiendo a programar en java usando el valor de π(pi)<div dir="ltr" style="text-align: left;" trbidi="on">
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div style="text-align: justify;">
<span style="font-size: large;">Saludos a todos.</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">Hace muchísimo tiempo cuando curioseaba el lenguaje Pascal y antes de dormir me puse a pesar en la geometría del circulo y recordé las clases de colegio donde me decían que el valor de pi no era mas que la longitud de la circunferencia dividida entre su diámetro.</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span> <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Pi-unrolled-720.gif/312px-Pi-unrolled-720.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://upload.wikimedia.org/wikipedia/commons/thumb/2/2a/Pi-unrolled-720.gif/312px-Pi-unrolled-720.gif" height="203" width="640" /></a></div>
<span style="font-size: large;"><br />
</span> <br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="font-size: large;"><br />
</span> <span style="font-size: large;"></span></div>
<div style="text-align: justify;">
<span style="font-size: large;">Tenia presente que midiendo la circunferencia y el diámetro de un plato redondo por ejemplo solo hallaría un valor aproximado de pi, y que dicho valor más exacto sólo lo podían hacer los matemáticos y sus demostraciones, cosa que difícilmente lograría yo.</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">Siempre he sido regular en matemáticas, para algunos muy bueno, la verdad no lo creo; pero sí me consideraba mejor en la geometría y dibujo técnico.</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">De tanto pensar en círculos, matemática y geometría llego a mi una forma de hallar el valor de pi sin hacer demostraciones, gracias a que recordé que había leído en alguna parte la teoría que mas o menos dice "Un circulo es una figura geométrica con muchos lados que equidistan de un centro o eje"</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">Se me prendió el bombillo, me dije, tomare un cuadrado del cual conozco su diámetro y le agregare más lados calculado de los ya existentes sin cambiar el diámetro del mismo, es decir que el diámetro sera una constante; la suma de sus lados me darían el perímetro el cual dividiría por el diámetro y me daría el valor aproximado de pi, si hago esto muchas veces me acercaré cada vez más a pi; en otras palabras le agregare más lados al cuadrado tratando de convertirlo en un circulo.</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">Tome lápiz, cuaderno y comencé ha calcular, para el caso de un cuadrado de diámetro 1 los lados medirían 0,707106781, ya que según Pitágoras:</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">h^2 = co^2 + ca^2</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">Como para un cuadrado sus lados son igual, es decir sus catetos, nos quedaría: </span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">h^2 = co^2 + co^2</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">h^2 = 2 * co^2</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">Sacamos raíces a ambos términos de cada igualdad</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">h = √2 * co</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">finalmente</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">co = h/√2</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">siendo la hipotenusa nuestro diámetro y remplazando...</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">co = 1/√2 = 0,707106781;</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">Listo ya tengo los datos de mi cuadrado, como los cuadrados tienen 4 lados el perímetro sería (0,707106781 * 4) = 2,828427125</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">Nuestro primer valor aproximado para pi seria:</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">2,828427125/1 = 2,828427125</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">2,828427125 es un valor muy distante al verdadero valor de pi; lo que sigue ahora es usando geometría agregarle más lados a figura y calcularlos sin cambiar el diámetro (1) y recalcular el valor de pi; en la practica debía recalcular miles de veces para llegar a un valor decente de pi.</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<a href="http://goo.gl/a885nE" target="_blank"><img alt="Hosting" border="0" src="http://www.hostinger.es/banners/es/hostinger-728x90-1.gif" height="90" width="728" /></a><br />
<div style="text-align: justify;">
<br />
<span style="font-size: large;">Tome nuevamente mi cuaderno y lápiz, y escribir un programa en Pasca (en esa época no tenia computador, así que me tocaba a papel y compilar en mi cabeza) para luego esperar el sábado que tenia nuevamente contacto con un computador; para sorpresa mía el día que pase mi programa a computador funciono sin problemas dándome el valor de pi tal cual una calculadora, estaba muy excitado al llegar muy cerca al valor de pi sin ser matemático.</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">Como mencione al inicio, eso paso hace mucho tiempo; y hoy que empece a recordar me ha sido duro reconstruir el programa, sospecho que es por mi pereza de hacer algo dos veces, así que investigue algo que me ayudara a recordar y me tope conque ya eso lo habían hecho Arquimedes y lo llamó <a href="https://es.wikipedia.org/wiki/M%C3%A9todo_exhaustivo" target="_blank">Método exhaustivo</a>, aunque mi método es ligeramente distinto, así que más pereza me da reconstruirlo, pero en un futuro lo haré para ustedes.</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">Pero como es costumbre </span><span style="font-size: large;"><span style="font-size: large;">escribir código </span>en cada una de mis entradas, me tope con la Fórmula de Leibniz que no es más que una sumatoria que tiende al infinito y que es fácil programar.</span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div class="separator" style="clear: both; text-align: justify;">
<span style="font-size: large;"><a href="http://upload.wikimedia.org/math/6/5/6/656d6175a5c9e475b8ccd0d575389c75.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://upload.wikimedia.org/math/6/5/6/656d6175a5c9e475b8ccd0d575389c75.png" height="83" width="640" /></a></span></div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<pre class="prettyprint"><span style="font-size: large;">//Autor Rey Salcedo
class FormulaLeibniz{
public static double formula(int repeticiones){
double pi = 0;
for(int n = 0;n < repeticiones;n++){
pi += ((Math.pow(-1,n))/(2*n + 1));
}
return pi*4;
}
public static void main(String[] args){
System.out.println(formula(100000000));
}
}
</span></pre>
</div>
<div style="text-align: justify;">
<span style="font-size: large;"><br />
</span></div>
<div style="text-align: justify;">
<span style="font-size: large;">Espero le sirva y les sea de agrado</span></div>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-69903410878224974942014-04-10T22:47:00.004-05:002018-07-26T15:13:55.199-05:00Conversión de binario a decimal, de decimal a binario y operaciones con números binarios<div dir="ltr" style="text-align: left;" trbidi="on"><a href="https://goo.gl/uReSFs"><img src="https://2.bp.blogspot.com/-p8pkGBLr5DI/W1ny9jRmtVI/AAAAAAAAFvk/jO4WvipzqNIVcq4pFi2gzgKycFtS77ZLQCLcBGAs/s1600/cambly-img.png" border="0"></a><br />
<div style="text-align: justify;"><span style="font-size: x-large;">Conversión de binario a decimal, de decimal a binario y operaciones con números binarios.</span><br />
<br />
El sistema numérico binario es muy importante para la computación debido a que los sistemas de computo actuales en su gran mayoría sólo pueden hacer operaciones aritméticas con unos y ceros, y cuando digo sistemas de computo no solo me refiero a PC de escritorio y portátiles, sino que también smartphone, tables, incluso calculadoras electrónicas de mano, entre otros dispositivos; y la razón del uso de binarios es la facilidad al momento de realizar operaciones aritméticas y el descubrimiento de materiales que pueden trabajar entre voltajes y ausencia de los mismo de manera precisa,.<br />
<br />
Ahora cabe la pregunta, ¿Cómo éstos dispositivos pueden hacer tantas cosas solo usando ceros y unos?, diré que en un comienzo los sistemas de computo no hacían muchas cosas, operaban con ceros y unos y solo científicos, matemáticos, físicos y programadores comprendían las respuestas de estos equipos de luces titilantes, luego las cosas se tornaron complejas y recurrieron a simplificar largas secuencias de ceros y unos en comandos, algo así como lenguajes memotécnicos; luego inventaron el ensamblador, luego lenguajes más fáciles de codificar, luego siguieron muchos más, pasaron por los orientados a objetos y siguen evolucionando; ésta evolución a dado entornos más complejos y cosas más interesantes que luces titilantes; lo anterior es una respuesta personal y resumida, te invito a investigar más.<br />
<br />
Antes de pasar a abordar el tema de los números binarios, trataremos sobre el sistema decimal y como hacemos para combinarlos entre si y formar cifras más grandes.<br />
<br />
La razón por la que usamos un sistema basado en diez dígitos (0,1,2,3,4,5,6,7,8,9) son meramente históricas, no hay una razón matemática para que esto sea así.<br />
<br />
<a href="https://goo.gl/uReSFs"><img src="https://2.bp.blogspot.com/-p8pkGBLr5DI/W1ny9jRmtVI/AAAAAAAAFvk/jO4WvipzqNIVcq4pFi2gzgKycFtS77ZLQCLcBGAs/s1600/cambly-img.png" border="0"></a><br />
<br />
La siguiente figura representa el mecanismo o método que usamos a diario para contar y generar numero decimales. </div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="http://3.bp.blogspot.com/-O0iuwmxDhZI/U0clzFDSNkI/AAAAAAAAA5w/oRI6D0ToceM/s1600/decimal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="640" src="https://3.bp.blogspot.com/-O0iuwmxDhZI/U0clzFDSNkI/AAAAAAAAA5w/oRI6D0ToceM/s1600/decimal.png" width="508" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-Z2YCj0y2I-Q/Us7KIe86j_I/AAAAAAAAA2I/SXma8VuZKG0/s1600/SistemaDecimal.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><div style="text-align: justify;"></div><div style="text-align: justify;">De igual forma podemos hacer conteos en otra bases, el siguiente ejemplo aplica para el sistema binario con la única variante que, la caja no puede tener 2 o más elementos</div><div style="text-align: justify;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-nCA8xJcHxJA/U0cl_UttRqI/AAAAAAAAA54/Xrptf12wr80/s1600/binario.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="630" src="https://4.bp.blogspot.com/-nCA8xJcHxJA/U0cl_UttRqI/AAAAAAAAA54/Xrptf12wr80/s1600/binario.png" width="640" /></a></div><br />
En el siguiente gráfico confrontaré los dos conteos en sistema decimal y binario respectivamente, el resultado final está representando la misma cantidad pero en bases distintas, es decir 10 base 10 = 1010 base 2.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-ZKf7p_wSUUA/U0cmxZy5teI/AAAAAAAAA6A/1HyFUNv04tE/s1600/todo.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="638" src="https://1.bp.blogspot.com/-ZKf7p_wSUUA/U0cmxZy5teI/AAAAAAAAA6A/1HyFUNv04tE/s1600/todo.png" width="640" /></a></div><br />
Listo, ahora tratemos el tema de la conversión de decimal a binario y viceversa; usando Java es muy facíl ya que prácticamente está resuelto usando la clase Integer como podemos ver en el codigo a continuación.<br />
<br />
</div><pre class="prettyprint">class Conversion{
public static void main(String []args){
//De binario a decimal
String numeroBinario = "1010";
int num=Integer.parseInt(numeroBinario,2);
System.out.println(numeroBinario + " base 2 = " + num + " base 10");
//De decimal a binario
int numeroDecimal = 10;
String binario = Integer.toBinaryString(numeroDecimal);
System.out.println(numeroDecimal + " base 10 = " + binario + " base 2");
}
} </pre><br />
<div style="text-align: justify;">Pero veamos ahora como se resuelve este tipo de conversión usando papel y lápiz.</div><div style="text-align: justify;"><br />
</div><a href="https://goo.gl/uReSFs"><img src="https://2.bp.blogspot.com/-p8pkGBLr5DI/W1ny9jRmtVI/AAAAAAAAFvk/jO4WvipzqNIVcq4pFi2gzgKycFtS77ZLQCLcBGAs/s1600/cambly-img.png" border="0"></a><br />
<div style="text-align: justify;"><b>Decimal a binario</b><br />
Se divide el número del sistema decimal entre 2, cuyo resultado entero se vuelve a dividir entre 2, y así sucesivamente hasta que el dividendo sea menor que el divisor, 2. Es decir, cuando el número a dividir sea 1 finaliza la división.</div><div style="text-align: justify;"><br />
A continuación se ordenan los restos empezando desde el último al primero, simplemente se colocan en orden inverso a como aparecen en la división, se les da la vuelta. Éste será el número binario que buscamos (Explicación de wikipedia).</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-y5Y79M_4LpQ/U0cvmBObovI/AAAAAAAAA6Q/L9lT5ODHfr8/s1600/Conversion.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="196" src="https://2.bp.blogspot.com/-y5Y79M_4LpQ/U0cvmBObovI/AAAAAAAAA6Q/L9lT5ODHfr8/s1600/Conversion.JPG" width="400" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><b>Binario a decimal</b><br />
Para realizar la conversión de binario a decimal, realice lo siguiente:<br />
<br />
Inicie por el lado derecho del número en binario, cada cifra multiplíquela por 2 elevado a la potencia consecutiva (comenzando por la potencia 0, 20).<br />
<br />
Después de realizar cada una de las multiplicaciones, sume todas y el número resultante será el equivalente al sistema decimal. (Explicación de wikipedia).<br />
<br />
Ejemplos:<br />
(Los números de arriba indican la potencia a la que hay que elevar 2) </div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"></div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a href="http://1.bp.blogspot.com/-eq5w5dd4aa8/U0cwT5j1hfI/AAAAAAAAA6Y/PdB3yMT2x1k/s1600/f1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="25" src="https://1.bp.blogspot.com/-eq5w5dd4aa8/U0cwT5j1hfI/AAAAAAAAA6Y/PdB3yMT2x1k/s1600/f1.png" width="640" /></a></div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://2.bp.blogspot.com/-bM9jTdG4HCA/U0cwT7cueKI/AAAAAAAAA6g/r2bL_Q7efDM/s1600/f2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="20" src="https://2.bp.blogspot.com/-bM9jTdG4HCA/U0cwT7cueKI/AAAAAAAAA6g/r2bL_Q7efDM/s1600/f2.png" width="640" /></a></div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-tYExr-W6MGo/U0cwT11y5CI/AAAAAAAAA6c/sbk2qxwSggo/s1600/f3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="26" src="https://4.bp.blogspot.com/-tYExr-W6MGo/U0cwT11y5CI/AAAAAAAAA6c/sbk2qxwSggo/s1600/f3.png" width="640" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Ya para terminar les ofrezco el código que he escrito más operaciones basica con números binarios, espero les guste.<br />
<br />
</div><a href="https://goo.gl/uReSFs"><img src="https://2.bp.blogspot.com/-p8pkGBLr5DI/W1ny9jRmtVI/AAAAAAAAFvk/jO4WvipzqNIVcq4pFi2gzgKycFtS77ZLQCLcBGAs/s1600/cambly-img.png" border="0"></a><br />
<pre class="prettyprint">public class Ejercicio{
public static int dinarioADecimal(String numeroBinario){
int longitud = numeroBinario.length();//Numero de digitos que tiene nuestro binario
int resultado = 0;//Aqui almacenaremos nuestra respuesta final
int potencia = longitud - 1;
for(int i = 0;i < longitud;i++){//recorremos la cadena de numeros
if(numeroBinario.charAt(i) == '1'){
resultado += Math.pow(2,potencia);
}
potencia --;//drecremantamos la potencia
}
return resultado;
}
public static String decimalABinario(int numeroDecimal){
int temp = numeroDecimal;
String resultado = "";
while (temp != 0){
if(temp % 2 == 0){
resultado = "0" + resultado;
}else{
resultado = "1" + resultado;
}
temp = temp / 2;
}
return resultado;
}
public static String operacionBinaria(char operador,String numero1, String numero2){
int n1Decimal = dinarioADecimal(numero1);
int n2Decimal = dinarioADecimal(numero2);
if(operador == '+'){
return (decimalABinario(n1Decimal + n2Decimal));
}else if(operador == '-'){
return (decimalABinario(n1Decimal - n2Decimal));
}else if(operador == '*'){
return (decimalABinario(n1Decimal * n2Decimal));
}else{
return ("null");
}
}
public static String sumaBinaria(String numero1,String numero2){
return (operacionBinaria('+',numero1,numero2));
}
public static String sumaBinaria(String numero1,String numero2,String numero3){
return sumaBinaria(sumaBinaria(numero1,numero2),numero3);
}
public static String restaBinaria(String numero1,String numero2){
return (operacionBinaria('-',numero1,numero2));
}
public static String multiplicacionBinaria(String numero1,String numero2){
return (operacionBinaria('*',numero1,numero2));
}
public static void main(String []args){
System.out.println("-----De binario a decimal-----");
System.out.println(dinarioADecimal("101010"));
System.out.println("-----De decimal a binario-----");
System.out.println(decimalABinario(10));
System.out.println("-----Sumando dos binarios-----");
System.out.println(sumaBinaria("101010","111000"));
System.out.println("-----Sumando tres binarios-----");
System.out.println(sumaBinaria("101010","111000","101010"));
System.out.println("-----Restando dos binarios-----");
System.out.println(restaBinaria("101010","111000"));
System.out.println("-----Multiplicando dos binarios-----");
System.out.println(multiplicacionBinaria("101010","111000"));
}
}
</pre><br />
Esperando serles de ayuda.<br />
<a href="https://goo.gl/uReSFs"><img src="https://2.bp.blogspot.com/-p8pkGBLr5DI/W1ny9jRmtVI/AAAAAAAAFvk/jO4WvipzqNIVcq4pFi2gzgKycFtS77ZLQCLcBGAs/s1600/cambly-img.png" border="0"></a></div><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-41787342809050671792013-10-21T01:45:00.005-05:002016-02-08T21:00:53.561-05:00Aprender a programar unsando arreglo y matrices en java<div dir="ltr" style="text-align: left;" trbidi="on">
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div style="text-align: justify;">
Aunque ya en entradas antiguas he publicado ejemplos con arreglos y matrices usando java, faltó hacer un pequeño tutorial del uso de los mismo, y digo pequeño porque en Internet hay mucha información sobre éste tema y mi interés es redactar un artículo fácil de entender que te ayudará a crear una base sólida y comprender ejemplos más complejos con los que te puedas topar en el futuro.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Podemos empezar definiendo <b>arreglos</b> como una colección de cosas, donde ésas cosas pueden ser variables u objetos, para el caso que <b>Java</b> solo puedes guardar en un arreglo un tipo de variable u objeto.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Los arreglos se usan para almacenar datos y posteriormente recuperarlos fácilmente y cómodamente, por ejemplo si deseamos tener a la mano una lista de nombres de personas podemos crear un arreglo de tipo String, si queremos almacenar una lista de valores enteros podemos crear un arreglo de tipo int, si queremos tener una lista de personas podemos crear un arreglo de tipo Persona; así puedes hacer lista de botones (JButton), iconos (Icon) y cualquier cosa que necesites.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Una de las características que hay que tener en cuenta al momento que usar un arreglo es que se debe especificar la cantidad de elementos que vamos a almacenar, en otras palabras especificar su tamaño; si intentamos almacenar más de lo que puede soportar el arreglo se generará una excepción y al tiempo un error de lógica.</div>
<div style="text-align: justify;">
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://4.bp.blogspot.com/-MtotuoGWnO0/UluIscf7kUI/AAAAAAAAAvg/EmYdFWd1XNo/s1600/arreglo.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="400" src="https://4.bp.blogspot.com/-MtotuoGWnO0/UluIscf7kUI/AAAAAAAAAvg/EmYdFWd1XNo/s400/arreglo.png" width="106" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Figura que usaremos para representar arreglos</td></tr>
</tbody></table>
</div>
<a href="http://goo.gl/a885nE" target="_blank"><img alt="Hosting" border="0" src="http://www.hostinger.es/banners/es/hostinger-728x90-1.gif" height="90" width="728" /></a><br />
<div style="text-align: justify;">
<br />
Usando código, para crear una arreglo usamos la siguiente sintaxis:</div>
<div style="text-align: justify;">
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace;"><br />
</span></span></div>
<div style="text-align: justify;">
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace;"><tipo_variable_u_objeto> <nombre_arreglo>[];</span></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
y para inicializar el arreglo y especificar su tamaño usamos la siguiente sintaxis:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace;"><nombre_arreglo> = new <tipo_variable_u_objeto>[tamaño]; </span></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
cabe aclarar que podemos crear el arreglo e inicializar al mismo tiempo así:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace;"><tipo_variable_u_objeto> <nombre_arreglo>[] = new <tipo_variable_u_objeto>[tamaño];</span></span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Algo muy importante que tenemos que tener en cuenta antes de pasar con los ejemplos, es que cuando inicializamos nuestro arreglo cada espacio es llenado con valores predeterminados, para el caso que nuestro arreglo sea de tipo número serán llenados con ceros (0) y sin son objetos con valores nulos (null), en la categoría de objetos se incluyen los de tipo String.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para almacenar o acceder a las posiciones de un arreglo usamos indices que para <b>Java</b> inician en 0 y terminan en (tamaño_del_arreglo - 1) .</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Imaginemos que necesitamos almacenar una lista de 5 números y luego mostrarlos en la pantalla, el código nos quedaría de la siguiente forma:</div>
<br />
<pre class="prettyprint">public class EjemploArreglo{
public static void main(String args[]){
int arregloDeNumeros[];//Creamos en arreglo
int tamaño = 5;
arregloDeNumeros = new int[tamaño];//Inicializamos y establecemos un tamaño
//demostramos que el valor predeterminado es 0
System.out.println("Predeterminado para la posicion 0 => " + arregloDeNumeros[0]);
arregloDeNumeros[0] = 2;//Almacenando en la posicion 0
arregloDeNumeros[1] = 54;//Almacenando en la posicion 1
arregloDeNumeros[2] = 56;//Almacenando en la posicion 2
arregloDeNumeros[3] = 45;//Almacenando en la posicion 3
arregloDeNumeros[4] = 78;//Almacenando en la posicion 4
System.out.println("Imprimiendo en pantalla");
for(int i = 0;i < tamaño;i++){ //Recorremos el arreglo tantas veces con elementos tenga
System.out.println(arregloDeNumeros[i]);
}
}
}</pre>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div style="text-align: justify;">
Cabe anotar que también que podemos llenar nuestro arreglo con nuestros propios valores predeterminados que es igual que decir "inicializarlo con valores de manera implícita", así:</div>
<pre class="prettyprint">public class EjemploArreglo{
public static void main(String args[]){
int arregloDeNumeros[] = {2,54,56,45,78};
//De ésta forma podemos saber el tamaño de cualquier arreglo
//Util cuando el usuario final establece el tamaño y deseamos conocerlo
int tamaño = arregloDeNumeros.length;
System.out.println("Tamaño del arreglo " + tamaño);
System.out.println("Imprimiendo en pantalla");
for(int i = 0;i < tamaño;i++){ //Recorremos el arreglo tantas veces con elementos tenga
System.out.println(arregloDeNumeros[i]);
}
}
}</pre>
<br />
<div style="text-align: justify;">
Lo expuesto hasta aquí es básico pero suficiente para que pruebes con otros tipos de objetos y variables distinto a numero (int), recorrer los elementos y modificarlos.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Ahora pasemos a las <b>matrices</b>, también llamadas <b>tablas</b> y más técnicamente <b>arreglos bidimensionales</b>; aunque suene un poco extraño una matriz es un array de array's, es decir un arreglo que contiene arreglos, para ilustrar mejor veamos la siguiente figura.</div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-9vVBxSnvsE0/UlubYacktQI/AAAAAAAAAvw/Iu62obvmhRw/s1600/matriz.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="361" src="https://1.bp.blogspot.com/-9vVBxSnvsE0/UlubYacktQI/AAAAAAAAAvw/Iu62obvmhRw/s640/matriz.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Representación de matrices</td></tr>
</tbody></table>
Si miramos el ejemplo anterior, tenemos una matriz de 8 filas y 8 columnas, Java vería algo así:<br />
<br />
[ [A][B][C][D][E][F][G][H] ],<br />
[ [A][B][C][D][E][F][G][H] ],<br />
[ [A][B][C][D][E][F][G][H] ],<br />
[ [A][B][C][D][E][F][G][H] ],<br />
[ [A][B][C][D][E][F][G][H] ],<br />
[ [A][B][C][D][E][F][G][H] ],<br />
[ [A][B][C][D][E][F][G][H] ],<br />
[ [A][B][C][D][E][F][G][H] ]<br />
<br />
La forma de crear, inicializar y recorrer una matriz de este tipo es:<br />
<br />
<pre class="prettyprint">public class EjemploArreglo{
public static void main(String args[]){
String matrizDeLetras[][];
int filas = 4;
int columnas = 3;
matrizDeLetras = new String[filas][columnas];
//String matrizDeLetras[][] = new String[4][3]; podemos crear e inicializar de una vez
matrizDeLetras[0][0] = "A";
matrizDeLetras[0][1] = "B";
matrizDeLetras[0][2] = "C";
matrizDeLetras[1][0] = "D";
matrizDeLetras[1][1] = "E";
matrizDeLetras[1][2] = "F";
matrizDeLetras[2][0] = "G";
matrizDeLetras[2][1] = "H";
matrizDeLetras[2][2] = "I";
matrizDeLetras[3][0] = "J";
matrizDeLetras[3][1] = "K";
matrizDeLetras[3][2] = "L";
for(int i = 0;i < filas;i++){//El incremento de la i representa el paso por las filas
for(int j = 0;j < columnas;j++){//El incremento de la j representa el paso por cada columna de i fila
System.out.print(matrizDeLetras[i][j]);//Imprimimos en pantalla el valor de fila i, columna j
}
System.out.println();//Damos un salto de linea
}
}
}</pre>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div style="text-align: justify;">
Hasta ahora lo visto aquí sobre matrices muestra que cada fila tiene un número homogéneo o iguales de columnas, a éste tipo de matrices se les denomina matrices regulares, y como te puedes imaginar existe una contraparte llamada matrices irregulares en las cuales el número de columnas por filas es distinto; usare la siguiente figura para ilustrar.</div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://2.bp.blogspot.com/-n9laL1sFFt0/UmTIqcgLuzI/AAAAAAAAAwo/rkqunHrcDHA/s1600/arregloIrregular.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="372" src="https://2.bp.blogspot.com/-n9laL1sFFt0/UmTIqcgLuzI/AAAAAAAAAwo/rkqunHrcDHA/s640/arregloIrregular.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Representación de una matriz irregular</td></tr>
</tbody></table>
Si miramos el ejemplo anterior, tenemos una matriz de 5 filas, Java vería algo así:<br />
<br />
[ [A] ],<br />
[ [B][C][D] ],<br />
[ [E][F] ],<br />
[ [G] ],<br />
[ [H][I][J] ]<br />
<br />
La forma de crear, inicializar, llenar y recorrer una matriz irregular la describo en el siguiente código:<br />
<br />
<pre class="prettyprint">public class EjemploArreglo{
public static void main(String args[]){
String matrizDeLetrasIrregular[][];
int filas = 5;
matrizDeLetrasIrregular = new String[filas][];
matrizDeLetrasIrregular[0] = new String[1];//Le asignamos a la fila cero, una columna
matrizDeLetrasIrregular[1] = new String[4];//Le asignamos a la fila uno, cuatro columnas
matrizDeLetrasIrregular[2] = new String[2];//Le asignamos a la fila dos, dos columnas
matrizDeLetrasIrregular[3] = new String[1];//Le asignamos a la fila tres, una columna
matrizDeLetrasIrregular[4] = new String[3];//Le asignamos a la fila cuatro, tres columnas
//Llenamos la primera fila
matrizDeLetrasIrregular[0][0] = "A";
//Llenamos la segunda fila
matrizDeLetrasIrregular[1][0] = "B";
matrizDeLetrasIrregular[1][1] = "C";
matrizDeLetrasIrregular[1][2] = "D";
matrizDeLetrasIrregular[1][3] = "E";
//Llenamos la tercera fila
matrizDeLetrasIrregular[2][0] = "F";
matrizDeLetrasIrregular[2][1] = "G";
//Llenamos la cuarta fila
matrizDeLetrasIrregular[3][0] = "H";
//Llenamos la quinta fila
matrizDeLetrasIrregular[4][0] = "I";
matrizDeLetrasIrregular[4][1] = "J";
matrizDeLetrasIrregular[4][2] = "K";
//matrizDeLetrasIrregular.length me indica cuantas filas tiene la matriz
for(int i = 0;i < matrizDeLetrasIrregular.length;i++){
//matrizDeLetrasIrregular[i].length me indica cuantas columnas tiene la matriz en la fila i
for(int j = 0;j < matrizDeLetrasIrregular[i].length;j++){
System.out.print(matrizDeLetrasIrregular[i][j]);//Imprimimos en pantalla el valor de fila i, columna j
}
System.out.println();//Damos un salto de linea
}
}
}</pre>
<br />
Para terminar quiero agregar que de la misma forma como recorremos las listas y matrices para imprimir sus valores en pantalla, podemos usarlo de manera similar para llenarlos.<br />
<br />
Espero sus comentario y sugerencias.<br />
<br />
Como siempre, esperando serles de utilidad.<br />
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-21246588858036613442013-09-01T16:26:00.001-05:002016-02-08T21:04:31.851-05:00Aprendiendo a programa en Java usando BlueJ<div dir="ltr" style="text-align: left;" trbidi="on">
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://www.bluej.org/images/banners/banner.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.bluej.org/images/banners/banner.jpg" height="29" width="320" /></a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
BlueJ es una aplicación de tipo IDE bastante útil tanto para profesores como para aprendices, a mi modo de ver nos ayuda a crear bases solidas acerca de la programación orientada a objetos, ya que en la medida que vamos programando nos va mostrando el esquema o diseño final de tu aplicación; ademas de lo dicho anteriormente, genera una buena practica del uso de comentarios en nuestro código lo cual lo hará mas fácil de entender para otro programador o incluso para nosotros mismos.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Por simplicidad, podemos suponer que el aprendiz tendrá una herramienta menos confusa y más practica para aprender a programar en java.</div>
<div style="text-align: justify;">
<br /></div>
<a href="http://goo.gl/a885nE" target="_blank"><img alt="Hosting" border="0" src="http://www.hostinger.es/banners/es/hostinger-728x90-1.gif" height="90" width="728" /></a><br />
<div style="text-align: justify;">
<br />
La aplicación esta disponible para muchas plataformas, incluso puedes descargarlo tipo .jar, aquí les dejo el link para la descargar del ejecutable y otro con un tutorial oficial en español del mismo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<a href="http://goo.gl/pLQcjn" target="_blank">Link para instaladores.</a></div>
<div style="text-align: justify;">
<a href="http://goo.gl/3kSSpV" target="_blank">Link para tutorial oficial en español.</a></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Ademas les dejo este vídeo creado por Manuel Tezozomoc Lopez Fosado que nos permite darle un vistazo de las posibilidades de BlueJ.</div>
<div style="text-align: justify;">
<br /></div>
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/Y_uxhzfvYiY?list=PL5EC1DEBCB96CF514" width="560"></iframe><br />
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-66679344366984426522013-08-28T22:13:00.001-05:002016-01-09T23:45:21.783-05:00Ebooks gratis en español para descargar, segunda parte<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<table border="0" cellpadding="2" cellspacing="2" style="text-align: center; width: 100%;"><tbody>
<tr> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/X6pjqc" target="_blank"><img border="0" height="320" src="http://1.bp.blogspot.com/-m1QnQxt8QwY/UhwCqycdQOI/AAAAAAAAAbM/c6TfqYLi4o4/s320/Diseno-Interfaces-Multimedia.jpg" width="225" /></a></div><div style="text-align: center;"></div></td> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/ZCAV7h" target="_blank"><img border="0" height="320" src="http://4.bp.blogspot.com/-Bm2PVfDQWkI/UhwDPxc5AbI/AAAAAAAAAbU/gYGvR0EscPQ/s320/estructura-de-computadores-uoc1.gif" width="225" /></a></div><div style="text-align: center;"></div></td> </tr>
<tr> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/ccqsOF" target="_blank"><img border="0" height="320" src="http://2.bp.blogspot.com/-C3Xhx0tiu7g/UhwEGjMxxcI/AAAAAAAAAbc/JPzncG523WE/s320/Fundamento-de-computadores.gif" width="225" /></a></div><div style="text-align: center;"></div></td> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/8QMRLY" target="_blank"><img border="0" height="320" src="http://4.bp.blogspot.com/-2V0WdmF88Gs/UhwEbLJ3bSI/AAAAAAAAAbk/F8iXjKg8hEk/s320/fundamentos-sistemas-informacion.gif" width="225" /></a></div><div style="text-align: center;"></div></td> </tr>
<tr> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/Y3Weyl" target="_blank"><img border="0" height="320" src="http://3.bp.blogspot.com/-AJAUyBWtXrc/UhwE_rsd_AI/AAAAAAAAAbs/-vLqJ604bMA/s320/uoc-documental-325x461.gif" width="225" /></a></div><div style="text-align: center;"></div></td> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/LGCkjl" target="_blank"><img border="0" height="320" src="http://3.bp.blogspot.com/-ZAsFR4Cyqkk/UhwFQI2ulfI/AAAAAAAAAb0/aGSWoSIpi_8/s320/Implantacion_Sistemas-325x461.jpg" width="225" /></a></div><div style="text-align: center;"></div></td> </tr>
<tr> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/IG8KCP" target="_blank"><img border="0" height="320" src="http://2.bp.blogspot.com/-1fmjxpoQmHw/UhwFn81QblI/AAAAAAAAAb8/uWG1eViUJjI/s320/ingenieria_software_entorno_sl-325x461.gif" width="225" /></a></div></td> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/Kyu3Yj" target="_blank"><img border="0" height="320" src="http://4.bp.blogspot.com/-_5oYpG4_PG8/UhwGG_pSMOI/AAAAAAAAAcE/1H4usW46PTQ/s320/Introduccion_desarrollo_de_software.gif" width="226" /></a></div></td> </tr>
<tr> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/mSjJWg" target="_blank"><img border="0" height="320" src="http://3.bp.blogspot.com/-Rja2WmSL-4k/UhwG_p1_clI/AAAAAAAAAcM/1u6rUE4ILnU/s320/redes.gif" width="226" /></a></div><div style="text-align: center;"></div></td> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/jIdSQ9" target="_blank"><img border="0" height="320" src="http://1.bp.blogspot.com/-WGuFhtws794/UhwHah7nwEI/AAAAAAAAAcU/yMTRkQQHB7I/s320/tecnologias-de-la-informacion.gif" width="225" /></a></div><div style="text-align: center;"></div></td> </tr>
<tr> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/gWT2ih" target="_blank"><img border="0" height="320" src="http://4.bp.blogspot.com/-buLaM-BRpdg/UhwHlC--4JI/AAAAAAAAAcc/H8CwrY7ZEpI/s320/uoc-redes-multimedia-325x461.jpg" width="225" /></a></div><div style="text-align: center;"></div></td> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/GcxCx4" target="_blank"><img border="0" height="320" src="http://1.bp.blogspot.com/-p2PWXhpmiz4/UhwH5IOtQJI/AAAAAAAAAck/4CcGHti6rDs/s320/uoc-sw-libre-sector-publico-325x461.jpg" width="225" /></a></div><div style="text-align: center;"></div></td> </tr>
<tr> <td style="vertical-align: top;"></td><td style="vertical-align: top;"><br />
</td> </tr>
</tbody> </table><div style="text-align: center;"><a href="http://usandojava.blogspot.com/2013/08/libros-y-manuales-de-interes.html">Pagina 1</a>,Pagina 2</div><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle"
style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-4876397328130313"
data-ad-slot="2944151920"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-86142677881424774302013-08-26T22:16:00.002-05:002016-01-10T00:15:45.576-05:00Ebooks gratis en español para descargar, primera parte<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
La <a href="http://www.uoc.edu/portal/es/universitat/coneix/index.html" target="_blank">Universidad Abierta de Catalunya</a> pone a disposición documentos digitales de muy buena calidad, he leído varios y hoy quiero compartir con ustedes una lista con varios documentos en formato digital listos para ser descargados.<br />
<br />
Espero les guste y los compartan con sus amigos.<br />
<br />
<table border="0" cellpadding="2" cellspacing="2" style="text-align: center; width: 100%;"><tbody>
<tr> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/vDFIIs" target="_blank"><img border="0" height="320" src="http://1.bp.blogspot.com/-6WcIKFeqdig/Uhv8NypGvlI/AAAAAAAAAZo/B6_pbUrc8J8/s320/Administracion-Avanzada-de-Sistemas-GNU-Linux.gif" width="225" /></a></div><div style="text-align: center;"></div></td> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/LWUH4t" target="_blank"><img border="0" height="320" src="http://1.bp.blogspot.com/-lNvgU8dBxpY/Uhv8mlxEEKI/AAAAAAAAAZw/Xq4O8rxFW0g/s320/proyecto_administracion_redes.gif" width="226" /></a></div><div style="text-align: center;"></div></td> </tr>
<tr> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/fDTL8N" target="_blank"><img border="0" height="320" src="http://2.bp.blogspot.com/-FsJ-g-r-_dY/Uhv85HjnuuI/AAAAAAAAAZ0/KMPApY2tRNA/s320/Analisis-forense-de-sistemas-informaticos.gif" width="225" /></a></div><div style="text-align: center;"> </div></td> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/CwcRox" target="_blank"><img border="0" height="320" src="http://1.bp.blogspot.com/-3IokqEMSo7g/Uhv_J6M7gmI/AAAAAAAAAaA/xfSMcNWpC2Q/s320/Aspectos_avanzados_de_seguridad_en_Redes.gif" width="225" /></a></div><div style="text-align: center;"></div></td> </tr>
<tr> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/NDurBO" target="_blank"><img border="0" height="320" src="http://4.bp.blogspot.com/-e-0zfpwHpms/Uhv_k93-API/AAAAAAAAAaI/TPDBYKIVH54/s320/Aspectos-economicos-y-modelos-de-negocio-del-software-libre.gif" width="225" /></a></div><div style="text-align: center;"></div></td> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/QJcfvg" target="_blank"><img border="0" height="320" src="http://3.bp.blogspot.com/-WPAYb88rVK8/Uhv_42-7pRI/AAAAAAAAAaQ/euVW9yKAN3c/s320/aspectos_legales_explotacion_software_parte_1-325x461.png" width="225" /></a></div><div style="text-align: center;"></div></td> </tr>
<tr> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/tQwUWi" target="_blank"><img border="0" height="320" src="http://3.bp.blogspot.com/-C4fI6L9eaMY/UhwASkKIEUI/AAAAAAAAAaY/xh2_-NbQ5RA/s320/aspectos_legales_explotacion_software_parte_2-325x461.png" width="225" /></a></div><div style="text-align: center;"></div></td> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/nEAQw6" target="_blank"><img border="0" height="320" src="http://3.bp.blogspot.com/-sgE4i9-f-CQ/UhwAhsXYqXI/AAAAAAAAAag/y3AVU-3G5B4/s320/bases_de_datos_big-325x461.png" width="225" /></a></div><div style="text-align: center;"></div></td> </tr>
<tr> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/25Pr6E" target="_blank"><img border="0" height="320" src="http://1.bp.blogspot.com/-By7akDu6iGs/UhwAxIVRx2I/AAAAAAAAAao/Lap21hrD1yA/s320/Conceptos-Avanzados-en-desarrollo-de-Software-Libre.gif" width="225" /></a></div><div style="text-align: center;"></div></td> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/KsRMCO" target="_blank"><img border="0" src="http://3.bp.blogspot.com/-1wb2sxfZ9xI/UhwBN781g7I/AAAAAAAAAaw/_6Yz80puGe8/s1600/software-libre.png" /></a></div><div style="text-align: center;"></div></td> </tr>
<tr> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/C3jIc7" target="_blank"><img border="0" height="320" src="http://3.bp.blogspot.com/-cfFuB2as77M/UhwB1xRrIMI/AAAAAAAAAa8/Sx-l9F2w5AU/s320/Desarrollo-de-software-basado-en-reutilizacion.gif" width="225" /></a></div><div style="text-align: center;"></div></td> <td style="vertical-align: top;"><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://goo.gl/WAwuE5" target="_blank"><img border="0" height="320" src="http://4.bp.blogspot.com/-VhChgZ9OfjU/UhwCazJnhdI/AAAAAAAAAbE/exuYhlpSYEY/s320/desarrollo_de_proyectos_software_libre-325x461.gif" width="225" /></a></div><div style="text-align: center;"></div></td> </tr>
</tbody> </table><br />
<div style="text-align: center;">Pagina 1,<a href="http://usandojava.blogspot.com/2013/08/libros-y-manuales-de-interes_28.html">Pagina2</a></div><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle"
style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-4876397328130313"
data-ad-slot="2944151920"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-45176903508658573272013-08-17T14:37:00.000-05:002016-06-07T03:41:11.841-05:00Expresiones regulares usando Java, parte I<div dir="ltr" style="text-align: left;" trbidi="on"><script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div style="text-align: justify;">Al programar, muchas veces nos vemos en la necesidad de validar si ciertas cadenas de textos cumplen o no con un patrón especifico, por ejemplo, saber si un texto esta compuesto en su totalidad por números, generalmente lo resolvemos de la siguiente forma:<br />
<br />
<pre class="prettyprint">public boolean esNumero(String cadena){
try {
Integer.parseInt(cadena);
return true;
} catch (Exception e) {
return false;
}
}
</pre><br />
O tal vez así:<br />
<br />
<pre class="prettyprint">public boolean esNumero(String cadena){
char numeros[] = {'1','2','3','4','5','6','7','8','9','0'};
boolean bandera = true;
for(char charCadena:cadena.toCharArray()){
boolean banderaTemp = false;
for(char charNumero:numeros){
if(charCadena != charNumero){
banderaTemp |= false;
}else{
banderaTemp |= true;
}
}
bandera &= banderaTemp;
}
return bandera;
}
</pre><br />
En otros casos necesitamos buscar fragmentos de textos en cadenas muchos más largas, por ejemplo, si estamos construyendo un editor de texto en java lo podemos hacer así:<br />
<br />
<pre class="prettyprint">public int buscarPosicionInicio(String cadenaABuscar,String cadenaDondeBuscar){
int pos = cadenaDondeBuscar.indexOf(cadenaABuscar);
if(pos == -1){
System.out.println("El texto no fue encontrado");
}
return pos;
}
</pre><br />
<i>Admito que el código anterior pudo haber salido mas corto.</i><br />
<br />
Para finalizar, muchas veces nos topamos con la necesitad de extraer textos o quizás remplazarlo de una cadenas más larga, estos dos últimos casos seria lo mismo, extraer un texto es equivalente a remplazarlo por una cadena vacía ("").<br />
<br />
Los métodos que anteriormente escribí puede que sean de mucha utilidad, pero hay una técnica que nos facilita la resoluciones de problemas de este tipo y además nos agrega robustez a nuestros programas, dicha técnica hace uso de algo llamado Expresiones Regulares.<br />
<br />
<a href="http://goo.gl/a885nE" target="_blank"><img alt="Hosting" border="0" src="https://www.hostinger.es/banners/es/hostinger-728x90-1.gif" height="90" width="728"></a><br />
<br />
<b>EXPRESIONES REGULARES</b><br />
En el área de la programación las expresiones regulares son un método por medio del cual se pueden realizar búsquedas dentro de cadenas de caracteres. Sin importar si la búsqueda requerida es de dos caracteres en una cadena de 10 o si es necesario encontrar todas las apariciones de un patrón definido de caracteres en un archivo de millones de caracteres, las expresiones regulares proporcionan una solución para el problema. Adicionalmente, un uso derivado de la búsqueda de patrones es la validación de un formato específico en una cadena de caracteres dada, como por ejemplo fechas o identificadores. Por Wikipedia<br />
<br />
El uso de expresiones regulares no es nada difícil, basta con decir que en muchas ocasiones hacemos uso de ellas sin darnos cuenta, por ejemplo, si queremos referirnos a cualquier archivo de extensión jpg solemos expresarlo asi "*.jpg", si queremos buscar archivos de textos que empiecen con la letra "a" lo hacemos con la expresión "a*.txt"; lo anterior es una de las forma en que hacemos uso de las expresiones regulares en la informática, aunque poco a poco y según nuestras necesidades estas se harán más complejas, pero con práctica y dedicación lograremos comprenderlo y aplicarlo en nuestros proyectos.<br />
<br />
Antes de empezar con ejemplos de expresiones regulares usando Java, sugiero descargar la aplicación <a href="http://code.google.com/p/kiki-re/" target="_blank">kiki</a> las cual esta disponible tanto para Windows como para Gnu/Linux, en mi caso particular solo hay que usar el Centro de software de Ubuntu y listo.</div><div style="text-align: justify;"><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://1.bp.blogspot.com/-SdxsHY6eeAo/Ug_hGWdbuFI/AAAAAAAAAW0/_zcTpV1GrPI/s1600/kiki.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="396" src="https://1.bp.blogspot.com/-SdxsHY6eeAo/Ug_hGWdbuFI/AAAAAAAAAW0/_zcTpV1GrPI/s640/kiki.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Captura de Kiki en acción<br />
<br />
</td></tr>
</tbody></table><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-x2MBUimh9vw/UhGu_E7a6dI/AAAAAAAAAXU/Al-HmGQ8sIE/s1600/kiki3.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="324" src="https://3.bp.blogspot.com/-x2MBUimh9vw/UhGu_E7a6dI/AAAAAAAAAXU/Al-HmGQ8sIE/s640/kiki3.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Anotaciones para usar kiki</td></tr>
</tbody></table><script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
Existen una seria de normas para construir de manera correcta nuestras expresiones regulares para java y estas las podemos ver recopiladas en la pagina oficial de Oracle <a href="http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html">http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html</a>, aunque están en ingles al traducirla se entiende muy bien; usaremos las más usadas que nos darán bases para posteriormente abarcar las demás.<br />
<br />
<table border="1" cellpadding="2" cellspacing="2" style="text-align: left; width: 100%;"><tbody>
<tr> <td style="vertical-align: top;">[abc]</td> <td style="vertical-align: top;">Representa un carácter que puede<br />
ser 'a' ó 'b' ó 'c'.</td> </tr>
<tr> <td style="vertical-align: top;">[^abc]</td> <td style="vertical-align: top;">Representa cualquier carácter<br />
excepto 'a' y 'b' y 'c'; en este caso cuando digo cualquier caracter,<br />
no me refiero solo a letras.</td> </tr>
<tr> <td style="vertical-align: top;">[a-z]</td> <td style="vertical-align: top;">Representa el rango comprendido<br />
de la 'a' hasta la 'z', ojo no incluye 'ñ', vocales con tildes, ni<br />
consonantes con diéresis, en pocas palabras solo se aceptan el alfabeto<br />
ingles.</td> </tr>
<tr> <td style="vertical-align: top;">[a-zñ]</td> <td style="vertical-align: top;">Representa el rango comprendido<br />
de la 'a' hasta la 'z', esta vez si incluye 'ñ', ojo solo incluye a la<br />
'ñ', si queremos incluir más caracteres los colocamos al lado de la 'ñ'.</td> </tr>
<tr> <td style="vertical-align: top;">[A-Z]</td> <td style="vertical-align: top;">Representa el rango comprendido<br />
de la 'A' hasta la 'Z', ojo no incluye 'ñ', solo el alfabeto ingles.</td> </tr>
<tr> <td style="vertical-align: top;">[a-zA-Z]</td> <td style="vertical-align: top;">Representa el rango comprendido<br />
de la 'a' hasta la 'z' ó 'A' hasta la 'Z',pero solo el alfabeto ingles.</td> </tr>
<tr> <td style="vertical-align: top;">[a-d[m-p]]</td> <td style="vertical-align: top;">Es equivalente a [a-dm-p],<br />
nótese que es parecido a la expresión anterior, representa el rango<br />
comprendido de la 'a' hasta la 'b' y 'm' hasta la 'p', es decir solo<br />
quedan incluidas 'a','b','c','d' y 'm','n','o','p'.</td> </tr>
<tr> <td style="vertical-align: top;">[a-z&&[def]]</td> <td style="vertical-align: top;">Es equivalente a [def], es la<br />
intersección del conjunto de la 'a' hasta la 'z' y el conjunto<br />
'd','e','f', el resultado es el mismo conjunto 'd','e','f'; aunque se<br />
ve innecesario esta expresión nos ayudara a comprender la que<br />
sigue.</td> </tr>
<tr> <td style="vertical-align: top;">[a-z&&[^def]]</td> <td style="vertical-align: top;">Representa la intersección del<br />
conjunto de la 'a' hasta la 'z' y el conjunto todo el abecedario<br />
excepto los caracteres 'd','e','f', el resultado es el conjunto del<br />
abecedario excluyendo 'd','e','f'.</td> </tr>
<tr> <td style="vertical-align: top;">[a-z&&[^m-p]]</td> <td style="vertical-align: top;">Representa la intersección del<br />
conjunto de la 'a' hasta la 'z' y el conjunto todo el abecedario<br />
excepto los caracteres 'm','n','o','p'.</td> </tr>
</tbody> </table><br />
<i><b>Nota</b>: Todas la expresiones descritas anteriormente solo representan un carácter.</i><br />
Ahora veamos dos caracteres más que nos ayudaran a representar expresiones más largas, '*' y el '+'; el primero representa "cero o más" mientras el segundo "uno o más"; hagamos algunos ejemplos usando java para que sea mas fácil de entender.<br />
Usaremos el siguiente código para evaluar nuestros ejercicios, y en la <b>practica veremos lo útil que será usar expresiones regulares</b>.<br />
<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <!-- intermedio --><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif;"><ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins></span><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<pre class="prettyprint">import java.util.regex.Pattern;
public class Ejemplo {
public static void main(String[] args) {
String expresionRegular = "[abc]";
String cadenaAEvaluar = "a";
boolean b = Pattern.matches(expresionRegular,cadenaAEvaluar);
if(b){
System.out.println("La expresion SI representa la cadena a evaluar");
}else{
System.out.println("La expresion NO representa la cadena a evaluar");
}
}
}
</pre><br />
Donde las variables expresionRegular y cadenaAEvaluar la modificaremos según el ejercicio.<br />
<br />
Cuando:<br />
expresionRegular = "[abc]";<br />
cadenaAEvaluar = "a";<br />
El resultado sera "La expresión SI representa la cadena a evaluar"<br />
Sin embargo usamos otras letra distintas a 'a' ó 'b' ó 'c', ó mas de un carácter en cadenaAEvaluar, nos arrogara el resultado "La expresión NO representa la cadena a evaluar".<br />
<br />
<br />
Cuando:<br />
expresionRegular = "[0-1]";<br />
cadenaAEvaluar = "a";<br />
El resultado sera "La expresión NO representa la cadena a evaluar"<br />
Para que la cadenaAEvaluar sea correcta, debemos introducir un numero, ejemplo "2"<br />
<br />
<i>Como ejercicio propongo que observemos los resultados con las demás expresiones.</i><br />
<br />
Continuemos, ahora cabe la pregunta, ¿y si quiero evaluar mas de un carácter?<br />
Recordemos el método isNumero propuesto al inicio, que nos dice si una cadena es un numero, usando expresiones regulares expresionRegular seria igual a "[0-9]+" que expresa una cadena 1 ó mas caracteres compuestos por números, el método quedaría más corto:<br />
<br />
<pre class="prettyprint">public boolean esNumero(String cadena){
return Pattern.matches("[0-9]+",cadena);
}
</pre><br />
Otro ejemplo, digamos que deseamos saber si una cadena esta compuesta por un numero y una palabra en minúsculas, separada con un punto, ejemplo "12345.holamundo"<br />
<br />
Para los números de uno o más cifras ya sabemos que es "[0-9]+", para las letras minúsculas es muy similar "[a-z]+", la expresión resultante quedara de la siguiente forma "[0-9]+.[a-z]+"<br />
<br />
<br />
Es decir, cuando:<br />
expresionRegular = "[0-9]+.[a-z]+"<br />
cadenaAEvaluar = "12345.holamundo";<br />
El resultado sera "La expresión SI representa la cadena a evaluar"<br />
<br />
<b>Ya puedes ver todo lo que puedes hacer?, puedes construir tu expresiones regulares para validar Email, números de celular del tipo "310-234-5678", direcciones web, et</b>c<br />
<br />
Aquí termino ésta primera parte, espero sus comentario para mejorar.<br />
<br />
Y como siempre esperando serles de utilidad.</div><script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com1tag:blogger.com,1999:blog-8717339416109559926.post-46439748466622500692013-04-30T00:34:00.001-05:002016-02-08T21:09:03.762-05:00Llenar y eliminar filas una tabla en java.<div dir="ltr" style="text-align: left;" trbidi="on">
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-vMQVySCb8tU/UX9VeG-BFtI/AAAAAAAAATo/iLLQXjRL2iQ/s1600/tabla.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="284" src="https://3.bp.blogspot.com/-vMQVySCb8tU/UX9VeG-BFtI/AAAAAAAAATo/iLLQXjRL2iQ/s640/tabla.jpg" width="640" /></a></div>
<br />
<div style="text-align: justify;">
En java una tabla es un objeto de la clase <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Jtable</span>, que nos permite dibujar tablas con sus respectivas filas y columnas semejantes a una hoja de calculo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Las operaciones básica que podemos hace una tabla son: insertar columnas, insertar filas y eliminar filas.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Una forma muy sencilla de hacer las operaciones anteriormente descritas es usando algo llamado modelo,que no es más que los datos implícitos que maneja la tabla, las operaciones o modificaciones que hagamos en el modelo, se verán reflejados (dibujados) en la tabla.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Primero creamos nuestra tabla</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">private JTable tabla;</span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">//o tambien asi</span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">private javax.swing.JTable tabla;</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Luego unicializamos nuestra tabla.</div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">tabla = JTable(); </span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">//o tambien asi</span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">tabla = new javax.swing.JTable();</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Creamos nuestro modelo</div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DefaultTableModel modelo;</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Inicializamos</div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">modelo = new DefaultTableModel();</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Vinculamos nuestro modelo a la tabla</div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">tabla.setModel(modelo);</span><br />
<br />
<br /></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
</div>
<a href="http://goo.gl/a885nE" target="_blank"><img alt="Hosting" border="0" src="http://www.hostinger.es/banners/es/hostinger-728x90-1.gif" height="90" width="728" /></a><br />
<div style="text-align: justify;">
<br />
Listo, ahora es solo cuestión de hacer operaciones sobre nuestros datos usando nuestro modelo, empezamos por agregar las columnas que necesitaremos durante la ejecución de nuestro programa.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">modelo.addColumn("Id");</span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">modelo.addColumn("Primer nombre");</span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">modelo.addColumn("Segundo nombre");</span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">modelo.addColumn("Primer apellido");</span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">modelo.addColumn("Segundo apellido");</span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">modelo.addColumn("Sexo");</span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">modelo.addColumn("Direccion");</span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">modelo.addColumn("Telefono");</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para agregar filas, primero crearemos un arreglo del tipo <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Object</span> para ir almacenando nuestros datos que posteriormente adjuntaremos a nuestro modelo.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Object []object = new Object[8];</span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">object[0] = jTextFieldId.getText();</span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">object[1] = jTextFieldPNombre.getText(); </span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">object[2] = jTextFieldSNombre.getText(); </span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">object[3] = jTextFieldPApellido.getText(); </span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">object[4] = jTextFieldSApellido.getText(); </span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">object[5] = jComboBoxSexo.getSelectedItem(); </span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">object[6] = jTextFieldDireccion.getText(); </span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">object[7] = jTextFieldTelefono.getText(); </span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> </span></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">modelo.addRow(object);</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Otra forma de agregar datos a nuestra tabla usando el modelo es haciendo uso del método<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> setValueAt</span> de nuestro modelo donde debemos conocer previamente la fila y la columna donde se insertará el dato, así:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">modelo.setValueAt(dato, fila, columna);</span></div>
<div style="text-align: justify;">
</div>
<div style="text-align: justify;">
Para eliminar una fila de la tabla, solo necesitamos saber por medio de su posición dentro de las demás filas,para eso usamos el método <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">getSelectedRow()</span> de la clase <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Jtable</span>, luego mandamos por parámetros dicha posición al método <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">removeRow</span> de nuestro modelo, así:</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-family: "courier new" , "courier" , monospace;">modelo.removeRow(fila);</span></div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
Para finalizar sugiero que agreguen más funcionalidades al programa, como por ejemplo.</div>
<div style="text-align: justify;">
- Poder eliminar varias filas.</div>
<div style="text-align: justify;">
- No permitir campos vacíos.</div>
<div style="text-align: justify;">
- No permitir id repetidas.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
No olvides dejar tus comentarios.</div>
<div style="text-align: justify;">
<br /></div>
<div style="text-align: justify;">
<span style="font-size: x-large;"><a href="https://goo.gl/N478Od" target="_blank">Clic aquí para descargar Ejecutable.</a></span></div>
<div style="text-align: justify;">
<span style="font-size: x-large;"><a href="https://goo.gl/rz7OPo" target="_blank">Clic aquí para descargar Fuente.</a></span></div>
<div style="text-align: justify;">
<br /></div>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-39435275152940021592013-03-17T01:46:00.002-05:002022-07-07T22:33:40.703-05:00Lista de Objetos usando Java.<div dir="ltr" style="text-align: left;" trbidi="on"><a title="" href="https://usandojava.blogspot.com/2022/07/byjusfutureschool.html"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8uCrkUzxlMSjJ46olN2fzjSFUIsg6wm0BNljA5y3wqt3AgBe300SKA_S54mTmaXJIt5IBbaT23tfiCNdyFdEBb6tp5ZXV23ZokEQgIEELl0A6MrWqU76u_e_MEPFcS6abASstFFrVvRtpNtGRIc6N9hazJfj6LQxwg8eyCmoY8XsHqReCROJyKPST/s320/CURSO%20GRATIS%20DE%20PROGRAMACION.gif" /></a><br />
<div style="text-align: justify;">Saludos a todos.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">En ésta oportunidad escribiré acerca de una aplicación muy básica pero con conceptos que nos pueden ser de mucha en el aprendizaje de la programación en Java.<br />
<br />
</div><div style="text-align: justify;">La idea básica de la aplicación es construir una clase llamada Persona, que contendrá propiedades y métodos propios de una persona del mundo real, con dicha clase construiremos objetos de personas y las iremos almacenando en una lista; además realizaremos dos operaciones con la lista, agregar y eliminar.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">La apariencia final de la aplicación es ésta:</div><div style="text-align: justify;"><br />
</div><div class="separator" style="clear: both; text-align: center;"><a title="" href="https://usandojava.blogspot.com/2022/07/byjusfutureschool.html"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8uCrkUzxlMSjJ46olN2fzjSFUIsg6wm0BNljA5y3wqt3AgBe300SKA_S54mTmaXJIt5IBbaT23tfiCNdyFdEBb6tp5ZXV23ZokEQgIEELl0A6MrWqU76u_e_MEPFcS6abASstFFrVvRtpNtGRIc6N9hazJfj6LQxwg8eyCmoY8XsHqReCROJyKPST/s320/CURSO%20GRATIS%20DE%20PROGRAMACION.gif" /></a></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Para iniciar la clase Persona tendrá las siguientes propiedades:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> private String id;</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> private String primerNombre;</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> private String segundoNombre;</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> private String primerApellido;</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> private String segundoApellido;</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> private String direccion;</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> private String telefono;</span></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Además por cada propiedad tendrá dos métodos que iniciaran con las palabra inglesa 'get' o 'set' respectivamente (no es obligatorio usar éstas palabras, pero es sugerido), para el caso de la propiedad 'id' quedaría así:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> public String getId() {</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> return id;</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> }</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> public void setId(String id) {</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> this.id = id;</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> }</span></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">El método <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">getId</span> retorna el valor de la propiedad '<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">id</span>' y <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">setId</span> permite asignarle un valor a la propiedad '<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">id</span>'; a la práctica antes descrita se le conoce como encapsulamiento y lo que persigue es que no se puedan acceder a las propiedades de la clase directamente, sino haciendo uso de métodos.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Ubiquémonos en el cuerpo del método <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">setId</span> y encontramos la siguiente linea:</div><div style="text-align: justify;"><span class="Apple-tab-span" style="white-space: pre;"> </span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">this.id = id;</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br />
</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br />
</span></div><a title="" href="https://usandojava.blogspot.com/2022/07/byjusfutureschool.html"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8uCrkUzxlMSjJ46olN2fzjSFUIsg6wm0BNljA5y3wqt3AgBe300SKA_S54mTmaXJIt5IBbaT23tfiCNdyFdEBb6tp5ZXV23ZokEQgIEELl0A6MrWqU76u_e_MEPFcS6abASstFFrVvRtpNtGRIc6N9hazJfj6LQxwg8eyCmoY8XsHqReCROJyKPST/s320/CURSO%20GRATIS%20DE%20PROGRAMACION.gif" /></a><br />
<div style="text-align: justify;"><br />
Si observamos, podemos notar que dicho método recibe por parámetro una variable de tipo <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">String</span> llamada '<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">id</span>', pero también tenemos una propiedad en la clase Persona con el mismo nombre; en caso de ser necesario podemos anteponer la palabra reservada <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">this</span> para dejar claro que hacemos referencia a la propiedad propia de la clase.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Una vez tengamos creada la clase Persona, ya podemos crear objetos de la misma, agrego que una clase no es lo mismo que un objeto; la clase en términos menos técnicos es como una plantilla que nos sirve de guía para construir objetos cada vez que los necesitemos; los objetos o también llamados instancias son una representación de los objetos del mundo real.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Para la construcción de objetos de la clase Persona usamos la palabra reservada <span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">new</span> de la siguiente forma:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Persona persona1 = new Persona();</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Persona persona2 = new Persona();</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Persona persona3 = new Persona();</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Persona persona4 = new Persona();</span></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Ahora solo nos falta una lista para ir almacenando nuestras instancias, en java podemos hacerlo de muchas formas como por ejemplo:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Persona persona = new Persona();//creamos el objeto persona</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">ArrayList<Persona> arrayList = new ArrayList<Persona>();//creamos el objeto lista</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">arrayList.add(persona);//almacenamos la persona en la lista</span></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Ademas tambien podemos usar arreglos, nos quedaría algo así:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Persona persona1 = new Persona();//creamos el objeto persona1</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Persona persona2 = new Persona();//creamos el objeto persona2</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Persona[] ListaPersonas = new Persona[100];//Creamos una arreglo para 100 personas</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">ListaPersonas[0] = persona1;//almacenamos la persona1 en la posicion 0</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">ListaPersonas[1] = persona2;//almacenamos la persona2 en la posicion 1</span></div><div style="text-align: justify;"><br />
</div><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!--intermedio--><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div style="text-align: justify;">Pero no he usado ninguna de las anteriores formas para almacenas a los objetos 'persona', he preferido usar una lista del tipo DefaultListModel; la razón es que ésta lista es un modelo de otro objeto llamado Jlist que una vez los 'asociamos' me permitirá visualizar informacion de cada persona en la lista, cada vez que agregue o elimine una persona de la lista automaticamente se verá el cambio en el Jlist, para el codigo nos quedará algo asi:</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">JList jListPersonas = new Jlist();//Creamos el objeto que nos visualizará las personas</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">DefaultListModel modelo = new DefaultListModel();//creamos la lista modelo</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">jListPersonas.setModel(modelo);//Asociamos la lista modelo a el objeto que nos visualizará las personas</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Persona persona = new Persona();//creamos el objeto persona</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">persona.setId(“78076126”);//Llenamos datos con los métodos que inician con set</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">persona.setPrimerNombre(“rey”);</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">persona.setSegundoNombre(“fernando”);</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">persona.setPrimerApellido(“salcedo”);</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">persona.setSegundoApellido(“padilla”);</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">persona.setDireccion(“Kra 33A - #22a 17”);</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">persona.setTelefono(“77300000”);</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> </span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">modelo.addElement(persona);//Agregamos la persona a la lista</span></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Reitero que los objetos de tipo persona que se agregue a la lista modelo seran visualizados automaticamente en la Gui del programa.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Algo que es de notar es el siguiente metodo de la clase Gui, donde hago uso de los métodos de la clase Persona que inician con 'get' que sirve para acceder a los valores de las propiedades de los objetos persona y que posteriormente mostraré en un JTextField.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">private void llenarListaConPersona(Persona persona) {</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> jTextFieldId.setText(persona.getId());</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> jTextFieldPNombre.setText(persona.getPrimerNombre());</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> jTextFieldSNombre.setText(persona.getSegundoNombre());</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> jTextFieldPApellido.setText(persona.getPrimerApellido());</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> jTextFieldSApellido.setText(persona.getSegundoApellido());</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> jTextFieldDireccion.setText(persona.getDireccion());</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> jTextFieldTelefono.setText(persona.getTelefono());</span></div><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">} </span></div><div style="text-align: justify;"><br />
</div><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!--intermedio--><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div style="text-align: justify;"><b>Sugerencias</b></div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">- En la clase Persona sobreescribimos un método llamada toString que pertenece a la clase padre Object que retorna la propiedad 'id', cambie ésto de tal forma que éste método retorne el primer nombre de la persona y vea lo que pasa cuando usar el programa, investigue que pasó.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">- En la clase Persona borre método toString ó meta dentro de comentario y vea lo que pasa cuando usar el programa, investigue que pasó.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">- Modifique o agregue, para que el programa no permita campos vacíos.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">- Modifique o agregue, para que el programa no permita id repetidas.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">- Agregue un nuevo botón en la parte inferior derecha que permita eliminar a todas las personas de la lista.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Comente como resolvió las sugerencias, así podrá compartir su punto de vista y podrá observar como hicieron los demás.</div><div style="text-align: justify;"><br />
</div><div style="text-align: justify;">Nota final; este ejemplo es solo una manera didáctica, pero al manejar grandes volúmenes de información por experiencia no sugiero ésta práctica, ya que consume muchos recursos y tendrá una aplicación lenta.</div><div style="text-align: justify;"><a href="https://drive.google.com/file/d/0Bz73YINsRe1kcERETTJKMU1RQjA/edit?usp=sharing" target="_blank"><br />
</a></div><div style="text-align: justify;"><a href="https://goo.gl/ENk6CU" target="_blank"><span style="font-size: large;"><span style="color: blue;">Clic </span>aquí<span style="color: blue;"> para descargar ejecutable .jar</span></span></a></div><div style="text-align: justify;"><span style="font-size: large;"><a href="https://goo.gl/e90C9t" target="_blank"><span style="color: blue;">Clic </span>aquí<span style="color: blue;"> para descargar código fuente.</span></a><span id="goog_65246732"></span><span id="goog_65246733"></span></span></div><div style="text-align: justify;"><br />
</div><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!--intermedio--><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div style="text-align: justify;">Como siempre esperando serles de utilidad.</div></div><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com2tag:blogger.com,1999:blog-8717339416109559926.post-77086375077764114482013-01-07T14:16:00.000-05:002015-11-30T22:16:15.497-05:00Operaciones sobre base de datos de Zoho (Reports)<div dir="ltr" style="text-align: left;" trbidi="on"><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Saludos,</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif;">Ya una vez hice un ejemplo de como usar la base de datos en la nube de Zoho para hacer consultas (<a href="http://usandojava.blogspot.com/search/label/aplicacion%20de%20escritorio%20java%20usando%20Zoho" target="_blank">click aqui</a>), pero ademas de hacer consultas podemos insertar filas, modificarlar, eliminarlas y muchas cosas mas.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span><br />
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Toda la documentación esta disponible en sus pagina oficial (<a href="http://zohoreportsapi.wiki.zoho.com/" target="_blank">Click aqui</a>).</span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Como siempre deseando serles de utilidad.</span><br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://www.zoho.com/crm/img/zoho-crm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://www.zoho.com/crm/img/zoho-crm.png" /></a></div></div><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle"
style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-4876397328130313"
data-ad-slot="2944151920"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-50166470673458260702012-11-25T08:26:00.003-05:002016-02-08T21:12:19.032-05:00Aprender a programar en java<div dir="ltr" style="text-align: left;" trbidi="on">
<a href="http://goo.gl/a885nE" target="_blank"><img alt="Hosting" border="0" src="http://www.hostinger.es/banners/es/hostinger-728x90-1.gif" height="90" width="728" /></a><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: justify;">
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Saludos, ésto es un intento de mostrar una lista de documentos que nos servirá para iniciar en el mundo de la programación en Java, en la medida de lo posible agregaré algunas más que me hacen falta.</span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Acepto sugerencias por medio de comentarios. </span></div>
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><br />
<table border="0" cellpadding="1"><tbody>
<tr> <td><div class="separator" style="clear: both; text-align: center;">
<a href="http://goo.gl/oMPu1Q" rel="nofollow" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img border="0" height="200" src="https://3.bp.blogspot.com/-d3hiAREytc0/ULIUyNAVOTI/AAAAAAAAAQ4/yACn26oZ80c/s200/JavaComoEnPrimero.jpg" width="140" /></a></div>
<div style="text-align: center;">
<br /></div>
<div style="text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">Aprenda Java como si estuviera en primero - Tecnun</span></div>
</td><td><div class="separator" style="clear: both; text-align: center;">
<a href="http://www.javahispano.org/storage/contenidos/archivo/107/JavaBasico.zip" rel="nofollow" style="margin-left: 1em; margin-right: 1em;" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;"><img border="0" height="200" src="https://3.bp.blogspot.com/-ckiJvdfWzwA/ULIVk6iHpEI/AAAAAAAAARA/She3hRVDflw/s200/Java.jpg" width="143" /></span></a></div>
<div style="text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">Java basico con ejemplos</span></div>
</td><td><div class="separator" style="clear: both; text-align: center;">
<a href="http://www.decom-uv.cl/~roberto/apuntes/java/AprendiendoJava.pdf" rel="nofollow" style="margin-left: 1em; margin-right: 1em;" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;"><img border="0" height="200" src="https://3.bp.blogspot.com/-ckiJvdfWzwA/ULIVk6iHpEI/AAAAAAAAARA/She3hRVDflw/s200/Java.jpg" width="143" /></span></a></div>
<div style="text-align: center;">
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">Aprendiendo Java y Programación Orientada a Objetos</span></div>
</td></tr>
<tr><td><div class="separator" style="clear: both; text-align: center;">
<a href="http://www.mediafire.com/download/qe7igtb7el78qht/manual-basico-java.rar" rel="nofollow" style="margin-left: 1em; margin-right: 1em;" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;"><img border="0" height="200" src="https://3.bp.blogspot.com/-ckiJvdfWzwA/ULIVk6iHpEI/AAAAAAAAARA/She3hRVDflw/s200/Java.jpg" width="143" /></span></a></div>
<div style="text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">Material en html para aprender Java</span></div>
</td><td><div class="separator" style="clear: both; text-align: center;">
<a href="http://di002.edv.uniovi.es/~cueva/asignaturas/PFCOviedo/PFCpatronesJava.pdf" target="_blank"><img border="0" height="200" src="https://2.bp.blogspot.com/-zRoBeLGvOxs/UNChKqYo-lI/AAAAAAAAARY/M8WBy6h91no/s200/CONSTR~1.JPG" width="89" /></a></div>
<div style="text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">Construcción de Software Java con Patrones de Diseño</span></div>
</td><td><div style="text-align: center;">
<a href="http://goo.gl/BTdKYt" target="_blank"><img border="0" height="200" src="https://3.bp.blogspot.com/-FLchh_yitr4/UX9h17wg0GI/AAAAAAAAAT4/0RCEl9zEEwc/s200/descarga.jpg" width="155" /></a></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"></span><br />
<div style="text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">Como programar en java</span></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><br />
<div style="text-align: center;">
</div>
</td></tr>
<tr> <td><br /></td><td><div style="text-align: center;">
</div>
</td> <td><br />
<div style="text-align: center;">
</div>
</td> </tr>
</tbody></table>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-90644302005210217572012-11-14T10:34:00.003-05:002022-07-07T23:02:23.897-05:00Búsqueda binaria en un arreglo usando Java<div dir="ltr" style="text-align: left;" trbidi="on"><a title="" href="https://usandojava.blogspot.com/2022/07/byjusfutureschool.html"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8uCrkUzxlMSjJ46olN2fzjSFUIsg6wm0BNljA5y3wqt3AgBe300SKA_S54mTmaXJIt5IBbaT23tfiCNdyFdEBb6tp5ZXV23ZokEQgIEELl0A6MrWqU76u_e_MEPFcS6abASstFFrVvRtpNtGRIc6N9hazJfj6LQxwg8eyCmoY8XsHqReCROJyKPST/s320/CURSO%20GRATIS%20DE%20PROGRAMACION.gif" /></a><br />
<div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Tal vez también te interese <a href="http://usandojava.blogspot.com/2012/10/busqueda-secuencial-en-un-arreglo.html" target="_blank">Búsqueda secuencial en un arreglo usando Java.</a></span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Saludos,</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <br />
<div class="separator" style="clear: both; text-align: center;"><a href="http://4.bp.blogspot.com/-j-8iAhxvkQ0/UWJfwkK9pHI/AAAAAAAAATI/hyuFJ1_8S_w/s1600/busquedaBinaria.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="86" src="https://4.bp.blogspot.com/-j-8iAhxvkQ0/UWJfwkK9pHI/AAAAAAAAATI/hyuFJ1_8S_w/s320/busquedaBinaria.gif" width="320" /></a></div><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-family: "arial";">Antes de iniciar con la explicación hagamos un ejercicio mental, imaginemos que un amigo desea que adivinemos un número que tiene en un papel anotado y que solo él conoce, antes que empecemos nos advierte que el número está comprendido del 0 al 100, y por último por cada intento que hagamos el nos dirá si el número es mayor, menor o igual al número que tiene anotado en el papel.</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-family: "arial";"><br />
</span> <span style="font-family: "arial";">Digamos que el número secreto a adivinar es el <span style="background-color: white; color: blue;"><b>81</b></span>.</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-family: "arial";">Bueno si eres sistemático empezaras intentando con el 50.</span></div><div style="text-align: justify;"><span style="font-family: "arial";">[1,2,3,.......,58,59,<b><span style="color: red;">50</span></b>,51,52,.......,98,99,100]</span></div><div style="text-align: justify;"><span style="font-family: "arial";">Tu amigo te dirá que el número que deseas adivinar es mayor que 50.</span></div><div style="text-align: justify;"><span style="font-family: "arial";">A éste punto ya debes deducir que el número está entre el 51 y el 100.</span></div><div style="text-align: justify;"><span style="color: #38761d; font-family: "arial";"><i>Observa como ya no tienes que gastar intentos con los números comprendidos de 0 a 50.</i></span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="color: black; font-family: "arial";"><br />
</span> <span style="color: black; font-family: "arial";">Ahora intentemos con el 75.</span></div><div style="text-align: justify;"><span style="font-family: "arial";">[51,52,53,.......,73,74,<b><span style="color: red;">75</span></b>,76,77,.......,98,99,100]</span></div><div style="text-align: justify;"><span style="font-family: "arial";">Tu amigo te dirá que el número que deseas adivinar es mayor que el 75.</span></div><div style="text-align: justify;"><span style="font-family: "arial";">A éste punto ya debes deducir que el número está entre el 76 y el 100.</span></div><div style="text-align: justify;"><i><span style="color: #38761d; font-family: "arial";">Observa como ya no tienes que gastar intentos con los números comprendidos de 0 a 75.</span></i></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="color: black; font-family: "arial";"><br />
</span> <span style="color: black; font-family: "arial";">Ahora intentemos con el 87.</span></div><div style="text-align: justify;"><span style="font-family: "arial";">[76,77,78,.......,85,86,<b><span style="color: red;">87</span></b>,88,89,.......,98,99,100]</span></div><div style="text-align: justify;"><span style="font-family: "arial";">Tu amigo te dirá que el número que deseas adivinar es menor que el 87.</span></div><div style="text-align: justify;"><span style="font-family: "arial";">A éste punto ya debes deducir que el número está entre el 76 y el 86.</span></div><div style="text-align: justify;"><i><span style="color: #38761d; font-family: "arial";">Observa como ya no tienes que gastar intentos con los números comprendidos de 0 a 75 y 87 a 100.</span></i></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="color: black; font-family: "arial";"><br />
</span> <span style="color: black; font-family: "arial";">Ahora intentemos con el 81.</span></div><div style="text-align: justify;"><span style="font-family: "arial";">[76,77,78,79,80,<b><span style="color: red;">81</span></b>,82,83,84,85,86]</span></div><div style="text-align: justify;"><span style="font-family: "arial";">Tu amigo te dirá que has acertado.</span><br />
<br />
</div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-family: "arial";"><a href="http://usandojava.blogspot.com/2011/01/un-pequeno-juego-de-azar.html" target="_blank">He aqui el codigo de juego.</a></span><br />
<br />
</div><a title="" href="https://usandojava.blogspot.com/2022/07/byjusfutureschool.html"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8uCrkUzxlMSjJ46olN2fzjSFUIsg6wm0BNljA5y3wqt3AgBe300SKA_S54mTmaXJIt5IBbaT23tfiCNdyFdEBb6tp5ZXV23ZokEQgIEELl0A6MrWqU76u_e_MEPFcS6abASstFFrVvRtpNtGRIc6N9hazJfj6LQxwg8eyCmoY8XsHqReCROJyKPST/s320/CURSO%20GRATIS%20DE%20PROGRAMACION.gif" /></a><br />
<div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-family: "arial";"><br />
</span> <span style="font-family: "arial";">Si te has fijado, la técnica para adivinar el número es dividiendo el rango en dos partes, si el número a adivinar es mayor tomamos el rango que nos ha quedado a la derecha sino si el número a adivinar es menor tomamos el rango que nos ha quedado a la izquierda sino si el número es igual al número a adivinar, bingo hemos adivinado; si la primera vez no adivinamos el número realizamos los pasos anteriores nuevamente hasta que adivinemos (asumiendo que el número a adivinar existe).</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-family: "arial";"><br />
</span> <span style="font-family: "arial";">La técnica anteriormente descrita es análoga a la técnica para la búsqueda binaria.</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-family: "arial";">Como podemos observar y asumiendo la analogía, uno de los requisitos para el algoritmo de búsqueda binaria es que los datos esten previamente ordenados.</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-family: "arial";">Este algoritmo se utiliza cuando el vector en el que queremos determinar la existencia de un elemento está previamente ordenado. El algoritmo reduce el tiempo de búsqueda </span><span style="font-family: "arial" , "helvetica" , sans-serif;">considerablemente, ya que disminuye exponencialmente el número de iteraciones necesarias (wikipedia).</span></div><div style="text-align: justify;"></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif;">Para implementar este algoritmo se compara el elemento a buscar con un elemento cualquiera del array (normalmente el elemento central): si el valor de éste es mayor que el del elemento buscado se repite el procedimiento en la parte del array que va desde el inicio de éste hasta el elemento tomado, en caso contrario se toma la parte del array que va desde el elemento tomado hasta el final. De esta manera obtenemos intervalos cada vez más pequeños, hasta que se obtenga un intervalo indivisible. Si el elemento no se encuentra dentro de este último entonces se deduce que el elemento buscado no se encuentra en todo el array (wikipedia).</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif;">He aquí el código que les ofrezco.</span></div><script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <!-- intermedio --><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif;"><ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins></span><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
<pre class="prettyprint">class BusquedaBinaria{
/**
* Busca un valor numerico dentro de un arreglo numerico...
* previamente ordenado usando el metodo de busqueda binaria
*
* @param arreglo con los elementos; dato a buscar
* @return posicion del elemento buscado, en caso de no existir retorna -1
*/
public static int busquedaBinaria(int vector[], int dato){
int n = vector.length;
int centro,inf=0,sup=n-1;
while(inf<=sup){
centro=(sup+inf)/2;
if(vector[centro]==dato) return centro;
else if(dato < vector [centro] ){
sup=centro-1;
}
else {
inf=centro+1;
}
}
return -1;
}
public static void main(String []args){
int[]vector ={1,4,7,8,9,14,23,47,56,60,61,63,65,66,68,69,70,73,76,77,79,80,82};
int valorBuscado = 70;
System.out.println(busquedaBinaria(vector,valorBuscado));
}
}
</pre><script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-76099755890930446762012-10-21T23:05:00.003-05:002022-07-07T22:30:33.178-05:00Búsqueda secuencial en un arreglo usando Java<div dir="ltr" style="text-align: left;" trbidi="on"><a title="" href="https://usandojava.blogspot.com/2022/07/byjusfutureschool.html"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8uCrkUzxlMSjJ46olN2fzjSFUIsg6wm0BNljA5y3wqt3AgBe300SKA_S54mTmaXJIt5IBbaT23tfiCNdyFdEBb6tp5ZXV23ZokEQgIEELl0A6MrWqU76u_e_MEPFcS6abASstFFrVvRtpNtGRIc6N9hazJfj6LQxwg8eyCmoY8XsHqReCROJyKPST/s320/CURSO%20GRATIS%20DE%20PROGRAMACION.gif" /></a><br />
<span style="font-family: "arial";">Tal vez también te interese <a href="http://usandojava.blogspot.com/2012/11/busqueda-binaria-en-un-arreglo-usando.html" rel="nofollow" target="_blank">Búsqueda binaria en un arreglo usando Java</a></span><br />
<br />
<div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">Saludos a todos.</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"><br />
</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">Antes de iniciar, debemos familiarizarnos con el concepto de arreglo, he aquí la definición por Wikipedia:</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"><br />
</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"><b>Arreglo</b>: Es una zona de almacenamiento continuo, que contiene una serie de elementos del mismo tipo.</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"><br />
</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">Para efectos de ésta explicación visualice el arreglo como una serie de cajas unidas donde podemos almacenar datos del mismo tipo, los arreglos están indexados con una serie de números de van de menor a mayor y que sirven para hacer referencia a cada uno de las cajas dentro del arreglo, en java esta indices comienzan en 0.</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"><br />
</span></div><div class="separator" style="clear: both; text-align: center;"><a title="" href="https://usandojava.blogspot.com/2022/07/byjusfutureschool.html"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8uCrkUzxlMSjJ46olN2fzjSFUIsg6wm0BNljA5y3wqt3AgBe300SKA_S54mTmaXJIt5IBbaT23tfiCNdyFdEBb6tp5ZXV23ZokEQgIEELl0A6MrWqU76u_e_MEPFcS6abASstFFrVvRtpNtGRIc6N9hazJfj6LQxwg8eyCmoY8XsHqReCROJyKPST/s320/CURSO%20GRATIS%20DE%20PROGRAMACION.gif" /></a></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"><br />
</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"><br />
</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">Los arreglos y en general las estructuras de datos nos permiten almacenar informacion o datos, pero ahora nos seria de utilidad hallar la forma de encontrar los datos que almacenamos en las mismas, para tal fin se han diseñados algoritmo de búsquedas.</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"><br />
</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">Como el titulo lo sugiere trataremos el método de búsqueda secuencial.</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"><br />
</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">Los dos elementos fundamentales a tener en cuentas son: un arreglo con datos objeto de la búsqueda y un elemento o criterio de búsqueda.</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"><br />
</span></div><a title="" href="https://usandojava.blogspot.com/2022/07/byjusfutureschool.html"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8uCrkUzxlMSjJ46olN2fzjSFUIsg6wm0BNljA5y3wqt3AgBe300SKA_S54mTmaXJIt5IBbaT23tfiCNdyFdEBb6tp5ZXV23ZokEQgIEELl0A6MrWqU76u_e_MEPFcS6abASstFFrVvRtpNtGRIc6N9hazJfj6LQxwg8eyCmoY8XsHqReCROJyKPST/s320/CURSO%20GRATIS%20DE%20PROGRAMACION.gif" /></a><br />
<div style="text-align: justify;"><br />
<span face=""arial" , "helvetica" , sans-serif">El método de búsqueda secuencial consiste en ir comparando el elemento o criterio de búsqueda con cada uno de los elementos en el arreglo, esto se hace recorriendo el arreglo y deteniéndose en cada elemento y hacer la comparación, en caso de ser verdadera la comparación, guardar la posición el elemento o dato.</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"><br />
</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">He aquí el código:</span></div><br />
<pre class="prettyprint">public int busquedaSecuencial(int []arreglo,int dato){
int posicion = -1;
for(int i = 0; i < arreglo.length; i++){//recorremos todo el arreglo
if(arreglo[i] == dato){//comparamos el elemento en el arreglo con el buscado
posicion = i;//Si es verdadero guardamos la posicion
break;//Para el ciclo
}
}
return posicion;
}
</pre><div style="text-align: justify;"><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> </span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">Este método nos halla la posición del elemento o dato buscado pero en su primero coincidencia, si queremos que nos halle la posición de la ultima coincidencia, lo único que tenemos que hacer es eliminar la linea donde aparece 'break'.</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"> </span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">Si el resultado del método anterior es -1, significa que el elemento no se encuentra en el arreglo.</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"> </span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">Ahora cabe la pregunta, ¿y si el elemento que deseo buscar aparece varias veces en el arreglo y yo deseo conocer cada una de estas posiciones, como hago?</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"> </span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">Lo que hacemos es deshacernos de la linea 'break' para que el vector sea recorrido en su totalidad, y de alguna forma ir almacenando cada una de las posiciones resultantes de las comparaciones verdaderas.</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"> </span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">He </span><span face=""arial" , "helvetica" , sans-serif">aquí</span><span face=""arial" , "helvetica" , sans-serif"> el </span><span face=""arial" , "helvetica" , sans-serif">código</span><span face=""arial" , "helvetica" , sans-serif">:</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"> </span><br />
<pre class="prettyprint"><span face=""arial" , "helvetica" , sans-serif">public String busquedaSecuencial2(int []arreglo,int valor){
String posicion = "";
for(int i = 0; i < arreglo.length; i++){
if(arreglo[i] == valor){
posicion += i+",";
}
}
return posicion;
}
</span></pre><span face=""arial" , "helvetica" , sans-serif"> </span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">Aunque pude haber usado un 'ArrayList' o 'Vector' preferí usar un 'String' porque asumo que el lector de éste articulo está mas familiarizado con esta ultima que con los dos primeros términos.</span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif"> </span></div><div style="text-align: justify;"><span face=""arial" , "helvetica" , sans-serif">Como siempre esperando que lo escrito les sea de utilidad.</span></div><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!--intermedio--><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com7tag:blogger.com,1999:blog-8717339416109559926.post-66426162832874041622012-07-11T20:42:00.002-05:002015-11-30T22:18:50.128-05:00Aplicacion de mapas, usando grafos y Dijkstra<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<h1 style="text-align: justify;">Saludos a todos,</h1><span style="font-family: Arial, Helvetica, sans-serif;"> </span><br />
<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">He mostrado algunas cosas hechas con grafos en éste blogger, y particularmente como aplicar el Algoritmo de Dijkstra en dicho grafo; pero cabe anotar que tiene mucha utilidad en muchas cosas, sobre todo aquellas que tiene que ver con redes.</span></div><span style="background-color: white;"><span style="font-family: Arial, Helvetica, sans-serif;"> </span></span><br />
<div style="text-align: justify;"><span style="background-color: white;"><span style="font-family: Arial, Helvetica, sans-serif;">En una oportunidad hice una pequeña aplicación donde hago uso de la red vial de mi país Colombia (No terminé de pintarlas todas), para hallar rutas cortas entre poblaciones, haciendo uso de nodos, vias y peajes.</span></span><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;">He aquí algunas <span style="background-color: white;">imágenes</span></span><br />
<br />
</div><div class="separator" style="clear: both; text-align: justify;"><a href="http://4.bp.blogspot.com/-lyFV-Zzcy6E/T_4pKDR1M4I/AAAAAAAAAOk/X98r4v0DXOM/s1600/Distra_grafos_aplicacion2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" src="http://4.bp.blogspot.com/-lyFV-Zzcy6E/T_4pKDR1M4I/AAAAAAAAAOk/X98r4v0DXOM/s320/Distra_grafos_aplicacion2.png" height="188" width="320" /></span></a></div><script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div class="separator" style="clear: both; text-align: justify;"><a href="http://2.bp.blogspot.com/-jYolDOUf2LM/T_4pCVIFYiI/AAAAAAAAAOc/ag48Egr-d2Q/s1600/Distra_grafos_aplicacion1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: Arial, Helvetica, sans-serif;"><img border="0" src="http://2.bp.blogspot.com/-jYolDOUf2LM/T_4pCVIFYiI/AAAAAAAAAOc/ag48Egr-d2Q/s320/Distra_grafos_aplicacion1.png" height="200" width="320" /></span></a></div><span style="font-family: Arial, Helvetica, sans-serif;"></span><br />
<br />
<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">He aquí un vídeo.</span></div><span style="font-family: Arial, Helvetica, sans-serif;"></span><br />
<br />
<iframe allowfullscreen="" frameborder="0" height="315" src="//www.youtube.com/embed/EAQL5iQ1XBA" width="560"></iframe><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;">Los detalles de la implementacion despues con mas tiempo la dare a conocer. </span><br />
<br />
<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;">Como siempre link para descargar ejecutable.</span></div><br />
<div style="text-align: justify;"><span style="font-family: Arial, Helvetica, sans-serif;"><a href="http://goo.gl/TyZSL" target="_blank">Clic aquí para descargar ejecutable.</a></span></div><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle"
style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-4876397328130313"
data-ad-slot="2944151920"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com5tag:blogger.com,1999:blog-8717339416109559926.post-31319540819034971022012-06-02T13:27:00.000-05:002015-11-30T22:19:03.327-05:00Explicación gráfica sobre el Algoritmo de Dijkstra<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<h1><span style="font-family: Arial, Helvetica, sans-serif; font-size: small;">Tal vez te interese tambien "</span><a href="http://usandojava.blogspot.com/2012/02/escribiendo-y-leyendo-en-un-archivo-de.html" style="color: blue;" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif; font-size: small;">Imprementacion de un grafo, recorrido en profundidad y anchura</span></a><span style="font-family: Arial, Helvetica, sans-serif; font-size: small;">", "</span><a href="http://usandojava.blogspot.com/2012/05/implementacion-en-java-del-algoritmo-de.html" style="color: blue;" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif; font-size: small;">Implementacion en Java del Algoritmo de Dijkstra</span></a><span style="font-size: small;"><span style="font-family: Arial, Helvetica, sans-serif;">", "<span style="background-color: white;"><a href="http://usandojava.blogspot.com/2012/07/saludos-todos-he-mostrado-algunas-cosas.html" target="_blank">Aplicacion de mapas, usando grafos y Dijkstra</a></span><span style="background-color: white;">"</span></span></span></h1><span style="font-family: Arial, Helvetica, sans-serif;"> </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Saludos,</span><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;">Escribí algo para ustedes donde explico de manera grafica y paso a paso como aplicar el algoritmo de dijkstra a un grafo, espero les guste y les sirva.</span><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;">Espero comentarios al final.</span><br />
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle"
style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-4876397328130313"
data-ad-slot="2944151920"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div id="__ss_13174564" style="width: 477px;"><b style="display: block; margin: 12px 0pt 4px;"><a href="http://www.slideshare.net/ReySalcedo/algoritmo-dijkstra-13174564" target="_blank" title="Algoritmo dijkstra"><span style="font-family: Arial, Helvetica, sans-serif;">Algoritmo dijkstra</span></a></b><a href="http://www.slideshare.net/ReySalcedo/algoritmo-dijkstra-13174564" target="_blank"><b style="display: block; margin: 12px 0pt 4px;"><span style="font-family: Arial, Helvetica, sans-serif;">Clic aqui para descargar </span></b></a><span style="font-family: Arial, Helvetica, sans-serif;"> </span><iframe allowfullscreen="" frameborder="0" height="900" marginheight="0" marginwidth="0" scrolling="no" src="http://www.slideshare.net/slideshow/embed_code/13174564" width="650"></iframe><span style="font-family: Arial, Helvetica, sans-serif;"> </span><br />
<div style="padding: 5px 0pt 12px;"><span style="font-family: Arial, Helvetica, sans-serif;">View more </span><a href="http://www.slideshare.net/" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif;">documents</span></a><span style="font-family: Arial, Helvetica, sans-serif;"> from </span><a href="http://www.slideshare.net/ReySalcedo" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif;">Rey Salcedo</span></a><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;"> </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;">Tal vez te interese tambien "</span><a href="http://usandojava.blogspot.com/2012/02/escribiendo-y-leyendo-en-un-archivo-de.html" style="color: blue;" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif;">Imprementacion de un grafo, recorrido en profundidad y anchura</span></a><span style="font-family: Arial, Helvetica, sans-serif;">", "</span><a href="http://usandojava.blogspot.com/2012/05/implementacion-en-java-del-algoritmo-de.html" style="color: blue;" target="_blank"><span style="font-family: Arial, Helvetica, sans-serif;">Implementacion en Java del Algoritmo de Dijkstra</span></a><span style="font-family: Arial, Helvetica, sans-serif;">" </span></div></div><script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle"
style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-4876397328130313"
data-ad-slot="2944151920"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com0tag:blogger.com,1999:blog-8717339416109559926.post-50234894973983036602012-05-30T17:36:00.004-05:002022-11-17T17:15:17.147-05:00Implementacion en Java del Algoritmo de Dijkstra<div dir="ltr" style="text-align: left;" trbidi="on"><a title="" href="https://usandojava.blogspot.com/2022/07/byjusfutureschool.html"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8uCrkUzxlMSjJ46olN2fzjSFUIsg6wm0BNljA5y3wqt3AgBe300SKA_S54mTmaXJIt5IBbaT23tfiCNdyFdEBb6tp5ZXV23ZokEQgIEELl0A6MrWqU76u_e_MEPFcS6abASstFFrVvRtpNtGRIc6N9hazJfj6LQxwg8eyCmoY8XsHqReCROJyKPST/s320/CURSO%20GRATIS%20DE%20PROGRAMACION.gif" /></a><br />
<div style="text-align: justify;"><span style="font-family: inherit;"><iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/JLLyuIFfSCE" width="560"></iframe><br />
</span> <br />
<div style="text-align: center;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 18px;"> </span></span> </span></span></div></div><div style="text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></span></div><div style="text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Hoy trataré el tema Algoritmo de Dijkstra, tema perteneciente a la teoría de grafos, así que para entender esto debemos repasar primero que es un grafo y los términos que giran alrededor es este, como costumbre más abajo pueden descargar <b>código fuente</b> y <b>ejecutable, </b>adicional en ésta entrada podrán encontrar </span><span style="font-family: "arial" , "helvetica" , sans-serif;">mi explicación gráfica y paso a paso del </span><span style="font-family: "arial" , "helvetica" , sans-serif;">Algoritmo de Dijkstra en <b>PDF</b> para que puedan descargar a sus computadores.</span></span></div><div style="text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></span></div><div style="text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="color: #274e13;"><b>Definición de Algoritmo de Dijkstra</b></span>: El algoritmo de Dijkstra, también llamado algoritmo de caminos mínimos, es un algoritmo para la determinación del camino más corto dado un vértice origen al resto de vértices en un grafo con pesos en cada arista. Su nombre se refiere a Edsger Dijkstra, quien lo describió por primera vez en 1959.</span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;">La idea subyacente en este algoritmo consiste en ir explorando todos los caminos más cortos que parten del vértice origen y que llevan a todos los demás vértices; cuando se obtiene el camino más corto desde el vértice origen, al resto de vértices que componen el grafo, el algoritmo se detiene. (Tomado de Wikipedia).</span></span></div><div style="text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></span></div><div style="text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;">En palabras propias puedo decir que Algoritmo de Dijkstra nos sirve para determinar el camino mas corto entre dos nodos dados que pertenecen a un grafo.</span></span><br />
<br />
<span style="font-family: inherit;"></span><br />
<span style="font-family: inherit;"></span><br />
<span style="font-family: inherit;"><a title="" href="https://usandojava.blogspot.com/2022/07/byjusfutureschool.html"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8uCrkUzxlMSjJ46olN2fzjSFUIsg6wm0BNljA5y3wqt3AgBe300SKA_S54mTmaXJIt5IBbaT23tfiCNdyFdEBb6tp5ZXV23ZokEQgIEELl0A6MrWqU76u_e_MEPFcS6abASstFFrVvRtpNtGRIc6N9hazJfj6LQxwg8eyCmoY8XsHqReCROJyKPST/s320/CURSO%20GRATIS%20DE%20PROGRAMACION.gif" /></a></span></div><span style="font-family: inherit;"><br />
</span> <span style="font-family: inherit;"><b style="display: inline !important; margin: 12px 0pt 4px;"><a href="http://www.slideshare.net/ReySalcedo/algoritmo-dijkstra-13174564" target="_blank" title="Algoritmo dijkstra"><span style="font-family: "arial" , "helvetica" , sans-serif;">Algoritmo dijkstra</span></a></b></span><br />
<span style="font-family: inherit;"><a href="http://www.slideshare.net/ReySalcedo/algoritmo-dijkstra-13174564" target="_blank"><b style="display: block; margin: 12px 0pt 4px;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Clic aqui para descargar </span></b></a><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><iframe allowfullscreen="" frameborder="0" height="900" marginheight="0" marginwidth="0" scrolling="no" src="https://www.slideshare.net/slideshow/embed_code/13174564" width="650"></iframe><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span></span><br />
<div style="padding: 5px 0pt 12px;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;">View more </span><a href="http://www.slideshare.net/" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">documents</span></a><span style="font-family: "arial" , "helvetica" , sans-serif;"> from </span><span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="http://www.slideshare.net/ReySalcedo" target="_blank">Rey Salcedo</a></span></span><br />
<div style="text-align: justify;"><a title="" href="https://usandojava.blogspot.com/2022/07/byjusfutureschool.html"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj8uCrkUzxlMSjJ46olN2fzjSFUIsg6wm0BNljA5y3wqt3AgBe300SKA_S54mTmaXJIt5IBbaT23tfiCNdyFdEBb6tp5ZXV23ZokEQgIEELl0A6MrWqU76u_e_MEPFcS6abASstFFrVvRtpNtGRIc6N9hazJfj6LQxwg8eyCmoY8XsHqReCROJyKPST/s320/CURSO%20GRATIS%20DE%20PROGRAMACION.gif" /></a><br />
<div style="text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Me tome la tarea de crear una modesta aplicación que me permita graficar un grafo con pesos y determinar la ruta mas corta entre dos nodos dados, he aqui un patallazo:</span></span><br />
<br />
<span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="background-color: white; font-size: 18px;"><a href="http://4.bp.blogspot.com/-WvIcXXfwNjQ/UX8_hK2V5SI/AAAAAAAAATY/qMBy7Ef0c-s/s1600/simplegrafo5.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="340" src="https://4.bp.blogspot.com/-WvIcXXfwNjQ/UX8_hK2V5SI/AAAAAAAAATY/qMBy7Ef0c-s/s640/simplegrafo5.jpg" width="640" /></a></span></span></span></span> </span></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;">El funcionamiento es bastante simple:</span></span></div><div class="separator" style="clear: both; text-align: justify;"><br />
</div><ul style="text-align: left;"><li><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Para crear nodo o vértice con clic izquierdo sobre la superficie, luego te pedirá un nombre.</span></span><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span></span></li>
<li><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Para crear aristas, hacer clic izquierdo sobre los nodos o vértices que deseamos unir, luego nos pedirá el peso que debera ser un entero positivo.</span></span><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span></span></li>
<li><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Para conocer la ruta mas corta por Dijkstra, hacemos clic derecho sobre el primer nodo y luego clic derecho sobre el segundo nodo.</span></span></li>
</ul><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Adjunto ejecutable, y como siempre esperando serles de utilidad.</span></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: inherit;"><a href="https://drive.google.com/file/d/0Bz73YINsRe1kY0xhZ1EwQllFTEk/view?usp=sharing&resourcekey=0-fLtkQHwTjfBAIwDwsYoYlg" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;">Clic aquí para descargar ejecutable.</span></a></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: inherit;"><br />
</span></div><a mp-mode="dftl" href="https://www.mercadopago.com.co/checkout/v1/redirect?pref_id=54141979-2e13eedf-66ec-4dd4-9c7d-273d109dbd31" name="MP-payButton" class='blue-ar-l-rn-none'>Pagar codigo fuente</a><br />
<script type="text/javascript">
(function(){function $MPC_load(){window.$MPC_loaded !== true && (function(){var s = document.createElement("script");s.type = "text/javascript";s.async = true;s.src = document.location.protocol+"//secure.mlstatic.com/mptools/render.js";var x = document.getElementsByTagName('script')[0];x.parentNode.insertBefore(s, x);window.$MPC_loaded = true;})();}window.$MPC_loaded !== true ? (window.attachEvent ?window.attachEvent('onload', $MPC_load) : window.addEventListener('load', $MPC_load, false)) : null;})();
</script><br />
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top"><input name="cmd" type="hidden" value="_s-xclick" /><br />
<input name="hosted_button_id" type="hidden" value="FZ49FQEVK4XQQ" /><br />
<input alt="PayPal - The safer, easier way to pay online!" border="0" name="submit" src="https://1.bp.blogspot.com/-3CH_o6P9J2g/V67JZANf_oI/AAAAAAAAEbE/nDqm_KROEhA3j8oEO41bVfLcPMLT1seCgCLcB/s320/button.png" type="image" /><br />
<img alt="" border="0" height="1" src="https://www.paypalobjects.com/es_XC/i/scr/pixel.gif" width="1" /></form><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></span></div><div class="separator" style="clear: both; text-align: justify;"><span style="font-family: inherit;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Tambien te puede interesar "<a href="http://usandojava.blogspot.com/2012/06/explicacion-grafica-sobre-el-algoritmo.html" style="color: blue;" target="_blank">Explicación gráfica sobre el Algoritmo de Dijkstra</a>"</span></span></div><script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div></div></div><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com46tag:blogger.com,1999:blog-8717339416109559926.post-40183465693098717462012-05-13T01:25:00.004-05:002016-06-07T03:33:58.014-05:00Generar números aleatorios sin repetirse en java (usando Math.random)<div dir="ltr" style="text-align: left;" trbidi="on"><script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<h1 style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: small;">Saludos a todos,</span></span></h1><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Este problema me llega a</span><span style="font-family: "arial" , "helvetica" , sans-serif;"> causa de otro problema que estoy solucionando y que posteriormente publicare aquí.</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Se trata de generar números aleatorios en java dado un numero inicial y uno final pero con la condición de no repetirse; por ejemplo</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">numero inicial = 3</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">numero final = 7</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">La salida puede ser algo así [6,7,4,5,3]</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">La forma particular en que lo resuelvo es ir llenando una lista con los numero que voy generando y para así tener una referencia y no repetirlos.</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">Antes de empezar con el algoritmo tengo que tener en cuenta cuantos numeros como maximo debo generar asi seria (numeroInicial - numeroFinal) + 1; usando el ejemplo anterior quedaría que la máxima cantidad de numero que generare sera (7 - 3) + 1 = 5</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">El algoritmo para generar un sera así:</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">1. Si el tamaño de la lista es menor que (</span><span style="font-family: "arial" , "helvetica" , sans-serif;">(numeroInicial - numeroFinal) + 1</span><span style="font-family: "arial" , "helvetica" , sans-serif;">) sigo al paso 2, sino al paso 3.</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">2. Genero un numero aleatorio establecido dentro del rango y sigo al paso 3.</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">3. Si la lista esta vacía sigo al paso 4 sino al paso 5</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">4. Adjunto el numero a la lista y sigo al paso 6.</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">5 Como no esta vacía la lista verifico, si el numero generado esta en la lista regreso al paso 1, sino regreso al paso 4</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">6. Muestro el numero generado, sigo al paso 7.</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;">7. Fin</span></div><div style="text-align: justify;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"> </span></div><a href="http://goo.gl/a885nE" target="_blank"><img alt="Hosting" border="0" src="https://www.hostinger.es/banners/es/hostinger-728x90-1.gif" height="90" width="728"></a><br />
<div style="text-align: justify;"><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Codigo:</span></div><br />
<pre class="prettyprint">//Por Rey Salcedo
import java.util.ArrayList;
public class NumeroAleatorios {
private int valorInicial;
private int valorFinal;
private ArrayList listaNumero;
public NumeroAleatorios(int valorInicial, int valorFinal){
this.valorInicial = valorInicial;
this.valorFinal = valorFinal;
listaNumero = new ArrayList();
}
private int numeroAleatorio(){
return (int)(Math.random()*(valorFinal-valorInicial+1)+valorInicial);
}
public int generar(){
if(listaNumero.size() < (valorFinal - valorInicial) +1){
//Aun no se han generado todos los numeros
int numero = numeroAleatorio();//genero un numero
if(listaNumero.isEmpty()){//si la lista esta vacia
listaNumero.add(numero);
return numero;
}else{//si no esta vacia
if(listaNumero.contains(numero)){//Si el numero que generé esta contenido en la lista
return generar();//recursivamente lo mando a generar otra vez
}else{//Si no esta contenido en la lista
listaNumero.add(numero);
return numero;
}
}
}else{// ya se generaron todos los numeros
return -1;
}
}
}
</pre><script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <!-- intermedio --><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <span style="font-family: "arial" , "helvetica" , sans-serif;"><ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins></span><span style="font-family: "arial" , "helvetica" , sans-serif;"><br />
</span> <script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<pre class="prettyprint">public class Ejemplo{
public static void main(String[] args){
//Generando números aleatorios del 3 al 7 sin repetirse
NumeroAleatorios na = new NumeroAleatorios(3,7);
for(int i = 0; i < 5;i++){
System.out.print(na.generar()+",");
}
}
}
</pre><br />
<span style="color: blue; font-family: "arial" , "helvetica" , sans-serif;">Nota: si forzar a generar mas numero de los que debería generar te retornara un -1, que te indicará que ya se generaron todos los números posibles.</span> <span style="font-family: "arial" , "helvetica" , sans-serif;"> </span> <span style="font-family: "arial" , "helvetica" , sans-serif; font-size: large;"> </span><br />
<br />
<span style="font-size: x-large;"><a href="https://goo.gl/fRu8WM" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Clic aquí para descargar código Ejemplo.java.</span></a></span><br />
<br />
<span style="font-size: x-large;"><a href="https://goo.gl/vta9vU" target="_blank"><span style="font-family: "arial" , "helvetica" , sans-serif;">Clic </span><span style="font-family: "arial" , "helvetica" , sans-serif;">aquí</span><span style="font-family: "arial" , "helvetica" , sans-serif;"> para descargar </span><span style="font-family: "arial" , "helvetica" , sans-serif;">código NumeroAleatorios.java</span><span style="font-family: "arial" , "helvetica" , sans-serif;">.</span></a></span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Como siempre, espero les guste y les sirva; comenten cualquier duda o sugerencia.</span><br />
<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div><div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com5tag:blogger.com,1999:blog-8717339416109559926.post-47324735410304052922012-04-28T22:28:00.000-05:002016-01-10T00:53:57.197-05:00Conectar a base de datos de Zoho usando Java<div dir="ltr" style="text-align: left;" trbidi="on">
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<h1 style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="font-size: small;">Saludos,</span></span></h1>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Esta vez </span><span style="font-family: Arial, Helvetica, sans-serif;">haremos una conexion de una base de datos que tendremos en la nube, el servicios nos la ofrecerá Zoho, para los que no saben que es una base de datos en la nube usando Zoho, pondre una explicación auspiciada por Wikipedia.</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="color: #274e13; font-family: Arial, Helvetica, sans-serif;"><b><i style="background-color: white;">Zoho es el nombre de un conjunto de aplicaciones web desarrolladas por la empresa estadounidense AdventNet. Para poder utilizar dichas herramientas es obligatorio registrarse y la gran mayoría son de caracter gratuito, aunque muchas de las herramientas se encuentran todavía en fase beta. para mas informacion clic <a href="http://es.wikipedia.org/wiki/Zoho" target="_blank">aqui</a></i></b></span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Lo primero que necesitaremos será tener una base de datos en la nube de Zoho, para esto nos registraremos en la la pagina oficial de la misma <a href="http://www.zoho.com/">http://www.zoho.com/</a></span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Una vez registrado, en el panel principal hacemos clic en el link Reports como lo muestra el siguiente pantallazo:</span></div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-lSpkmIl87tQ/T5yZa4N0DXI/AAAAAAAAAMo/8NhH6zt4HdE/s1600/zoho.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="188" src="http://2.bp.blogspot.com/-lSpkmIl87tQ/T5yZa4N0DXI/AAAAAAAAAMo/8NhH6zt4HdE/s320/zoho.png" width="320" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Aquí podemos crear nuestra base de datos y las tablas que esta contendrá.</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Lo siguiente que necesitaremos es algo que ellos llaman API key, que es una cadena compuesta de letras, signos y números; para crear nuestra API key que necesitaremos para hacer la conexión de nuestra aplicación de escritorio con la base de datos que está en la nube debemos ingresar como usuario a la pagina de <a href="https://www.zoho.com/" target="_blank">Zoho</a> luego hacemos clic en el siguiente <a href="http://writer.zoho.com/apikey.htm" target="_blank">Link</a>.</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Pasamos a descargar los Driver que necesitaremos para conectar nuestra aplicación Java, estos Driver, controladores o JDBC que nos los proporciona Zoho por medio de este <a href="http://css.zohostatic.com/db/api/v3_0/m9/ZohoCloudSQLJDBC_1_0.zip" target="_blank">Link</a>.</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Para esta practica usaremos Netbeans (puede ser cualquier otro editor), creamos un proyecto (yo lo llame zoho), los Driver que descargamos en el parrafo anterior lo descomprimirmos y nos ubicamos en la siguiente ruta Zoho/CloudSQLJDBCDriver/lib que esta dentro de la carpeta que acabamos de descomprirmir valga la redundancia; alli observamos seis archivos de extencion .jar.</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;"><br />
</span></div>
</div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Los seis archivos .jar antes mensionados los adjuntamos a la libreria de nuestro proyecto haciendo clic derecho sobre <i><b>Libraries</b></i> y <i><b>Add JAR/Foolder</b></i> como lo muestro en la siguiente imagen:</span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-lyzRQshG4Aw/T5yjfY3N-SI/AAAAAAAAAM0/rVYTH7Dw8WI/s1600/Netbeans.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-lyzRQshG4Aw/T5yjfY3N-SI/AAAAAAAAAM0/rVYTH7Dw8WI/s1600/Netbeans.png" /></a></div>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script><br />
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Nos ubicamos donde tenemos nuestro seis .jar (Zoho/CloudSQLJDBCDriver/lib) y los adjuntamos todos; Nos debe quedar algo así:</span></div>
</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-nHKFR149eUM/T5ykP2C0FUI/AAAAAAAAAM8/dbHf5sE5EDM/s1600/Netbeans2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="http://4.bp.blogspot.com/-nHKFR149eUM/T5ykP2C0FUI/AAAAAAAAAM8/dbHf5sE5EDM/s320/Netbeans2.png" width="292" /></a></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Listo, ahora colocaremos el código que nos mostrara la información que tenemos en la base de datos que esta en la nube (si no tenemos información o datos colocamos cualquier cosa con tal de ver que todo ha salido bien), La clase de llamara Sample, que es una modificacion de la que esta de ejemplo en los driver que descargamos salvo que coloque una linea indispensable que no tenia y que no me permitía hacer la conexión.</span></div>
</div>
<div>
<span style="font-family: "Courier New", Courier, monospace;"><br />
</span><br />
<br />
<pre class="prettyprint">//$Id$
package zoho;
import java.util.*;
import java.sql.*;
import java.net.URLEncoder;
public class Sample{
//Configure these vars
private static final String APIKEY= "";//your key
private static final String USER = "";//your user name
private static final String PASSWORD = "";//your password
/*
private static final String PROXYSERVER=;
private static final String PROXYPORT="80";
private static final String PROXYUSERNAME=;
private static final String PROXYPASSWORD=;
*/
private static final String DB_NAME= "";//your db name
private static final String TABLE_NAME="";//your table name
public static void main(String args[]) throws Exception{
if (APIKEY.length() == 0){
throw new RuntimeException("Open this file and configure the variables");
}
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
DatabaseMetaData dmd = null;
try{
Class.forName("com.zoho.cloudsql.jdbc.ZohoReportsDriver");
Properties conProps = new Properties();
conProps.put("ZOHO_API_KEY",APIKEY);
conProps.put("user",USER);
conProps.put("password",PASSWORD);
/*
conProps.put("PROXYSERVER",PROXYSERVER);
conProps.put("PROXYPORT",PROXYPORT);
conProps.put("PROXYUSERNAME",PROXYUSERNAME);
conProps.put("PROXYPASSWORD",PROXYPASSWORD);
*/
conn = DriverManager.getConnection("https://reportsapi.zoho.com/api"// No I18N
+ "/" + URLEncoder.encode(USER,"UTF-8")
+ "/" + URLEncoder.encode(DB_NAME,"UTF-8"),
conProps);
String sql = "select * from " + TABLE_NAME + " limit 5";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
while (rs.next()){
System.out.println("\n");
for(int i = 1;i <= rsmd.getColumnCount();i++){
System.out.print(rs.getObject(i));
System.out.print("\t");
}
}
}finally{
if (rs!= null){try { rs.close(); } catch (Exception e){ e.printStackTrace();}}
if (rs!= null){try { stmt.close(); } catch (Exception e){ e.printStackTrace();}}
if (rs!= null){try { conn.close(); } catch (Exception e){ e.printStackTrace();}}
}
}
}
</pre>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">En la variable APIKEY se coloca el AP IKEY que generamos anteriormente y que ya detalle.</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">En las variables USER, PASSWORD colocamos el usuario y contraseña que usamos para crear nuestro login el la pagina de Zoho.</span></div>
<div style="text-align: justify;">
<span style="font-family: Arial, Helvetica, sans-serif;">Por ultimo las variables DB_NAME, TABLE_NAME son el nombre de la base de datos y la tabla que creastes en la nube de Zoho y que consultaras con la aplicación.</span> <span style="font-family: Arial, Helvetica, sans-serif;"> </span> <span style="font-family: Arial, Helvetica, sans-serif;">---------------------------------------------------------------------------------------------------------</span> <span style="font-family: Arial, Helvetica, sans-serif;">Por ultimo les dejo una modestas aplicación de escritorio hecha en Java para conectarse con una base de datos en la nube Zoho:</span> <span style="font-family: Arial, Helvetica, sans-serif;"> </span> <br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif; font-size: large;"></span> <br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://4.bp.blogspot.com/-r3kkwdcmIuk/T51vOXC7imI/AAAAAAAAANI/FGm5Dn73oT0/s1600/zoho+java.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="243" src="http://4.bp.blogspot.com/-r3kkwdcmIuk/T51vOXC7imI/AAAAAAAAANI/FGm5Dn73oT0/s320/zoho+java.png" width="320" /></a></div>
<span style="font-family: Arial, Helvetica, sans-serif;"> </span> <span style="font-family: Arial, Helvetica, sans-serif;">Como siempre, deseando serles de ayuda.</span> <span style="font-family: Arial, Helvetica, sans-serif; font-size: x-large;"> </span><span style="font-size: x-large;"> <a href="https://goo.gl/13RR3z" target="_blank"><span style="color: #274e13; font-family: Arial, Helvetica, sans-serif;">Clic aquí para descargar aplicación..</span></a></span> </div>
</div>
<script async="" src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script><br />
<!-- intermedio --><br />
<ins class="adsbygoogle" data-ad-client="ca-pub-4876397328130313" data-ad-slot="2944151920" style="display: inline-block; height: 90px; width: 728px;"></ins><br />
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
<div class="blogger-post-footer">http://feeds.feedburner.com/UsandoJava</div>Rey Salcedohttp://www.blogger.com/profile/00453859164109586456noreply@blogger.com6