Está en la página 1de 20

Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.

1
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
2

Estructuras de control selectivas I


En esta entrega del curso de programación en C++, analizaremos las estructuras de control
selectivas, las cuales nos permiten indicar al programa que evalúe una condición o valores y
actúe en consecuencia.
Estructura selectiva simple
La sentencia IF es la indicada para crear una estructura selectiva, como podemos ver en la
siguiente imagen.

En la línea 13, podemos ver que la sentencia IF, emplea una condición o expresión lógica
entre paréntesis, en dicha expresión comparamos en este caso dos variables, ya que los
operadores lógicos son binarios, es decir, necesitan de dos operándose para trabajar, en el
ejemplo vemos que se evalúa si el valor de la variable «a» es menor que el valor de la
variable «b».
Los operadores lógicos son:
• >. Mayor que
• <. Menor que
• >=. Mayor o igual que
• <=. Menor o igual que
• =. Igual a
• !=. No igual o diferente de
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
3

Después de cerrar el parentesis abrimos un par de llaves para encerrar el conjunto de


instrucciones que se ejecutarán si el resultado de a<b resulta ser verdadero, recordemos que el
resultado de una expresión lógica sólo puede ser verdadero o falso.
Como en este caso, solo definimos un IF simple, cuando la expresión sea falsa no se hará
nada y el programa seguirá con las instrucciones que se harán después sin que influya el
resultado de la expresión.

Estructura selectiva doble


En el caso de que queramos que un conjunto de órdenes se ejecuten si la expresión es
verdadera y otro se ejecute si la expresión es falsa, completaremos el IF, con la sentencia
else, la cual se debe colocar después de que cierra la llave del bloque de instrucciones de IF
como podemos ver en la siguiente imagen.

Como podemos ver, en la línea 18 hemos colocado la sentencia else, la cual no lleva ninguna
expresión lógica, pues es complemente del IF y establece lo que se hará en caso de que la
sentencia que está en el IF sea falsa.

Ya colocada la sentencia else, abrimos un par de llaves, para marcar el bloque de


instrucciones que se ejecutarán como ya dijimos si la expresión del IF es falsa.
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
4

Cabe señalar que sí solo se va a ejecutar una sola orden en el else, podemos omitir las llaves,
pero solo si se trata de que se ejecutará una sola instrucción.

Ahora bien, podemos colocar dentro del bloque del IF, otra sentencia IF, la cual estará
anidada, o igual podemos colocar un IF dentro del bloque de instrucciones del else, como
esto es mejor ver cómo se hace que describirlo, los dejamos con el video
de este tema.
https://youtu.be/mYE07uMlRD4

Estructuras Selectivas II
Continuamos con los artículos de proramación en C++, en esta ocasión veremos la estructura
de selección múltiple switch.

Para ahorrarnos el colocar intrincadas listas de estructuras selectivas simples o dobles, todos
los lenguajes de programación implementan una estructura de selección múltiple, en la cual, se
evalúa una variable y dependiendo del valor que tome se ejecutará un bloque de código
determinado.
En C++, la estructura de selección múltiple se denomina switch y la variable que se debe
evaluar debe ser de tipo ordinal, por lo que solo podremos utilizar variables int y char, como
vemos en la siguiente imagen.
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
5

Suponiendo como ejemplo un programa que puede cargar tres diferentes impuestos al precio
de un producto, vemos que en la línea 7, definimos la variable «i» de tipo char, pues es uno de
los tipos de datos que soporta la estructura; en la línea 15 vemos inicio de la estructura switch
en donde la variable a a evaluar se coloca entre paréntesis y se abre una llave en donde se
encerrarán todas las opciones y bloques de código que se ejecutarán para cada valor de «i», lo
cual vemos más claramente en la siguiente imagen.

