Vous êtes sur la page 1sur 23

Fundamentos de Informtica ETSI Industrial 1 Universidad de Mlaga Jos Antonio Gmez Ruiz

4.1. ESTRUCTURA SECUENCIAL.


4.2. ESTRUCTURAS DE SELECCIN.
4.2.1. Seleccin simple ( i f ).
4.2.2. Seleccin binaria ( i f . . . el se ).
4.2.3. Seleccin mltiple ( swi t ch ).
4.2.4. Anidamientos.
4.3. ESTRUCTURAS DE REPETICIN O ITERATIVAS. BUCLES.
4.3.1. Estructuras no deterministas ( whi l e, do. . . whi l e ).
4.3.2. Estructuras deterministas ( f or ).
4.3.3. Las sentencias br eak y cont i nue.
4.3.4. Diseo de bucles: anidamientos y bucles infinitos.
Tema 4: Estructuras de Control
Estructura y Contenidos
Fundamentos de Informtica ETSI Industrial 2 Universidad de Mlaga Jos Antonio Gmez Ruiz
Establecer la necesidad de las estructuras de control
Diferenciar las estructuras de seleccin de las iterativas
Estructuras de seleccin e iterativas en C / C++
Diseo de bucles: anidamientos y bucles infinitos
Todo problema que se pueda resolver en un numero finito de
pasos puede expresarse con el uso de estructuras
secuenciales, selectivas e iterativas
Tema 4: Estructuras de Control
OBJ ETIVOS
Fundamentos de Informtica ETSI Industrial 3 Universidad de Mlaga Jos Antonio Gmez Ruiz
4.1. ESTRUCTURA SECUENCIAL.
4.2. Estructuras de seleccin.
4.2.1. Seleccin simple ( i f ).
4.2.2. Seleccin binaria ( i f . . . el se ).
4.2.3. Seleccin mltiple ( swi t ch ).
4.2.4. Anidamientos.
4.3. Estructuras de repeticin o iterativas. Bucles.
4.3.1. Estructuras no deterministas ( whi l e, do. . . whi l e ).
4.3.2. Estructuras deterministas ( f or ).
4.3.3. Las sentencias br eak y cont i nue.
4.3.4. Diseo de bucles: anidamientos y bucles infinitos.
Tema 4: Estructuras de Control
Estructura y Contenidos
Fundamentos de Informtica ETSI Industrial 4 Universidad de Mlaga Jos Antonio Gmez Ruiz
Estructura Secuencial: aquella en la que las instrucciones o
sentencias son ejecutadas una a continuacin de la otra en un
determinado orden
Se puede alterar esa secuencialidad usando estructuras o sentencias
de control. Estas estructuras permiten variar el flujo de control del
programa dependiendo de ciertas condiciones
Estructuras de Seleccin: Permiten que se tomen rutas alternativas
de accin dependiendo del resultado de una condicin
Estructuras de Iteracin: (de repeticin o bucle): Permiten repetir
un conjunto de sentencias un nmero determinado de veces
ESTRUCTURA SECUENCIAL
ESTRUCTURA SECUENCIAL
Fundamentos de Informtica ETSI Industrial 5 Universidad de Mlaga Jos Antonio Gmez Ruiz
Sentencia
Sentencia
Inicio
Sentencia
Fin
Estructura Secuencial
Estructura no Secuencial
Iteracin
Seleccin
Inicio
Sentencias
Fin
Sentencias
?
Sentencias
?
V F
V
F
ESTRUCTURA SECUENCIAL
ESTRUCTURA SECUENCIAL
Fundamentos de Informtica ETSI Industrial 6 Universidad de Mlaga Jos Antonio Gmez Ruiz
4.1. Estructura secuencial.
4.2. ESTRUCTURAS DE SELECCIN.
4.2.1. Seleccin simple ( i f ).
4.2.2. Seleccin binaria ( i f . . . el se ).
4.2.3. Seleccin mltiple ( swi t ch ).
4.2.4. Anidamientos.
4.3. Estructuras de repeticin o iterativas. Bucles.
4.3.1. Estructuras no deterministas ( whi l e, do. . . whi l e ).
4.3.2. Estructuras deterministas ( f or ).
4.3.3. Las sentencias br eak y cont i nue.
4.3.4. Diseo de bucles: anidamientos y bucles infinitos.
Tema 4: Estructuras de Control
Estructura y Contenidos
Fundamentos de Informtica ETSI Industrial 7 Universidad de Mlaga Jos Antonio Gmez Ruiz
Controlan la seleccin de flujos alternativos en un algoritmo
Permiten seleccionar una sentencia o grupo de sentencias en
funcin de una condicin que, normalmente, es una expresin
lgica (vase tema 3)
Tipos de sentencias de seleccin:
Seleccin Simple if
Seleccin Binaria if ... else
Seleccin Mltiple switch
ESTRUCTURAS DE SELECCIN
ESTRUCTURAS DE SELECCIN
Fundamentos de Informtica ETSI Industrial 8 Universidad de Mlaga Jos Antonio Gmez Ruiz
<condi ci n>es una expresin que puede ser verdaderao falsa
Atencin, cualquier valor distinto de cero se interpretar como
verdaderoy el valor cero como falso
Por tanto <condi ci n>puede ser cualquier expresin
<condi ci n>tiene que ir SIEMPRE entre parntesis
Si hay una nica <sent enci a_si >se pueden omitir las llaves
if ( <condi ci n>)
{
<sent enci as_si >
}
<sent enci as_f uer a>
condicin
SI
NO
sentencias_si
sentencias_fuera
SELECCIN SIMPLE
SELECCIN SIMPLE
Fundamentos de Informtica ETSI Industrial 9 Universidad de Mlaga Jos Antonio Gmez Ruiz
Las mismas consideraciones que para la seleccin simple
if ( <condi ci n>)
{
<sent enci as_si >
}
else
{
<sent enci as_no>
}
<sent enci as_f uer a>
condicin
SI
NO
sentencias_si
sentencias_fuera
sentencias_no
SELECCIN BINARIA
SELECCIN BINARIA
Fundamentos de Informtica ETSI Industrial 10 Universidad de Mlaga Jos Antonio Gmez Ruiz
/ * Det er mi na el nmer o ms gr ande ent r e t r es */
#i ncl ude <i ost r eam>
using namespace st d;
int mai n( )
{
int n1, n2, n3, mayor ;
cout << Pr i mer val or : ci n >> n1;
cout << Segundo val or : ; ci n >> n2;
cout << Ter cer val or : ; ci n >> n3;
if ( n1 > n2) / * Cal cul ar el mayor de n1 y n2 */
mayor = n1;
else
mayor = n2;
if ( n3 > mayor ) / * Ver si n3 es el mayor */
mayor = n3;
cout << El val or mayor es << mayor ;
return 0;
}
SELECCIN SIMPLE Y BINARIA
SELECCIN SIMPLE Y BINARIA
Fundamentos de Informtica ETSI Industrial 11 Universidad de Mlaga Jos Antonio Gmez Ruiz
switch ( <sel ect or > )
{
case <val or _1>: <Sent enci as_1>
break;
case <val or _2>: <Sent enci as_2>
break;
case <val or _3>: <Sent enci as_3>
break;
default: <Sent enci as_df >
}
Cmo funciona la sentencia
swi t ch?
1. Se evala el selector
2. Comparacin del selector
con los <val or es_i >
3. Ejecucin de las
<sent enci as_i >
correspondientes
4. Cada caso termina con un
br eak, o se continua con
<sent enci as_i +1>
<sel ect or >tiene que ir SIEMPRE entre parntesis
<sel ect or >tiene que ser de tipo ordinal
Si el selector no coincide con ningn <val or _i > se ejecutan las
<sent enci as_df >
def aul t no es obligatorio
SELECCIN MTIPLE
SELECCIN MTIPLE
Fundamentos de Informtica ETSI Industrial 12 Universidad de Mlaga Jos Antonio Gmez Ruiz
/ * Ej empl o de un men muy si mpl e */
#i ncl ude <i ost r eam>
using namespace st d;
int mai n( )
{
int opci on;
cout << 1. Espaa\ n 2. Fr anci a\ n 3. I t al i a\ n;
cout << 4. I ngl at er r a << endl ;
cout << Sel ecci ona una opci n: ; ci n >> opci on;
switch ( opci on)
{
case 1: cout << Hol a\ n; break;
case 2: cout << Al l o\ n; break;
case 3: cout << Pr ont o\ n; break;
case 4: cout << Hel l o\ n; break;
}
return 0;
}
SELECCIN MTIPLE
SELECCIN MTIPLE
Fundamentos de Informtica ETSI Industrial 13 Universidad de Mlaga Jos Antonio Gmez Ruiz
/ * Ej empl o de cmo engl obar var i os casos */
#i ncl ude <i ost r eam>
using namespace st d;
int mai n( )
{
char l et r a;
cout << I nt r oduce una l et r a: ; ci n >> l et r a;
switch ( l et r a) / * Aqu el sel ect or es una var i abl e */
{ case a : / * de t i po car ct er */
case e :
case i :
case o :
case u : cout << Es una vocal mi nscul a\ n; break;
case A : case E : case I : case O :
case U : cout << Es una vocal mayscul a\ n;
break;
default: cout << No es vocal \ n;
}
return 0;
}
SELECCIN MTIPLE
SELECCIN MTIPLE
Fundamentos de Informtica ETSI Industrial 14 Universidad de Mlaga Jos Antonio Gmez Ruiz
Unasentencia de seleccin puede contener otra en cualquier rama
/ *t r ozo de cdi go con ani dami ent os */
if ( n1>n2)
{ / *Est as l l aves se pueden omi t i r */
if ( n1>n3)
cout << El maxi mo es << n1;
else
cout << El maxi mo es << n3;
}
else
{
if ( n2>n3)
cout << El maxi mo es << n2;
else
cout << El maxi mo es << n3;
}
ANIDAMIENTOS
ANIDAMIENTOS
Fundamentos de Informtica ETSI Industrial 15 Universidad de Mlaga Jos Antonio Gmez Ruiz
cond_1
SI
NO
accin_2
accin_1
cond_2
cond_3
NO
NO
accin_3
SI
SI
M
M
Seleccin Mltiple
ANIDAMIENTOS
ANIDAMIENTOS
Fundamentos de Informtica ETSI Industrial 16 Universidad de Mlaga Jos Antonio Gmez Ruiz
/ * si nt axi s abr evi ada */
if ( cond_1)
acci n_1;
else if ( cond_2)
acci n_2;
else if ( cond_3)
acci n_3;
...
if ( not a<5)
cout << Suspenso;
else if ( not a<7)
cout << Apr obado;
else if ( not a<9)
cout <<Not abl e;
else
cout <<Sobr esal i ent e;
/ *caso bi nar i o especi al */
if ( cond_1)
acci n_1;
else
if ( cond_2)
acci n_2;
else
if ( cond_3)
acci n_3;
...
Importante la indentacin!
ANIDAMIENTOS
ANIDAMIENTOS
Fundamentos de Informtica ETSI Industrial 17 Universidad de Mlaga Jos Antonio Gmez Ruiz
if ( oper ador == + )
r esul t ado = a+b;
else
if ( oper ador == - )
r esul t ado = a- b;
else
if ( oper ador == * )
r esul t ado = a*b;
else
if ( oper ador == / )
r esul t ado = a/ b;
else
cout << \ nI ndef i ni do;
switch ( oper ador )
{
case + : r esul t ado = a+b;
break;
case - : r esul t ado = a- b;
break;
case * : r esul t ado = a*b;
break;
case / : r esul t ado = a/ b;
break;
default: cout <<\ nI ndef i ni do;
}
Es ms legible
que...
ANIDAMIENTOS
ANIDAMIENTOS
Fundamentos de Informtica ETSI Industrial 18 Universidad de Mlaga Jos Antonio Gmez Ruiz
Desarrolla un programa que lea los coeficientes de una
ecuacin de segundo grado y calcule e imprima sus
soluciones.
Deben contemplarse todos los posibles casos que se puedan
dar.
Disea primero el algoritmo mediante diagramas de flujo
Desarrolla un programa que lea tres nmeros naturales,
correspondientes al da, mes y ao de una fecha, e indique
si es una fecha vlida del siglo XX
Desarrolla un programa que lea cinco letras que
corresponden a una hora en formato 24h (hh:mm) e imprima
la hora en formato 12h acompaada de AM o PM segn
proceda ( p.e. 09:35 -> 09:35 AM ; 18:15 -> 06:35 PM)
ESTRUCTURAS DE SELECCIN
ESTRUCTURAS DE SELECCIN
Fundamentos de Informtica ETSI Industrial 19 Universidad de Mlaga Jos Antonio Gmez Ruiz
4.1. Estructura secuencial.
4.2. Estructuras de seleccin.
4.2.1. Seleccin simple ( i f ).
4.2.2. Seleccin binaria ( i f . . . el se ).
4.2.3. Seleccin mltiple ( swi t ch ).
4.2.4. Anidamientos.
4.3. ESTRUCTURAS DE REPETICIN O ITERATIVAS. BUCLES.
4.3.1. Estructuras no deterministas ( whi l e, do...whi l e ).
4.3.2. Estructuras deterministas ( f or ).
4.3.3. Las sentencias br eak y cont i nue.
4.3.4. Diseo de bucles: anidamientos y bucles infinitos.
Tema 4: Estructuras de Control
Estructura y Contenidos
Fundamentos de Informtica ETSI Industrial 20 Universidad de Mlaga Jos Antonio Gmez Ruiz
Tambin llamadasestructuras de iteracin o bucles
Permiten repetir una sentencia o grupo de sentencias un nmero o
determinado o indeterminado de vecesa priori: bucles deterministas
y bucles no deterministas(post-condicin y pre-condicin)
Una condicin de control (expresin lgica) permite controlar el
nmero de repeticiones
Cuerpo de bucle + condicin de control
Controla el nmero
de repeticiones
Sentencias
a repetir
ESTRUCTURAS DE REPETICIN
ESTRUCTURAS DE REPETICIN
Fundamentos de Informtica ETSI Industrial 21 Universidad de Mlaga Jos Antonio Gmez Ruiz
Bucle post-condicin: do...while
la condicin de terminacin se evala despus de cada
iteracin
<condi ci n>tiene que ir SIEMPRE entre parntesis
<sent enci as>se ejecuta 1 ms veces
do{
<sent enci as>
}while( <condi ci n>) ;
<sent enci as_f uer a>
condicin
SI
NO
sentencias
sentencias_fuera
BUCLES NO DETERMINISTAS
BUCLES NO DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 22 Universidad de Mlaga Jos Antonio Gmez Ruiz
Bucle post-condicin: do...while
cout << Hol a\ n;
cont ador = 1;
do{
cout << - ;
cont ador ++;
while( cont ador <= 4) ;
Hol a
- - - -
4
cont ador
BUCLES NO DETERMINISTAS
BUCLES NO DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 23 Universidad de Mlaga Jos Antonio Gmez Ruiz
Ejemplo: clculo aproximado de e
x
No se sabe de antemano las veces que se itera el bucle
Vamos a mostrar la ejecucin de tres iteraciones
ci n >> x;
cont =0; ser i e=0. 0;
f act =1. 0; pot =1. 0;
do{
ser i e = ser i e + pot / f act ;
cont ++;
f act = f act * ( float) cont ;
pot = pot * x;
}while( pot / f act > 0. 000001 ) ;
. . .
+ + + + =
! ! 3 2
1
3 2
x x
x e
x
Hasta aportacin de
cada trmino menor
que 0.000001
BUCLES NO DETERMINISTAS
BUCLES NO DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 24 Universidad de Mlaga Jos Antonio Gmez Ruiz
Ejemplo: validacin de entradas por teclado
do{
cout << Nmer o de mes: ;
ci n >> mes;
}while ( ! ( mes>=1 && mes<=12 ) ) ;
do{
cout << D a del mes: ;
ci n >> di a;
}while ( ! ( di a>=1 && di a<=31 ) ) ;
Validar nmero
de mes
Validar da
de mes
BUCLES NO DETERMINISTAS
BUCLES NO DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 25 Universidad de Mlaga Jos Antonio Gmez Ruiz
/ * Cal cul a el nmer o posi t i vo ms gr ande de una l i st a. La
ent r ada se r eal i za mi ent r as l os nmer os sean mayor es que
cer o */
#i ncl ude <i ost r eam>
using namespace st d;
int mai n( )
{ int num, max=0;
do{
cout << I nt r oduce un nmer o: ;
ci n >> num;
if( num> max )
max = num;
}while( num> 0 ) ;
if( max! =0 )
cout << El nmer o ms gr ande es << max;
else
cout << No se han i nt r oduci do nmer os;
return 0;
}
BUCLES NO DETERMINISTAS
BUCLES NO DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 26 Universidad de Mlaga Jos Antonio Gmez Ruiz
Bucle pre-condicin: while
la condicin de terminacin se evala antes de cada
iteracin
<condi ci n>tiene que ir SIEMPRE entre parntesis
<sent enci as>se ejecuta 0 ms veces
while( <condi ci n>)
{
<sent enci as>
}
<sent enci as_f uer a>
condicin
SI
NO
sentencias
sentencias_fuera
SI
cuidado con poner
involuntariamente un ;
BUCLES NO DETERMINISTAS
BUCLES NO DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 27 Universidad de Mlaga Jos Antonio Gmez Ruiz
Bucle pre-condicin: while
Algunos ejemplos muy utilizados son:
Bucle controlado por contador
Bucle controlado por centinela
Bucle contador
BUCLES NO DETERMINISTAS
BUCLES NO DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 28 Universidad de Mlaga Jos Antonio Gmez Ruiz
Bucle controlado por contador
Se ejecuta un numero determinado de veces
Se utiliza una variable de control del bucle(vcb)
Componentes
Inicializacin
Comprobacin de la condicin
Actualizacin
i =0; / *I ni ci al i zaci n*/
while( i <=10) / *compr obaci n*/
{
<sent enci as>
i ++; / *act ual i zaci n*/
}
En este tipo de
bucles usaremos la
sentencia for
BUCLES NO DETERMINISTAS
BUCLES NO DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 29 Universidad de Mlaga Jos Antonio Gmez Ruiz
Bucle controlado por centinela
centinela valor especial de una variable que controla el
final del bucle
Es necesario actualizar el centinela en cada iteracin
La primera evaluacin de la condicin exige una
actualizacin adelantada de la variable de control del bucle
ci n >> cent i nel a; / *act ual i zaci n adel ant ada*/
while( cent i nel a! =0)
{
<sent enci as>
ci n >> cent i nel a; / *act ual i zaci n*/
}
BUCLES NO DETERMINISTAS
BUCLES NO DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 30 Universidad de Mlaga Jos Antonio Gmez Ruiz
Bucle contador
til cuando se quiere contar el nmero de veces que se
ejecuta el bucle
La condicin de terminacin no depende del contador
/ *hace eco por pant al l a de l a ent r ada y cuent a
l os car act er es hast a encont r ar se un punt o*/
cont ador =0;
ci n >> ch;
while( ch! = . )
{
cout << ch;
cont ador ++;
ci n >> ch;
}
cout << Car act er es l ei dos << cont ador ;
BUCLES NO DETERMINISTAS
BUCLES NO DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 31 Universidad de Mlaga Jos Antonio Gmez Ruiz
/ *Ej empl o de bucl e cont ador : cal cul o de l a medi a de una
l i st a de nmer os hast a i nt r oduci r el cer o */
#i ncl ude <i ost r eam>
using namespace st d;
int mai n( )
{
int i =0; float x, suma=0. 0;
cout << I nt r oduce un nmer o: ;
ci n >> x;
while ( x ! = 0 )
{
suma = suma + x;
i ++;
cout << I nt r oduce un nmer o: ;
ci n >> x;
}
if ( i ! = 0 )
cout << La medi a es << suma/ ( float) i ;
else
cout << No se han i nt r oduci do nmer os\ n;
return 0;
}
BUCLES NO DETERMINISTAS
BUCLES NO DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 32 Universidad de Mlaga Jos Antonio Gmez Ruiz
El buclefor
Es muy verstil en el lenguaje de programacin C
for ( <i ni ci al i zaci n>; <condi ci n>; <act ual i zaci n>)
{
<sent enci as>
}
condicin
SI
NO
sentencias
inicializacin
actualizacin
En C la asignacin se considera un
operador, y, por tanto, las
asignaciones son expresiones.
expresiones
BUCLES DETERMINISTAS
BUCLES DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 33 Universidad de Mlaga Jos Antonio Gmez Ruiz
El buclefor
Lo usaremos cuando el nmero de veces que se repite el
bucle se puede determinar a priori
Tendremos siempre una variable de control del bucle (vcb)
En el cuerpo del bucle, vcb puede usarse, NUNCA cambiarse
for( i =1; i <10; i ++) /* i empieza tomando el valor 1, cada vez que el bucle
da una iteracin se incrementa en 1. El bucle terminar cuando i sea igual a 10, es
decir, el ltimo valor que i tomar dentro del bucle ser 9 */
for( i =2; i <=128; i *=2) /* i empieza tomando el valor 2; cada vez que el
bucle da una iteracin i se multiplica por 2. Esto continua mientras i sea menor o
igual que 128. Los valores de i dentro del bucle sern 2,4,8,16,32,64 y 128 */
for( j =10; j >0; j - - ) /* j empieza tomando el valor 10, cada vez que el bucle
da una iteracin se decrementa en 1. El bucle terminar cuando j sea igual a 0, es
decir, el ltimo valor que i tomar dentro del bucle ser 1 */
BUCLES DETERMINISTAS
BUCLES DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 34 Universidad de Mlaga Jos Antonio Gmez Ruiz
El bucle for : ejemplo
BUCLES DETERMINISTAS
BUCLES DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 35 Universidad de Mlaga Jos Antonio Gmez Ruiz
El buclefor : ejemplo
/ * Tabl a de mul t i pl i car */
#i ncl ude <i ost r eam>
using namespace st d;
int mai n( )
{
int i , num;
cout << I nt r oduce un nmer o : ;
ci n >> num;
for( i =1; i <=10; i ++)
{
cout << num<< x << i << = << num*i ;
cout << endl ;
}
return 0;
}
I nt r oduce numer o: 5
5 x 1 = 5
5 x 2 = 10
5 x 3 = 15
5 x 4 = 20
5 x 5 = 25
5 x 6 = 30
5 x 7 = 35
5 x 8 = 40
5 x 9 = 45
5 x 10 = 50
BUCLES DETERMINISTAS
BUCLES DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 36 Universidad de Mlaga Jos Antonio Gmez Ruiz
El buclefor : ejemplo
/ * Fact or i al de un nmer o */
#i ncl ude <i ost r eam>
using namespace st d;
int mai n( )
{
int f act or i al , i , num;
cout << I nt r oduce un numer o : ;
ci n >> num;
f act or i al =1;
for( i =1; i <=num; i ++)
f act or i al *= i ;
cout << \ nEl f act or i al es << f act or i al ;
return 0;
}
I nt r oduce numer o: 6
El f act or i al es 720
BUCLES DETERMINISTAS
BUCLES DETERMINISTAS
Fundamentos de Informtica ETSI Industrial 37 Universidad de Mlaga Jos Antonio Gmez Ruiz
La sentencia br eak se utiliza para forzar la salida de un
bucle independientemente de que se cumpla o no la condicin
de terminacin.
La sentencia cont i nue termina la iteracin en curso y
vuelve a evaluar de nuevo la condicin de terminacin del
bucle.
En programacin estructurada, no es recomendable el uso de
este tipo de sentencias y por lo tanto NO LAS USAREMOS
"Se demuestra que todo problema que pueda resolverse en un numero finito de
pasos puede expresarse usando nicamente 3 tipos de estructuras o bloques
fundamentales, con una sola entrada y una sola salida para organizar dichos pasos:
Un proceso secuencial.
Un mecanismo de decisin binaria.
Un mecanismo de bucle generalizado.
(Bohmy J acopini, 1965)
BREAK y CONTINUE
BREAK y CONTINUE
Fundamentos de Informtica ETSI Industrial 38 Universidad de Mlaga Jos Antonio Gmez Ruiz
Al igual que en las estructuras selectivas, no hay
restriccionesen las sentencias del cuerpo del bucle
La estructura interna debe de estar totalmente incluidaen la
externa
Bucle
ms
externo
Bucle anidado
Bucle anidado
ANIDAMIENTOS DE BUCLES
ANIDAMIENTOS DE BUCLES
Fundamentos de Informtica ETSI Industrial 39 Universidad de Mlaga Jos Antonio Gmez Ruiz
/ *Escr i be un r ect ngul o de ast er i scos*/
#i ncl ude <i ost r eam>
using namespace st d;
int mai n( )
{
int i , j ;
for( i =1; i <=3; i ++)
{
for( j =1; j <=8; j ++)
cout << *;
cout << \ n;
}
return 0;
}
********
********
********
bucle exterior
bucle interior
ANIDAMIENTOS DE BUCLES
ANIDAMIENTOS DE BUCLES
Fundamentos de Informtica ETSI Industrial 40 Universidad de Mlaga Jos Antonio Gmez Ruiz
/ *Escr i be un r ect ngul o de ast er i scos*/
#i ncl ude <i ost r eam>
using namespace st d;
int mai n( )
{
int i , j ;
for( i =1; i <=3; i ++)
{
for( j =1; j <= i ; j ++)
cout << *;
cout << \ n;
}
return 0;
}
bucle exterior
bucle interior
*
**
***
ANIDAMIENTOS DE BUCLES
ANIDAMIENTOS DE BUCLES
Fundamentos de Informtica ETSI Industrial 41 Universidad de Mlaga Jos Antonio Gmez Ruiz
I nt r oduce al t ur a: 3
1
12
123
I nt r oduce al t ur a: 4
1
121
12321
1234321
Basndote en el
cdigo anterior,
modifica el
programa para que
obtenga los
ejemplos adjuntos.
La altura del
tringulo se pide por
teclado.
ANIDAMIENTOS DE BUCLES
ANIDAMIENTOS DE BUCLES
Fundamentos de Informtica ETSI Industrial 42 Universidad de Mlaga Jos Antonio Gmez Ruiz
/ * Encuent r a el pr i mer nmer o per f ect o mayor que 28.
Un nmer o es per f ect o si coi nci de con l a suma de sus
di vi sor es, si n cont ar se el mi smo. Ej : 6 = 1+2+3 */
#i ncl ude <i ost r eam>
using namespace st d;
int mai n( )
{int encont r ado = 0, i nt ent o, cont , suma;
i nt ent o = 29; / * empi ezo con el si gui ent e de 28 */
while( ! encont r ado)
{
suma=1; / * el 1 es di vi sor de t odos l os numer os */
for ( cont =2; cont <i nt ent o; cont ++ )
if ( ( i nt ent o%cont ) ==0) / * si cont es di vi sor */
suma+=cont ; / * l o sumo */
if ( suma == i nt ent o )
encont r ado = 1; / * si coi nci de l o hemos encont r ado */
else
i nt ent o++; / * si no, pr obamos con el si gui ent e */
}
cout << Nmer o per f ect o mayor que 28 = << i nt ent o;
return 0;
}
ANIDAMIENTOS DE BUCLES
ANIDAMIENTOS DE BUCLES
Fundamentos de Informtica ETSI Industrial 43 Universidad de Mlaga Jos Antonio Gmez Ruiz
Un bucle infinitoes un bucle que nunca acaba
Normalmente se produce cuando un bucle no alcanza la
condicin de finalizacin
Mucho cuidado con los puntos y coma tras las condiciones
Por tanto, al disear un bucle, hay quecomprobar siempre
quelas condiciones de finalizacin sern alcanzadas
suma = 0;
N = 0;
while ( N <= 100)
suma = suma + N;
cout << suma;
suma = 0;
N = 0;
while ( N <= 100) ;
{
suma = suma + N;
N++;
}
cout << suma;
N++;
BUCLES INFINITOS
BUCLES INFINITOS
Fundamentos de Informtica ETSI Industrial 44 Universidad de Mlaga Jos Antonio Gmez Ruiz
Desarrolla un programa que lea una secuencia
de nmeros naturales terminada en cero e
indique la posicin de la primera y ltima
ocurrencia del nmero doce.
Desarrolla un programa que, dado un nmero
natural ledo por teclado, indique si es o no
nmero primo. El programa preguntar si se
quiere repetir de nuevo el proceso.
Desarrolla un programa que, dada una
secuencia de ceros y unos terminada en un
punto, muestre por pantalla el tamao de
todas las subcadenas de unos e indique cual
es la mayor.
EJ ERCICIOS
EJ ERCICIOS
Fundamentos de Informtica ETSI Industrial 45 Universidad de Mlaga Jos Antonio Gmez Ruiz
Tema 4: Estructuras de Control
FIN DEL TEMA

Vous aimerez peut-être aussi