Está en la página 1de 23

Tema 4: Estructuras de Control

Estructura y Contenidos
4.1. ESTRUCTURA SECUENCIAL.
4.2. ESTRUCTURAS DE SELECCIN.
4.2.1. Seleccin simple ( if ).
4.2.2. Seleccin binaria ( if ... else ).
4.2.3. Seleccin mltiple ( switch ).
4.2.4. Anidamientos.
4.3. ESTRUCTURAS DE REPETICIN O ITERATIVAS. BUCLES.
4.3.1. Estructuras no deterministas ( while, do...while ).
4.3.2. Estructuras deterministas ( for ).
4.3.3. Las sentencias break y continue.
4.3.4. Diseo de bucles: anidamientos y bucles infinitos.

Fundamentos de Informtica

Tema 4:

ETSI Industrial 1 Universidad de Mlaga

Jos Antonio Gmez Ruiz

Estructuras de Control
OBJETIVOS

9 Establecer la necesidad de las estructuras de control


9 Diferenciar las estructuras de seleccin de las iterativas
9 Estructuras de seleccin e iterativas en C / C++
9 Diseo de bucles: anidamientos y bucles infinitos
9 Todo problema que se pueda resolver en un numero finito de
pasos puede expresarse con el uso de estructuras
secuenciales, selectivas e iterativas

Fundamentos de Informtica

ETSI Industrial 2 Universidad de Mlaga

Jos Antonio Gmez Ruiz

Tema 4: Estructuras de Control


Estructura y Contenidos
4.1. ESTRUCTURA SECUENCIAL.
4.2. Estructuras de seleccin.
4.2.1. Seleccin simple ( if ).
4.2.2. Seleccin binaria ( if ... else ).
4.2.3. Seleccin mltiple ( switch ).
4.2.4. Anidamientos.
4.3. Estructuras de repeticin o iterativas. Bucles.
4.3.1. Estructuras no deterministas ( while, do...while ).
4.3.2. Estructuras deterministas ( for ).
4.3.3. Las sentencias break y continue.
4.3.4. Diseo de bucles: anidamientos y bucles infinitos.

Fundamentos de Informtica

ETSI Industrial 3 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ESTRUCTURA SECUENCIAL

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

Fundamentos de Informtica

ETSI Industrial 4 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ESTRUCTURA SECUENCIAL
Inicio

Inicio
V
Sentencia

Seleccin
Sentencias

Sentencias

Sentencia

Sentencia

Sentencias

Fin

Estructura Secuencial

F
Fin

Iteracin

Estructura no Secuencial
Fundamentos de Informtica

ETSI Industrial 5 Universidad de Mlaga

Jos Antonio Gmez Ruiz

Tema 4: Estructuras de Control


Estructura y Contenidos
4.1. Estructura secuencial.
4.2. ESTRUCTURAS DE SELECCIN.
4.2.1. Seleccin simple ( if ).
4.2.2. Seleccin binaria ( if ... else ).
4.2.3. Seleccin mltiple ( switch ).
4.2.4. Anidamientos.
4.3. Estructuras de repeticin o iterativas. Bucles.
4.3.1. Estructuras no deterministas ( while, do...while ).
4.3.2. Estructuras deterministas ( for ).
4.3.3. Las sentencias break y continue.
4.3.4. Diseo de bucles: anidamientos y bucles infinitos.

Fundamentos de Informtica

ETSI Industrial 6 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ESTRUCTURAS DE SELECCIN

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

Fundamentos de Informtica

ETSI Industrial 7 Universidad de Mlaga

Jos Antonio Gmez Ruiz

SELECCIN SIMPLE
NO condicin
SI
sentencias_si

if (<condicin>)
{
<sentencias_si>
}
<sentencias_fuera>

sentencias_fuera

<condicin> es una expresin que puede ser verdadera o falsa

Atencin, cualquier valor distinto de cero se interpretar como


verdadero y el valor cero como falso
Por tanto <condicin> puede ser cualquier expresin

<condicin> tiene que ir SIEMPRE entre parntesis

Si hay una nica <sentencia_si> se pueden omitir las llaves