Cada bloque inicia con un CASE, seguido del valor que debe tomar la variable para que dicho
bloque se ejecute, como la variable de es de tipo char, el valor se coloca entre comillas sencillas,
si es de tipo int, no las lleva . En la línea 16 vemos que se pueden unir varios CASE si todos
ellos ejecutarán el mismo bloque, de igual forma vemos que después de cada valor siguen «:»
, para indicar que a continuación comenzarán todas las instrucciones de dicho bloque.
En la línea 19, vemos que se emplea la instrucción BREAK para indicar el fin del bloque que
se ejecuta en el caso de los valores indicados en la línea 16, de igual forma, podemos ver otro
bloque de código que va de la línea 20 a la 23, con las mismas reglas para su descripción.
Ahora bien, como de igual forma puede ocurrir que el usuario capture un valor no listado en
los CASE, se puede usar la sentencia DEFAULT que indicara el bloque de código que se
ejecutará cuando no se cumpla ninguno de los valores indicados en los CASE, eso sí, debe estar
al final de los CASE, como vemos a continuación.
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
6

DEFAULT no lleva ningún valor, solo los «:» y las instrucciones que se ejecutarán en caso de
que el valor de la variable evaluada no cumpla con ninguno de los CASE definidos. Al igual
que los CASE, se debe terminar el bloque con BREAK.
A continuación, veremos la ejecución del programa de ejemplo.

Ahora bien, debemos señalar que dentro de cada bloque CASE, pueden haber otras
estructuras, como vemos en la siguiente imagen en donde agregamos un IF simple en el
primer CASE.
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
7

La única condición que debemos de cumplir al anidar estructuras dentro de switch es que las
estructuras que coloquemos deben estar dentro de un CASE….BREAK, no podemos colocar
estructuras selectivas o instrucciones que estén fuera de ellas.
Para concluir les dejamos el vídeo explicativo de este post y quedamos a sus ordenes para
cualquier duda o comentario.
https://youtu.be/D88kMbd1jIE

Ciclos, Banderas Contadores Y Acumuladores

while
En este artículo hablaremos de los cielos do…ahíle y while, los cuales se pueden implementar
a través de variables de bandera, para cuando no sabemos el número exacto de iteraciones que
realizará el ciclo.

Una bandera es una variable a la cual hacemos cambiar entre dos posibles valores ya sea para
alternar la ejecución de dos bloques de código o para producir la salida de un ciclo por la acción
de que la variable tenga o no uno de sus valores, para hacer más claro esto, lo veremos a través
de un ciclo do…while, el cual tiene la sintaxis
Do{
Bloque de código
}while(condición)
La sentencia do con la llave marca el inicio del bloque que se ejecutará dentro del ciclo y el
while marca el final, la evaluación de la condición que hará que el ciclo continúe o salga se
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
8

hace al llegar a la línea de while, por lo que el bloque de código se ejecutará al menos una vez,
pero veamos cómo se implementa en el siguiente ejemplo

Como podemos ver en la línea 8, le asignamos a la variable «i» un valor, para que esta variable
sea nuestra bandera, en la línea 9 inicia nuestro ciclo con el do y termina en la línea 14 con el
while, el cual verifica que la variable no tome el valor de ‘n’, pero para que el ciclo funcione
de forma adecuada debemos ver que en la línea 13, antes del while, pedimos el valor de la
variable i, a través de un scanf, esto para que el usuario decida si se hará una nueva iteración,
ya que si no incluimos esto dentro del ciclo, el ciclo podría hacerse infinito o solo ejecutarse
una vez.

Aprovecharemos este código, para mostrar un detalle que se presenta en C++, con el uso de
variables de tipo char, para ello veamos cómo es la ejecución del código anterior

Como podemos ver, el ciclo se repite sin pedir el valor de «i» de forma alternada, esto ocurre
porque en el lenguaje C++ los Enter son un carácter entendible como cualquier otro y se
representan como el carácter de fin de cadena «\0». Como la variable char almacena un solo
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
9

