Diferencia entre revisiones de «Sentencias de salto (Programación)»

Línea 67: Línea 67:
 
*[[Sentencias de selección (programación)|Sentencias de selección (programación)]]
 
*[[Sentencias de selección (programación)|Sentencias de selección (programación)]]
 
*[[Sentencias de iteración (programación)|Sentencias de iteración (programación)]]
 
*[[Sentencias de iteración (programación)|Sentencias de iteración (programación)]]
*[[Sentencias de etiqueta(programación)|Sentencias de etiqueta (programación)]]
+
*[[Sentencias de etiqueta (programación)|Sentencias de etiqueta (programación)]]
 
== Fuente ==
 
== Fuente ==
 
* [http://www.zator.com/Cpp/E4_10_4.htm Sentencias de salto]
 
* [http://www.zator.com/Cpp/E4_10_4.htm Sentencias de salto]

Revisión del 12:07 29 oct 2012

Sentencias de salto (Programación)
Información sobre la plantilla
Concepto:Permiten transferir el control del programa de forma incondicional

Sentencias de salto (programación). Permiten transferir el control del programa de forma incondicional. Existen cuatro de estas sentencias: break, continue, goto, return.

Sentencia break

La sentencia break se usa para salir de forma incondicional de los bucles do, for y while, así como de las sentencias switch de multi-dicisión. Hay que tener en cuenta que en el caso de bucles anidados, break hace salir del bucle interior.

Sintaxis

break;

Ejemplo

switch (c) {
   case 0:
       cout << "Falso" << endl;
       break;
   default:
       cout << "Cierto" << endl;
}

Al contrario que otros lenguajes, C++ no dispone de la opción break (n) para definir el número de niveles que se saltarán hacia fuera en el caso de bucles anidados.

Sentencia continue

La sentencia continue se utiliza en los bucles for, while y do...while. En los primeros el control salta al final del bucle, con lo que el contador se incrementa y comienza otra comprobación. En los while, el control pasa inmediatamente a la condición de control.

Sintaxis:

continue;

Descripción

continue suele utilizarse cuando la lógica del bucle es complicada, de forma que establecer una nueva condición y un nuevo nivel de indentación puede volver esta demasiado profunda.

Ejemplo

void main () {
 for (i = 0; i < 20; i++) {
    if (array[i] == 0)
      continue;
    array[i] = 1/array[i];
 }
}

Sentencia goto

goto es una sentencia de salto incondicional dentro del ámbito de una función.

Sintaxis

goto <etiqueta> ;

Descripción

La sentencia goto permite transferir el control de ejecución a la etiqueta especificada por el identificador <etiqueta> (las etiquetas terminan siempre en dos puntos :). Recordar que la etiqueta debe estar en la misma función que el goto (el ámbito de las etiquetas se limita a la función en que son declaradas).

Comentario

Aunque en tiempos fue muy popular y los programas estaban llenos de "gotos" con saltos cuyos destinos eran la mayoría de las veces etiquetas numéricas (el número de línea de la instrucción a la que se quería saltar), podríamos afirmar sin rubor que actualmente se trata de la sentencia maldita. Ningún programador medianamente "elegante" empleará jamás un goto. Incluso existen lenguajes que simplemente no disponen de esta instrucción tan "hortera". C++ y otros lenguajes disponen de esta sentencia aunque se considera que debe ser evitada. Sobre todo porque la secuencia lógica del código resulta difícil de entender, aunque a veces es de utilidad para salir de bucles anidados en los que el break no es suficiente. Por ejemplo en condiciones de error.

Ejemplo

void foo() {
 Again:         // esta es la etiqueta
 ...
 goto Again;    // Ok. salto a la etiqueta
 ...
}
void faa() {
 ...
 goto Final:    // Ok. salto a la etiqueta
 ...
 Final:
 goto Again;    // Error!! destino en otra función
 ...
}

Sentencia return

La sentencia return devuelve el control de ejecución desde la función que contiene el return a la rutina que la invocó; opcionalmente puede devolver un valor.

Sintaxis

return [ <expresion> ] ;

Descripción

La sentencia return devuelve el control de ejecución desde la función que contiene el return a la rutina que la invocó. Además, opcionalmente puede devolver un valor (contenido en <expresion>). <expresion> es opcional, así como el paréntesis que se suele colocar, aunque no es necesario. Si no se indica <expresion> la función no devuelve nada.

Puede Consultar

Fuente