Fundamentos de Informtica

ETSI Industrial 8 Universidad de Mlaga

Jos Antonio Gmez Ruiz

SELECCIN BINARIA

NO condicin

sentencias_no

SI

sentencias_si

sentencias_fuera

if (<condicin>)
{
<sentencias_si>
}
else
{
<sentencias_no>
}
<sentencias_fuera>

Las mismas consideraciones que para la seleccin simple

Fundamentos de Informtica

ETSI Industrial 9 Universidad de Mlaga

Jos Antonio Gmez Ruiz

SELECCIN SIMPLE Y BINARIA


/* Determina el nmero ms grande entre tres */
#include <iostream>
using namespace std;
int main()
{
int n1, n2, n3, mayor;
cout << Primer valor:
cin >> n1;
cout << Segundo valor: ; cin >> n2;
cout << Tercer valor: ; cin >> n3;
if (n1 > n2) /* Calcular el mayor de n1 y n2 */
mayor = n1;
else
mayor = n2;
if (n3 > mayor) /* Ver si n3 es el mayor */
mayor = n3;
cout << El valor mayor es << mayor;
return 0;
}
Fundamentos de Informtica

ETSI Industrial 10 Universidad de Mlaga

Jos Antonio Gmez Ruiz

SELECCIN MTIPLE
switch ( <selector> )
{
case <valor_1>:<Sentencias_1>
break;
case <valor_2>:<Sentencias_2>
break;
case <valor_3>:<Sentencias_3>
break;
default:
<Sentencias_df>
}

Cmo funciona la sentencia


switch?
1. Se evala el selector
2. Comparacin del selector
con los <valores_i>
3. Ejecucin de las
<sentencias_i>
correspondientes
4. Cada caso termina con un
break, o se continua con
<sentencias_i+1>

<selector> tiene que ir SIEMPRE entre parntesis


<selector> tiene que ser de tipo ordinal
Si el selector no coincide con ningn <valor_i> se ejecutan las
<sentencias_df>
default no es obligatorio

Fundamentos de Informtica

ETSI Industrial 11 Universidad de Mlaga

Jos Antonio Gmez Ruiz

SELECCIN MTIPLE
/* Ejemplo de un men muy simple */
#include <iostream>
using namespace std;
int main()
{
int opcion;
cout << 1.Espaa\n 2.Francia\n 3.Italia\n;
cout << 4.Inglaterra << endl;
cout << Selecciona una opcin: ; cin >> opcion;
switch (opcion)
{
case 1: cout << Hola\n;
break;
case 2: cout << Allo\n;
break;
case 3: cout << Pronto\n; break;
case 4: cout << Hello\n; break;
}
return 0;
}
Fundamentos de Informtica

ETSI Industrial 12 Universidad de Mlaga

Jos Antonio Gmez Ruiz

SELECCIN MTIPLE
/* Ejemplo de cmo englobar varios casos */

#include <iostream>
using namespace std;
int main()
{
char letra;
cout << Introduce una letra: ; cin >> letra;
switch (letra) /* Aqu el selector es una variable */
{ case a:
/* de tipo carcter*/
case e:
case i:
case o:
case u: cout << Es una vocal minscula\n; break;
case A: case E: case I: case O:
case U: cout << Es una vocal mayscula\n;
break;
default: cout << No es vocal\n;
}

return 0;
}
Fundamentos de Informtica

ETSI Industrial 13 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ANIDAMIENTOS

Una sentencia de seleccin puede contener otra en cualquier rama


/*trozo de cdigo con anidamientos */
if (n1>n2)
{ /*Estas llaves se pueden omitir*/
if (n1>n3)
cout << El maximo es << n1;
else
cout << El maximo es << n3;
}
else
{
if (n2>n3)
cout << El maximo es << n2;
else
cout << El maximo es << n3;
}

Fundamentos de Informtica

ETSI Industrial 14 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ANIDAMIENTOS
Seleccin Mltiple
SI

cond_1

accin_1

NO
SI

cond_2

accin_2

NO

cond_3

SI

accin_3

NO

M
Fundamentos de Informtica