carácter, el Enter que presionamos, queda en la cola del teclado y es tomado y almacenado en
la variable char en la siguiente iteración del ciclo, como eso vacía la cola del teclado, en la
iteración subsecuente ya pide el valor.
El cómo solucionar esto, se puede hacer de varias formas, en este caso, tomaremos la más
clásica, que es utilizar un getchar para sacar y desechar ese Enter que sobra en la cola del
teclado.

En la imagen anterior, vemos un ejemplo más completo, en donde usamos el ciclo con la
bandera de tipo char y vemos que en líneas 14 y 17 hemos incluido instrucciones getchar, la
primera es porque al pedir un dato numérico en la línea 11, se queda un Enter en la cola del
teclado y en línea 16, al pedir el valor de «i» se produce de nuevo.
Este código lo hemos visto con el ciclo do…while, ahora veremos cómo se hace lo mismo con
el ciclo while.
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
10

La diferencia principal entre estos dos ciclos, es el lugar donde se verifica la condición, en el
ciclo while, la verificación ocurre antes de que se ejecute el bloque de código, por lo que la
variable de bandera debe tener un valor que haga que la condición se cumpla y el bloque se
ejecute la primera vez.

Ya para concluir les dejamos el vídeo de este tema


https://youtu.be/LWPg21SdGR4

El ciclo FOR
Los ciclos o estructuras repetitivas, son estructuras que permiten indicar dentro de un programa,
que un bloque de instrucciones se ejecutará un número finito de veces,
El ciclo FOR, es un ciclo numérico, basado en el uso de un contador, el cual no es otra cosa
que una variable a la cual le damos un valor inicial y a la que le iremos incrementando de forma
fija su valor, para que nos permita contar el número de veces o iteraciones que el ciclo ejecuta.
Dado que el ciclo FOR está basado en usar un contador, debemos de saber con certeza cuántas
iteraciones realizará, antes de entrar a el, su sintaxis es muy simple
FOR (inicio; condición; incremento)

Como podemos ver en la imagen, en la línea 8, definimos un ciclo, FOR en donde la variable
«i» que va a ser el contador del ciclo, se le asigna un valor inicial de 0, se le indica que el ciclo
se ejecutará mientras el valor de i sea menor de 3; al final vemos la notación de postincremento
i++, que equivale a i=i+1, es decir, incrementar el valor de i en 1 en cada iteración.
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
11

La llave que esta después del paréntesis marca el inicio del bloque de instrucciones que se
ejecutará mientras i sea menor de 3, dicho bloque son las líneas 9 y 10, ya que en la línea 11
vemos la llave que cierra el bloque del ciclo FOR, por lo que, lo que esté después se ejecutará
hasta que termine el ciclo.
Como vemos en la imagen anterior, aún lado del código tenemos la pantalla de ejecución, en
donde vemos que, aunque solo escribimos 1 ves el printf y el scanf, estas se ejecutaron 3 veces.

ACUMULADOR
Un acumulador es una variable, a la cual le vamos a incrementar su valor de forma variable
dentro de un ciclo, para ello, la variable debe tener un valor inicial antes de entrar al ciclo y
debemos incrementar o decrementar su valor dentro del ciclo, veamos un ejemplo

En este caso, vamos a sumar tres números, un ejemplo típico del uso de ciclos y de un
acumulador. La variable «t», servirá de acumulador, observemos que en la línea 8, antes del
FOR, le damos un valor de cero. Dentro del ciclo, una vez que pedimos el valor de la variable
«p», vemos que en la línea 12 usamos la típica forma de los acumuladores.
Acumulador=Acumulador + variable.
En esta forma, el valor que tiene «t» que es cero, se suma con el de «p», el resultado se
almacena en «t», como las variables usan almacenamiento destructivo, cada ves que le
asigamos a una variable el resultado de una operación, esta almacena el resultado y desecha su
valor anterior, de esta forma cuando regresemos en la siguiente iteración «t» contendrá el
resultado anterior y a ese se agregará el nuevo valor.
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
12

