Informatica

Solo disponible en BuenasTareas
  • Páginas : 10 (2479 palabras )
  • Descarga(s) : 0
  • Publicado : 19 de septiembre de 2010
Leer documento completo
Vista previa del texto
Sentencias C++
§1  Sinopsis
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 desentencias que existen en C++, pero antes ofreceremos una descripción formal de las mismas señalando qué se entiende por sentencia.
§2  Definición
Una expresión es una secuencia de operadores; operandos; elementos de puntuación y palabras clave, que especifican una computación. Tiene sentido computacional en sí misma y equivale a una frase en el lenguaje normal. Entre sus características distintivasestán las de poder producir un resultado y posibles efectos laterales. Ejemplo:
extern x;        // No produce un valor
y = 22;          // Produce un valor
z = i++;         // Valor + efectos laterales

Cualquier expresión finalizada en un punto y coma ; forma una sentencia:
< expresión >;
C++ ejecuta las sentencias evaluando la expresión. Todos los efectos colaterales de laevaluación son tenidos en cuenta antes de ejecutar la próxima sentencia. La mayoría de sentencias C++ son asignaciones o llamadas a funciones.
Un caso especial es la sentencia nula; consiste en un punto y coma (;) aislado. Una sentencia nula no hace nada, pero puede ser necesaria en situaciones en que la sintaxis del lenguaje espere una sentencia pero nuestro programa no necesita hacer nada.
Nota: comola mayoría de las cosas de C++, la definición anterior tiene su excepción. Existe un tipo especial de sentencia, las directivas de preproceso en las que el punto y coma puede omitirse. Este tipo de sentencias no ejecuta una computación de tiempo de ejecución sino de compilación (realizan modificaciones sobre el fuente). Entre las que sí ejecutan una computación en runtime también existe una, lasetiquetas directas, que no terminan en punto y coma sino en dos puntos :  (ver a continuación )
§2  Clasificación
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* De expresión
* Compuestas
* De selección
* De iteración
* De salto
* De declaración
* Bloques de intento
Además de las anteriores, por sus características especiales podríamos considerar las siguientes clases adicionales:
* Sentencias de preproceso
* Sentencias ensamblador
§2.1  Sentencias de etiqueta
En C++ existen tres clases de sentencias etiquetadas:las etiquetas directas ( 4.10.1a), las sentencias case ( 4.10.1b) y las default ( 4.10.1c), estas últimas se utilizan en conjunción con las sentencias switch.
§2.2  Sentencias 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. Ejemplo:
pint = &x;foo(c);
§2.3  Sentencias compuestas
Las sentencias compuestas, también denominadas bloques ( 1.3.1) se utilizan en aquellas situaciones en que la sintaxis espera una sentencia pero se necesita usar varias. Ejemplo:
if (first) ++x;
else {
   --x; z = a;
}
En caso de cumplirse la condición hay que incrementar x, lo que puede hacerse en una sola sentencia, pero si la condición resulta falsa, seprecisan dos computaciones. Para que se comporten como una sola frente a else, se recurre a englobarlas en un bloque entre llaves { ... }. Las sentencias dentro del bloque se comportan como una sola y constituyen un ámbito léxico. Los identificadores definidos en su interior eclipsan a los exteriores y las variables automáticas creadas en él son destruidas al salir del ámbito.
§2.4  Sentencias...
tracking img