Você está na página 1de 24

UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS

1

4. ESTRUCTURAS DE CONTROL

OBJETIVOS DE LA UNIDAD

Utilizar la estructura selectiva if y switch de C++, para la toma de decisiones en la
elaboracin de un programa.
Permitir la utilizacin las sentencias while, do-while y for en los programas de C++,
para que se ejecuten bloques de instrucciones mas de una vez.

INTRODUCCION

Los programas que hasta el momento se han realizados en C++, contienen instrucciones
de control en las que se ejecutan todas las instrucciones de arriba hacia abajo en el orden
que las escribimos; sin embargo en casi todos los programas, se requiere seleccionar las
instrucciones a ejecutar segn se cumpla o no condiciones dadas por el programador y
ejecutar un nmero determinado de veces un mismo bloque de instrucciones, con un
conjunto de datos diferentes.

Las estructuras de control selectivas o condicionales, nos permiten realizar cambios en la
secuencia o flujo de ejecucin de unas u otras sentencias. En este captulo se aprender
a utilizar las estructuras de seleccin if y switch, en cumplimiento o no de una
condicin.

C++, utiliza dos procedimientos de repeticin: Repeticin controlada por contador y
repeticin controlada por centinela, utilizando tres tipos de estructuras de control de
repeticin: while, do-while y for.

4.1 ESTRUCTURAS DE CONTROL SELECTIVAS

4.1.1 SENTENCIA if

La estructura de control de seleccin if en C++, tiene dos alternativas que se ejecutan en
funcin del cumplimiento o no de una condicin.
CASO 1. Sentencias if sencillas

Se utiliza cuando se deben ejecutar instrucciones en cumplimiento de una condicin.

Sintaxis de la instruccin:

if (expresin) Accin

En este caso se evala la expresin del parntesis. Si la expresin es verdadera se
ejecuta la accin; de lo contrario se ignoran estas acciones y se contina con la ejecucin
del programa.

MANUAL DE PROGRAMACIN EN C++

2
Por ejemplo:

if (numero>=0)
cout<<numero positivo;
cout<<otras instrucciones;

En este ejemplo si la variable nmero es mayor que cero, el programa escribe: numero
positivo y a continuacin la siguiente instruccin: otras instrucciones. En caso de que
la condicin no se cumpla solo imprime otras instrucciones;
CASO 2. Sentencias if-else

Se utiliza cuando se deben ejecutar instrucciones en cumplimiento o no de una condicin.

Sintaxis de la instruccin:

if (expresin) Accin1
else Accin2

Utilizamos este caso cuando se evala la expresin del parntesis y se deben ejecutar
acciones si se cumple la condicin y acciones si no se cumple la condicin. Cuando la
expresin es verdadera, se ejecutan las instrucciones que se mencionen en Accin1 y en
caso contrario se ejecutan las de Accin2. Una Accin puede ser una nica sentencia que
termina en punto y coma o un grupo de sentencias encerradas entre llaves.

Por ejemplo:

if (numero>=0)
{cout<<numero positivo;
x=x+1;}
else
cout<<numero negativo;
cout<<otras instrucciones;

En este ejemplo si nmero es mayor o igual que cero, escribe numero positivo y aumenta
en uno la variable x, a continuacin escribe: otras instrucciones. Si la condicin no se
cumple escribe: numero negativo y a continuacin escribe otras instrucciones.

CASO 3. Sentencias if-else anidadas

Se utilizan cuando se deben ejecutar instrucciones en cumplimiento o no de varias
condicines.

Sintaxis de la instruccin:

if (expresin) Accin-1
else
if (expresin) Accin-2
else
if (expresin) Accin-3
else
if (expresin) Accin-4
else
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS



3
:
:
Accin-n

Utilizamos este caso cuando se deben evaluar tres o mas alternativas. Cuando la
expresin es verdadera, se ejecutan las instrucciones que se mencionen en Accin1, en
caso contrario se evala nuevamente la expresin para ejecutar las instrucciones por
verdadero en Accin2. Si hay ms alternativas, se colocan mas expresiones.

De esta forma si un programa tiene tres alternativas, se requiere dos condicionales; si
tiene cuatro alternativas, se requieren tres condicionales y as sucesivamente.

Por ejemplo:

if (numero==0)
cout<<numero cero;
else
if (numero>0)
cout<<numero positivo;
else cout<<numero negativo;
cout<<otras instrucciones;

