Está en la página 1de 35

Bucles FOR, While y Do - While, Switch - Case

Jonathan Avendaño Pérez, Ing, M.Sc.(c)


email: javendanop@ecci.edu.co

Universidad Escuela Colombiana de Carreras Industriales


Bogotá Colombia
Facultad de Ingenierı́a Electrónica

8 de agosto de 2016

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 1


Bucle FOR

En general, un bucle es una estructura de control que repite un blo-


que de instrucciones. Un bucle FOR es un bucle que repite el bloque
de instrucciones un número predeterminado de veces. El bloque de
instrucciones que se repite se suele llamar cuerpo del bucle y cada
repetición se suele llamar iteración.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 2


Bucle FOR

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 3


Bucle FOR

Sintaxis

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 4


Bucle FOR

Ejemplo 1:
Realizar un script que imprima en pantalla los números del 1 al
100 utilizando FOR.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 5


Bucle FOR

Solución:
#include <iostream>
using namespace std;

int main() {

//Bucle for desde 1 hasta 100


for(unsigned int i = 1; i <= 100; i++){
cout<<i<<”\n”;
}
cout<<”\n”;
cout<<”\n”;
return 0;
}

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 6


Bucle FOR

For Anidado
Un único ciclo al interior de otro, funciona como un ciclo normal
pero elevado al cuadrado, el ciclo externo comienza su ejecución
con normalidad y luego va hasta el ciclo interno, y aquı́ es donde
cambia todo; el ciclo externo no avanza hasta que el ciclo interno
termine y una vez el ciclo externo avanza un paso vuelve a esperar
al interno y ası́ sucesivamente hasta que el externo termina.
Los ciclos anidados suelen usarse para llenar matrices (un vector
de varias dimensiones) donde un ciclo recorre cada fila y otro cada
columna o viceversa (depende de lo que necesitemos). De este modo
entonces el ciclo externo empieza por la columna cero y el interno
llena cada casilla de la columna cero y luego de la uno y las dos y
ası́... El ciclo externo (el de las columnas) no avanza a la siguiente
hasta que el ciclo interno no llene todas las casillas de esa columna
(lo cual tiene sentido, pues debe llenarse en orden).

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 7


Bucle FOR

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 8


Bucle FOR

Sintaxis
for(int i = valor inicial; i < valor final; i++)
{
/∗
....
....
Bloque de Instrucciones....
....
....
∗/
for(int j = valor inicial; j < valor final; j++)
{
/∗
....
....
Bloque interno de Instrucciones....
....
....
∗/
}
//...Mas instrucciones
}

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 9


Bucle FOR

Ejemplo 2:
Crear una script que dibuje una escalera de asteriscos. El progra-
ma debe solicitar ingresar por pantalla la altura de la escalera.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 10


Bucle FOR

Solución:
#include <iostream>
using namespace std;

int main() {
int Altura = 0;
cout << ”Por Favor Ingrese la altura de la escalera \n”;
cin >> Altura;

//Bucle for Anidado


for(unsigned int i = 1; i <= Altura; i++){
for(unsigned int j = 1; j <= i; j++){
cout << ”∗”;
}
cout << endl;
}
cout<<”\n”;
cout<<”\n”;
return 0;
}

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 11


Switch - Case

Una sentencia switch contiene un selector. Cuando una sentencia


switch se ejecuta, el valor del selector se compara con las etique-
tas case. Si alguna de ellas concuerda con ese valor se ejecutará la
correspondiente secuencia de sentencias.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 12


Switch - Case

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 13


Switch - Case
Sintaxis

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 14


Switch - Case

Palabras reservadas del sistema break y default


