Incrementos

Una de las características básicas de cualquier lenguaje son los incrementos y decrementos, para ello veremos cómo hacerlo en Objective C:
        int numero=0;
        
        
  • Preincremento: ++numero;
  • Postincremento:  numero++;
  • Predecremento: –numero;
  • Postdecremento: numero–;
La diferencia fundamental entre un pre y un post es que se ejecuta antes o después, respectivamente, el incremento o el decremento que el resto de operadores.

Arrays

El uso de arrays sucede como en otros lenguajes, permite tener un conjunto de elementos de un determinado tipo para almacenarlos en memoria.

Inicialización

Veamos un ejemplo de inicialización:
int array[5];
En este caso estamos creando un array de 5 números enteros. En la declaración colocamos primero el tipo de los datos luego en nombre de la variable y para finalizar el número de elementos que conformarán el array.
Para acceder a los elementos deberemos realizarlo mediante el índice. El índice va desde 0 hasta el número de elementos menos 1. En este ejemplo 0 será el primer elemento y 4 el último. 
Veamos un ejemplo de inicialización de un elemento del array:
array[0]=1;
 En este caso estamos dándole el valor 1 al primer elemento del array, el que tiene el índice 0.
Otro ejemplo:
array[4]=5;
En este caso estamos poniendo el valor 5 en el último elemento del array, cuyo índice es 4.

Bucles

Otras estructuras básicas son los bucles para ello veremos todos los distintos tipos en Objetive C mediante ejemplos de uso de arrays.

For

El bucle for, o como decía mi profesor de facultad, la ametralladora, permite realizar tres sentencias en su declaración.  Veamos un ejemplo:
        int i;
        for (i=0; i<5; i++) {
            array[i]=i;
            NSLog(@”%d”,i);
        }
En este caso estamos intentando recorrer un array de 5 posiciones. Tras declarar la variable i, empieza  la ejecución del for. Analicemos las tres partes del bucle. 
Primero está la inicialización, en este caso es la primera parte que hay definida entre los (), en la que inicializamos la variable i y le ponemos valor 1. Esto es lo primero que se ejecutará al entrar en el bucle. 
Después de esto entramos a la condición, que es lo siguiente que se ejecutará, siempre que se cumpla la condición seguiremos dentro del bucle. Como en el ejemplo se cumple pasaremos a ejecutar lo que hay dentro del bucle, es decir lo que haya dentro de las {}.
En el ejemplo realizamos una inicialización de los valores de un array, y se utiliza i para reflejar la variación del índice entre 0 y 4. Es decir en las 5 vueltas que da el bucle, i valdrá 0,1,2,3 y 4. Luego explicaremos porqué.
Por último está el incremento, que es lo que se ejecutará siempre que termine la ejecución del bucle en cada iteración. En este ejemplo estamos realizando un incremento en 1 de la variable i. Éste es el motivo de que el bucle de 5 vueltas completas ya que en cada vuelta i se incrementa en 1, por que cumplirá la condición impuesta hasta que i valga 5. 

While

El bucle while funciona de una manera similar, al bucle for salvo que no tiene inicialización ni incremento, pongamos un ejemplo que funcione de una manera similar al anterior bucle for:
        i=0;
        while (i<5) {
            array[i]=i;
            NSLog(@”%d”,array[i]);
            i++;
        }
Como puede verse el bloque de código principal del bucle es casi idéntico, salvo por el incremento que está al final del bloque. Dicho incremento pretende simular el comportamiento del bucle for anterior. Así como la inicialización de la variable i, que actúa justo antes de entrar al bucle para colocar el valor de i a 0. 
De esta manera ambos bucles funcionan igual, ya que el bucle ejecutará las iteraciones mientras que se cumpla la condición ya que la inicialización, la condición y el incremento son los mismos en ambos bucles, ambos funcionan igual.

Do while

La diferencia del bucle do-While respeto al while es que el do-while al menos entrará una vez antes de comprobar la condición. Esto se puede ver mejor con un ejemplo:

        i=0;
        do{
            array[i]=i;
            NSLog(@”%d”,array[i]);
            i++;

        }while(i<5);

En este ejemplo, podemos ver la sintaxis principal, el while se coloca al final del bucle son su condición y después se pone un ;

En este ejemplo, también se ejecutará 5 veces el bucle, ya que la inicialización, la condición y el incremento son iguales al anterior ejemplo. Salvo que si alteráramos la condición para que finalizase antes. Pero podemos decir que un bucle do-while siempre se ejecutará al menos una vez.

break y continue

Estas dos palabras reservadas nos van a permitir alterar el comportamiento de los bucles, veamoslas en funcionamiento con un ejemplo:

        for (i=0; i<5; i++) {
            if(i<2){
                continue;
            }
            if(i==4){
                break;
            }
            NSLog(@”%d”,i);

        }

Como podemos ver en el ejemplo, estamos ante un bucle for que inicialmente debería dar 5 vueltas. Por su inicialización, condición e incremento. Pero dentro del bloque de código tenemos dos sentencias condicionales if.

En el primer if, se comprueba si i<2 por lo que se ejecutará al menos mientras que i es igual a 0 o a 1. Que es lo que sucederá en las dos primeras iteraciones del bucle. Por lo que en ambas iteraciones se ejecutará al continue. Lo que provoca el continue es que se vaya al final del bucle sin ejecutar nada más, se ejecute el incremento y se vuelva a analizar la condición. Por lo que no se ejecutará ni el segundo if ni el NSLog en las dos primeras vueltas.

En la tercera vuelta, no se cumple el primer if, ya que i vale 2, ni tampoco se cumple el segundo if ya que i no es igual a 4. Por lo que sí se ejecutará el NSLog. En la cuarta vuelta pasará lo mismo, porque i es igual a 3.

Pero en la quinta vuelta, i vale 4. Por lo que se sigue sin cumplir la condición del primer if, pero sí se cumple la condición del segundo if. Ya que i vale 4. Entonces se ejecutará el bloque de código correspondiente a ese if.

Ahí es cuando nos encontramos con el break. Lo que sucede al ejecutar un break, es que nos obliga a salirnos del bucle sin ejecutar nada más del bloque de código que tengamos. Por lo que no ocurrirá ninguna iteración más.

La salida completa por consola de este trozo de código podría ser similar a la siguiente:

2014-03-15 10:56:28.987 03_estructuras_de_control_bucles[4150:303] 2
2014-03-15 10:56:28.987 03_estructuras_de_control_bucles[4150:303] 3

Como habíamos explicado anteriormente sólo hay dos salidas por pantalla, cuando i vale 2 o 3.