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.
GOTOSENTENCIAS DE SALIDALa 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...
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.
EXITY 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.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.