0% encontró este documento útil (0 votos)
60 vistas13 páginas

Programación: Expresiones y Control en C++

Este documento presenta soluciones a ejercicios de programación 1. Incluye descomponer un número de 5 cifras, documentar ejercicios 6, 8 y 9, y explicaciones sobre expresiones booleanas y estructuras de control de selección como sentencias if y switch.

Cargado por

ailen molina
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
60 vistas13 páginas

Programación: Expresiones y Control en C++

Este documento presenta soluciones a ejercicios de programación 1. Incluye descomponer un número de 5 cifras, documentar ejercicios 6, 8 y 9, y explicaciones sobre expresiones booleanas y estructuras de control de selección como sentencias if y switch.

Cargado por

ailen molina
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Programación 1

Ailen carolina molina saenz

Tarea

1. Descomponer un numero de 5 cifras de izquierda a derecha

2. Documentar ejercicios 6, 8, 9

3. Expresiones booleanas

4. Estructuras de control de selección

Solución

1. Descomponer un numero de 5 cifras de izquierda a derecha


2. Punto 6
Punto 8
Punto 9
3. Expresiones booleanas

Una expresión booleana es una expresión que se evalúa como un valor del tipo de
datos Boolean: True o False. Boolean las expresiones pueden tomar varias formas.
La más simple es la comparación directa del valor de una Boolean variable con
un Boolean literal, tal y como se muestra en el ejemplo siguiente.
If newCustomer = True Then
‘Insert code to execute if newCustomer = True.
Else
‘Insert code to execute if newCustomer = False.
End If
Dos significados del operador =
Observe que la instrucción newCustomer = True de asignación tiene el mismo
aspecto que la expresión del ejemplo anterior, pero realiza una función diferente y
se usa de manera diferente. En el ejemplo anterior, la expresión newCustomer =
True representa un valor booleano y el = signo se interpreta como un operador de
comparación. En una instrucción independiente, el = signo se interpreta como un
operador de asignación y asigna el valor de la derecha a la variable de la izquierda.
Esto se ilustra en el siguiente ejemplo:
If newCustomer = True Then
newCustomer = False
End If
Operadores de comparación
Los operadores de comparación, como =,, < >, <>, <= y >= generan Expresiones
booleanas comparando la expresión del lado izquierdo del operador con la
expresión del lado derecho del operador y evaluando el resultado
como True o False. Esto se ilustra en el siguiente ejemplo:
42 < 81
Dado que 42 es menor que 81, la expresión booleana en el ejemplo anterior se
evalúa como True.
Operadores de comparación combinados con operadores lógicos
Las expresiones de comparación se pueden combinar mediante operadores lógicos
para generar Expresiones booleanas más complejas. En el ejemplo siguiente se
muestra el uso de operadores de comparación junto con un operador lógico.
x > y And x < 1000
En el ejemplo anterior, el valor de la expresión general depende de los valores de
las expresiones de cada lado del And operador. Si ambas expresiones son True, la
expresión general se evalúa como True. Si alguna False de las expresiones es,
toda la expresión se evalúa como False.
Operadores de Short-Circuiting
Los operadores lógicos y el comportamiento de los AndAlso OrElse exhibes se
conocen como cortocircuitos. Un operador de cortocircuito evalúa primero el
operando izquierdo. Si el operando izquierdo determina el valor de toda la
expresión, la ejecución del programa continúa sin evaluar la expresión de la
derecha. Esto se ilustra en el siguiente ejemplo:
If 45 < 12 AndAlso testFunction (3) = 81 Then
‘Add code to continue execution.
End If
En el ejemplo anterior, el operador evalúa la expresión de la izquierda, 45 < 12.
Dado que la expresión de la izquierda se evalúa como False, toda la expresión
lógica debe evaluarse como False. Así, la ejecución del programa omite la ejecución
del código dentro del If bloque sin evaluar la expresión de la derecha, testFunction
(3). En este ejemplo no se llama a testFunction () porque la expresión de la
izquierda falsea toda la expresión.
Del mismo modo, si la expresión de la izquierda en una expresión lógica
con OrElse se evalúa como True, la ejecución continúa en la siguiente línea de
código sin evaluar la expresión de la derecha, ya que la expresión de la izquierda
ya ha validado toda la expresión.
Comparación con operadores que no son de cortocircuito

Por el contrario, los dos lados del operador lógico se evalúan cuando se usan los
operadores lógicos And y Or. Esto se ilustra en el siguiente ejemplo:
If 45 < 12 And testFunction (3) = 81 Then
‘Add code to continue execution.
End If
Expresiones entre paréntesis
Puede usar paréntesis para controlar el orden de evaluación de las Expresiones
booleanas. Las expresiones entre paréntesis se evalúan primero. En el caso de
varios niveles de anidamiento, la prioridad se concede a las expresiones más
anidadas. Entre paréntesis, la evaluación continua según las reglas de prioridad de
los operadores. (Desc, 2015)
4. Estructuras de control de selección

Las estructuras de selección o condicionales controlan si una sentencia o secuencia