ETSI Industrial 15 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ANIDAMIENTOS
/*caso binario especial*/
if (cond_1)
accin_1;
else
if (cond_2)
accin_2;
else
if (cond_3)
accin_3;
...

Importante la indentacin!

/* sintaxis abreviada */
if (cond_1)
accin_1;
else if (cond_2)
accin_2;
else if (cond_3)
accin_3;
...
if (nota<5)
cout << Suspenso;
else if (nota<7)
cout << Aprobado;
else if (nota<9)
cout << Notable;
else
cout << Sobresaliente;

Fundamentos de Informtica

ETSI Industrial 16 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ANIDAMIENTOS
switch (operador)
{
case + : resultado = a+b;
break;
case - : resultado = a-b;
break;
case * : resultado = a*b;
break;
case / : resultado = a/b;
break;
default: cout <<\nIndefinido;

Es ms legible
que...

Fundamentos de Informtica

if (operador == +)
resultado = a+b;
else
if (operador == -)
resultado = a-b;
else
if (operador == *)
resultado = a*b;
else
if (operador == /)
resultado = a/b;
else
cout << \nIndefinido;

ETSI Industrial 17 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ESTRUCTURAS DE SELECCIN
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)
Fundamentos de Informtica

ETSI Industrial 18 Universidad de Mlaga

Jos Antonio Gmez Ruiz

Tema 4: Estructuras de Control


Estructura y Contenidos
4.1. Estructura secuencial.
4.2. Estructuras de seleccin.
4.2.1. Seleccin simple ( if ).
4.2.2. Seleccin binaria ( if ... else ).
4.2.3. Seleccin mltiple ( switch ).
4.2.4. Anidamientos.
4.3. ESTRUCTURAS DE REPETICIN O ITERATIVAS. BUCLES.
4.3.1. Estructuras no deterministas ( while, do...while ).
4.3.2. Estructuras deterministas ( for ).
4.3.3. Las sentencias break y continue.
4.3.4. Diseo de bucles: anidamientos y bucles infinitos.

Fundamentos de Informtica

ETSI Industrial 19 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ESTRUCTURAS DE REPETICIN

Tambin llamadas estructuras de iteracin o bucles

Permiten repetir una sentencia o grupo de sentencias un nmero o


determinado o indeterminado de veces a 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

Sentencias
a repetir
Fundamentos de Informtica

Controla el nmero
de repeticiones

ETSI Industrial 20 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES NO DETERMINISTAS

Bucle post-condicin: do...while

la condicin de terminacin se evala despus de cada


iteracin
sentencias

do{
SI

condicin

<sentencias>
}while(<condicin>);
<sentencias_fuera>

NO

sentencias_fuera

<condicin> tiene que ir SIEMPRE entre parntesis


<sentencias> se ejecuta 1 ms veces
Fundamentos de Informtica

ETSI Industrial 21 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES NO DETERMINISTAS

Bucle post-condicin: do...while


