-CURSO DE C-

Como ya dije en el numero anterior, en esta ocasion toca explicar las sentencias de salto y las sentencias de salida. Asi que no voy a meter mas rollo... y comezemos con las de salto.

SENTENCIAS DE SALTO

Las sentencias que hemos visto hasta este momento, modificaban el orden logico de ejecucion de un programa, siempre que se cumpliese alguna condicion. Pero este orden de ejecucion puede ser alterado. Y aqui es donde entran las sentencias de salto. Transfieren la ejecucion desde el punto del programa donde aparecen a otro punto. Pero el uso de las sentencias de salto no es recomendable, menos cuando buscamos un aumento de la velocidad de ejecucion.
 

GOTO

La sentencia goto es un salto incondicionan hacia una etiqueta, la cual no es mas que un identificador, seguido de dos puntos (por ejemplo, capullo:)

Ejemplo:

printf("El primero");
goto capullo:
printf("El segundo");
capullo:
printf("El fin");

Como podeis ver, el programa escribe "El primero" en la pantalla. A continuacion tiene un salto, hacia el identificador capullo, y despues escribe "El fin". ¿Cual seria el problema de este programa? Que el programa nunca ejecutara la instruccion que escribe "El segundo", ya que antes de inciarse, la salta. En estos casos, el compilador nos avisaria, que esa instruccion no se ejecutara, para que podamos solucionar el posible problema.

BREAK

Esta sentencia puede ser utilizada en el interior de una sentencia de repeticion, o en una condicional switch. Para ver su funcionamiento, veamos el siguiente ejemplo.

Ejemplo:

for (int numero=1; numero<200; numero++)
{
    printf("%u",numero);
if (numero==5) break;
}

Esta sentencia deberia ejecutarse, mientras el valor de numero no sea 200, pero en el interior del bucle tenemos una if que va a salir del bucle, cuando el valor de numero sea 5. La salida de este fragmenteo de un programa seria:

12345

Este programa, tambien se podria haber programado, utilizando la anterior sentencia GOTO, el programa quedaria de la siguiente forma:

for (int numero=1; numero<200; numero++)
{
    printf("%u",numero);
if (numero==5) goto Fin;
}
Fin:

CONTINUE

Esta sentencia solo puede ser empleada en el interior de una sentencia de repeticion, es un salto incondicional al final del bucle, no al exterior del bucle. Continuando con el ejemplo anterior...

Ejemplo:

for (int numero=1; numero<200; numero++)
{
    if (numero==5) continue;
    printf("%u",numero);
}

Y esto mismo, con la sentencia Goto, quedaria de la siguiente manera:

for (int numero=1; numero<200; numero++)
{
    if (numero==5) goto Capullo;
    printf("%u",numero);
    Capullo:
}

En esta ocasion, el bloque de sentencias se va a ejecutar mientras se cumpla la ocondicion de la sentencia fot, pero cuando numero sea = 5, su valor no saldra en pantalla. La salida del programa seria la siguiente:
1234678...
 

SENTENCIAS DE SALIDA

Las sentencias de salida son un tipo especial de sentencias de salto. Se diferencia en que el uso de las sentencias de salida, en ocasiones, es necesario y no incorrecto.
 

EXIT

Con Exit, finalizamos el programa en un punto cualquiera de este. Recibe un parametro, que es el codigo de retorno que va a devolver el programa al sistema operativo.

Ejemplo:

#inculde <stdio.h>
#include <stdlib.h>

void main()
{
printf("Se inicia el programa.\n");
exit(0)
printf("El programa ya a finalizado.\n");

Como podeis ver, se ejecutan solo las tres primeras sentencias, puesto que la tercera finaliza la ejecucion del programa. La salida de este programa seria:

Se inicia el programa.

RETURN

Esto es un salto incondicional al final del cuerpo de una funcion. En caso de que se incluya en la funcion main, su efecto es el mismo que el de la funcion exit.
 

Y esto es todo... por fin hemos acabado las sentencias de contro :D Ahora, como ya sabeis, lo mejor es practicar un poco lo aprendido, y... hasta el proximo numero.
 
The Punisher