En este ejemplo tenemos tres alternativas por lo que tenemos que anidar dos
instrucciones if. Si nmero es igual que cero, escribe: numero cero y a continuacin:
otras instrucciones. Si el nmero es mayor que cero, escribe: numero positivo y a
continuacin: otras instrucciones. Si la condicin no es ninguna de las dos anteriores
alternativas o sea es menor que cero, escribe: numero negativo y a continuacin:
otras instrucciones.
MANUAL DE PROGRAMACIN EN C++

4

EJEMPLO 1:

Leer un nmero y escribir si es mayor o menor o igual que 100

Variables: numero

PSEUDOCODIGO DIAGRAMA DE FLUJO


Inicio
leer numero
si (numero > 100)
entonces escribir mayor
sino escribir menor o igual
fin_si
fin

CODIGO EN C++

/*Nmero mayor o menor o igual que
cien*/

#include<iostream>
using namespace std;
int main()
{
int numero;
cout<<" Ingrese un numero "<<endl;
cin>>numero;
if(numero > 100)
cout<<" mayor "<<endl;
else
cout<<" menor o igual "<<endl;
system("pause");
}



UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS



5
EJEMPLO 2:
Leer un nmero y escribir si es menor que cero, igual a cero o mayor que cero.
Variable: NUMERO
Variables: A: NUMERO
PSEUDOCODIGO DIAGRAMA DE FLUJO


Inicio
leer NUMERO
si (NUMERO < 0)
entonces escribir menor que cero

sino si (NUMERO = 0)
entonces escribir igual a cero
sino escribir mayor que cero

fin_si

fin_si

Fin


CODIGO EN C++
//Nmero mayor, menor o igual que cero
#include<iostream>
using namespace std;
int main()
{
int numero;
cout<<" Ingrese un numero "<<endl;
cin>>numero;
if(numero < 0)
cout<<" menor que cero "<<endl;
else
if(numero == 0)
cout<<" igual a cero "<<endl;
else
cout<<" mayor que cero "<<endl;
system("pause");
}

MANUAL DE PROGRAMACIN EN C++

6
EJEMPLO 3:
Leer tres nmeros, determinar cual es el mayor.
Variables: A: Numero 1 B: Numero 2 C: Numero 3
PSEUDOCODIGO

DIAGRAMA DE FLUJO

Inicio
leer A, B, C
si (A > B y A>C)
entonces escribir A
sino
si (B>A y B>C)
entonces escribir B
sino
escribir C
fin_si
fin_si
fin


CODIGO EN C++
//Determinar cual es el mayor de tres nmeros
#include<iostream>
using namespace std;
int main()
{
int A, B, C;
cout<<" Ingrese tres nmeros "<<endl;
cin>>A>>B>>C;
if(A > B && A>C)
cout<<" El mayor es: "<<A<<endl;
else
if(B>A && B>C)
cout<<" El mayor es: "<<B<<endl;
else
cout<<" El mayor es: "<<C<<endl;
system("pause");
}

UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS



7
4.1.2 sentencia switch

La estructura de control de seleccin switch en C++, permite seleccionar una entre
mltiples alternativas. Es especialmente til cuando la seleccin se basa en valores
exacto de una variable. Escoger alternativas de valores exactos es ms fcil con un
switch que con if anidados.
La variable que se utiliza para el switch, se denomina expresin de control o selector,
esta puede ser solo de tipo int o char.

Sintaxis de la instruccin:

switch (selector)
{
case etiqueta1 : sentencias1;
break;
case etiqueta2 : sentencias2;
break;
case etiqueta3 : sentencias3;
: break;
:
:
:
case etiquetan : sentenciasn;
break;
default : sentenciasd;
}

Se evala la expresin de control o selector y se compara con cada una de las etiquetas
case para ejecutar la secuencia de acciones hasta la sentencia break.
Cada etiqueta es un valor nico y diferente de los otros, la etiqueta default, es opcional y
se utiliza cuando se sospecha que pueden venir valores diferentes a los de las etiquetas.
Cuando el computador encuentra la sentencia break, saltar a la primera sentencia luego
de la llave de cierre del switch.

Por ejemplo:

switch (opcion)
{
case 0 :
cout<<numero cero<<endl;
break;
case 1 :
cout<<numero uno<<endl;
break;
case 2 :
cout<<numero dos<<endl;
break;
case 3 :
cout<<numero tres<<endl;
break;
default :
cout<<otro numero<<endl;
}
MANUAL DE PROGRAMACIN EN C++

8

En este ejemplo se presentan cuatro casos de valores exactos para escoger la alternativa
de impresin; en caso de que la variable opcin sea diferente de 0, 1, 2, 3, imprimir
opcin no vlida.
Uno de los usos mas frecuentes del switch est en la implementacin de mens, esto es,
presentar en pantalla una serie de alternativas para que el usuario elija una.

EJEMPLO:
El siguiente ejemplo presenta en pantalla un men con tres opciones y la captura de la
seleccin del usuario. El programa evaluar la opcin y escoger una alternativa; en caso
de que la opcin sea diferente de 1, 2 o 3, utilizar la opcin por defecto.

1. //Programa ejemplo de utilizacin del switch
2. #include<iostream>
3. using namespace std;
4. int main()
5. {
6. int opcion;
7. float area=0, base, altura, lado, radio, pi=3.141592;
8. cout<<"1. AREA DEL TRIANGULO"<<endl;
9. cout<<"2. AREA DEL CUADRADO"<<endl;
10. cout<<"3. AREA DEL CIRCULO"<<endl;
11. cout<<"DIGITE LA OPCION: ";
12. cin>>opcion;
13. switch (opcion)
14. {
15. case 1 :
cout<<"DIGITE EL VALOR DE LA BASE DEL TRIANGULO"<<endl;
cin>>base;
cout<<"DIGITE EL VALOR DE LA ALTURA DEL TRIANGULO"<<endl;
cin>>altura;
area=base*altura/2;
break;
16. case 2 :
cout<<"DIGITE EL VALOR DEL LADO DEL CUADRADO"<<endl;
cin>>lado;
area=lado*lado;
break;
17. case 3 :
cout<<"DIGITE EL VALOR DEL RADIO DEL CIRCULO"<<endl;
cin>>radio;
area=pi*radio*radio;
break;
18. default :
cout<<"opcin no vlida"<<endl;
19. }
20. cout<<"EL AREA ES: "<<area<<endl;
21. system("pause");
22. }

UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS



9
Cada una de las lneas hace lo siguiente:

Lnea 1: Lnea de comentario, para documentar el programa.
Lnea 2y3: Instrucciones de preprocesador.
Lnea 4: Funcin principal.
Lnea 5: Inicio de bloque de instrucciones.
Lnea 6: Definicin de la variable de tipo entero: opcin, que servir de expresin de
control o selector para el switch.
Lnea 7: Definicin de las variables para los clculos de las reas.
Lneas 8a11: Flujo de salida, imprime en pantalla el men.
Lnea 12: Flujo de entrada, captura en la variable opcion, la seleccin del men.
Lnea 13: El switch es una expresin de control, que evaluar y comparar con cada
una de las etiquetas, la variable opcion.
Lnea 14: Inicio de bloque de instrucciones del switch.
Lnea 15: Valor de etiqueta 1.
Primer grupo de sentencias que permiten el clculo del rea del tringulo.
La instruccin break, transfiere el control a la lnea 19, para que no se
ejecuten las instrucciones de los otros case.
Lnea 16: Valor de etiqueta 2.
Segundo grupo de sentencias que permiten el clculo del rea del
cuadrado.
Lnea 17: Valor de etiqueta 3.
Sentencias que permiten el clculo del rea del crculo.
Lnea 18: Etiqueta default, para cuando vienen valores diferentes a los de las
etiquetas.
Imprime el mensaje: opcin no vlida.
Lnea 19: Fin de bloque de instrucciones del switch.
Lnea 20: Imprime el mensaje: EL AREA ES: y el clculo realizado por cualquiera de
las opciones del switch.
Lnea 21: Instruccin para detener la consola.
Lnea 22: Fin de bloque principal.


4.2 ESTRUCTURAS DE CONTROL REPETITIVAS

Al grupo de instrucciones que se repiten en un programa se les llama bucle, ciclo o gaza.
A cada repeticin de las instrucciones del bucle se le denomina una iteracin.