Como vemos en la imagen anterior, la variable «t» al final almacenó la suma de los valores que
tuvo «p», cabe señalar que el acumulador igual puede funcionar con restas, multiplicaciones y
divisiones.

Estructuras anidadas
Como en cualquier otra estructura, dentro del FOR podemos incluir otras estructuras, como en
el caso de la imagen siguiente, en el que hemos modificado el programa, para que en lugar de
sumar los 3 valores, de ellos, solo acumule los valores que sean mayores o iguales a 0.

La única condición para anidar una estructura dentro de un ciclo es que la estructura quede
dentro de las llaves del ciclo y esta no trate de pasar los límites de este.
Al ser parte del bloque de instrucciones del ciclo, la estructura que anidemos, se ejecutará en
cada iteración del ciclo.

Ciclos con distintos valores


Solo para aclarar, los ciclos no tienen que comenzar siempre en 0, ni el incremento siempre
será 1, esto dependerá de las condiciones del problema que debamos de resolver, por lo que en
la siguiente imagen vemos un ciclo FOR cuyo contador va del 0 al 10, con un incremento de
2
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
13

Para concluir, dejamos la explicación del tema en vídeo.


https://youtu.be/J1djHU6BSzA

Operadores relacionales

Los operadores relacionales, son operadores lógicos que permiten unir varias expresiones
lógicas, las cuales se evaluarán a través de las tablas de verdad, con el fin de construir
expresiones lógicas que representen decisiones complejas.

Operador AND
Comenzaremos con el operador and, el cual en C++ se expresa con un doble ampersand (&&),
este operador indica que en una expresión lógica compleja, todas las operaciones lógicas deben
ser verdaderas, para que el resultado de toda la expresión lo sea, si una de ellas es falsa, toda la
expresión es falsa.

Exp1 Exp2 Exp1 && Exp2

Verdadero Verdadero Verdadero


Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
14

Exp1 Exp2 Exp1 && Exp2

Verdadero Falso Falso

Falso Verdadero Falso

Falso Falso Falso

Para hacer esto más claro, veamos la siguiente imagen de ejemplo en donde, en la línea 26 se
emplea un &&.

Como podemos ver, estos operadores se pueden usar en estructuras selectivas y en ciclos, en
este caso, estamos usando el operador && para verificar si las ventas del vendedor están entre
un determinado rango. Para ello, revisamos que el valor de la variable sea mayor o igual que
el límite inferior y (&&) menor que el límite superior.

Operador OR
Este operador se representa dentro del lenguaje C++ con una doble barra (||) , este es un símbolo
algo complicado de obtener, en el teclado suele estar en la tecla «1» o en la tecla de ordinales
(a la izquierda del 1) , por lo que habrá que ver si aparecer con shift o con Alt.
El operador se emplea para expresiones en las que sólo basta con que una de las expresiones
sea verdadera, su tabla de verdad es la siguiente:
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
15

Exp1 Exp2 Exp1 || Exp2

Verdadero Verdadero Verdadero

Verdadero Falso Verdadero

Falso Verdadero Verdadero

Falso Falso Falso

Para hacer esto más claro, veamos la siguiente imagen, en la cual aplicamos el operador OR
en un ciclo While en la línea 10, para que se entre al ciclo, ya sea que el usuario presione la
letra «s» minúscula o «S» mayúscula.

Operador coma
Este operador no existe dentro de la lógica matemática, por lo que no tiene una tabla de verdad,
es un operador para separar elementos de una lista, sin embargo, tiene algunos usos algo
curiosos, primero veamos cómo podemos inicializar dos variables en la sentencia FOR.
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
16

Como podemos ver, en la línea 10, al segmento de inicializar el contador del FOR, le
agregamos una variable más, aclaramos que no estamos definiendo dos ciclos, ni ciclos
anidados solo estamos asignando un valor inicial a una variable es como si lo hiciéramos una
línea antes, es una mera forma de ahorrarnos una línea de código.

