3.1.5.- Tipo de sentencias en el lenguaje de C++
Las sentencias ("Statements") especifican y controlan el flujo de ejecución del programa. Si no existen sentencias específicas de selección o salto, el programa se ejecuta de forma secuencial en el mismo orden en que se ha escrito el código fuente (es el que podríamos considerar orden "natural" de ejecución).
En este capítulo explicaremos los distintos tipos de sentencias que existen en C++, pero antes ofreceremos una descripción formal de las mismas señalando qué se entiende por sentencia.
¿Cómo se Clasifican?
Dada la definición anterior, resulta evidente que pueden existir infinitas sentencias distintas, e innumerables criterios para su clasificación. Una de las posibles, que además coincide con la clasificación del Estándar, distingue las siguientes clases de sentencia:
De etiqueta: En C++ existen tres clases de sentencias etiquetadas: las etiquetas directas, las sentencias case y el default, estas últimas se utilizan en conjunción con las sentencias switch.
De expresión: Podríamos decir que son las que no pertenecen a ninguno de los otros grupos y que, en la práctica, son las más abundantes. Generalmente son asignaciones o invocaciones de funciones.
Compuestas: Las sentencias compuestas, también denominadas bloques se utilizan en aquellas situaciones en que la sintaxis espera una sentencia, pero se necesita usar varias.
De selección: Las sentencias de selección o de control de flujo, pueden decidir entre varios cursos de acción distintos en función de ciertos valores.
De iteración: Las sentencias de iteración permiten repetir un conjunto de sentencias ejecutando un bucle. En C++ existen tres formas de iteraciones: los bucles while, do…while y for.
De salto: Las sentencias de salto permiten transferir el control del programa de forma incondicional. Existen cuatro de estas sentencias: break, continue y return.
De declaración: Este tipo de sentencias introducen uno o más identificadores en un bloque.
Bloques de intento: Estas sentencias deben estar seguidas de una sentencia catch y tienen la forma.
Además de las anteriores, por sus características especiales podríamos considerar las siguientes clases adicionales:
Sentencias de pre proceso: Como se ha indicado, constituyen un tipo muy especial, tanto en su sintaxis como en su comportamiento. No representan una computación en tiempo de ejecución, sino de compilación, ya que su efecto es realizar modificaciones sobre el código fuente. Su sintaxis también es especial; no requieren el punto y coma de terminación y comienzan siempre con el símbolo #.
Sentencias ensamblador: C++ dispone de la opción de poder escribir directamente instrucciones en lenguaje ensamblador junto con el resto del código fuente. Para esto dispone de una palabra clave específica: asm.
La palabra asm indica que la cadena literal que sigue será incluida en el código objeto en la posición indicada.