jueves, 26 de noviembre de 2009

Parámetros para feeds RSS

Parámetro
Descripción
Valores admitidos
Ejemplo
max-resultsLimita el número máximo de resultados. El valor por defecto es 25. El valor máximo es 100.
25, 1-100?max-results=25
start-indexSelecciona el primer resultado a mostrar.
1, valorNumérico?start-index=26
dateLimita los resultados al rango de fechas especificado
MMDDYYYY-MMDDYYYY?date=01011980-12311989
sortEspecifica el orden de los resultados
relevance, date_ascending, date_descending?sort=date_ascending
category
Limita los resultados a la categoría especificada
cualquierCategoría
?category=ejemplo
orderby
Ordena los resultados según la fecha de publicación o de actualización
published, updated
?orderby=updated
alt
Formato de salida
atom, rss, json, json-in-script
?alt=rss
published-min published-maxEstablece rango de resultados por fecha de publicación
Fecha en formato RFC3339
?published-max=2008-12-31
updated-min, updated-maxEstablece rango de resultados por fecha de actualizaciónFecha en formato RFC3339?updated-max=2008-12-31
callback
Usado con json-in-script para especificar el nombre de la función callback



Utilización:
http://blogname.blogspot.com/feeds/posts/default?....

Para obtener sólo los de una etiqueta:
http://blogname.blogspot.com/feeds/posts/default/-/labelname

Para obtener sólo los de varias etiquetas
http://blogname.blogspot.com/feeds/posts/default/-/labelname1/labelname2

Para obtener sólo los comentarios
http://blogname.blogspot.com/feeds/comments/default

Vectores

http://javiergarbedo.es/index.php/apuntes/31-arrays/124-vectores

Arrays

http://javiergarbedo.es/index.php/apuntes/31-arrays/123-arrays

lunes, 23 de noviembre de 2009

Depuración de programas con NetBeans

La depuración (debug) permite examinar las aplicaciones para buscar errores, ya que posibilita observar las líneas que se van ejecutando, así como los valores que van tomando las variables en cada paso.

Para realizar la depuración de un programa, se debe establecer en primer lugar un punto de interrupción donde debe pararse la ejecución de la aplicación. Esto se consigue con alguna de las siguientes acciones sobre la línea de código en la que se desee establecer el punto de interrupción:
  • Clic en el margen izquierdo
  • Menú contextual > "Ocultar/Mostrar línea de punto de interrupción"
  • Pulsando la combinación de teclas: Ctrl + F8
  • Menú "Depurar > Ocultar/Mostrar línea de punto de interrupción"
Al realizar alguna de esas acciones, se marca en color rosado la línea que se ha convertido en un punto de interrupción, y se muestra un pequeño cuadrado en el margen izquierdo.

debug01
Una vez establecido al menos un punto de interrupción, se debe ejecutar la aplicación en modo depuración. Esto se puede llevar a cabo sobre el proyecto o sólo sobre el archivo actual:
  • Depurar archivo actual:
    • Menú contextual > "Debug nombreArchivo"
    • Menú "Depurar > Debug nombreArchivo"
    • Pulsando la combinación de teclas: Ctrl + Mayúsculas + F5
  • Depurar proyecto:
    • Menú "Depurar > Debug Main Project"
    • Icono "Debug Main Project"
      debug02
Al llegar la ejecución de la aplicación al punto de interrupción establecido, se destaca en color verde la línea de código en la que se encuentre la ejecución.

debug03
En la parte inferior se muestra la ventana de observación de las variables locales, en la que se puede comprobar el valor que va tomando cada variable.

A partir del momento en que se para la ejecución del programa se puede continuar con la ejecución línea a línea utilizando la opción "Continuar ejecución":
  • Pulsando la tecla F8
  • Menú "Depurar > Continuar ejecución"
  • Icono "Continuar ejecución"
    debug04
Así se va mostrando en verde la línea que se va ejecutando en cada momento, y se van actualizando en la ventana inferior los valores que van tomando las variables locales.

debug05
En caso de que se desea que el programa continúe la ejecución sin más paradas, se dispone de la opción "Continuar":
  • Pulsando la tecla F5
  • Menú "Depurar > Continuar"
  • Icono "Continuar"
    debug06

jueves, 19 de noviembre de 2009

Control de excepciones

Una excepción es un evento que ocurre durante la ejecución de un programa y detiene el flujo normal de la secuencia de instrucciones del programa.

El control de dichas excepciones se utiliza para la detección y corrección de errores. Si hay un error, la aplicación no debería "morirse".

Para manejar las excepciones en Java, se actúa de la siguiente manera:
  • Se intenta (try) ejecutar la sentencia o bloque de sentencias que pueden producir algún error.
  • Se captura (catch) las posibles excepciones que se hayan podido producir, ejecutando una serie de sentencias que informen o intenten resolver el error.
  • Finalmente (finally) se puede ejecutar una serie de sentencias tanto si se ha producido un error como si todo ha ido bien.
Se debe utilizar el siguiente formato:

    try
    {
        Sentencias que pueden producir error
    }
    catch(ClaseExcepción variableRecogeExcepción)
    {
        Sentencias que informan o procuran solucionar el error.
        Puede haber varios catch.
        La variable no se tiene declarar antes.
    }
    finally
    {
        Sentencias que deben ejecutarse en cualquier caso (opcional)
    }
El elemento ClaseExcepción que aparece junto a catch, debe ser una de las clases de excepción que utiliza Java. Al generarse el error durante la ejecución podemos comprobar qué clase de excepción se ha producido. De forma general, la clase Exception recoge todos los tipos de excepciones. Si se desea un control más exhaustivo del tipo de error que se produce, se debe concretar más la clase de excepción correspondiente.