En las repeticiones controladas por contador, se utiliza una variable de control que
permite contar el nmero de iteraciones. La variable se aumenta un nmero fijo, cada
vez que se ejecuta una iteracin. Cuando la variable de control indica que ya se han
ejecutado todas las interacciones, se termina el bucle y el programa contina en la
instruccin siguiente a la del fin de la estructura de repeticin. A estas instrucciones
controladas por contador se le denomina de repeticin definida, por que se sabe con
exactitud cuntas veces se ejecutar el ciclo.

Las repeticiones controladas por centinela, se utilizan cuando el nmero de iteraciones no
es conocido con anticipacin o el bucle incluye enunciados para obtener datos cada vez
que se ejecute. El valor del centinela (santo y sea), es proporcionado al programa para
terminar el bucle, una vez se le han suministrado todos los datos que requiere el
programa. A este tipo de repeticin por centinela, se le denomina repeticin indefinida,
por que no se sabe con anticipacin cuntas veces se necesitar ejecutar el bucle.
MANUAL DE PROGRAMACIN EN C++

10

En caso de que la condicin o centinela no se ingrese, el programa se ejecutara infinitas
veces y no podra terminar (a este error se le denomina un loop) y debe corregirse.
4.2.1 Sentencia for (para)

La estructura de control for, genera bucles controlados por contador, en los cuales se
sabe de antemano cuantas son las iteraciones del bucle.

Sintaxis de la instruccin:
for (inicializacin del contador; condicin-expresin lgica; incremento o decremento)
{
Bloque de sentencias
}

Para controlar el nmero de veces que se repite el bucle, se requiere la utilizacin de un
contador y especificar en que valor va a iniciar, adems en qu cantidad constante se
incrementar o decrementar esta variable. El contador puede ser declarado como
variable en la misma instruccin for.

La condicin es una expresin booleana que indica cuando se debe terminar con las
iteraciones.

Cada iteracin en el ciclo, produce el incremento ( decremento) del contador. Se
acostumbra a utilizan los operadores incrementales o decrementales para mostrar de una
manera sencilla el cambio en el contador, as:

a++ cuando se desea incrementar en uno el contador
a-- cuando se desea restar en uno el contador
a+=2 cuando se desea incrementar en dos el contador

Los puntos y comas son indispensables para separar la inicializacin del contador, con la
expresin lgica y el incremento o decremento.

Cuando el bucle contiene solo una sentencia, no es indispensable las llaves { } en la
sintaxis, as:

for (condicin)
sentencia;




UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS



11
El siguiente ejemplo:
int K;
for (k=1; k <= 20; k+=2)
cout<< k;

Imprime los nmeros 1, 3, 5, 7, 9, 11, 13, 15, 17 y 19. La variable k es el contador e
inicia en 1 y finaliza al llegar a 20, en la primera iteracin imprimir el valor 1. En la
siguiente incrementa k en 2 y la variable cambia su valor a 3 y escribe en pantalla el
nmero 3. En la siguiente aumenta k en 2 y la variable cambia su valor a 5, escribe en
pantalla el nmero 5 y as sucesivamente hasta imprimir el nmero 19, cuando k toma el
valor de 21, no ingresa al bucle por lo tanto este ltimo dato no se imprime, el control del
programa continuar con las instrucciones siguientes al bucle.

La declaracin de la variable de control se puede hacer en la misma instruccin for as:
for (int k=1; k <= 20; k=k+2)
cout<< k;
MANUAL DE PROGRAMACIN EN C++

12


EJEMPLO: Sumar 10 nmeros enteros introducidos por teclado

PSEUDOCODIGO DIAGRAMA DE FLUJO


Inicio
SU 0
para i 1,10,1 haga
leer NU
SU SU + NU
fin_para
escribir SU
fin



CODIGO EN C++

#include<iostream>
using namespace std;
int main()
{
int SU=0,NU;
cout<<"Ingrese 10 numeros "<<endl;
for(int i=1 ;i<=10 ;i++)
{
cin>>NU;
SU=SU+NU;
}
cout<<SU<<endl;
system("pause");
}


UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS



13
4.2.2 Sentencia while (mientras que)
La estructura de control while, genera bucles controlados por centinela en los cuales se
sabe la condicin de terminacin del bucle, pero no se sabe de antemano cuantas son las
iteraciones del bucle. Aunque con la estructura while podramos hacer bucles for, por
facilidad en el control del contador, es mas utilizado el for para implementar los bucles
controlados por contador.
Sintaxis de la instruccin:
while (condicin)
{
sentencia-1;
sentencia-2;
sentencia-3;
:
:
sentencia-n;
}

