Buscar datos dentro de arreglos C# - Método Lineal
En el siguiente ejemplo se muestra cómo realizar búsquedas dentro de un arreglo de manera lineal.
Ejemplo...

Leer el resto de la entrada...
En el siguiente ejemplo se muestra cómo realizar búsquedas dentro de un arreglo de manera lineal.

Leer el resto de la entrada...
En el siguiente ejemplo se muestra cómo realizar el ordenamiento de arreglos de enteros, usando el método burbuja en C#.
Leer el resto de la entrada...
Ejemplos básicos de manipulación de arreglos en C#
Sinopsis: hacer la sumatoria de los elementos de un arreglo.
using System;
class SumarArreglo
{
// metodo Main
static void Main( string[] args )
{
int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int total = 0;
for ( int i = 0; i < a.Length; i++ )
total += a[ i ];
Console.WriteLine( "Suma de todos los elementos del array: " + total);
} // fin de Main
} // fin de la clase SumarArreglo
Resultado...
Sinopsis: crear un histograma (barras a base de asteriscos) a partir de unos datos. Leer el resto de la entrada...
El siguiente es un pequeño programa que usando el método getenv de la clase System, devuelve información del sistema operativo y de las variables de entorno. La salida del mismo es algo como esto:
Leer el resto de la entrada...
Se trata de una implementación chichi del famoso Juego de la Vida en Java, ya que Burnhack me ha picado con el gusanillo de la curiosidad
En fin... el programa simula un espacio de células que cumplen con las reglas básicas del juego, permite dibujar nuevos patrones, generar granjas aleatorias, y poner en marcha automática o manualmente. De paso me sirvió para explicarle a mis hermanos el porqué del emblema hacker

Puedo decir que me divertí mucho programando, y que a la vez me da pena no haber podido dedicarle más de tres días: el resultado es un programa que funciona bien cuando se ejecuta de manera normalita, pero con la opción de zoom hay problemas. Y aquí les doy un par de consejos: puesto que al principio el programa lo iba a hacer junto con Burnhack, utilicé una clase que él utilizaba llamada BufferedImage (para dibujar las figuras). Luego, cuando me dí cuenta de que no entendía ni mierda nada del código de mi amigo, decidí hacer la lógica desde cero; y aquí van los consejos:
Por supuesto, el programa está disponible para que lo estudien, lo copien, lo regalen, etc. Espero le sirva a alguien. Les quedo debiendo la explicación porqué es algo largo
Nota: los iconos los he tomado de Icojoy
#compilación
javac Glider.java
#ejecución normal
java Glider
#ejecución con la característica zoom (umm, que mal programador soy
)
java Glider --zoom