cout << Hola\n;
contador = 1;
do{
cout << -;
contador++;
while(contador <= 4);

4
contador

Hola
----

Fundamentos de Informtica

ETSI Industrial 22 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES NO DETERMINISTAS

Ejemplo: clculo aproximado de ex


x

x2
x3
=1 + x +
+
+ ...
2!
3!

cin >> x;
cont=0; serie=0.0;
fact=1.0; pot=1.0;
do{
serie = serie + pot / fact;
cont++;
fact = fact * (float)cont;
pot = pot * x;
}while(pot/fact > 0.000001 );

Hasta aportacin de
cada trmino menor
que 0.000001

No se sabe de antemano las veces que se itera el bucle


Vamos a mostrar la ejecucin de tres iteraciones

Fundamentos de Informtica

ETSI Industrial 23 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES NO DETERMINISTAS

Ejemplo: validacin de entradas por teclado


do{
cout << Nmero de mes:;
cin >> mes;
}while (!( mes>=1 && mes<=12 ));
do{
cout << Da del mes:;
cin >> dia;
}while (!( dia>=1 && dia<=31 ));

Fundamentos de Informtica

Validar nmero
de mes

Validar da
de mes

ETSI Industrial 24 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES NO DETERMINISTAS
/* Calcula el nmero positivo ms grande de una lista. La
entrada se realiza mientras los nmeros sean mayores que
cero */

#include <iostream>
using namespace std;
int main()
{ int num, max=0;

do{
cout << Introduce un nmero: ;
cin >> num;
if( num > max )
max = num;
}while( num > 0 );
if( max!=0 )
cout << El nmero ms grande es << max;
else
cout << No se han introducido nmeros;
return 0;
}
Fundamentos de Informtica

ETSI Industrial 25 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES NO DETERMINISTAS

Bucle pre-condicin: while

la condicin de terminacin se evala antes de cada


iteracin
condicin

NO

SI

sentencias

SI
sentencias_fuera

cuidado con poner


involuntariamente un ;

while(<condicin>)
{
<sentencias>
}
<sentencias_fuera>

<condicin> tiene que ir SIEMPRE entre parntesis


<sentencias> se ejecuta 0 ms veces
Fundamentos de Informtica

ETSI Industrial 26 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES NO DETERMINISTAS

Bucle pre-condicin: while

Algunos ejemplos muy utilizados son:


Bucle controlado por contador
Bucle controlado por centinela
Bucle contador

Fundamentos de Informtica

ETSI Industrial 27 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES NO DETERMINISTAS

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;
/*Inicializacin*/
while(i<=10) /*comprobacin*/
{
<sentencias>
i++;
/*actualizacin*/
}
Fundamentos de Informtica

En este tipo de
bucles usaremos la
sentencia for

ETSI Industrial 28 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES NO DETERMINISTAS

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

cin >> centinela; /*actualizacin adelantada*/


while(centinela!=0)
{
<sentencias>
cin >> centinela; /*actualizacin*/
}

Fundamentos de Informtica

ETSI Industrial 29 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES NO DETERMINISTAS

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 pantalla de la entrada y cuenta


los caracteres hasta encontrarse un punto*/
contador=0;
cin >> ch;
while(ch!=.)
{
cout << ch;
contador++;
cin >> ch;
}
cout << Caracteres leidos << contador;
Fundamentos de Informtica

ETSI Industrial 30 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES NO DETERMINISTAS
/*Ejemplo de bucle contador: calculo de la media de una
lista de nmeros hasta introducir el cero */
#include <iostream>
using namespace std;
int main()
{
int i=0; float x, suma=0.0;
cout << Introduce un nmero: ;
cin >> x;
while ( x != 0 )
{
suma = suma + x;
i++;
cout << Introduce un nmero: ;
cin >> x;
}
if ( i != 0 )
cout << La media es << suma/(float)i;
else
cout << No se han introducido nmeros\n;
return 0;
}
Fundamentos de Informtica

ETSI Industrial 31 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES DETERMINISTAS

El bucle for

Es muy verstil en el lenguaje de programacin C

for (<inicializacin>;<condicin>;<actualizacin>)
{
<sentencias>
}

inicializacin

condicin

NO

SI
sentencias
expresiones
En C la asignacin se considera un
operador, y, por tanto, las
asignaciones son expresiones.
Fundamentos de Informtica

ETSI Industrial 32 Universidad de Mlaga

actualizacin

Jos Antonio Gmez Ruiz

BUCLES DETERMINISTAS

El bucle for
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 */

Fundamentos de Informtica

ETSI Industrial 33 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES DETERMINISTAS

El bucle for : ejemplo

Fundamentos de Informtica

ETSI Industrial 34 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES DETERMINISTAS

El bucle for : ejemplo

/* Tabla de multiplicar */
#include <iostream>
using namespace std;
int main()
{
int i, num;
cout << Introduce un nmero :;
cin >> num;
for(i=1; i<=10; i++)
{
cout << num << x << i << = << num*i;
cout << endl;
}
return 0;
}

Fundamentos de Informtica

Introduce numero: 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

ETSI Industrial 35 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES DETERMINISTAS

El bucle for : ejemplo


/* Factorial de un nmero */
#include <iostream>
Introduce numero: 6
using namespace std;
El factorial es 720
int main()
{
int factorial, i, num;
cout << Introduce un numero :;
cin >> num;
factorial=1;
for(i=1; i<=num; i++)
factorial*= i;
cout << \nEl factorial es << factorial;
return 0;
}

Fundamentos de Informtica

ETSI Industrial 36 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BREAK y CONTINUE
La sentencia break se utiliza para forzar la salida de un
bucle independientemente de que se cumpla o no la condicin
de terminacin.
La sentencia continue 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.


(Bohm y Jacopini, 1965)
Fundamentos de Informtica

ETSI Industrial 37 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ANIDAMIENTOS DE BUCLES

Al igual que en las estructuras selectivas, no hay


restricciones en las sentencias del cuerpo del bucle
La estructura interna debe de estar totalmente incluida en la
externa
Bucle anidado

Bucle
ms
externo

Fundamentos de Informtica

Bucle anidado

ETSI Industrial 38 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ANIDAMIENTOS DE BUCLES
/*Escribe un rectngulo de asteriscos*/
#include <iostream>
using namespace std;
int main()
bucle exterior
{
int i, j;
for(i=1;i<=3;i++)
bucle interior
{
for(j=1;j<=8;j++)
cout << *;
cout << \n;
}
********
********
return 0;
********
}

Fundamentos de Informtica

ETSI Industrial 39 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ANIDAMIENTOS DE BUCLES
/*Escribe un rectngulo de asteriscos*/
#include <iostream>
using namespace std;
int main()
bucle exterior
{
int i, j;
for(i=1;i<=3;i++)
bucle interior
{
for(j=1;j<= i ;j++)
cout << *;
cout << \n;
}
*
**
return 0;
***
}

Fundamentos de Informtica

ETSI Industrial 40 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ANIDAMIENTOS DE BUCLES

Basndote en el
cdigo anterior,
modifica el
programa para que
obtenga los
ejemplos adjuntos.
La altura del
tringulo se pide por
teclado.

Fundamentos de Informtica

Introduce altura: 3
1
12
123

Introduce altura: 4
1
121
12321
1234321

ETSI Industrial 41 Universidad de Mlaga

Jos Antonio Gmez Ruiz

ANIDAMIENTOS DE BUCLES
/* Encuentra el primer nmero perfecto mayor que 28.
Un nmero es perfecto si coincide con la suma de sus
divisores, sin contarse el mismo.
Ej: 6 = 1+2+3 */
#include <iostream>
using namespace std;
int main()
{int encontrado = 0, intento, cont, suma;
intento = 29; /* empiezo con el siguiente de 28 */
while(!encontrado)
{
suma=1; /* el 1 es divisor de todos los numeros */
for (cont=2; cont<intento; cont++ )
if ((intento%cont)==0) /* si cont es divisor */
suma+=cont;
/* lo sumo */
if (suma == intento )
encontrado = 1; /* si coincide lo hemos encontrado */
else
intento++;
/* sino, probamos con el siguiente */
}
cout << Nmero perfecto mayor que 28 = << intento;
return 0;
}

Fundamentos de Informtica

ETSI Industrial 42 Universidad de Mlaga

Jos Antonio Gmez Ruiz

BUCLES INFINITOS

Un bucle infinito es un bucle que nunca acaba


Normalmente se produce cuando un bucle no alcanza la
condicin de finalizacin

N++;

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;

Mucho cuidado con los puntos y coma tras las condiciones


Por tanto, al disear un bucle, hay que comprobar siempre
que las condiciones de finalizacin sern alcanzadas

Fundamentos de Informtica

ETSI Industrial 43 Universidad de Mlaga

Jos Antonio Gmez Ruiz

EJERCICIOS
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.
Fundamentos de Informtica

ETSI Industrial 44 Universidad de Mlaga

Jos Antonio Gmez Ruiz

Tema 4:

Estructuras de Control

FIN DEL TEMA

Fundamentos de Informtica

ETSI Industrial 45 Universidad de Mlaga

Jos Antonio Gmez Ruiz

También podría gustarte