En este caso las sentencias se repiten, mientras la expresin lgica o condicin del bucle
sea verdadera.
La condicin del bucle se evala antes de que se ejecuten las sentencias. Si la condicin
es falsa, no se ingresar al bucle.
Note que no se coloca punto y coma (;) en el la lnea del while, de hacerse no ejecutar
el bucle.
Cuando se debe ejecutar solo una sentencia varias veces, no es indispensable las llaves
{ }.
En el siguiente ejemplo:
int y=z=0;
while(y!=10)
{
cin>>y
z=z+y;
}
cout<<z<<endl;

El ciclo while, suma los nmeros que se ingresan por teclado en la variable z, hasta que
se digite el valor del centinela que en este caso es 10 y que permite la terminacin del
ciclo.


MANUAL DE PROGRAMACIN EN C++

14
EJEMPLO

Contar los nmeros positivos que se ingresan por teclado hasta que se ingrese un nmero
negativo.

Variables: X: es el centinela
P: es el contador

PSEUDOCODIGO DIAGRAMA DE FLUJO


Inicio
X 0
P -1
mientras (X >=0) hacer
P P + 1
Leer X
fin_mientras
escribir P
fin
CDIGO EN C++
#include<iostream>
using namespace std;
int main()
{
int X=0,P=-1;
cout<<"Ingrese positivos, para terminar
ingrese un negativo"<<endl;
while(X>=0)
{
P++;
cin>>X;
}
cout<<"Ingreso "<<P<<" numeros"<<endl;
system("pause");
}

OBSERVACIONES: El ciclo se repite mientras la lectura de nmeros sea positiva. Se
acostumbra a utilizar en C++, los operadores incrementales para el control del contador.

UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS



15
4.2.3 Sentencia do- while (haga mientras que)

Esta sentencia funciona de modo anlogo a la instruccin while, con la diferencia de que
la condicin se evala despus de ejecutar las primeras sentencias, esto significa que el
bucle se ejecuta por lo menos una vez.

Sintaxis de la instruccin:
do
{
sentencia-1;
sentencia-2;
sentencia-3;
:
:
sentencia-n;
} while (condicin);

Comienza ejecutando las sentencias y se evala a continuacin el ciclo. Si la condicin es
verdadera, entonces se repite la ejecucin de las sentencias. Este proceso contina hasta
que la condicin sea falsa.
Observe que se coloca punto y coma (;), luego de la condicin del while.
El siguiente ejemplo:
int x=1;
do
{
cout<<x<<endl;
x++;
} while(x<10);

Imprime los nmeros del 1 al 9. Se ha utilizado una variable contador x que inicia en 1,
esta variable nos permitir controlar la terminacin del ciclo, haciendo incrementos de 1,
por cada iteracin.

EJEMPLO

Hacer un programa que imprima la tabla de multiplicar de un nmero dado por teclado

1. //Tabla de multiplicar de un nmero dado por teclado
2. #include<iostream>
3. using namespace std;
4. int main()
5. {
6. int y,n;
7. cout<<"Cual tabla desea imprimir? "<<endl;
8. cin>>n;
9. do
10. { cout<<y<<" * "<<n<<" = "<<y*n<<endl;
11. y++;
12. } while(y<=10);
13. system("pause");
14. }
MANUAL DE PROGRAMACIN EN C++

16

Cada una de las lneas hace lo siguiente:

Lnea 1: Lnea de comentario.
Lnea 2y3: Instrucciones de preprocesador.
Lnea 4: Funcin principal.
Lnea 5: Inicio de bloque de instrucciones.
Lnea 6: Definicin de la variable entera n, para el ingreso del dato (multiplicando) y
la variable contador y (multiplicador).
Lnea 7: Flujo de salida, imprime en pantalla el mensaje:
Cual tabla desea imprimir?
Lnea 8: Flujo de entrada, captura el dato suministrado por teclado.
Lnea 9: Sentencia do que ejecuta las instrucciones del bucle.
Lnea 10: Llave de inicio del cuerpo del bucle y flujo de salida que imprime cada una
de las lneas de la tabla de multiplicar.
Lnea 11: Expresin matemtica que realiza incrementos de 1 en la variable y.
Lnea 12: Llave de fin del cuerpo del bucle y estructura de control repetitiva while,
que evala si el cuerpo del bucle se vuelve a repetir.
Lnea 13: Instruccin para detener la consola.
Lnea 14: Fin del bloque de instrucciones de la funcin principal.

