Sentencias en C++

Las sentencias nos permiten modificar la manera en que el código se ejecuta, además de que nos facilitan la resolución de muchos problemas, haciéndolos más sencillos de resolver al tener herramientas más eficaces para prever más situaciones y casos de problemas. Su uso es muy sencillo y además muy variado.

Comentarios

Los comentarios nos permiten agregar mensajes en el código que el compilador ignorará, siendo que el mensaje escrito, es decir, el comentario está hecho para darnos referencias y retro alimentaciones a nosotros como programadores y desarrolladores del programa. En un código de C++ tenemos dos tipos de comentario.

Comentarios en línea
Para agregar un comentario en línea debemos agregar dos slash seguidos, uno detrás del otro // lo que está a la derecha de este símbolo será ignorado por el compilador.

Nota que la instrucción cout y return sí serán tomadas en cuenta por el compilador, sin embargo el comentario que agregamos no se considerará, aunque lo podremos ver en el editor. Estos comentarios se llaman así porque marcan como comentario toda la línea en que se encuentran, pero sólo después del //

Comentarios de varias líneas
Si queremos hacer un comentario más extenso, que ocupe varias líneas del código, podemos agregar varios comentarios en línea, por ejemplo:

Sin embargo, puede resultar tedioso poner muchos // si vamos a comentar una parte muy grande del programa, y para esto tenemos los comentarios de varias líneas que marcarán como tal a todo lo que esté entre /* y */. El mensaje anterior escrito con estos comentarios sería así:

Como recordarás, la práctica y la organización hacen al maestro, mantener nuestros códigos ordenados es muy importante, tanto como lo es agregar comentarios, puedes usarlos para especificar qué estabas haciendo en las líneas difíciles, cómo lograste descifrar el problema, qué método implementaste o qué problema estabas realizando. Todo lo que puedas necesitar para que si un día vuelves a ver un viejo código tuyo, recuerdes cómo lo hiciste.

Selección - if y else

demos traducir esta sentencia literalmente como un “si” condicional. Esta sentencia evalúa algo que regrese un valor booleano, si ese valor es verdadero entonces ejecuta sus acciones. Su sintaxis general es así:

Donde if es una palabra de control, indica al compilador que sigue una evaluación.
Un valor_booleano puede ser cualquier cosa que regrese un verdadero o falso, como una comparación, una variable booleana o una función booleana.
Las acciones son cualquier instrucción que queramos realizar.
Un ejemplo completo sería:

En el ejemplo anterior la sentencia de la línea 7 realizará la acción entre sus llaves, debido a que la variable T en efecto es mayor que \(3\). La sentencia de la línea 11 no realizará sus acciones pues la variable A tiene como valor false.
También puede evaluar con los operadores de conjunción y disyunción, && y ||

Al final de la ejecución del anterior programa nuestras variables quedarán así N = 50 e I = 10. Prueba a ejecutarlo en tu IDE favorito.

La sentencia if puede ser utilizada agregando un else al final de su bloque. Las acciones del bloque de éste último serán ejecutadas si el valor booleano evaluado no es verdadero. De hecho, la traducción inmediata de else es sino.

En este caso como A no es mayor \(13\) sólo se mostrará el mensaje La variable A no es mayor a 13. De haber sido mayor ese mensaje nunca se habría mostrado, sólo se habría mostrado el mensaje de la línea 8.

Selección - switch

A diferencia de if esta sentencia no trabaja directamente con un valor booleano sino que trabaja con uno de los valores que conformarían a ese valor. Seguramente esto no ha quedado muy claro, así que vamos a revisarlo por partes. Lo primero es su estructura.

x debe ser una variable tipo int o char, no de otro tipo.
y z sólo pueden ser un número entero o un carácter. No una variable.
En la parte de acciones, es decir, entre cada case y break irán las acciones a realizar de ese caso. Nota que después de el valor del caso van dos punto : y después de break va el punto y coma ;

El funcionamiento de switch es muy sencillo, si el valor que está en el paréntesis (en el ejemplo representado por x) es igual al valor de alguno de los casos (en el ejemplo representados por y y z) entonces se ejecutan las instrucciones de ese caso. Si ningún caso es igual a el valor del paréntesis, entonces se ejecutan los comandos de la sección default.

