Facultad
d Ciencias
Ci i de
d la
l Computacin
C
i
Estructuras de control
Introduccin
Otoo 2014
(c) ASL
La sentencia while, I
Un ciclo es cualquier construccin de programa que repite una sentencia
o secuencia de sentencias un nmero de veces.
La sentencia (o grupo de sentencias) que se repite en un bloque se
denomina cuerpo del ciclo y cada repeticin del cuerpo del ciclo se llama
iteracin de ciclo.
Las dos preguntas principales en la construccin del ciclo son:
Un ciclo while tiene una condicin del ciclo (una expresin lgica) que
controla la secuencia de repeticin.
La posicin de esta condicin del ciclo es delante del cuerpo del ciclo y
significa que un ciclo while es un ciclo pretest, de modo que, cuando se
ejecuta, se evala la condicin antes de que se ejecute el cuerpo del
ciclo La siguiente figura representa el diagrama del ciclo while.
ciclo.
while
El diagrama indica que la ejecucin de la sentencia o sentencias
expresadas se repite mientras la condicin del ciclo permanece
verdadera y termina cuando se hace falsa.
falsa
Otoo 2014
(c) ASL
La sentencia while, II
Sintaxis:
1)) while ((condicin_ciclo)
_
)
sentencia;
cuerpo
2) while (condicin_ciclo)
{
sentencia 1;
cuerpo
sentencia n;
}
Otoo 2014
(c) ASL
Otoo 2014
(c) ASL
Operadores
p
de incremento y decremento
C++ ofrece los operadores de incremento (++) y decremento (--) que
admiten una sintaxis abreviada para aadir ((incrementar)) o restar
(decrementar) 1 al valor de una variable.
Recordemos la sintaxis de estos operadores:
++nombreVariable
o b e a ab e
nombreVariable++
--nombreVariable
nombreVariable-nombreVariable
// p
preincremento
e ce e o
// postincremento
// predecremento
// postdecremento
// asigna el valor 3 a k y 4 a i
// asigna el valor 5 a k y 5 a i
// asigna el valor 5 a k y 4 a i
// asigna
g el valor 3 a k y 3 a i
(c) ASL
(c) ASL
Otoo 2014
(c) ASL
Ciclos controlados p
por centinelas, I
Otoo 2014
(c) ASL
Ciclos controlados p
por centinelas, II
#include <iostream>
using
g namespace
p
std;;
int main()
{
int nota,, cuenta,, suma;;
/* entrada de datos numricos, centinela -1 */
const int centinela = -1;
cout << "Introduce una primera nota: ";
cin >> nota;;
while (nota != centinela)
{
cuenta ++;
suma+=nota;
cout << "Introduce la siguiente nota: ";
cin >> nota;
}
cout << "Fin del proceso\n";
p
system("PAUSE");
return EXIT_SUCCESS;
}
Otoo 2014
(c) ASL
10
Ciclos controlados p
por indicadores
(c) ASL
11
Otoo 2014
(c) ASL
12
Otoo 2014
(c) ASL
13
Repeticin:
p
el ciclo for, I
El ciclo for de C++ es ms potente que los ciclos for de otros lenguajes
de programacin,
g
yya que ofrece ms control sobre la inicializacin y el
incremento de las variables de control del ciclo.
Adems del ciclo while, C++ proporciona otros dos tipos de ciclos: for y
do.
El ciclo for es el ms adecuado para implementar ciclos controlados por
contador, que son ciclos en los que un conjunto de sentencias se
ejecutan
j
una vez p
por cada valor de un rango
g especificado,
p
, de acuerdo
con el siguiente algoritmo:
por cada valor de una variable_contador de un rango especfico: ejecutar
sentencias
Otoo 2014
(c) ASL
14
Repeticin:
p
el ciclo for, II
1) Inicializa la variable de
control del ciclo
f (Inicializacin;
for
(I i i li
i CondicinIteracin;
C di i It
i Incremento)
I
t )
sentencias
4)) Sentencias a ejecutar
j
en cada iteracin del ciclo
Parte de inicializacin,
inicializacin que inicializa las variables de control del ciclo.
ciclo Se
pueden utilizar variables de control del ciclo simples o mltiples.
Parte de condicin, que contiene una expresin lgica que hace que el ciclo
realice las iteraciones de las sentencias, mientras q
que la expresin
p
sea
verdadera.
Parte de incremento, que incrementa o decrementa la variable o variables de
control del ciclo.
Sentencias, acciones o sentencias que se ejecutarn por cada iteracin.
Otoo 2014
(c) ASL
15
Repeticin:
p
el ciclo for, III
Ejemplos
Otoo 2014
#include <iostream>
#include <math.h>
#define M 15
#define f(x) exp(2*x)-x
using namespace std;
// Programa que imprime 15 valores de la funcin f(x) = e2x-xx
int main()
{
int i;
double x;
f (i=1;
for
(i 1 i<=M;
i< M i++)
{
cout << "Valor de x: ";
cin >> x;
cout << x << " " << f(x) << endl;
}
cout << "\n";
system("PAUSE");
return EXIT_SUCCESS;
}
(c) ASL
16
Repeticin:
p
el ciclo for, IV
Ejemplos:
int n;
for (n=1; n<=10; n++)
cout << n << n*n << endl;
Otoo 2014
int n;
for (n=10; n>5; n--)
cout << n << n*n << endl;
(c) ASL
17
Usos y precauciones
p
del ciclo for, I
El lenguaje C++ permite que:
(c) ASL
18
Usos y precauciones
p
del ciclo for,, II
Otoo 2014
(c) ASL
19
(c) ASL
20
1
1.
2.
El cuerpo del ciclo ha de contener todas las sentencias que se desean ejecutar
repetidamente.
Una sentencia terminar la ejecucin del ciclo cuando se cumpla una
determinada condicin.
(c) ASL
21
Ejemplo:
for (i=1; i<=10; i++); Problema!!
cout << La ciudad de Puebla << endl;
No se ejecuta correctamente, ni se visualiza la frase La ciudad de
Puebla 10 veces como era de esperar, ni el compilador produce error.
Otoo 2014
(c) ASL
22
Otoo 2014
(c) ASL
23
#include <iostream>
using namespace std;
int main()
{
int contador=0;
for (;contador<5;)
{
contador++;
cout << "Ciclo!!\n";
Ciclo!!\n ;
}
cout << "\n Contador: " << contador << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
Otoo 2014
24
Otoo 2014
(c) ASL
25
Otoo 2014
(c) ASL
26
Repeticin:
p
el ciclo do-while, I
La sentencia do-while se utiliza para especificar un ciclo condicional que
se ejecuta
j
al menos una vez.
Esta situacin se suele dar en algunas circunstancias en las que se ha
de tener la seguridad de que una determinada accin se ejecutar una o
varias veces,, p
pero al menos una vez.
Sintaxis
Expresin
p
lgica
g
q
que determina
si la accin se repite
do
sentencia
while (expresin)
Otoo 2014
(c) ASL
27
Repeticin:
p
el ciclo do-while, II
Otoo 2014
(c) ASL
28
while (expresin_lgica)
{
sentencia 1;
sentencia 2;
sentencia n;
}
do
{
sentencia 1;
sentencia 2;
sentencia n;
} while (expresin_lgica)
sentencia compuesta
sentencia simple
while (expresin_lgica)
sentencia
Otoo 2014
do
sentencia
while (expresin_lgica)
(c) ASL
29
Comparacin
p
de los ciclos
C++ proporciona tres sentencias para el control de ciclos: while, for y dowhile.
El ciclo while se repite mientras su condicin de repeticin del ciclo es
verdadera.
El ciclo for se utiliza normalmente cuando el conteo est implicado,
implicado o
bien el nmero de iteraciones requeridas se pueda determinar al principio
de la ejecucin del ciclo, o simplemente cuando exista una necesidad de
seguir
g el nmero de veces q
que un suceso p
particular tiene lugar.
g
El ciclo do-while se ejecuta de un modo similar a while excepto que las
sentencias del cuerpo del ciclo se ejecutan siempre al menos una vez.
El diseo de ciclos necesita tres puntos a considerar:
1.
2.
3.
Otoo 2014
(c) ASL
30
Ciclos p
para diseo de sumas y productos
p
suma = 0;
Repetir lo siguiente total veces:
leer (siguiente)
suma = suma + siguiente;
fin_ciclo
Otoo 2014
(c) ASL
31
Ejemplos
j p sugeridos
g
Escribir un programa con un ciclo while que visualice todas las potencias de un
entero n, menores que un valor especificado max_limite.
E ibi un programa que visualice
Escribir
i
li ell siguiente
i i t dibujo
dib j
*
* *
* * *
* *
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
* *
* * *
* *
*
(c) ASL
32