La palabra reservada break permite que el flujo del programa se
detenga justo después de la ejecución de la sentencia anterior a ese
break, impidiendo que se ejecuten las sentencias correspondientes a
las siguientes alternativas del switch. Por tanto, Se debe Obligato-
riamente Acabar Cada Bloque De Sentencias Correspondiente
A Cada Alternativa Con Una Sentencia break.
Por otro lado, la alternativa default es opcional y engloba un con-
junto de sentencias (que puede ser vacı́o, contener una sola sentencia
o varias) que se ejecutan en caso de que ninguna de las alternativas
del switch tenga un valor coincidente con el resultado de evaluar la
expresión del selector.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 15


Switch - Case

Ejemplo 3:
Realizar un script que en primera instancia solicite ingresar por pan-
talla dos valores booleanos (1 o 0). Luego debe imprimir por pantalla
4 opciones de la siguiente manera:
1 AND
2 NAND
3 OR
4 NOR
El programa debe solicitar al usuario seleccionar una de las 4 opcio-
nes anteriores y realizar la operación seleccionada. Este script debe
entregar un mensaje de error si se digita una opción incorrecta, por
ejemplo 5 o 0.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 16


Switch - Case
Solución:
#include <iostream>
using namespace std;
int main() {
bool x = 0, y = 0, res1 = 0, res2 = 0, res3 = 0, res4 = 0;
int opcion;
cout<<”Por favor ingrese el primer valor Booleano”<<endl;
cin>>x;
cout<<”Por favor ingrese el segundo valor Booleano”<<endl;
cin>>y;
cout<<”por favor seleccione una de las siguiente opciones”<<endl;
cout<<endl;
cout<<”1−> AND”<<endl;
cout<<”2−> NAND”<<endl;
cout<<”3−> OR”<<endl;
cout<<”4−> NOR”<<endl;
cout<<endl;
cin>>opcion;
cout<<endl;
switch(opcion){
case 1:
res1 = x&&y;
cout<<x<<” AND ”<<y<<” = ”<<res1<<endl;
break;
case 2:
res2 = !(x&&y);
cout<<x<<” NAND ”<<y<<” = ”<<res2<<endl;
break;
case 3:
res3 = x||y;
cout<<x<<” OR ”<<y<<” = ”<<res3<<endl;
break;
case 4:
res4 = !(x||y);
cout<<x<<” NOR ”<<y<<” = ”<<res4<<endl;
break;
default:
cout<<”Se ingreso un numero de opcion incorrecto”<<endl;
break;
}
return 0;
} Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 17
While

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 18


While

Sintaxis
while(condicion){
/∗
....
....
Bloque de Instrucciones....
....
....
∗/
}

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 19


Switch - Case

Ejemplo 4:
Realizar un script que imprima los números pares desde el 0 hasta
al 10.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 20


Bucle FOR

Solución:
#include <iostream>
using namespace std;