Pueden haber tantos casos como gustes, y dentro de cada caso pueden haber las acciones que tú decidas. Un ejemplo real sería:

Ejecuta el anterior código y pon mucha atención a la salida que produce y el por qué produce esa salida. Prueba y cambia los valores de las variables y los casos.

Cíclica - while

Imagina que queremos imprimir (mostrar en pantalla) los números del \(0\) hasta cierto número que indique el usuario. Es decir, que debemos leer un número del teclado y luego mostrar en pantalla una sucesión del \(0\) hasta ese número. Si supiéramos de antemano cuál será el valor de ese número, podríamos poner la sucesión manualmente en un cout, aunque sería algo aburrido y tardado de hacer, más si el número meta es un número grande, como \(100\). Es aquí donde podemos usar una sentencia cíclica.

La sentencia while repite las acciones que abarca y en el mismo orden, mientras el valor booleano que evalúa sea verdadero. Su estructura es la siguiente.

Recuerda que por valor_booleano debemos entender cualquier expresión que nos devuelva un valor true o false, como puede ser una comparación o una variable o función booleana. También podemos usar operadores de conjunción y disyunción. Ahora, imagina el siguiente ejemplo:

¿Cuántas veces se mostrará el mensaje “hola”? No es necesario pensarlo muchas veces si nos damos cuenta de que la variable T siempre va a ser mayor a \(0\), esto haría que el programa nunca terminara, pues se quedaría ciclado, es decir, la ejecución estaría en un ciclo interminable. Aquí está el factor principal que debemos tener en cuenta al utilizar una estructura cíclica, el asegurarnos de que termine en algún momento. En el ejemplo anterior para que ese ciclo termine la variable T tiene que cambiar. Podemos hacer lo siguiente:

De esta manera, la ejecución sería algo así:
Se declara la variable T con valor de \(10\).
Al llegar al while se checa la condición que contiene. Como T es mayor a cero entonces se entra al ciclo.
Se muestra el mensaje “Hola” y se da un salto de línea.
Ahora se le resta \(1\) a la variable T, dejándola con valor de \(9\).
Como ya se terminó de ejecutar el bloque de while, se vuelve a checar la condición, como T = 9 aún es más grande de \(0\) y por lo tanto se vuelve a ejecutar el ciclo.

¿Cuántas veces se mostrará el mensaje “hola”? ¿Por qué pasa así? Prueba ahora con este código:

¿Recuerdas la diferencia entre T--; y --T;?

Cíclica - do while

En base al siguiente segmento de código:

¿Cuántas veces se mostrará la palabra “Mensaje”? En efecto, no se mostrará ninguna vez, pues T no fue mayor de \(10\) al llegar al while. Si hubiéramos querido que primero se ejecutara lo que hay en las líneas 3 y 4 hubiéramos tenido que usar la estructura do{} while() justo así:

Nota que primero ponemos la palabra reservada do, luego entre llaves lo que queremos realizar en el ciclo, y después de esas llaves la palabra reservada while seguido y entre paréntesis de su valor booleano de control, que en este ejemplo fue una comparación.
Nota también que T no fue mayor a 10 en ningún momento, sin embargo las instrucciones se realizaron una vez porque nosotros así lo indicamos, al poner que primero ejecutara (do) y luego checara si volvería a hacerlo (while).

Cíclica - for

La última sentencia cíclica (y mi favorita) es la estructura for. Ésta es un poco diferente a las dos anteriores, su estructura es así:

Es importante que sepas que al poner b1, b2 y b3, no se hace referencia a una variable en sí, sólo es para referencia en la explicación
Primero tenemos que poner la palabra reservada for, indica que sigue ese ciclo.
En donde está b1 irá la (o las) variable de control, típicamente es un entero.
En donde está b2 irá el valor booleano de control del ciclo.
En donde está b3 irá la (o las) modificaciones a la (o las) variables de control.
Para que quede bien claro, un ejemplo completo es:

Nota que nuestra variable de control se declaró ahí adentro, puedes declararla ahí o si ya la tienes declarada antes no hay ningún problema. Lo que sí es muy importante es que tiene que estar ya inicializada.
El valor booleano de control en este ejemplo es una condición, que nos dice que mientras T sea menor que \(10\) se realizarán las instrucciones que están en esas llaves.
La modificación que le estamos haciendo a T es sumarle \(1\). Esta adición se realizará cada vez que se repita el ciclo.

La ejecución anterior sería:
Se llega a for y se declara la variable T inicializada en \(0\).
Como T es menor a \(10\), el valor booleano de control toma valor de verdadero y el ciclo empieza.
Se muestra el valor de T seguido por un espacio en blanco. El valor mostrado es \(0\).
Se termina el bloque de for por lo que se regresa a la línea 2 y se modifica el valor de T al sumarle \(1\). Ahora esta variable vale \(1\).
Se compara de nuevo T < 10, y una vez más el valor es verdadero, por lo que se vuelve a repetir el ciclo.

Es útil saber que en un momento dado se puede prescindir de siquiera escribir lo que va en el bloque de b1, (aunque sí tenemos que poner el punto y coma), por ejemplo si declaré e inicialicé antes la variable de control.
También podemos no poner nada en el bloque de b3, por ejemplo si vamos a modificar la variable de control en alguna parte dentro del ciclo.
También podemos no utilizar la variable de control en el bloque de b2, pero siempre siempre debe haber algo ahí que devuelva un valor booleano.
Debido a esto podemos escribir un programa como este:

Analiza la ejecución de el código anterior. ¿Por qué en un momento se muestra en una línea 10 10 10?

A las repeticiones que se realizan en un ciclo les llamamos iteraciones, que viene de la palabra iterar

Sentencias de salto

Las sentencias de salto nos permiten modificar la forma en la que se ejecuta una estructura.

break
Esta sentencia hace que al momento de que la ejecución pasa por ella, se salga de la sentencia cíclica en la que está metida sin importar el valor booleano de control. Por ejemplo:

En este caso sólo se mostrará \(4\) veces la palabra Algo, y eso será cuando A tenía los valores \(0, 1, 2, 3\) pues cuando vale \(3\) mostrará ese valor, para luego hacer que se cumpla la condición de la línea 9, esto ocasionará que se ejecute el break de la línea 10 y que por lo tanto, se salga del ciclo.
Seguramente también recuerdas que encontramos break anteriormente en la estructura switch ¿Notas su funcionamiento ahí también? Aunque switch no es una estructura cíclica puede verse afectada por break.

continue
Esta sentencia se brinca una iteración, justo la iteración en la que se aplicó esta sentencia. No se sale del ciclo completo, sino que sólo no hace una repetición.

En este ejemplo se estaría mostrando el valor de T, pero cuando su valor sea \(4\), es decir, cuando la condición del if de la línea 7 se cumpla, se saltará lo que había después y se seguirá con el resto de las iteraciones. En este caso este programa mostraría la salida 1 2 3 5 6 7 8 9 10 .

goto
Esta para el funcionamiento de esta sentencia, necesitamos declarar previamente una etiqueta. Esta etiqueta se compone de un nombre válido seguido de dos puntos, va ubicada en cualquier parte del código. Una etiqueta no lleva un tipo que la preceda, sólo es el nombre válido y dos puntos. Al momento de que la ejecución pase por la sentencia goto se redirigirá hacia la línea donde está esa etiqueta y se seguirá desde ahí.

El anterior programa mostraría la salida Otro mensaje 0 1 2 3 4 5 6 7 8 9 . El mensaje de la línea 8 no se mostraría, sin embargo la variable letra sí se declaró. No se puede inicializar en una parte del código que sea saltado por un goto, de hacerse una inicialización será ignorada.

La salida al final será Otro mensaje 0 1 2 3 4 5 6 7 8 9 L.

Cita esta página

Include Poetry - Code. (2020, 4 de enero). Sentencias en C++. Obtenido de https://www.include-poetry.com/Code/C++/Introduccion/Sentencias/

/* Comentarios */