Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


1.3.1a. Sentencias

§1. Introducción

Al igual que los lenguajes naturales [2], los lenguajes computacionales tienen una gramática, es decir, un conjunto de reglas que describen los elementos que componen el lenguaje y la forma correcta de utilizarlos ( 1.2.1).. Una parte de la gramática, la sintaxis, se ocupa de las reglas para combinar adecuadamente los elementos del lenguaje de forma que tengan un sentido.. En el caso de los lenguajes naturales, la sintaxis enseña a formar las oraciones y expresar conceptos.. En el caso de los lenguajes computacionales, enseña a construir sentencias que describan operaciones correctas de un computador.

§2. Sintaxis de las sentencias C++

Si nos referimos concretamente a la sintaxis, sus reglas pueden ser expresadas en forma de una lista, que adecuadamente interpretada, describe estas reglas sintácticas.. A continuación se expone la sintaxis permitida en C++ para las sentencias ("Statements"). . Junto a una traducción, más o menos afortunada al español [1], hemos incluido el original inglés para que no quepa la más mínima ambigüedad al respecto, ya que el rigor y el "purismo" son imprescindibles al tratar estos aspectos gramaticales del lenguaje.

Una lista de este tipo describe la sintaxis de lo que se denomina una Gramática Independiente del Contexto de Chomsky [3]. En este caso define la sintaxis de una sentencia (primera entrada de la lista).. Nos describe que una sentencia está compuesta por los elementos que siguen en la lista (sangrados).. Aquí tendríamos que interpretar:. Una sentencia está compuesta por una sentencia etiquetada, o una sentencia compuesta, o una sentencia-expresión, Etc.. A su vez, las entradas sucesivas de la lista (en azul), describen la sintaxis de cada elemento.. Por ejemplo, una sentencia compuesta está formada a su vez por una lista-de-declaraciones que puede ir seguida de una lista-de-sentencias; todo ello entre corchetes { } (el símbolo <xxx> indica que el componente xxx es opcional).. A su vez, la lista-de-declaraciones está formada por ... Etc. Etc.

Resulta evidente que muchas de estas definiciones son recursivas. . Por ejemplo, vemos que una lista-de-declaraciones está formada por una declaración o una lista-de-declaraciones seguida de una declaración. Es decir, una lista-de-declaraciones puede contener a su vez otra lista de declaraciones.

La lista indica que una sentencia-expresión está constituida por una expresión seguida de un punto y coma (;), aunque la expresión es opcional.. Quiere esto decir que un punto y coma aislado es una sentencia-expresión sintácticamente correcta en C++; es lo que se denomina sentencia-expresión nula.

Nota:  Como este "libro" está dirigido principalmente a estudiantes de C++ que necesiten del lenguaje para sus aplicaciones prácticas, debemos advertir aquí que estas cuestiones "gramaticales" son estrictamente formales, lo que dicho sencilla y llanamente, significa que de una de estas listas no es posible sacar ninguna idea concreta de qué es una sentencia, ni la menor indicación de para qué sirven.. Son simplemente una indicación exquisitamente exacta de cómo se usan desde el punto de vista formal, lo que para el programador de a pie tiene escaso o nulo valor [4].

sentencia:

sentencia etiquetada               (labeled-statement)
sentencia compuesta              (compound-statement)
sentencia-expresión                (expression-statement)
sentencia de selección            (selection-statement)
sentencia de iteración              (iteration-statement)
sentencia de salto                   (jump-statement)
sentencia ensamblador            (asm-statement)
declaración simple                   (declaration)
bloque-intento   ( 1.6)           (try-block)

sentencia etiquetada:

identificador : sentencia
case expresión constante : sentencia
default : sentencia

sentencia compuesta: ( 3.2.6)

{ <lista-de-declaraciones> <lista-de-sentencias> }    (<declaration-list> <statement-list>)

lista-de-declaraciones:

declaración
lista-de-declaraciones. declaración

lista-de-sentencias:

sentencia
lista-de-sentencias. sentencia

sentencia-expresión:

<expresión> ;

sentencia ensamblador  ( 4.10):

asm tokens nueva-línea         (newline)
asm tokens;
asm { tokens; <tokens;>= <tokens;>}

sentencia de selección ( 4.10.2):

if ( expresión ) statement
if ( expresión ) statement else statement
switch ( expresión ) statement

sentencia de iteración ( 4.10.3):

while ( expresión lógica ) sentencia
do sentencia while ( expresión ) ;
for (sentencia de inicio-for <expresión> ; <expresión>) sentencia

sentencia de inicio-for:

sentencia-expresión
declaración simple

sentencia de salto ( 4.10.4):

goto  identificador ;
continue ;
break ;
return <expresión> ;

  Inicio.


[1]. Debo advertir que he visto algunas traducciones del original inglés, principalmente realizadas en Latinoamérica, que a los Españoles nos resultan chocantes y poco afortunadas.. Supongo que ocurrirá exactamente lo mismo a la inversa.

[2]. Lenguaje utilizado por los humanos para comunicarse entre sí de forma "natural":. Español, Japonés, Inglés, Alemán, etc.

[3]. Noam Chomsky, nacido en 1.928 en Philadelphia (Pennsylvania) USA, hijo de un inmigrante ruso, estudió lingüística, matemáticas y filosofía, interesándose también por la política, pero es más reconocido por sus trabajos en gramática generativa, que basada en la lógica y en la matemática moderna, fue posteriormente aplicada a la descripción de los lenguajes naturales.

[4]. No quisiera parecer irrespetuoso con los gramáticos; antes al contrario, mi reconocimiento hacia ellos crece parejo con mi interés por la estructura del conocimiento. Lo que quiero decir es que los niños aprenden a pedir chocolate antes de dominar correctamente las estructuras formales del lenguaje, y que mucha gente nace, vive y muere sin tener la mas mínima dificultad de comunicación con sus conciudadanos a pesar de no tener absolutamente ninguna idea de la gramática "formal" de su idioma.. Naturalmente que los lenguajes naturales son mucho más dúctiles que los artificiales, pero a pesar de ello, creo que la analogía sirve para ilustrar la idea que quiero transmitir.