Obtener el tamaño de un array o vector en PHP

El querer obtener el tamaño de un array o vector es una tarea recurrente en la programación, así que es importante saber como obtenerlo. El tamaño de un array no es más que la cantidad de elementos que contiene o el número de elementos con los que fue creado.

A diferencia de otros lenguajes de programación en donde normalmente utilizamos el atributo “length” que tienen los arrays, en PHP se utiliza la función “sizeof()” que no es más que un alias de la función “count()”, se utiliza de la siguiente forma:

// Le asignamos valores a las posiciones del array

$mi_array[0]=1;

$mi_array[2]=453;

$mi_array[3]=13445;

//Calculamos el tamaño del array y lo guardamos en una variable.

//También podemos usar $tamaño = count($mi_array);

$tamaño = sizeof($mi_array);

//Imprimimos el resultado que en este caso será '3'.

echo "El tamaño del array es: ".$tamaño;

Fácil, pero seguramente más de uno al empezar con este lenguaje intentará hacerlo de la manera ‘tradicional’ en otros lenguajes como Java que es con el atributo ‘length’.

Consejos Para Programar Aplicaciones Gráficas Con Java En Swing

Uno de los mayores dolores de cabeza para los que programamos en Java es el desarrollo de aplicaciones con interfaces gráficas hechas en Swing, de hecho la mayoría de nosotros utilizamos algún IDE como NetBeans para facilitarnos esta tarea, no obstante me he encontrado con una serie de consejos para usar Swing, los cuales me han servido bastante y es recomendable tomarlos en cuenta:

  • En la aplicación sólo debe haber un único JFrame, correspondiente a la aplicación principal. Todas las ventanas secundarias deben ser JDialog. Todas las ventanas secundarias deben tener una ventana padre, que es a partir de la cual se despliega. Es decir, todos los JDialog secundarios deben tener como padre al JFrame principal. Si desde un JDialog se va a visualizar otro, este segundo debe tener como padre al primero, y así sucesivamente.
  • Evita en lo posible los JDialog modales, o ten muy en cuenta su jerarquía de padres. El primer JDialog modal no tiene problemas si le pones su padre adecuadamente. Si tienes un JDialog modal visible, no muestres otro JDialog secundario, salvo que también sea modal y sea hijo del anterior. Si pones visibles a la vez dos JDialog modales y no son el uno hijo del otro, tendrásproblemas al intentar escribir en ellos o cerrarlos.
  • Nunca heredes de JFrame o JDialog o JApplet para hacer tus ventanas. Hazlo siempre de un componente que no sea ventana y que no te limite. Si tus ventanas heredan de JPanel, podrás ponerlas siempre que quieras dentro de un JFrame, un JDialog, un JInternalFrame, un JApplet o incluso incrustarlas en otro JPanel. Si tu ventana hereda de JFrame, está condenada a ser un JFrame toda su vida.
  • Reaprovecha las ventanas, no se las dejes al recolector de basura. Si un botón, al apretarlo, visualiza un JDialog, no hagas un new de JDialog cada vez que pulsas el botón. Es mejorhacer sólo un new la primera vez y guardarselo. En las siguientes veces bastará con hacer setVisible(true) y setVisible(false). Para que el recolector de basura libere una ventana, además de lo habitual, hay como minimo que llamar al método dispose() de dicha ventana -cosa que mucha gente no sabe- , para que el sistema de eventos de teclado y ratón eliminentodas las referencias que tienen a ella. De todas formas, incluso así no tengo muy claro que los JDialog se liberen siempre y, desde luego, en versiones anteriores de Java, los JFrame NUNCA se liberaban. La excusa de SUN es que como sólo debía haber un JFrame principal, no tenía sentido liberarlo.
  • Los layouts para situar componentes no son tan complicados, sólo hay que ponerse a ello. No uses el layout null, ya que tu ventana no será redimensionable y puedes tenerproblemas si cambia la fuente de letra, si tu programa se ejecuta en otro sistema operativo, se cambia el look & feel, etc. Una vez que sepas los layouts simples, tenderás a hacer ventanas grandes a base de anidar muchos JPanel que a su vez tienen dentro JPanel que su vez tienen dentro JPanel, todos ellos con un layout simple. Eso hace ventanas muy pesadas y que consumen mucho. Aprende a usar el GridBagLayout para hacer un solo panel con todo. La excepción a esto es que tengas pequeños JPanel reutilizables, como un editor de coordenadas geográficas que pida latitud, norte/sur, longitud, este/oeste, un panel que pida usuario y password, etc.
  • Todos los eventos de ratón y teclado se ejecutan en el mismo hilo que repinta las ventanas. Si en un actionPerformed(), keyPressed(), … tu código tarda mucho o pretendes que se pinte algo en una ventana, simplemente no lo hará hasta que tu código termine. Si tu código en un actionPerformed() va a tardar mucho o tiene que pintar cosas en la ventana, lanza un hilo aparte parahacer esa tarea y termina el actionPerformed() lo antes posible.