En este artículo utilizaré un pequeño ejemplo para explicar cómo manipular documentos XML usando XERCES Java Parser. En este primer ejemplo usaré el API DOM, y la utilizaremos para generar un archivo XML y guardarlo en disco, y posteriormente procesaremos (parsearemos) dicho archivo para leer su información.
Nota: Sino tienes claro qué es un parser XML, qué es un API XML para Java y cuáles están disponibles, o aún tienes algunas dudas en relación con Java y XML, puedes/debes leer este pequeño artículo.
En esta ocasión utilizaremos el API DOM para generar un archivo XML, que guardará información acerca de un listado de descargas ficticio. Como resultado, nuestra aplicación generará el siguiente documento XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Descargas>
<descarga id="1">
<titulo>Libros Java</titulo>
<ruta>http://casidiablo.net/libros.zip</ruta>
<hits>2546</hits>
</descarga>
<descarga id="2">
<titulo>Libros C Sharp</titulo>
<ruta>http://casidiablo.net/libroscs.zip</ruta>
<hits>1654</hits>
</descarga>
</Descargas>
En el cual tenemos un elemento llamado descarga que contiene un atributo llamado id; además posee tres nodos hijos: titulo, ruta y hits. Teniendo en cuenta esto crearemos un pequeño bean (clase Descargas.java), que contiene dichos datos:
public class Descargas {
//Variables
private int id;
private String titulo;
private String ruta;
private int hits;
//Constructor de la clase
public Descargas(int id, String titulo, String ruta, int hits){
this.id = id;
this.titulo = titulo;
this.ruta = ruta;
this.hits = hits;
}
//Metodos Setters y Getters
public void setID(int id) {
this.id = id;
}
public int getID() {
return this.id;
}
//etc... (AL FINAL DEL ARTÍCULO PUEDES DESCARGAR EL EJEMPLO COMPLETO)
}
Más adelante utilizaremos la clase GenerarXML.java, quien se encargará de crear el archivo XML. De momento detallaremos los pasos básicos para realizar tareas de ese tipo:
En nuestro ejemplo, la invocación a los métodos que realizan estas tareas se encuentra en el método main:
public static void main(String args[])
{
GenerarXML generador = new GenerarXML();
// A. Crear el objeto(s) a Descargas
Descargas descarga = new Descargas(1, "Libros Java", "http://casidiablo.net/libros.zip", 2546);
Descargas descarga2 = new Descargas(2, "Libros C Sharp", "http://casidiablo.net/libroscs.zip", 1654);
// B. Generar un documento XML usando Document
generador.generaDocumentoXML();
// C. Generar XML para el/los objeto(s)
generador.generarDocumentoXMLDescarga(descarga);
generador.generarDocumentoXMLDescarga(descarga2);
// D. Obtener el código XML
String textoXML = generador.obtenerTextoXML();
generador.guardarDocumentoXML(textoXML);
System.out.println(textoXML);
}
Veamos con más profundidad cómo funciona el segundo paso (Crear un objeto Document que contendrá el documento XML):
public void generaDocumentoXML() {
try {
// 1. Crear objeto DocumentBuilderFactory
DocumentBuilderFactory dbFactory = DocumentBuilderFactoryImpl.newInstance();
// 2. A partir del objeto DocumentBuilderFactory crear un objeto DocumentBuilder
DocumentBuilder docBuilder = dbFactory.newDocumentBuilder();
// 3. Generar el documento XML
documentoXML = docBuilder.newDocument();
} catch (Exception e) {
System.out.println("Error : " + e);
}
// 4. Crear el elemento "descargas"
descarga = documentoXML.createElement(TAG_DESCARGAS);
// 5. Agregar al documento principal
documentoXML.appendChild(descarga);
}
Después de esto, ya tenemos listo nuestro objeto Document en donde crearemos el documento XML. El paso siguiente será alimentar el documento XML con la información de nuestros objetos, lo cual se hace en el método generarDocumentoXMLDescarga:
public void generarDocumentoXMLDescarga(Descargas descargas)
{
Element elemento;
Element item;
// 1. Crear elemento
elemento = documentoXML.createElement(TAG_DESCARGA);
// 2. Asignar un atributo
elemento.setAttribute(TAG_ID, ""+descargas.getID());
// 3. Aniadir elemento al documento
descarga.appendChild(elemento);
// a. Crear item
item = documentoXML.createElement(TAG_TITULO);
// b. Asignar un dato al item
item.appendChild(documentoXML.createTextNode(descargas.getTitulo()));
// c. Aniadir el item
elemento.appendChild(item);
// todos los items se crean sigiuendo el patron a, b, c
// el código fuente completo se encuentra
//disponible para su descarga al final de este artículo
}
Para generar una salida del documento XML se utilizamos el método generaTextoXML() el cual devuelve un string que contiene el documento XML:
private String generaTextoXML() {
StringWriter strWriter = null;
XMLSerializer seliarizadorXML = null;
OutputFormat formatoSalida = null;
try {
seliarizadorXML = new XMLSerializer();
strWriter = new StringWriter();
formatoSalida = new OutputFormat();
// 1. Establecer el formato
formatoSalida.setEncoding(XML_ENCODING);
formatoSalida.setVersion(XML_VERSION);
formatoSalida.setIndenting(true);
formatoSalida.setIndent(4);
// 2. Definir un objeto donde se generara el codigo
seliarizadorXML.setOutputCharStream(strWriter);
// 3. Aplicar el formato
seliarizadorXML.setOutputFormat(formatoSalida);
// 4. Serializar documento XML
seliarizadorXML.serialize(documentoXML);
strWriter.close();
} catch (IOException ioEx) {
System.out.println("Error : " + ioEx);
}
return strWriter.toString();
}
El string generado por generaTextoXML() podemos imprimirlo directamente en pantalla, o escribirlo en un archivo como lo hace el método guardarDocumentoXML():
public void guardarDocumentoXML(String texto) {
try {
OutputStream fout = new FileOutputStream(NOMBRE_ARCHIVO_XML);
OutputStream bout = new BufferedOutputStream(fout);
OutputStreamWriter out = new OutputStreamWriter(bout, JAVA_ENCODING);
out.write(texto);
out.flush();
out.close();
} catch (UnsupportedEncodingException e) {
//etc, bla, bla, catchichurri
}
El método guardarDocumentoXML() un objeto FileOutputStream para escribir los datos del documento XML en un archivo (cuyo nombre define la variable NOMBRE_ARCHIVO_XML).
Continúa leyendo la segunda parte, en donde aprenderemos a Parsear archivos XML. Vamos parce!