int main() {
int cont = 0;
while(cont <= 10){
if(cont %2 == 0)
cout << cont << endl;
cont++;
}
cout << endl;
return 0;

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 21


Do - While

Do (Hacer) - While (Mientras)


Su diferencia básica con el ciclo while es que la prueba de condición
es hecha al finalizar el ciclo, es decir las instrucciones se ejecutan
primero y al final evalúa la condición;

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 22


Do - While
Do (Hacer) - While (Mientras)

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 23


While

Sintaxis
do{
/∗
....
....
Bloque de Instrucciones....
....
....
∗/
}while(condicion);

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 24


While

Menús usando las sentencias Do-While


En C se pueden realizar menús por pantalla que cuando no se cum-
plan las opciones que entrega el menú arroje un mensaje de error y
se vuelva a mostrar el menú. Lo anterior puede hacerse usando las
sentencias Do-While

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 25


Switch - Case

Ejemplo 5:
Realizar un script que en primera instancia solicite ingresar por pan-
talla dos valores booleanos (1 o 0). Luego debe imprimir por pantalla
4 opciones de la siguiente manera:
1 AND
2 NAND
3 OR
4 NOR
El programa debe solicitar al usuario seleccionar una de las 4 opcio-
nes anteriores y realizar la operación seleccionada. Este script debe
entregar un mensaje de error si se digita una opción incorrecta y
volver a mostrar el menú.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 26


Switch - Case
Solución Parte a:
#include <iostream>
using namespace std;

int main() {
bool x = 0, y = 0, res1 = 0, res2 = 0, res3 = 0, res4 = 0;
int opcion;
cout << ”Por favor ingrese el primer valor Booleano” << endl;
cin >> x;
cout << ”Por favor ingrese el segundo valor Booleano” << endl;
cin >> y;
do{
cout << ”por favor seleccione una de las siguiente opciones” << endl;
cout << endl;
cout << ”1−> AND” << endl;
cout << ”2−> NAND” << endl;
cout << ”3−> OR” << endl;
cout << ”4−> NOR” << endl;
cout << endl;
cin >> opcion;
if((opcion<1)||(opcion>4))
cout << ”Se ingreso un numero de opcion incorrecto” << endl;
cout << endl;
}while((opcion<1)||(opcion>4));

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 27


Switch - Case

Solución Parte b:
switch(opcion){
case 1:
res1 = x&&y;
cout << x <<” AND ” << y << ” = ” << res1 << endl;
break;
case 2:
res2 = !(x&&y);
cout << x << ” NAND ” << y << ” = ” << res2 << endl;
break;
case 3:
res3 = x||y;
cout << x << ” NAND ” << y << ” = ” << res3 << endl;
break;
case 4:
res4 = !(x||y);
cout << x << ” NAND ” << y << ” = ” << res4 << endl;
break;
default:
break;
}
return 0;
}

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 28


Algo más...

¿Qué pasa si en el ejemplo anterior ingresamos una letra o


un carácter en lugar de un número?

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 29


Algo más...

Nuestro Código Explotó!!!!

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 30


Algo más...

¿Cómo solucionar este error?


El anterior problema puede solucionarse por medio de las siguientes
lı́neas de código:
cin.clear();
cin.ignore(100000,’\n’);

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 31


Algo más...

Ejemplo 7:
Realizar un script que solicite ingresar un número por pantalla y
luego indique sı́ se ingreso un número o no. En caso de que no
se haya ingresado un número el programa debe mostrar un mensaje
indicando que no se ingreso un número y volver a solicitar ingresar el
dato por pantalla. Al ingresar un número el programa debe terminar
su ejecución.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 32


Algo más...
Solución:
#include<iostream>
using namespace std;

int main(){
int num;
bool flag;
do{
cout << ”Ingesar numero” << endl;
cin >> num;
if(!cin){
cout << ”No se ingreso numero” << endl;
flag = 1;
cin.clear();
cin.ignore(100000,’\n’);
}
else{
cout << ”Se ingreso un numero” << endl;
flag = 0;
cin.clear();
cin.ignore(100000,’\n’);
}
}while(flag);
return 0;
}

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 33


Ejercicios

I Realizar un script que solicite ingresar un número por pantalla


y luego muestre todos los números primos desde 2 hasta el
número ingresado. El programa debe mostrar un mensaje de
error cuando se ingrese un valor negativo o cuando no se ingrese
un número.
I Realizar un script que solicite ingresar por pantalla un numero
del 1 al 10 y luego muestre su equivalente en números romanos.
El programa debe mostrar un mensaje de error cuando no se
ingrese un número y volver a solictar ingresar el dato.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 34


Ejercicios

I Diseñar un script que en primera instancia solicite ingresar un


ángulo en grados. El programa debe mostrar un mensaje de
error cuando no se ingrese un valor numérico y volver a solicitar
ingresar nuevamente el dato. Luego debe imprimir por pantalla
3 opciones de la siguiente manera:
a. Sen(x)
b. Cos(x)
c. Tan(x)
El programa debe solicitar al usuario seleccionar una de las 3
opciones anteriores y realizar la operación seleccionada. Este
script debe entregar un mensaje de error si se digita una opción
incorrecta y volver a mostrar el menú.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 35

También podría gustarte