Subscribe Twitter Twitter

lunes, 2 de agosto de 2010

Sentencias iterativas en objetive-C: Bucle FOR

¿Cuándo usarlo?

Este tipo de bucle se usa siempre y cuando conocemos el número de veces que se va a ejecutar un determinado código.

Sintaxis

for (inicialización del contador (1); condición de ejecución (2); actualización del contador(3)){

// Código a ejecutar

}

Secuencia de ejecución

1. Se inicializa el contador (1).
2. Se comprueba que el contador cumple la condición de ejecución(2).
2.1 Si cumple la condición se ejecuta el código a ejecutar y se actualiza el contador(3) y volvemos al paso 2.
2.2 Si no cumple la condición se sale del bucle for.

Ejemplo básico:

for (int i=0; i<10;i++) contador =" %d\n">

2010-08-02 02:22:27.912 pruebas[910:207] Contador = 0

2010-08-02 02:22:27.914 pruebas[910:207] Contador = 1

2010-08-02 02:22:27.915 pruebas[910:207] Contador = 2

2010-08-02 02:22:27.915 pruebas[910:207] Contador = 3

2010-08-02 02:22:27.916 pruebas[910:207] Contador = 4

2010-08-02 02:22:27.917 pruebas[910:207] Contador = 5

2010-08-02 02:22:27.918 pruebas[910:207] Contador = 6

2010-08-02 02:22:27.918 pruebas[910:207] Contador = 7

2010-08-02 02:22:27.919 pruebas[910:207] Contador = 8

2010-08-02 02:22:27.920 pruebas[910:207] Contador = 9



Notas:
Se puede declarar el contador fuera de la inicialización del contador.
La actualización del contador puede tomar diferentes formas:
- Incrementar: i++
- Decrementar: i--
- Cualquier otro tipo de modificación es válido, por ejemplo si queremos que se actualice de dos en dos sería de la siguiente manera: i = i + 2

Otro ejemplo:

for (int i=0; i<=10; i=i+2) { NSLog(@"Contador = %d\n",i); }

2010-08-02 02:22:27.920 pruebas[910:207] Contador = 0

2010-08-02 02:22:27.921 pruebas[910:207] Contador = 2

2010-08-02 02:22:27.921 pruebas[910:207] Contador = 4

2010-08-02 02:22:27.922 pruebas[910:207] Contador = 6

2010-08-02 02:22:27.922 pruebas[910:207] Contador = 8

2010-08-02 02:22:27.923 pruebas[910:207] Contador = 10


Otro ejemplo:

for (int i=1; i<30; i="i*3)" contador =" %d\n">

2010-08-02 02:22:27.923 pruebas[910:207] Contador = 1

2010-08-02 02:22:27.924 pruebas[910:207] Contador = 3

2010-08-02 02:22:27.925 pruebas[910:207] Contador = 9

2010-08-02 02:22:27.925 pruebas[910:207] Contador = 27


Ejemplo usando como contador un carácter:

Como ves no es necesario usar un contador de tipo entero para el bucle for.

for (char i='b'; i<'f';i++) { NSLog(@"Letra = %c\n",i); }


2010-08-02 02:22:27.923 pruebas[910:207] Contador = b

2010-08-02 02:22:27.924 pruebas[910:207] Contador = c

2010-08-02 02:22:27.925 pruebas[910:207] Contador = d

2010-08-02 02:22:27.925 pruebas[910:207] Contador = e


Otra versión:

for (char i='b'; i<'l';i=i+2) { NSLog(@"Letra = %c\n",i); }

2010-08-02 02:22:27.929 pruebas[910:207] Letra = d

2010-08-02 02:22:27.930 pruebas[910:207] Letra = f

2010-08-02 02:22:27.930 pruebas[910:207] Letra = h

2010-08-02 02:22:27.931 pruebas[910:207] Letra = j


Como ves solamente el bucle for da mucho juego!!!! :D

3 comentarios:

Frajedo dijo...

Si he entendido bien...
Esto se podría usar o se usa para los juegos... Por ejemplo si ganas 10 puntos eso desencadenará código diciendo: Ganastes! Es eso?

¿Habrá por ejemplo algún video tutorial demostrando esto en un juego simple por ejemplo?
Se que requiere muchos esfuerzo (lo digo por experienza) pero estaría muy bien algo así.

Gracias de antemano...

Noemí dijo...

Hola Frajedo, esto en realidad es una manera de ejecutar un mismo código un determinado número de veces imagínate por ejemplo que tienes que recorrer un array para sumar los valores que contenga: pues se haría así. Tendré en cuenta tu propuesta del juego (de momento openGL sé cero pero nos pondremos con ello también ;) ).

Para el ejemplo que tu pones yo creo que sería mejor un bucle while ya que no sabes cuando el usuario va a llegar a los 10 por lo que en cada iteración lo irías comprobando.

No sé si era a eso a lo que te referias :)
Pasate por el foro :) www.foroiphoneprogramacion.com

Frajedo dijo...

Vale, muchas gracias!
Ahora lo veo más claro todo :D

Publicar un comentario