Espacios de nombres
Variantes
Acciones

Instrucciones

De cppreference.com
< cpp‎ | language

Las instrucciones son fragmentos de un programa de C++ que se ejecutan en secuencia. El cuerpo de una funcion es una secuencia de instrucciones. Por ejemplo:

int main()
{
    int n = 1;                        // instrucción de declaración
    n = n + 1;                        // instrucción de expresión
    std::cout << "n = " << n << '\n'; // instrucción de expresión 
    return 0;                         // instrucción return
}

C++ incluye los siguientes tipos de instrucciones:

1) instrucciones de expresión;
2) instrucciones compuestas;
3) instrucciones de selección;
4) instrucciones iteración;
5) instrucciones de salto;
6) instrucciones de declaración;
7) bloques try;
8) bloques atómicos y sincronizados (TM TS).

Contenido

[editar] Etiquetas

Cualquier instrucción puede ser etiquetada al proporcionar una etiqueta seguida de dos puntos antes de la instrucción misma.

atrib(opcional) identificador : instrucción (1)
atrib(opcional) case constexpr : instrucción (2)
atrib(opcional) default : instrucción (3)
1) destino para goto;
2) etiqueta case en una instrucción switch;
3) etiqueta default en una instrucción switch.

Una secuencia de atributos atrib puede aparecer justo antes de la etiqueta (que en tal caso se aplica a la etiqueta), o justo antes de la instrucción misma, que en tal caso se aplica a toda la instrucción. Una instrucción puede acarrear múltiples etiquetas. Las etiquetas (y solamente las etiquetas) tienen ámbito de función. Las etiquetas se ignoran por la búsqueda no calificada: una etiqueta puede tener el mismo nombre que cualquier otra entidad en el programa.

[editar] Instrucciones de expresión

Una expresión seguida de un punto y coma es una instrucción.

atrib(opcional) expresión(opcional) ; (1)
atrib(C++11) - Secuencia opcional de cualquier número de atributos.
expresión - Una expresión.

La mayoría de las instrucciones en un programa típico de C++ son instrucciones de expresión, tales como asignaciones o llamadas de función.

Una instrucción de expresión sin una expresión se llama una instrucción nula. Se usa frecuentemente para proporcionar un cuerpo vacío a un bucle for o while. También puede ser usada para acarrear una etiqueta al final de una instrucción compuesta.

[editar] Instrucciones compuestas

Las instrucciones compuestas o bloques son secuencias de instrucciones entre llaves.

atrib(opcional) { instrucción...(opcional) } (1)

Cuando se espera una instrucción, pero necesitan ejecutarse múltiples instrucciones en secuencia (por ejemplo, en una instrucción if o en un bucle), puede usarse una instrucción compuesta:

if (x > 5)          // inicio de la instrucción if
{                   // inicio de bloque
    int n = 1;      // instrucción de declaración
    std::cout << n; // instrucción de expresión
}                   // fin de bloque, fin de la instrucción if

Cada instrucción compuesta introduce su propio ámbito de bloque; las variables declaradas dentro de un bloque se destruyen en el punto de la llave que cierra, en orden inverso:

int main()
{
    {                                // inicio de bloque
        std::ofstream f("prueba.txt"); // instrucción de declaración
        f << "abc\n";                // instrucción de expresión
    }                                // fin de bloque: f se vacía y se cierra
    std::ifstream f("prueba.txt"); 
    std::string str;
    f >> str; 
}

[editar] Instrucciones de selección

Las instrucciones de selección escogen de entre varios flujos de control.

atrib(opcional) if ( condición ) instrucción (1)
atrib(opcional) if ( condición ) instrucción else instrucción (2)
atrib(opcional) switch ( condición ) instrucción (3)
(hasta C++17)
atrib(opcional) if constexpr(opcional) ( instrucción-de-inicialización(opcional) condición ) instrucción (1)
atrib(opcional) if constexpr(opcional) ( instrucción-de-inicialización(opcional) condición ) instrucción else instrucción (2)
atrib(opcional) switch ( instrucción-de-inicialización(opcional) condición ) instrucción (3)
(desde C++17)
1) instrucción if;
2) instrucción if con cláusula else;
3) instrucción switch.

[editar] Instrucciones de iteración

Las instrucciones de iteración ejecutan repetidamente algún código.

atrib(opcional) while ( condición ) instrucción (1)
atrib(opcional) do instrucción while ( expresión ) ; (2)
atrib(opcional) for ( instrucción-de-inicialización condición(opcional) ; expresión(opcional) ) instrucción (3)
atrib(opcional) for ( decl-rango-for : inicialización-rango-for ) instrucción (4) (desde C++11)
1) bucle while;
2) bucle do-while;
3) bucle for;

[editar] Instrucciones de salto

Las intrucciones de salto transfieren el control de flujo incondicionalmente.

atrib(opcional) break ; (1)
atrib(opcional) continue ; (2)
atrib(opcional) return expresión(opcional) ; (3)
atrib(opcional) return lista-de-inicializadores-entre-llaves ; (4) (desde C++11)
atrib(opcional) goto identificador ; (5)
1) instrucción break;
2) instruccióncontinue;
3) instrucción return con una expresión opcional;
4) instrucción return utilizando inicialización de lista;
5) instrucción goto.

Nota: para todas las instrucciones de salto, transferencia fuera de un bucle, fuera de un bloque o de vuelta después de una variable inicializada con duración de almacenamiento automática, implica la destrucción de objetos con duración de almacenamiento automática que se encuentran en ámbito en el punto del cual se inició la transferencia, pero no en el punto al que se transfirió. Si múltiples objetos fueron inicializados, el orden de destrucción es el inverso del orden de inicialización.

[editar] Instrucciones de declaración

Las instrucciones de declaración introducen uno o más identificadores dentro de un bloque.

declaración-de-bloque (1)
1) Véase declaraciones e inicialización para más detalles.

[editar] Bloques try

Los bloques try proporcionan la habilidad de atrapar excepciones lanzadas cuando se ejecutan otras instrucciones.

atrib(opcional) try instrucción-compuesta sec-de-controladores (1)
1) Véase try/catch para más detalles.

Bloques atómicos y sincronizados

Los bloques atómicos y sincronizados se utilizan para implementar memoria transaccional.

synchronized instrucción-compuesta (1) (TM TS)
atomic_noexcept instrucción-compuesta (2) (TM TS)
atomic_cancel instrucción-compuesta (3) (TM TS)
atomic_commit instrucción-compuesta (4) (TM TS)
1) bloque sincronizado, ejecutado en un orden total sencillo con todos los bloques sincronizados;
2) bloque atómico que aborta cuando hay excepciones;
3) bloque atómico que revierte cuando hay excepciones;
4) bloque atómico que consolida cuando hay excepciones.
(TM TS)

[editar] Véase también

Documentación de C de Instrucciones