Otro uso que tiene es como sustituto de && en un un IF, no es un && en realidad pero la
estructura IF lo evalúa como tal, veamos el ejemplo.

Como siempre, les dejamos con la explicación en vídeo, de este tema

https://youtu.be/BcS4riKAKX4
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
17

Ejercidos en Zinjai

Señor estudiante se solicita que resuelva los siguientes ejercicios los mismo que
deberán ser entregados al finalizar el modulo en Diagrama de flujo y código
fuente Zinjai.

EJERCICIOS ENUNCIADOS

1. Se quiere crear un programa que resuelva la ecuación cuadrática tipo ax2 + bx + c. Para ello
se ha estudiado el problema, que se ha planteado en pseudocódigo. Transformar el
pseudocódigo que se muestra a continuación en código C y comprobar que el programa
obtiene los resultados esperados para una serie de casos de prueba.

2. Un else puede ir seguido de un if dando lugar a lo que se conoce como una estructura else if.
Un if seguido de if else equivale a decir “Si ocurre esto … haz esto … y si no comprueba si
ocurre esto otro … Se pueden añadir tantos else if como se desee (y finalmente puede haber
un else para contemplar el caso de que no se cumpla ninguna de las condiciones). Estudia
este código y responde a las cuestiones indicadas más abajo:

a) Describe qué es lo que hace este programa


detalladamente.

b) ¿Cuál es el resultado si definimos a con valor 20?


¿Cuál es el resultado si definimos a con valor 30? ¿Cuál
es el resultado si definimos a con valor 40?

c) Elimina el último else que aparece en el código. ¿Cuál


es el resultado ahora si definimos a con valor 20? ¿Cuál
es el resultado ahora si definimos a con valor 30? ¿Cuál
es el resultado ahora si definimos a con valor 40? ¿Por
qué obtenemos ahora estos resultados?

3. Realice un programa en C++ Que pida un número del 1 al 5 y diga si es primo o no.
4. Que pida un número y diga si es par o impar.
5. Que pida un número del 1 al 7 y diga el día de la semana correspondiente.
6. Que pida un número del 1 al 12 y diga el nombre del mes correspondiente
7. Que pida 3 números y los muestre en pantalla de menor a mayor.
8. Que pida 3 números y los muestre en pantalla de mayor a menor
9. Que pida 3 números y los muestre en pantalla de mayor a menor en líneas distintas. En caso
de haber números iguales se pintan en la misma línea.
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
18

10. Que pida un número y diga si es positivo o negativo.


11. Que sólo permita introducir los caracteres S y N.
12. Que pida un número y diga si es mayor de 100.
13. Que pida una letra y detecte si es una vocal.
14. Que pida tres números y detecte si se han introducido en orden creciente.
15. Que pida tres números y detecte si se han introducido en orden decreciente.
16. Que pida 10 números y diga cuál es el mayor y cual el menor.
17. Que pida tres números e indicar si el tercero es igual a la suma del primero y el segundo.
18. Que tome dos números del 1 al 5 y diga si ambos son primos
19. Que tome dos números y diga si ambos son pares o impares.
20. Que tome tres números y diga si la multiplicación de los dos primeros es igual al tercero
21. Que tome tres números y diga si el tercero es el resto de la división de los dos primeros.
22. Que muestre un menú donde las opciones sean “Equilátero”, “Isósceles” y “Escaleno”, pida
una opción y calcule el perímetro del triángulo seleccionado
23. Que pase de Kg a otra unidad de medida de masa, mostrar en pantalla un menú con las
opciones posibles.
24. Que lea un importe bruto y calcule su importe neto, si es mayor de 15.000 se le aplicará un
16% de impuestos, en caso contrario se le aplicará un 10%
25. Que lea una hora en hora: minutos: segundos y diga la hora que es un segundo después.
26. Que calcule el sueldo que le corresponde al trabajador de una empresa que cobra 40.000
euros anuales, el programa debe realizar los cálculos en función de los siguientes criterios:
27. Escribir un programa que pregunte al usuario su edad y muestre por pantalla si es mayor de
edad o no.
28. Escribir un programa que almacene la cadena de caracteres contraseña en una variable,
pregunte al usuario por la contraseña e imprima por pantalla si la contraseña introducida
por el usuario coincide con la guardada en la variable sin tener en cuenta mayúsculas y
minúsculas.
29. Escribir un programa que pida al usuario dos números y muestre por pantalla su división. Si
el divisor es cero el programa debe mostrar un error.
30. Escribir un programa que pida al usuario un número entero y muestre por pantalla si es par
o impar.
31. Para tributar un determinado impuesto se debe ser mayor de 16 años y tener unos ingresos
iguales o superiores a 1000 $ mensuales. Escribir un programa que pregunte al usuario su
edad y sus ingresos mensuales y muestre por pantalla si el usuario tiene que tributar o no.
32. Los alumnos de un curso se han dividido en dos grupos A y B de acuerdo al sexo y el nombre.
El grupo A esta formado por las mujeres con un nombre anterior a la M y los hombres con
un nombre posterior a la N y el grupo B por el resto. Escribir un programa que pregunte al
usuario su nombre y sexo, y muestre por pantalla el grupo que le corresponde.
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
19

33. Los tramos impositivos para la declaración de la renta en un determinado país son los
siguientes:

Escribir un programa que pregunte al usuario su renta anual y muestre por pantalla el tipo
impositivo que le corresponde

34. En una determinada empresa, sus empleados son evaluados al final de cada año. Los puntos
que pueden obtener en la evaluación comienzan en 0.0 y pueden ir aumentando,
traduciéndose en mejores beneficios. Los puntos que pueden conseguir los empleados
pueden ser 0.0, 0.4, 0.6 o más, pero no valores intermedios entre las cifras mencionadas. A
continuación se muestra una tabla con los niveles correspondientes a cada puntuación. La
cantidad de dinero conseguida en cada nivel es de 2.400$ multiplicada por la puntuación del
nivel

Escribir un programa que lea la puntuación del usuario e indique su nivel de rendimiento, así como la
cantidad de dinero que recibirá el usuario.

35. Escribir un programa para una empresa que tiene salas de juegos para todas las edades y
quiere calcular de forma automática el precio que debe cobrar a sus clientes por entrar. El
programa debe preguntar al usuario la edad del cliente y mostrar el precio de la entrada. Si
el cliente es menor de 4 años puede entrar gratis, si tiene entre 4 y 18 años debe pagar 5$ y
si es mayor de 18 años, 10$.

36. La pizzería Bella Napoli ofrece pizzas vegetarianas y no vegetarianas a sus clientes. Los
ingredientes para cada tipo de pizza aparecen a continuación.
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
20

• Ingredientes vegetarianos: Pimiento y tofu.

• Ingredientes no vegetarianos: Peperoni, Jamón y Salmón.

Escribir un programa que pregunte al usuario si quiere una pizza vegetariana o no, y en función de su
respuesta le muestre un menú con los ingredientes disponibles para que elija. Solo se puede eligir un
ingrediente además de la mozzarella y el tomate que están en todas las pizzas. Al final se debe
mostrar por pantalla si la pizza elegida es vegetariana o no y todos los ingredientes que lleva.

Bibliografías

De Rafael Gamas Gutiérrez, V. T. las E. (2016, junio 30). Programación en C++ : 6 Ciclos, Contadores y
Acumuladores. Sistemasumma.com. https://sistemasumma.com/2016/06/30/programacion-
en-c-6-ciclos-contadores-y-acumuladores/

González, J. D. M. (2018, marzo 20). Bucles o ciclos en C++. Uso, declaración y sintaxis en C++.
Programarya.com; ProgramarYa. https://www.programarya.com/Cursos/C++/Ciclos

También podría gustarte