Ciclos Repetitivos
Ciclos Repetitivos
Ciclos Repetitivos
1
Unidad Educativa “Eloy Alfaro” Ing. Carlos R. castillo T.
2
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
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.
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
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.
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.
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.
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
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.
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:
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
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
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