En C++, la unidad básica de acción es la sentencia. Las sentencias se ejecutan secuencialmente y pueden agruparse en bloques mediante llaves. Las declaraciones pueden ser globales o locales dependiendo de si están fuera o dentro de un bloque. Las sentencias de asignación, selección (if, if-else, switch) y repetición (while, for) permiten modificar el flujo secuencial del programa.
El objetivo de esta estructura es decidir ejecutar un bloque de código o no. Para esta estructura, así como también para la estructura de selección doble, es sumamente importante escribir correctamente la expresión condicional. (Recuerda que en este post describo como escribir este tipo de expresiones).
La instrucción SI se utiliza para diseñar estructuras de selección que contengan más de dos alternativas.
El objetivo de esta estructura es decidir qué bloque de código ejecutar, si el que se encuentra en la rama verdadera o el que se encuentra en la rama falsa. La decisión dependerá de la evaluación de la expresión condicional.
Se dice que una estructura "Si" ( o Si - Sino) está anidada cuando esta contenida dentro de otra estructura "Si" o dentro de otra estructura Si - Sino, no existe limite en cuanto al nivel de anidamiento.
La estructura de repetición o bucle hace posible la ejecución repetida de una o más instrucciones, las estructuras de repetición nos permiten ejecutar varias veces unas mismas líneas de código
Una de las operaciones que realizamos habitualmente es el intercambio de elementos, swap, en nuestros programas.
Hasta ahora hemos empleado estructuras SECUENCIALES y CONDICIONALES. Existe otro tipo de estructuras tan importantes como las anteriores que son las estructuras REPETITIVAS.
Contador: Se entiende por contador una variable que lleva la cuenta del número de veces que se ha cumplido una condición.
Acumulador: Se entiende por acumulador una variable que acumula el resultado de una operación.
La estructura de repetición o bucle hace posible la ejecución repetida de una o más instrucciones. Estas estructuras describen procesos que se repiten varias veces en la solución del problema. Se utiliza para repetir una sentencia o grupo de sentencias un número fijo de veces.
Esta estructura repetitiva se utiliza cuando conocemos de antemano que por lo menos una vez se ejecutará el bloque repetitivo. La condición de la estructura está abajo del bloque a repetir, a diferencia del while que est1á en la parte superior. El bloque de operaciones se repite HASTA que la condición sea Verdadera.
Es la estructura algorítmica adecuada para utilizar en un ciclo que se ejecutará un número definido de veces.
También conocido como estructura de decisión múltiple permite seleccionar un camino entre varios caminos posibles teniendo como base el valor de la variable seleccionada la cual es comparada con una lista de constantes (case n) enteras o de carácter.
Una estructura repetitiva permite ejecutar una instrucción o un conjunto de instrucciones varias veces.
Una ejecución repetitiva de sentencias se caracteriza por:
- La o las sentencias que se repiten.
- El test o prueba de condición antes de cada repetición, que motivará que se repitan o no las sentencias.
El objetivo de esta estructura es decidir ejecutar un bloque de código o no. Para esta estructura, así como también para la estructura de selección doble, es sumamente importante escribir correctamente la expresión condicional. (Recuerda que en este post describo como escribir este tipo de expresiones).
La instrucción SI se utiliza para diseñar estructuras de selección que contengan más de dos alternativas.
El objetivo de esta estructura es decidir qué bloque de código ejecutar, si el que se encuentra en la rama verdadera o el que se encuentra en la rama falsa. La decisión dependerá de la evaluación de la expresión condicional.
Se dice que una estructura "Si" ( o Si - Sino) está anidada cuando esta contenida dentro de otra estructura "Si" o dentro de otra estructura Si - Sino, no existe limite en cuanto al nivel de anidamiento.
La estructura de repetición o bucle hace posible la ejecución repetida de una o más instrucciones, las estructuras de repetición nos permiten ejecutar varias veces unas mismas líneas de código
Una de las operaciones que realizamos habitualmente es el intercambio de elementos, swap, en nuestros programas.
Hasta ahora hemos empleado estructuras SECUENCIALES y CONDICIONALES. Existe otro tipo de estructuras tan importantes como las anteriores que son las estructuras REPETITIVAS.
Contador: Se entiende por contador una variable que lleva la cuenta del número de veces que se ha cumplido una condición.
Acumulador: Se entiende por acumulador una variable que acumula el resultado de una operación.
La estructura de repetición o bucle hace posible la ejecución repetida de una o más instrucciones. Estas estructuras describen procesos que se repiten varias veces en la solución del problema. Se utiliza para repetir una sentencia o grupo de sentencias un número fijo de veces.
Esta estructura repetitiva se utiliza cuando conocemos de antemano que por lo menos una vez se ejecutará el bloque repetitivo. La condición de la estructura está abajo del bloque a repetir, a diferencia del while que est1á en la parte superior. El bloque de operaciones se repite HASTA que la condición sea Verdadera.
Es la estructura algorítmica adecuada para utilizar en un ciclo que se ejecutará un número definido de veces.
También conocido como estructura de decisión múltiple permite seleccionar un camino entre varios caminos posibles teniendo como base el valor de la variable seleccionada la cual es comparada con una lista de constantes (case n) enteras o de carácter.
Una estructura repetitiva permite ejecutar una instrucción o un conjunto de instrucciones varias veces.
Una ejecución repetitiva de sentencias se caracteriza por:
- La o las sentencias que se repiten.
- El test o prueba de condición antes de cada repetición, que motivará que se repitan o no las sentencias.
La programación estructurada se basa un teorema fundamental, el cual afirma
que cualquier programa, no importa el tipo de trabajo que ejecute, puede ser
elaborado utilizando únicamente las tres estructuras básicas.
2. Sentencia, Secuencia y Bloque
En C++ la unidad básica de acción es la sentencia, y expresamos la composición de sentencias
como una secuencia de sentencias terminadas cada una de ellas por el carácter “punto y coma“
(;), de tal forma que su flujo de ejecución es secuencial, es decir, se ejecuta una sentencia, y
cuando esta termina, entonces se ejecuta la siguiente sentencia, y así sucesivamente.
Un bloque es una unidad de ejecución mayor que la sentencia, y permite agrupar una secuencia
de sentencias como una unidad. Para ello enmarcamos la secuencia de sentencias entre dos
llaves para formar un bloque. Es posible el anidamiento de bloques.
4. Declaraciones Globales y Locales
Distinguiremos dos clases de declaraciones: globales y locales.
Entidades globales son aquellas que han sido definidas fuera de cualquier bloque. Su ámbito de
visibilidad comprende desde el punto en el que se definen hasta el final del fichero. Respecto a
su tiempo de vida, se crean al principio de la ejecución del programa y se destruyen al finalizar
este. Normalmente serán constantes simbólicas, definiciones de tipos, declaración de prototipos
de subprogramas y definiciones de subprogramas.
5. Declaraciones Globales y Locales
Entidades locales son aquellas que se definen dentro de un bloque. Su ámbito de visibilidad
comprende desde el punto en el que se definen hasta el final de dicho bloque. Respecto a su
tiempo de vida, se crean en el punto donde se realiza la definición, y se destruyen al finalizar el
bloque. Normalmente serán constantes simbólicas y variables locales.
6. EJEMPLO 1(EJ7_1)
Programa que hace el uso de variables
locales y globales sobre la conversión de
dólares a pesos mexicanos
9. Declaraciones Globales y Locales
Respecto al ámbito de visibilidad de una entidad, en caso de declaraciones de diferentes
entidades con el mismo identificador en diferentes niveles de anidamiento, la entidad visible
será aquella que se encuentre declarada en el bloque de nivel de anidamiento más
interno. Es decir, cuando se solapa el ámbito de visibilidad de dos entidades con el
mismo identificador, en dicha zona de solapamiento será visible el identificador
declarado/definido en el bloque más interno. Sin embargo, no es una buena practica de
programación ocultar identificadores al redefinirlos en niveles de anidamiento mas internos, ya
que conduce a programas difíciles de leer y propensos a errores.
11. Sentencias de Asignación
La sentencia de asignación permite asignar a una variable el
resultado de evaluar una expresión aritmética expresada en notación
infija, de tal forma que primero se evalúa la expresión, considerando
las reglas de precedencia y asociatividad de los operadores y a
continuación el valor resultante se asigna a la variable, que pierde.
Por ejemplo:
15. Sentencias de Asignación
Nota: las sentencias de asignación vistas anteriormente se pueden
utilizar en otras formas muy diversas, pero nosotros restringiremos
su utilización a la expresada anteriormente, debido a que otras
utilizaciones pueden dificultar la legibilidad y aumentar las
posibilidades de cometer errores de programación.
16. Sentencias de Asignación
Nota: las sentencias de asignación vistas anteriormente se pueden
utilizar en otras formas muy diversas, pero nosotros restringiremos
su utilización a la expresada anteriormente, debido a que otras
utilizaciones pueden dificultar la legibilidad y aumentar las
posibilidades de cometer errores de programación.
17. Sentencias de Selección
Las sentencias de selección alteran el flujo secuencial de ejecución
de un programa, de tal forma que permiten seleccionar flujos de
ejecución alternativos y excluyentes dependiendo de expresiones
lógicas. La más simple de todas es la sentencia de selección
condicional if cuya sintaxis es la siguiente:
19. Sentencias de Selección
y cuya semántica consiste en evaluar la expresión lógica, y si su
resultado es Verdadero (true) entonces se ejecuta la secuencia de
sentencias entre las llaves. Ejemplo de programa que imprime el
valor mayor de tres números:
20. EJEMPLO (EJ7_2)
y cuya semántica consiste en evaluar la expresión lógica, y si su
resultado es Verdadero (true) entonces se ejecuta la secuencia de
sentencias entre las llaves. Ejemplo de programa que imprime el
valor mayor de tres números:
23. ESTRUCTURAS DE CONTROL
Otra posibilidad es la sentencia de selección condicional compuesta, que tiene la siguiente
sintaxis:
24. EJEMPLO (EJ7_3)
y cuya semántica consiste en evaluar la expresión lógica, y si su resultado
es Verdadero (true) entonces se ejecuta la <secuencia de sentencias v> .
Sin embargo, si el resultado de evaluar la expresión lógica es Falso (false)
entonces se ejecuta la <secuencia de sentencias f> .
La sentencia de selección condicional se puede encadenar de la
siguiente forma con el flujo de control esperado:
26. ESTRUCTURAS DE CONTROL
La sentencia switch es otro tipo de sentencia de selección en la cual la secuencia de sentencias
alternativas a ejecutar no se decide en base a expresiones lógicas, sino en función del valor que
tome una determinada expresión de tipo ordinal, es decir, una relación de igualdad entre el
valor de una expresión y unos determinados valores constantes de tipo ordinal especificados. Su
sintaxis es la siguiente:
28. ESTRUCTURAS DE CONTROL
en la cual se evalúa la expresión, y si su valor coincide con <valor 1> entonces se
ejecuta la <secuencia de sentencias 1> . Si su valor coincide con <valor 2> o con
<valor 3> se ejecuta la <secuencia de sentencias 2> y así sucesivamente. Si el
valor de la expresión no coincide con ningún valor especificado, se ejecuta la
secuencia de sentencias correspondiente a la etiqueta default (si es que existe).
Nótese que la sentencia break; termina la secuencia de sentencias a ejecutar
para cada caso. Ejemplo: