jueves, 24 de febrero de 2011

Usos y Diferencias del For y Foreach

Primero voy a comenzar explicando el uso de ambos. Como muchos sabrán, su uso es muy similar, ambos son ciclos que realizan determinada acción. En nuestro ejemplo, simplemente vamos a recorrer un array y mostrarlo.

En Visual Basic 6.0

FOR FOR EACH
For i = 0 To 9
    MsgBox vector(i)
Next i
For Each vec In vector
    MsgBox vec
Next

En C#
FOR FOREACH
for (int i = 0; i < vector.Length; i++)
{
   MessageBox.Show(vector[i].ToString());
}
foreach (int vec in vector)
{
   MessageBox.Show(vec.ToString());
}

En PHP
FOR FOREACH
for ($i = 0; i < count($vector); $i++)
{
   echo $vector[$i];
}
foreach ($vector as $vec)
{
   echo $vec;
}

Como podemos observar, en los 3 lenguajes que citamos, aparentemente el foreach es más cómodo a la hora de escribir. Pero que pasa con el rendimiento? es el mismo?
No, no es lo mismo internamente consume mas recursos el foreach, no es lo mismo ir incrementando un índice e ir a buscar a memoria el dato con ese índice, que traer todo el elemento entero. En nuestro caso el elemento es unicamente un entero, pero que pasa si la estructura es mas compleja? Ahí notamos la diferencia aunque esto es un decir, debido a que con la velocidad de procesamiento, sería imperceptible.

Mi Sugerencia

A mi particularmente no me agrada el tema de usar ciclos, trato de evitarlo siempre que pueda (por ejemplo utilizando Reflexión en caso de ser posible). Cuando el ciclo es realmente necesario, les voy a ser sincero me inclino más por el foreach, solo por una cuestión de comodidad, porque como mencionamos anteriormente su rendimiento es mucho peor con respecto al del for.

Auto-Bienvenida

En esta primer publicación me voy a tomar el atrevimiento de "autobienvenirme" al mundo de los Blogs. Aprovecho también para presentarme. Mi nombre es Nicolás Bocassi, estoy a materias de recibirme de Técnico Superior en Informática Aplicada en el INSPT de la UTN, actualmente trabajo como desarrollador en una empresa de sistemas.

Este Blog esta orientado al aprendizaje del desarrollo de sistemas, ya sean web como de escritorio, y por qué no también teléfonos móviles.


Cualquier sugerencia, duda, o lo que necesiten para contactarme, lo podrán hacer al mail que figura en mi perfil. No importa cual sea el lenguaje, con preguntarme no pierden nada, de igual modo van a recibir una respuesta mia por si o por no.

A medida que pase el tiempo espero que el Blog vaya creciendo y nos pueda servir a todos.


Les comento cuales son los lenguajes y herramientas que más domino:

- Visual Basic 6.0
- Asp.net, Vb.net y C#
- HTML, CSS, javascript, Ajax y PHP 
SqlServer y MySql
C / C++ 
- Lisp 
- Java 
- Microsoft Excel, Word y Access