Fuente: CasiDiablo

JLabel Multilínea en Java

Normalmente utilizamos las etiquetas en Java con una sola línea de texto, sin embargo a veces es útil ocupar las etiquetas Java con varías líneas de texto en su interior, es decir por renglones por así decirlo, lo malo es que no es que no existe una forma predefinida de poder hacer esto.

Para poder crear una etiqueta JLabel de multiples líneas tendremos que utilizar la siguiente sintaxis:

JLabel etiqueta= new JLabel("<html>Primera línea<br>Segunda Línea</html>");

Como puedes ver la forma es agregando código HTML a nuestra etiqueta, de manera tal que todo el texto de nuestro JLabel este encerrado en las etiquetas <html></html> y utilizaremos la etiqueta <br> para hacer un salto de renglón al igual que en HTML, de esta manera podemos utilizar líneas múltiples en etiquetas swing, pudiendo agregar cuantas etiquetas <br> como renglones queramos.

Una Introducción a Groovy

Muchos se quejan de que Java es complicado, y apoyan lenguajes de programación del tipo Ruby, Python o PHP por ser lenguajes tipo scripting, y necesitando con ellos menos código para lograr su cometido.

Groovy es un lenguaje de programación muy parecido a Java, de hecho podría decirse que está basado en el, ya que un programa en Java es un programa en Groovy también, aquí les dejo una presentación que les dará una introducción más amplia de lo que Groovy es:

Vectores o Arrays en Java

Los vectores o arrays son de mucha utilidad y existen en muchos lenguajes de programación, sin embargo para los programadores novatos la utilización de vectores les resulta confusa al principio, así que trataré de explicarlo de una manera sencilla y funcional.

Normalmente utilizamos variables para guardar valores en Java, dichas variables tienen un tipo y almacenan un valor el cual puede ir cambiando a lo largo del programa, sin embargo muchas veces es necesario guardar mas de un dato del mismo tipo y relacionados entre sí y lo que hacemos es crear una variable para cada valor.

Por ejemplo supongamos que queremos guardar el nombre de 5 personas, lo primero que se nos ocurre es crear 5 variables de tipo String para guardar esos datos:

[java]
String nombre1=javax.swing.JOptionPane.showInputDialog("Escribe el nombre 1");
String nombre2=javax.swing.JOptionPane.showInputDialog("Escribe el nombre 2");
String nombre3=javax.swing.JOptionPane.showInputDialog("Escribe el nombre 3");
String nombre4=javax.swing.JOptionPane.showInputDialog("Escribe el nombre 4");
String nombre5=javax.swing.JOptionPane.showInputDialog("Escribe el nombre 5");
[/java]

Lo malo de esto es que se utilizan demasiadas variables, en este caso tan solo fueron 5 por el ejemplo, pero si hubieran sido 20 nombres entonces el programa se vuelve demaciado extenso y dificil de manejar.

Pues los vectores o arrays nos permiten almacenar multiples valores de un mismo tipo en una sola variable, y nos evitan tener que usar multiples variables para multiples datos de un mismo tipo, en eso rádica su utilidad. De manera que el código anterior utilizando vectores quedaría de la siguiente manera:

String [] nombres = new Strint[5];

for (int i=0;  i "menor que" nombres.length ;  i++){
nombres[i] = javax.swing.JOptionPane.showInputDialog("Escribe el  nombre "+i);
}

Mas simple ¿no lo crees?, ahora veamos poco a poco lo que se hizo, un vector se define de la misma manera que una variable, la diferencia es que lleva un par de corchetes despues del tipo de dato, estos también pueden ir despues del nombre de la variable, la definición de un vector puede ser de cualquiera de las siguientes maneras:

tipo_dato [] variable;

tipo_dato variable [];

Sin embargo un vector no se puede utilizar hasta que sea creado, para ello usaremos la palabra reservada “new”, en donde también definiremos el tamaño del vector, es decir el número de datos del mismo tipo que puede almacenar. Esto se hace de la siguiente forma:

variable = new tipo_dato [tamaño];

donde variable es el nombre de la variable previamente definida, tipo_dato es el tipo de dato utilizado para definir la variable, y tamaño es un número entero positivo que simboliza el número de elementos que podrá guardar el vector.

El paso anterior puede hacerse individualmente, o en conjunto con la definición de la variable, por ejemplo el siguiente ejemplo también es valido:

int [] edad =  new int [10];

En donde estamos definiendo una variable vector de tipo entero (int) y al mismo tiempo hacemos la creación del vector con una capacidad de 10 elementos. Despues de esto ya podemos utilizar nuestro vector, pero aún no sabemos como funciona.

Es simple, los vectores se manejan por medio de un indice númerico entero, en donde el indice representa la posicion del vector. ¿Confuso? No te preocupes vamos a verlo con un ejemplo, suponiendo que tomemos el vector “edad” definido arriba podríamos guardar un dato entero en el vector en cualquiera de sus posiciones:

// Guardamos el valor entero "25" en la posición "4" de nuestro vector "edad"

edad [4]  = 25;

// Guardamos el valor entero "334" en la posición "7" de nuestro vector "edad"

edad [7]  = 334;

Como puedes ver se pueden guardar datos en los vectores en posiciones no consecutivas aunque por lo general no lo hagamos así, hay que tener en cuenta que el indice debe estar comprendido entre cero y el tamaño del vector menos 1, es decir que en el caso de nuestro vector edad, el indice puede ser de cero a 9 (ya que 10 – 1 = 9 ) por lo que si ponemos en el indice algo como esto:

edad [10]= 666 ;

Nos dará un error debido a que estamos queriendo accesar a un indice no existente, por ello es que hay que ser cuidadosos a la hora de manejar los indices de un vector.

En el ejemplo de los “nombres” vimos que utilizamos un ciclo para pedir los datos, supongo que ahora ya entenderás porque lo utilizamos, el ciclo inicializa la variable “i” en cero porque el cero es el indice cero es la primera posición de un vector, y condicionamos a que entre al ciclo mientras el indice sea menor que el tamaño del vector, para ello hacemos uso del atributo “length” que es una variable que todos los vectores tienen en donde se guarda el tamaño del vector.

for (int i=0;  i "menor que" nombres.length ;  i++){
//En lugar de utilizar un indice fijo podemos utilizar una variable en este caso "i"
nombres[i] = javax.swing.JOptionPane.showInputDialog("Escribe el  nombre "+i);
}

En realidad “menor que” es el signo “<” pero por alguna razón no me deja mostrarlo en el código así que si quieres probarlo, recuerda sustituirlo.

Esto es lo básico sobre arrays o vectores, es importante destacar que puedes utilizar cualquier tipo de dato para definir un vector, desde los primitivos hasta los tipo objeto, y que no puedes imprimir el valor de un vector directamente ya que esto imprimiría la referencia del objeto, para imprimir un vector hay que imprimir cada uno de sus indices.

¿Alguna duda? No olvides comentarla Wink