4.2.4 Bucles anidados
Es posible anidar bucles en C++. Los bucles anidados constan de un bucle externo con
uno o ms bucles internos. Cada vez que se realiza una iteracin en el bucle externo, los
bucles internos se repiten.
Se pueden hacer combinaciones de bucles for, while y do while:

UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS



17
EJEMPLO

Escribir las tablas de multiplicar de la 1 a la 5, con 10 multiplicandos cada una.
PSEUDOCODIGO DIAGRAMA DE FLUJO

Inicio
para i 1,5,1 haga
para j 1,10,1 haga
R i * j
escribir R
fin_para
fin_para
Fin

CODIGO EN C++


#include<iostream>
using namespace std;
int main()
{
for(int i=1 ;i<=5 ;i++)
{
cout<<"\n tabla del "<<i<<endl;
for(int j=1 ;j<=10 ;j++)
cout<<i<<" * "<<j<<"="<<i*j<<endl;
}
system("pause");
}


OBSERVACIONES: El ciclo externo genera el multiplicando de la tabla y el interno
genera los multiplicadores e imprime la tabla correspondiente.
MANUAL DE PROGRAMACIN EN C++

18

4.2.5 iNSTRUCCIONES BREAK Y CONTINUE

Algunas veces es necesario interrumpir un bucle o no tomar en cuenta una iteracin, la
instruccin break, obliga a una terminacin inmediata de la instruccin switch, while,
for o do-while y la instruccin continue, transfiere el control al inicio del bucle.
La instruccin break, se utiliza por lo general, cuando se detecta que va a suceder algo
fuera de lo normal en un programa, como por ejemplo cuando se introduce un dato que
puede ocasionar una divisin por cero.
Sintaxis de la instruccin:
break;

EJEMPLO

En el siguiente ejemplo: se desea calcular la ecuacin:
7
2 * 3

+
=
x
x
y , para 10 nmeros que se introducidos por teclado.
#include<iostream>
using namespace std;
int main()
{
int x;
float y;
for (int contador=1;contador<=10;contador++)
{cout<<"Introduzca un numero "<<endl;
cin>>x;
if(x==7)
{ cout<<"No es posible dividir por cero, se interrumpe el bucle "<<endl;
break;
}
y=(3*x+2)/(x-7);
cout<<"Solucion de la ecuacion "<<y<<endl;
}
system("pause");
}


OBSERVACIONES: La instruccin permite la entrada de 10 nmeros y realizar el
clculo de la ecuacin e imprimir el resultado. Si se introduce el nmero 7, el programa
se sale del ciclo.
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS



19
La instruccin continue, se aplica en los ciclos while, do-while o for. Cuando continue
aparece en una instruccin while, significa que la ejecucin se transferir
automticamente a la parte superior del ciclo y empezar a evaluar nuevamente la
condicin.

Sintaxis de la instruccin:
continue;

EJEMPLO

Es til la instruccin continue para no contabilizar datos invlidos. Por ejemplo las notas
erradas de un grupo de estudiantes cuando se desea el promedio y se ingresan datos por
fuera del rango 1 a 5:
#include<iostream>
using namespace std;
int main()
{
const int TOPE=100;
float cuenta=0, calificacion, suma=0;
cout<<"Inserte las calificaciones, para terminar digite 100 "<<endl;
while(calificacion!=TOPE)
{
cin>>calificacion;
if(calificacion<1 || calificacion>5)
continue;
suma=suma+calificacion;
cuenta++;
}
cout<<" El promedio de las calificaciones es "<<suma/cuenta<<endl;
system("pause");
}




Cuando continue aparece en una instruccin for, hace que el control se transfiera al
incremento de la instruccin, despus de lo cual se vuelve a evaluar la expresin de
prueba, a diferencia de la anterior la iteracin es contada.



MANUAL DE PROGRAMACIN EN C++

20
4.3 EJERCICIOS RESUELTOS

EJERCICIO 1

