Vous êtes sur la page 1sur 8

Estructura de repeticin for

La estructura de repeticin for maneja todos los detalles de una repeticin controlada por
un contador. Tambin es de suma importancia cuando se requiere realizar operaciones
secuenciales, en donde se conoce el nmero de iteraciones o la condicin a comprobar.
1
2
3
4
5
6
7
8
9
10
11
12
13

//Repeticin controlada por un contador mediante la estructura for.


#include <iostream>
using std: :cout;
using std: :endl;
//La funcin main comienza la ejecucin del programa.
int main()
{
//La inicializacin, la condicin de repeticin y el incremento se incluyen en el
//se incluyen en el encabezado de la estructura for.
for ( int contador = 1; contador <= 10; contador++ )
cout << contador << endl;
return 0: //Indica terminacin exitosa.
} //Fin de la funcin main.

Cuando comienza la ejecucin de la estructura for, la variable de control contador se


declara y se inicializa en 1. Entonces, se evala la condicin de continuidad del ciclo
contador <= 10. El valor inicial de contador es 1, de manera que satisface la condicin y la
instruccin en el cuerpo despliega el valor del contador, esto es, 1. Entonces, la expresin
contador++ incrementa la variable de control contador y el ciclo comienza de nuevo con la
condicin de continuidad del ciclo. Ahora, la variable de control es igual a 2, as, no se ha
excedido el valor final y el programa realiza de nuevo la instruccin del cuerpo. Este
proceso continua hasta que la variable de control contador se incrementa a 11, esto
ocasionara que la condicin de continuidad del ciclo falle y termine la repeticin. El
programa continua con la ejecucin de la primera instruccin despus de la estructura for
(en este caso, la instruccin return de la lnea 12). Este programa utiliza una condicin de
continuidad del ciclo contador <= 10. Si el programador escribi de manera incorrecta
contador < 10, entonces el ciclo se ejecutara solamente 9 veces. Este error lgico
frecuentemente denominado error por desplazamiento en uno.
En la siguiente imagen podemos darnos cuenta de que la estructura lo hace todo, es
decir, especifica cada uno de los elementos necesarios para la repeticin controlada por
un contador mediante una variable de control. Si hay ms de una instruccin en el cuerpo
de for, se requieren llaves para encerrar el cuerpo del ciclo.

El formato general para la estructura for es:

for ( inicializacin; condicin_continuidad; incremento )


instruccin
en donde la expresin inicializacin establece el valor inicial de la variable de control,
condicin_ continuidad es la condicin que determina si el ciclo debe continuar su
ejecucin (esta condicin contiene el valor final de la variable de control para la cual la
condicin es verdadera) e incremento aumenta el valor de la variable. En la mayora de
los casos, la estructura for se puede representar mediante un equivalente en la estructura
while, de la siguiente manera:
while ( condicin_continuidad ) {
instruccin
incremento;
}

Estructura de repeticin do/while

La estructura de repeticin do/while es similar a la estructura while. En la estructura while,


la evaluacin de la condicin de continuidad ocurre al principio del ciclo, antes de que se
ejecute el cuerpo de este. La estructura do/while evala la condicin de continuidad del
ciclo, despus de que el cuerpo de este se ejecuta; por lo tanto, el cuerpo del ciclo se
ejecuta al menos una vez. Cuando un do/while termina, la ejecucin contina con la
instruccin que se encuentra despus de la clusula while. Observe que no es necesario
utilizar llaves en la estructura do/while, si existe solamente una instruccin en el cuerpo;
sin embargo, la mayora de los programadores incluyen las llaves para evitar confusin
entre las estructuras while y do/while. Por ejemplo:
while ( condicin )
normalmente es considerado el encabezado de una estructura while. Un do/while de una
sola instruccin, sin llaves alrededor aparece como:
do
instruccin
while ( condicin );
lo cual puede ser confuso. La ltima lnea, while ( condicin ); se puede malinterpretar
como una estructura while que contiene una instruccin vaca. As, un do/while con una
una instruccin, a menudo se escribe de la siguiente forma para evitar confusin:
do {
instruccin
} while ( condicin );
1
2
3
4
5
6
7
8
9
10
11
12
13