de sentencias se ejecutan, en función del cumplimiento o no de una condición o
expresión lógica. C++ tiene dos estructuras de control para la selección, if y switch.
Sentencia if
La sentencia if elige entre varias alternativas en base al valor de una o más
expresiones lógicas. La notación BNF de esta sentencia es la siguiente:

Donde <expres_log> es una expresión lógica que ha de ir entre paréntesis, y <sent>


es una sentencia, y <bloque> es un bloque de sentencias. Las formas más sencillas
de esta sentencia, que se corresponden con las vistas en el pseudolenguaje de
Elementos de Programación SI-ENTONCES-ENOTROCASO, son la sentencia de
selección simple y la sentencia de selección doble:

Los siguientes programas son ejemplos sencillos de sentencias de selección simple


y doble:
En el ejemplo anterior la sentencia de selección simple también hubiera sido
correcta, si no hubiéramos escrito las llaves ({ }) antes y después de la sentencia
(cout << "PAR" << endl;), ya que el bloque de sentencias está formado por una única
sentencia. En caso de que el bloque éste formado por dos o más sentencias ya es
necesario usar las llaves ({ }) para marcar el inicio y el fin del bloque. Sin embargo,
es aconsejable usar siempre llaves incluso con bloques formados por una única
sentencia para evitar errores como el siguiente:

Si ejecutamos el programa anterior introduciendo dos valores iguales el programa


mostrará la siguiente salida:

Esto es debido a que el programador olvidó las llaves en el bloque de sentencias de


la parte else. Por tanto la segunda sentencia en el bloque de sentencias del else
(cout << "pues no son iguales" << endl;), ya no pertenece al else. Las sentencias if
mostradas hasta el momento implementan decisiones que implican una o dos
alternativas. Sin embargo, también es posible utilizarlas para implementar
decisiones que impliquen diferentes alternativas. Una sentencia if es anidada
cuando la sentencia de la rama verdadera o de la rama falsa es a su vez otra
sentencia if. Una sentencia if anidada se puede utilizar para implementar decisiones
con varias alternativas o multialternativas. Una estructura típica if-else anidada sería
la siguiente:

Como ejemplo, considérese un programa que nos permita escribir en pantalla el


mensaje correspondiente a un valor que representa una calificación numérica. El
programa utilizando sentencias if anidadas sería el siguiente:

Sentencia switch
La sentencia switch es una sentencia de C++ que se utiliza para seleccionar una de
entre múltiples alternativas. Esta sentencia es especialmente útil cuando la
selección se basa en el valor de una variable de un tipo simple o de una expresión
de un tipo simple denominada expresión de control o selector. La notación BNF de
la sentencia es la siguiente:

Donde <expres_ord> es una expresión ordinal, <sent> es una sentencia o


secuencia de sentencias terminadas en punto y coma (;), y <exp_const> es una
expresión constante. La sintaxis de la sentencia, que se corresponden con la
sentencia CASO estudiada en el pseudolenguaje de Elementos de Programación,
es la siguiente:

La expresión selector debe ser un tipo ordinal (por ejemplo int, char, bool pero no
float, double o string). El tipo de cada etiqueta debe ser el mismo que el de la
expresión selector. Las expresiones están permitidas como etiquetas, pero
únicamente si cada operando de la expresión es en sí mismo una constante (ej.
4+8, c*20 si c ha sido definido anteriormente como constante). Ejemplo:
Cuando se ejecuta la sentencia switch se evalúa el selector. Si el valor de la
expresión es igual a una etiqueta, entonces se transfiere el flujo de control a las
sentencias asociadas con la etiqueta correspondiente, y se ejecutan todas las
sentencias del bloque de sentencias hasta que se encuentre una sentencia break
(o hasta que se encuentre el final de la sentencia de control switch). Si el valor del
selector no está listado en ninguna etiqueta case, no se ejecutará ninguna de las
opciones a menos que se especifique la acción por defecto default. La omisión de
la etiqueta default puede ocasionar un error lógico difícil de prever. Aunque esta
etiqueta es opcional, se recomienda su uso a menos de que se esté absolutamente
seguro de que todos los valores del selector están incluidos en las etiquetas case.
En el siguiente ejemplo se muestra un programa que determina si un carácter leído
es o no una vocal. En este caso como la sentencia a ejecutar por todas las etiquetas
case es la misma, esta sentencia se pone una única vez al final:
Precaución: Si se olvida break en una sentencia switch, el compilador no emitirá
un mensaje de error, ya que se habrá escrito una sentencia switch sintácticamente
correcta, pero no realizará las tareas previstas. Cuando el ordenador empieza a
ejecutar una sentencia case, no detiene su ejecución hasta que se encuentra o bien
una sentencia break o bien una sentencia switch. (jlleivao, 2019)

Bibliografía
Desc. (07 de julio de 2015). Microsoft. Obtenido de https://docs.microsoft.com/es-
es/dotnet/visual-basic/programming-guide/language-features/operators-and-
expressions/boolean-expressions
jlleivao. (2019). uma.es. Obtenido de
http://www.lcc.uma.es/~jlleivao/introduccion/parte2.pdf

También podría gustarte