Por ejemplo, cuando se intenta convertir al tipo de dato numérico entero un dato introducido por el usuario en un campo de texto se utiliza una sentencia como:
    int num = Integer.valueOf(campoNúmero.getText());
Si el valor introducido no es numérico, sino una cadena de caracteres, la llamada a Integer.valueOf produce una excepción, como se puede apreciar en la salida estándar:

try01
Se puede apreciar que se produce una excepción del tipo NumberFormatException, por tanto se debería captura esa excepción para controlar el error.

        try
        {
            int num = Integer.valueOf(campoNúmero.getText());
        }
        catch(NumberFormatException e)
        {
            System.out.println("Error: El valor indicado no es un número");
        }
Si no se tiene claro el tipo de excepción que se quiere controlar, o se quiere controlar cualquier tipo de excepción que se pueda producir, se puede indicar en el catch la clase Exception que es genérica para todas las excepciones, tal como se ha indicado anteriormente.
        try
        {
            int num = Integer.valueOf(campoNúmero.getText());
        }
        catch(Exception e)
        {
            System.out.println("Se ha detectado un error");
        }
Si se desea mostrar qué tipo de error se ha producido se puede utilizar el método toString:

            System.out.println(e.toString);



lunes, 9 de noviembre de 2009

Sentencia for

La sentencia for se caracteriza porque permite repetir un bloque de instrucciones un número de veces fijado de antemano.

Utiliza una variable contador que parte de un valor inicial, se incrementa un según un valor de incremento establecido, y al superar un valor final prefijado se finalizará la ejecución del bucle.

Se debe utilizar el siguiente formato:

    for (Inicialización; Condición; Incremento)
    {

        BloqueDeSentencias;
    }

Donde se utilizan los siguientes elementos:
  • Inicialización: Una sentencia de asignación (o varias separadas por comas) donde la variable de control del bucle toma un valor inicial.
  • Condición: Mientras esta expresión condicional valga true se repetirá el bucle. Se evaluará al inicio de cada repetición del bucle.
  • Incremento: Sentencia (o sentencias) que actualiza la variable de control incrementándola o decrementándola.
El orden de ejecución de una sentencia for es la siguiente:
  1. Inicializar la variable de control del bucle.
  2. Evaluar la condición.
    • Si el resultado es true:
      • Ejecutar BloqueDeSentencias.
      • Incrementar o decrementar la variable de control según la instrucción indicada en Incremento.
      • Volver al punto 2.
    • Si el resultado es false:
      • Ir al punto 3.
  3. Continuar la ejecución del programa.
Ejemplo: Mostrar los 10 primeros números múltiplos de 7.

public class EjemploFor {

    public static void main(String[] args) {
        for(int i=1; i<=10; i++)
            System.out.println(i*7);
    }

}
La instrucción for es una forma compacta de representar un bucle while, siendo la estructura equivalente a la anterior, la presentada a continuación:

        int i=1;
        while(i<=10)
        {
            System.out.println(i*7);
            i++;
        }

Sentencia do-while

La sentencia do-while se caracteriza porque permite repetir un bloque de instrucciones varias veces, ejecutándose obligatoriamente al menos 1 vez. Por lo que se puede ver que es muy similiar a la sentencia while, con la diferencia del número mínimo de veces que se ejecuta el bloque de instrucciones que contiene.

La condición que se establece se evalúa después de ejecutar el bloque de instrucciones que contiene la instrucción do-while.

Se debe utilizar el siguiente formato:

    do
    {
       BloqueDeSentencias;
    } while (condición);
Como siempre, si el bloque de sentencias está formado por una única sentencia, se puede prescindir de las llaves, y hay que destacar que termina con un punto y coma, a diferencia de la sentencia while.

El orden de ejecución de una sentencia do-while es la siguiente:
  1. Ejecutar el bloque de sentencias.
  2. Evaluar la condición.
    • Si el resultado es true, volver al punto 1.
    • Si el resultado es false ir al punto 3.
  3. Continuar la ejecución del programa.
Ejemplo: Generar la secuencia de números siguiente: 1 2 4 7 11 16 22 etc. En ella, se va incrementando cada vez una unidad más respecto a la anterior. La secuencia se debe generar hasta que se alcance el valor máximo que indique el usuario:

ejemploWhile
public class EjemploDoWhile extends javax.swing.JFrame
{

    public EjemploDoWhile()
    {
        initComponents();
    }

    /* Código generado automáticamente no mostrado */

    private void botónGenerarActionPerformed(java.awt.event.ActionEvent evt)                                            
    {                                                
        int numMax = Integer.valueOf(campoMáximo.getText());
        int numActual = 1;
        int incremento = 1;
       
        areaMensajes.setText("");
        do
        {
            areaMensajes.append(String.valueOf(numActual) + " ");
            numActual+=incremento;
            incremento++;
        }while (numActual <= numMax);
    }                                            

    public static void main(String args[])
    {
        java.awt.EventQueue.invokeLater(new Runnable()
        {

            public void run()
            {
                new EjemploDoWhile().setVisible(true);
            }
        });
    }

    private javax.swing.JTextArea areaMensajes;
    private javax.swing.JButton botónGenerar;
    private javax.swing.JTextField campoMáximo;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
}
En este ejemplo conviene observar que si el usuario introduce el valor 0 o cualquier valor negativo, el programa entrará una vez en el bloque de sentencias de la instrucción do-while, mostrando el valor 1.
 

Contador de visitas