//Uso de la estructura de repeticin do/while.


// #include <iostream>
using std: :cout;
using std: :endl;
//La funcin main comienza la ejecucin del programa.
int main ()
{
int contador = 1: //Inicializa contador.
Falta
Falta
cout << endl:
return 0; //Indica terminacin exitosa.
} //Fin de la funcin main.

Este programa utiliza una estructura do/while para desplegar los nmeros del 1 al 10.
Observe que el programa pre incrementa la variable de control contador en la evaluacin
de la condicin de continuidad. Adems, el uso de las llaves para encerrar el cuerpo de
una sola instruccin del do/while.
La siguiente imagen contiene el diagrama de actividad para la estructura do/while. Este
diagrama hace evidente que la condicin de continuidad del ciclo no se evala hasta
despus de que el ciclo realiza el estado de accin al menos una vez. De nuevo, observe

que (adems de un estado inicial, flechas de transicin, un estado final y una nota), el
diagrama contiene solamente un estado de accin y una decisin. De nuevo, imagine que
el programador tiene acceso a un recipiente con estructuras de repeticin do/while
vacas, tantas como el programador pudiera tener que apilar o anidar con otras
estructuras de control para formar una implementacin estructurada de un algoritmo. El
programador llena los estados de accin y los smbolos de decisin con expresiones de
accin y condiciones de guardia apropiadas para el algoritmo.

Estructura de seleccin mltiple switch


En ocasiones, un algoritmo contendr series de decisiones en las que se evala una
variable de manera separada para cada uno de los valores integrales constantes que

puede asumir, y se llevan a cabo diferentes acciones. C++ proporciona la estructura de


seleccin mltiple switch para manejar la toma de decisiones.
La estructura switch consiste en una serie de etiquetas case y un caso opcional default. El
siguiente programa utiliza switch para contar el nmero de cada letra diferente
correspondiente a la calificacin que los estudiantes obtuvieron en un examen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

// Conteo de letras de calificacin.


#include <iostream>
using std: : cout;
using std: :cin;
using std: :endl;
//La funcin main comienza la ejecucin del programa.
int main()
{
int calificacin; //Una calificacin.
int aContador = 0; //Numero de As
int bContador = 0; //Numero de Bs
int cContador = 0; //Numero de Cs
int dContador = 0; //Numero de Ds
int fContador = 0; //Numero de Fs
cout << Introduzca la calificacion con letra. endl
<< Introduzca el carcter EOF para terminar la entrada de datos. <<
endl;
//Repite hasta que el usuario digite la secuencia de fin de su archivo.
while ( (calificacion = cin.get() ) ! = EOF ) {
//Determina que calificacion se introdujo.
switch (calificacion) { //Estructura switch anidada en un while.
case A: //La calificacion es una A mayscula.
case a: //La calificacion es una a minscula.
++aContador; //Incrementa aContador.
break; //Necesario para salir de switch.
case B: //La calificacion es una B mayscula.
case b: //La calificacion es una b minscula.
++bContador; //Incrementa bContador.
break; //Sale de switch.
case C: //La calificacion es una C mayscula.
case c: //La calificacion es una c minscula.
++cContador; //Incrementa cContador.
break; //Sale de switch.
case D: //La calificacion es una D mayscula.
case d: //La calificacion es una d minscula.
++dContador; //Incrementa dContador.
break; //Sale de switch.
case F: //La calificacion es una F mayscula.
case f: //La calificacion es una f minscula.
++fContador; //Incrementa fContador.
break; //Sale de switch.
case \n: //Ignora nuevas lineas,
case \t: // tabuladores,
case : //y espacios en la entrada.

44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

break; //Sale de switch.


cout << Se introdujo una letra incorrecta.
<< Introduzca una nueva letra. << endl;
break; //Opcional; de cualquier manera sale de switch.
} //Fin de switch.
} //Fin de while.
//Despliega un resumen de resultados
cout << \n\nLos totales de calificacion por letra son:
<< \nA : << aContador //Despliega el numero de calificaciones A.
<< \nB : << bContador //Despliega el numero de calificaciones B.
<< \nC : << cContador //Despliega el numero de calificaciones C.
<< \nD : << dContador //Despliega el numero de calificaciones D.
<< \nF : << fContador //Despliega el numero de calificaciones F.
<< endl;
return 0; //Indica terminacin exitosa.
} //Fin de la funcin main.