1. //Programa que utiliza un centinela para controlar el bucle
2. //Problema: Solicitar notas y promediarlas
3. #include<iostream>
4. using namespace std;
5. int main()
6. {
7. const int centinela=-1;
8. int cuenta=0;
9. float nota, suma,promedio;
10. suma=promedio=0;
11. cout<<"Digite la primera nota o si desea terminar digite -1 :";
12. cin>>nota;
13. while (nota!=centinela)
14. {
cuenta++;
suma+=nota;
cout<<"Introduzca la siguiente nota: ";
cin>>nota;
15. }
16. promedio=suma/cuenta;
17. cout<<"Digito "<<cuenta<<" notas"<<endl;
18. cout<<"El promedio de notas es: "<<promedio<<endl;
19. system("pause");
20. }



Lnea 5: Funcin principal.
Lnea 7: Especificacin de la constante que nos servir de centinela. Cuando el usuario
digite 1, el bucle terminar. Esto lo utilizamos cuando no sabemos con
anticipacin el nmero de veces que se repetir un bucle.
Lnea 8: Definicin del contador que inicia en cero y nos permitir saber el nmero de
veces que se realiza el ciclo.
Lnea 12: Flujo de entrada, captura en la variable nota, la primer nota suministrada por
teclado.
Lnea 13: Estructura de control repetitiva, que evala la realizacin o no del bucle.
Observe que es verdadero mientras sea diferente al centinela, esto quiere
decir que es verdadero mientras no sea 1, el valor de nota.
Lneas 14 a 15: Cuerpo del ciclo: cuenta++; es la expresin matemtica que realiza
incrementos de 1 en 1 a la variable cuenta. Finalmente nos dir cuantas
notas se digitaron. suma+=nota es la expresin matemtica que suma las
notas que se introducen por teclado por cada iteracin.
UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS



21
EJERCICIO 2


1. //Programa que confirma la clave del usuario
2. #include<iostream>
3. using namespace std;
4. int main()
5. {
6. int clave, entrada=-999;
7. cout<<"DIGITE LA CLAVE (Un numero de tres cifras no negativo) "<<endl;
8. cin>>clave;
9. if(clave>0&&clave>99&&clave<1000)
10. {
11. cout<<"Digite la clave de nuevo "<<endl;
12. while (entrada!=clave)
{
cin>>entrada;
if(entrada!=clave)
cout<<"No coincide, intente de nuevo "<<endl;
else cout<<"Confirmada la clave "<<endl;
13. }
14. }
15. else cout<<"CLAVE ERRADA, PROCESO INTERRUMPIDO "<<endl;
16. system("pause");
17. }





Lnea 6: Definicin de variables enteras. Note que la variable entrada inicia con un
nmero negativo, valor que ser cambiado al confirmar la contrasea.
Lnea 8: Flujo de entrada, captura en la variable clave, el nmero suministrada por
teclado.
Lnea 9: Validacin de la clave, se asegura que sea un nmero positivo y de tres
dgitos.
Lnea 12: Estructura de control repetitiva, que evala la realizacin o no del bucle.
Lnea 12 a 13: Cuerpo del bucle: Captura la confirmacin de la clave y evala si la
entrada es diferente de la clave.



MANUAL DE PROGRAMACIN EN C++

22

EJERCICIO 3

1. //Programa que elabora la estadstica de notas de estudiantes de un curso
2. #include<iostream>
3. using namespace std;
4. int main()
5. {
6. int numero, i, aprobados=0, reprobados=0;
7. float nota, promedio=0;
8. cout<<"Cuantas notas va a digitar? "<<endl;
9. cin>>numero;
10. cout<<"Ingrese las "<<numero<<" notas "<<endl;
11. for (i=1; i<=numero; i++)
12. {
cin>>nota;
if(nota>=3)
aprobados++;
else reprobados++;
promedio=promedio+nota;
13. }
14. cout<<" ESTADISTICA "<<endl;
15. cout<<"NUMERO DE ESTUDIANTES: "<<numero<<endl;
16. cout<<"ESTUDIANTES APROBADOS: "<<aprobados<<endl;
17. cout<<"ESTUDIANTES REPROBADOS: "<<reprobados<<endl;
18. cout<<"PROMEDIO DE NOTAS: "<<promedio/numero<<endl;
19. system("pause");
20. }