En el programa, el usuario introduce las calificaciones expresadas en letra para una clase.
Dentro del encabezado de while, en la lnea 18, la asignacin entre parntesis
(calificacion = cin.get() ) se ejecuta primero. La funcin cin.get() lee un carcter desde el
teclado y lo almacena en la variable entera calificacin. Por lo general, los caracteres se
almacenan en variables de tipo char, sin embargo, dentro de la computadora se
representan como enteros de un byte. De este modo, podemos tratar un carcter ya sea
como entero o como un carcter, de acuerdo con su uso.

Estructura de seleccin if/else


La estructura de seleccin if realiza una accin indicada solamente cuando la condicin es
verdadera; de lo contrario, se evita dicha accin. La estructura de seleccin permite al
programador especificar una accin a realizar cuando la condicin es verdadera, y una

accin diferente a realizar cuando la accin es falsa. Por ejemplo, la instruccin en


seudocdigo es:
if calificacin del estudiante es mayor o igual a 60
imprime Aprobado
else
imprime Reprobado
imprime Aprobado si la calificacin del estudiante es mayor o igual a 60, pero imprime
Reprobado si la calificacin del estudiante es menor que 60. En ambos casos, despus de
desplegar el resultado, se realiza la siguiente instruccin en la secuencia.
La estructura anterior if/else en seudocdigo se puede escribir en C++ como:
if ( calificacion >= 60 )
cout << Aprobado ;
else
cout << Reprobado ;
Observe que el cuerpo de else tambin se encuentra sangrado. Cualquiera que sea la
convencin que usted elija, esta debe aplicarse de manera consistente a lo largo de sus
programas. Es difcil de leer programas que no obedecen convenciones uniformes de
espaciado.
Las estructuras if/else anidadas examinan mltiples casos, al colocar estructuras de
seleccin if/else dentro de estructuras de seleccin if/else. Por ejemplo, la estructura
if/else del siguiente seudocdigo despliega A para las calificaciones mayores o iguales
que 90, B para las calificaciones en el rango de 80 a 89, C para las calificaciones en el
rango de 70 a 79, D para las calificaciones en el rango de 60 a 69 y F para todas las
dems calificaciones.
if calificacin del estudiante es mayor o igual que 90
Imprime A
else
if calificacin del estudiante es mayor o igual que 80
Imprime B
else
if calificacin del estudiante es mayor o igual que 70
Imprime C
else
if calificacin del estudiante es mayor o igual que 60
Imprime D
else

Imprime F
Este seudocdigo se puede escribir en C++ como
if ( calificacion >= 90 )

//90 y superior

cout << A;
else
if ( calificacion >= 80 )

//80-89

cout << B;
else
if ( calificacion >= 70 )

//70-79

cout << C;
else
if ( calificacion >= 60 )

//60-69

cout << D;
else
cout << F;

//Menor que 60

Si calificacin es mayor o igual que 90, las primeras cuatro condiciones sern verdaderas,
pero solamente se ejecutara la instruccin cout que se encuentra despus de la primera
condicin. Despus de que se ejecute cout, el programa se salta la parte else de las
estructuras if/else que se encuentran afuera.
(Deitel, 2003)

Bibliografa
Deitel, P. J. (2003). Como programar en C++ (Cuarta ed.). Mexico: Pearson Educacion.
Recuperado el 7 de Septiembre de 2015

Vous aimerez peut-être aussi