Lnea 9: Flujo de entrada, captura en la variable numero, la cantidad de notas a
digitar.
Lnea 11: Estructura de control repetitiva, que inicia la variable i en 1, evala si el
bucle se ha de repetir e incrementa en uno el contador por cada iteracin.
Lnea 12 a la 13: Cuerpo del bucle: Condicional que evala si la nota es mayor o igual
que 3. Aumenta en uno la cuenta de aprobados. De lo contrario, aumenta
en uno la cuenta de reprobados. Acumulador de notas y llave de fin del
cuerpo del bucle
Lneas 14 a 18:Imprime la estadstica.





UNIVERSIDAD MILITAR NUEVA GRANADA CENTRO DE SISTEMAS



23
EJERCICIO 4

1. //Programa que imprime un rectngulo de 6 filas por 4 columnas
2. #include<iostream>
3. using namespace std;
4. int main()
5. {
6. int i, j, filas=6, columnas=10;
7. char simbolo='*';
8. for ( i=1; i<=filas; i++)
9. { cout<<"\n";
10. for ( j=1; j<=columnas; j++)
11. cout<<simbolo<<" ";
12. }
13. system("pause");
14. }




Lnea 8: Estructura de control repetitiva externa, que inicia la variable i en 1,
ejecuta el bucle 6 veces e incrementa en uno el contador por cada
iteracin.
Lnea 9 a 12: Cuerpo del bucle externo, hace un salto de lnea cada vez que inicia una
nueva.
Lnea 10: Estructura de control repetitiva interna, que inicia la variable j en 1,
ejecuta 10 veces la instruccin 10 e incrementa en uno el contador por
cada iteracin.
Lnea 11: nica instruccin del bucle interno, e imprime los asteriscos.



RESUMEN

- las estructuras de seleccin nos permiten controlar la secuencia o flujo de ejecucin
de unas u otras sentencias, segn se cumpla o no una condicin.

- Las estructura de control de seleccin en C++, son las sentencias if y switch.

- La estructura de control de seleccin if en C++, puede ser sencilla si solo se ejecutan
sentencias en cumplimiento de la condicin; o if-else si se ejecutan sentencias por
verdadero o falso.
MANUAL DE PROGRAMACIN EN C++

24

- Cuando se evalan tres o mas alternativas, se deben anidar instrucciones if.

- La estructura de control de seleccin switch en C++, permite seleccionar una entre
mltiples alternativas, con se trate de valores exctos.

- Las estructuras de control de repeticin permiten ejecutar un nmero determinado de
veces un mismo bloque de instrucciones, con un conjunto de datos diferentes.

- Se utilizan dos procedimientos de repeticin: Repeticin controlada por contador y
repeticin controlada por centinela.

- C++ soporta tres tipos de estructuras de control de repeticin: while, do-while y
for.

- Un bucle o ciclo es un grupo de instrucciones que el computador ejecuta en forma
rpida, en tanto se conserve verdadera alguna condicin de continuacin del ciclo.

- En las repeticiones denominadas repeticin definida o repeticin controlada por
contador, se sabe con exactitud cuntas veces se ejecutar el ciclo, en las
repeticiones controladas por centinela o repeticin indefinida, el nmero de
repeticiones no es conocido con anticipacin.

- En la repeticin controlada por contador se utiliza una variable de control, para contar
el nmero de repeticiones. Estas se pueden realizar con la instruccin while o mas
fcilmente con la instruccin for.

- La repeticin controlada por centinela se utiliza con la estructura de control while
nicamente, se deben generar bucles en los cuales se sabe la condicin para terminar
el bucle, pero no se sabe de antemano cuantas son las iteraciones o repeticiones del
bucle.

- La estructura de control do-while, funciona de modo anlogo a la instruccin while,
con la diferencia de que la condicin se evala despus de ejecutar las sentencias,
esto significa que el ciclo se ejecuta por lo menos una vez.

- Los bucles anidados constan de un bucle externo con uno o ms bucles internos.
Cada vez que se repite el bucle externo, los bucles internos se repiten, se verifican las
variables de control y se ejecutan las iteraciones requeridas.

- La instruccin break, se utiliza cuando se detecta que va a suceder algo fuera de lo
normal en un programa y se debe forzar a salir del bucle.

- La instruccin continue, se aplica en los ciclos while, do-while o for. Cuando
continue aparece en una instruccin while, significa que la ejecucin se transferir
automticamente a la parte superior del bucle y empezar a evaluar nuevamente la
condicin.

Você também pode gostar