Está en la página 1de 19

INSTRUCCIONES DE CONTROL

CONTENIDOS
1. Introduccin a las sentencias de control.
2. Instrucciones o sentencias condicionales: IF, IF-ELSE, SWITCH.
3. Instrucciones o sentencias repetitivas o iterativas:
WHILE, DO-WHILE, FOR.
4. Sentencias BREAK y CONTINUE.

INSTRUCCIONES DE CONTROL

1
Introduccin a las sentencias de control

INSTRUCCIONES DE CONTROL
Introduccin
Hasta ahora solo hemos visto la codificacin en el lenguaje C++ de las
estructuras secuenciales, lo que nos proporciona programas lineales, es
decir, comienzan por la primera instruccin y acababan por la ltima,
ejecutndose todas una sola vez.
Secuenciales

Estructuras
Algortmicas

Condicionales
Cclicas

Entrada
Salida
Asignacin
Simples
Mltiples
Hacer para
Hacer mientras
Repetir hasta

INSTRUCCIONES DE CONTROL
Esta forma de programacin slo me permite resolver problemas
sencillos.
Para resolver problemas ms complejos, nos puede interesar que
dependiendo de los valores de los datos, se ejecuten unas instrucciones u
otras. Las instrucciones condicionales nos van a permitir representar
ste tipo de comportamiento.

Sentencias IF y SWITCH
En otro casos, nos encontraremos con la necesidad de repetir una
instruccin instrucciones un nmero determinado de veces. En stos
casos utilizaremos instrucciones de control iterativas repetitivas
(ciclos).

Sentencias WHILE, DO-WHILE y FOR


4

INSTRUCCIONES DE CONTROL

2
Instrucciones o sentencias condicionales
IF, IF-ELSE, SWITCH

Instrucciones Condicionales
Instruccin condicional simple: IF
si

Se corresponde con la estructura algortmica

no

condicin

El formato general de una


sentencia if es la siguiente:
if (condicin)
{
instruccin 1;

instruccin n;
}
Atencin !!!
6

Instruccin (es )

if (condicin)
instruccin;

Si se cumple la condicin, entonces se


ejecuta la instruccin el bloque de
instrucciones; en caso contrario, no se
ejecutan.

Instrucciones Condicionales
Instruccin condicional simple: IF
#include <iostream.h>
int main()
{
...

Ejemplos:
#include <iostream.h>
int main()
{
int a, x = 0, y;
cin >> a;

if (cantidad > 100)


{
descuento = 0.2;
precio = n*descuento;
}

if (a==0)
x = 1;

...
return 0;

cout << x;
return 0;

Instrucciones Condicionales
Instruccin condicional doble : IF-ELSE

si

no

condicin

Estructura algortmica asociada:


Formato general de la
sentencia if-else
if (condicin)
{
varias instrucciones 1;
}
else
{
varias instrucciones 2;
}

Instruccin(es )1

Instruccin(es )2

if (condicin)
instruccin 1;
else
instruccin 2;
Si se cumple la condicin, se ejecutan las
instrucciones del primer bloque;
si no, se ejecutan las instrucciones del segundo
bloque.

Instrucciones Condicionales
Instruccin condicional IF, IF-ELSE
Diagrama sintctico:

if

condicin

instruccin

instruccin

instruccin

else
{

;
;

instruccin

Instrucciones Condicionales
Instruccin condicional doble : IF-ELSE
Ejemplos:
#include <iostream.h>
int main()
{
int a, x;
cin >> a;

10

#include <iostream.h>
int main()
{
...

if (a==0)
x = 1;
else
x= 0;

if (cantidad > 100)


{
descuento = 0.2;
precio = n*descuento;
}
else
precio = n;

cout << x;
return 0;

...
return 0;
}

Instrucciones Condicionales
Instruccin condicional doble : IF-ELSE anidadas
Hemos visto dos tipos de instrucciones condicionales, con una o dos
alternativas. Podemos utilizar las instrucciones IF-ELSE anidadas, es
decir, que alguna de las ramas sea a su vez otra instruccin IF-ELSE. As
podemos implementar decisiones que implican ms de dos alternativas.
si

no

condicin1
si

Accin (es)

no

condicin2
Accin (es)

Accin (es)

11

Instrucciones Condicionales
Instruccin condicional doble : IF-ELSE anidadas
.

if (condicin1)
instruccin 1;
else
if (condicin2)
instruccin 2;
else
instruccin 3;

La escritura en sangra facilita la


comprensin del cdigo as como el
chequeo del buen funcionamiento.

12

La sintaxis de
instrucciones IF-ELSE anidadas

if (condicin1)
instruccin 1;
else
if (condicin2)
instruccin 2;
else
if (condicin3)
instruccin 3;
else
instruccin 4;

Instrucciones Condicionales
#include <iostream.h>
int main()
{
int a, b, c, max;
cin >> a >> b >> c;
if (a > b)
if (a > c)
cout << a;
else
cout << c;
else
if (b > c)
cout << b;
else
cout << c;

#include <iostream.h>
int main()
{
int a, b, c, max;
cin >> a >> b >> c;

Qu hacen
stos
cdigos ?

return 0;
}

if (a > b)
if (a > c)
cout << a;
else
cout << c;
else
if (b > c)
cout << b;
else
cout << c;
cout << fin del programa;
return 0;

13

Instrucciones Condicionales
Instruccin condicional mltiple : SWITCH
Estructura algortmica asociada
Formato general de la
sentencia witch
switch (selector)
{
case constante1:
instruccin1 bloque de instrucciones
break;
case constante2:
instruccin2 bloque de instrucciones
break;
defeault:
instruccin2 bloque de instrucciones
}

14

Constante 1

Accin (es)

ConstanteN

?
DATO

Accin (es)

Constante 2

Accin (es)

...

...

Permiten comparar una


variable con distintos
valores posibles, ejecutando
para cada caso una serie de
instrucciones especficas.

Instrucciones Condicionales
Instruccin condicional mltiple : SWITCH
Formato general de la
sentencia witch
El valor de selector debe ser un nmero
entero. Puede ser una variable, una expresin
una llamada a una funcin.

switch (selector)
{
case constante1:
instruccin1 bloque de instrucciones
break;
case constante2:
instruccin2 bloque de instrucciones
break;
defeault:
instruccin3 bloque de instrucciones
}

Cada caso comienza con un


case y termina con un break

Qu ocurre si se me
olvida algn break ?

15

Instrucciones Condicionales
Instruccin condicional mltiple : SWITCH
Ejemplo
#include <iostream.h>
int main ()
{
cin>> num;
switch (num)
{
case 1:
cout << Ha introducido el n 1\n;
case 2:
cout << Ha introducido el n 2\n;
break;
defeault:
cout << Ha introducido otro n;
}
return 0;
}
16

Si al ejecutar el programa
introducimos un 2, obtenemos
el mensaje:
Ha introducido el n 2

Si al ejecutar el programa
introducimos un 1, obtenemos
el mensaje:
Ha introducido el n 1
Ha introducido el n 2

INSTRUCCIONES DE CONTROL

3
Instrucciones o sentencias repetitivas o iterativas
WHILE, DO-WHILE, FOR

17

Instrucciones Iterativas o repetitivas


Instrucciones de control repetitivas
Son aquellas que controlan la repeticin de un conjunto de instrucciones
denominado bloque o cuerpo del bucle, mediante la evaluacin de una
condicin o mediante un contador.

Sentencias WHILE, DO-WHILE y FOR

18

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : WHILE
Se corresponde con la estructura algortmica
hacer_mientras:

si

while ( condicin )
{
instruccin 1;

instruccin n;
}

no

condicin

Cuerpo del bucle


Formato general de la
sentencia while

Accin(es)

Controla la ejecucin de un bloque de


instrucciones de tal forma que stas se ejecutan
mientras se cumpla la condicin, que ser
evaluada siempre antes de cada repeticin.
Cada repeticin del cuerpo
del bucle se denomina
iteracin

while ( condicin )
instruccin;

19

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : WHILE
Ejemplo:

cuerpo

#include <iostream.h>
int main()
{

contador = 0;
while (contador < 100)
{
cout << Hola;
contador ++;
}
...
return 0;
}

20

La condicin ser evaluada


siempre antes de cada iteracin.
El cuerpo del bucle while se repite
mientras la condicin sea cierta.
El cuerpo de un bucle while
se ejecutar cero o ms veces.

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : WHILE
La variable que representa la
condicin del bucle se denomina
variable de control del bucle.
Dicha variable debe ser:
- inicializada
- comprobada
- actualizada

Inicializacin
Se realiza antes de la instruccin while

cuerpo

contador = 0;
while (contador < 100)
{
cout << Hola;
contador ++;
}
...

Actualizacin
Se realiza dentro del cuerpo del bucle
durante cada iteracin

Comprobacin
Se comprueba el valor de la variable
antes de comenzar la repeticin

21

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : WHILE
int main()
{
const bool continuar = true;
bool a = true;
int n;
while (a ==continuar)
{
cin >> n;
if (n<0)
{
cout << "No se admiten negativos";
a = false;
}
else
cout << "Muy bien, otro ms: " ;
}
return 0;
}
22

Inicializacin
Comprobacin
Es importante comprobar que en
algn momento, la condicin del
bucle se hace falsa, de forma que
no obtengamos bucles infinitos.

Actualizacin

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : DO-WHILE
Se corresponde con la estructura algortmica
Formato general de la
sentencia do-while
do
{

Accin(es)
no

do
instruccin;
while ( condicin );

instruccin 1;

instruccin n;
} while ( condicin );

condicin

si

Se utiliza para ejecutar un bloque de


instrucciones al menos una vez.
El cuerpo del bucle se repite mientras se
verifica la condicin. Dicha condicin ser
evaluada despus de cada repeticin.

23

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : DO-WHILE
Ejemplo:

cuerpo

#include <iostream.h>
int main()
{
char n;
do
{
cout << "introducir nmero: ";
cin >> n;
if ((isdigit(n))== false)
cout << Solo se admiten nmeros";
} while ((isdigit(n)) != false);
return 0;
}
24

El cuerpo de un bucle do-while


se ejecutar una o ms veces.
El cuerpo del bucle do-while
se repite mientras la
condicin sea cierta.
La condicin ser evaluada
siempre despus de cada
iteracin.

Instrucciones Iterativas o repetitivas


Diferencias entre las instrucciones
WHILE y DO-WHILE
En while primero se tiene que cumplir
la condicin, y luego se ejecuta el
bloque de instrucciones.

si

condicin
Accin(es)

Accin(es)
no

condicin

si

En do-while primero se ejecuta el


bloque de instrucciones y luego se
comprueba la condicin.

25

Instrucciones Iterativas o repetitivas


Traduccin de WHILE a DO-WHILE

while ( condicin )
{
instruccin 1;

instruccin n;
}

26

if (condicin)
do
{
instruccin 1;

instruccin n;
} while ( condicin );

no

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : FOR
Se utiliza para ejecutar un bloque de
instrucciones un nmero fijo de veces que
se conoce de antemano.

i k inf
si

i sup

no

Accin(es)

Se corresponde con la estructura algortmica


hacer_para:

iki+1

for ( inicializacin ; condicin ; actualizacin )


{
instruccin 1;

instruccin n;
Formato general de la
}
sentencia for
27

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : FOR
La instruccin for se vale de una variable de control del ciclo. El ciclo se
repite desde el lmite inferior, hasta que la variable de control llegue la lmite
superior.
for ( inicializacin; condicin; actualizacin )
{
instruccin 1;
Cabecera del for

instruccin n;
}

Una diferencia con el bucle while es que en el for, las operaciones de


control del bucle (inicializacin, comprobacin y actualizacin ) se
realizan en un solo sitio: la cabecera del for.
28

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : FOR
En la cabecera del for nos podemos encontrar con 3 partes o secciones:
 Parte de inicializacin: Inicializa la variable de control del bucle. Se
pueden utilizar una o varias variables.
 Parte de iteracin: Expresin lgica.
El cuerpo del bucle se repite mientras
la expresin sea verdadera.
 Parte de incremento: Incrementa
o decrementa el valor de la variable
o variables de control.

int main()
{
.
for (int i = 0; i<10; i++)
{
cout << Nmero: << i ;
cout << << endl;
}
.
return 0;
}

29

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : FOR
Ejemplo:

La variable de control es n

Es de tipo
int main()
{
.
for (int n = 1; n<=10; n=n+2)
{
cout << Nmero: << n <<\t << n*n ;
cout << << endl;
}
.
return 0;
}

entero, su valor inicial es 1


Su valor final es 10
Se incrementa de 2 en 2.
Pasada
1
2
3
4
5

Valor de n
1
3
5
7
9

En la primera iteracin pasada, el valor de n es 1, en la segunda pasada


n vale 3. La ltima pasada se realiza cuando n vale 9.
30

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : FOR
Se puede inicializar ms de una variable, se puede poner ms de una
condicin ms de un incremento.
int main()
{
.
for ( int i = 0, j = 100; i<j ; i++, j--)
{
int k;
k = i+2*j ;
cout << k << endl;
}
.
return 0;
}

Se declaran 2 variables de control: i y j


Se inicializan a 0 y 100
respectivamente
El cuerpo se ejecutar
mientras i sea menor que j
Se incrementa la variable i y se
decrementa la variable j

31

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : FOR
int main()
{
.
for ( int i = 0, j = 5; i+j <100 ; i++, j =j+5 )
{
cout << i <<\t <<j << (i+j) ;
cout << endl;
}
.
return 0;
}

Se realizan un total
de 16 pasadas.

Se ejecuta el cuerpo de la instruccin for mientras


se cumpla la condicin.
32

Valor de las variables


de control en cada pasada
valor de i

valor de j

i+j

0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

5
10
15
20
25
30
35
40
45
50
55
60
65
70
75
80

5
11
17
23
29
35
41
47
53
59
65
71
77
83
89
95

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : FOR
Se puede omitir cualquiera de las partes de la cabecera del for
(inicializacin, condicin o incremento).
int main()
{
.
contador = 1;
for ( ; contador <10 ; )
{
cout << contador ;
contador++ ;
}
.
return 0;
}

Se comporta igual que un while

Bucle infinito

int main()
{
.
for ( ; ; )
{
...
}
.
return 0;
}

33

INSTRUCCIONES DE CONTROL

4
Sentencias BREAK y CONTINUE

34

Instrucciones Iterativas o repetitivas


Instrucciones break y continue
La instruccin break, adems de terminar los case de una instruccin
switch, sirve para forzar la terminacin inmediata de un bucle.
{

{
instruccin 1;
break;

instruccin n;

instruccin 1;
continue;

instruccin n;
}

...

...

La instruccin continue , interrumpe la ejecucin del cuerpo del bucle y


fuerza una nueva iteracin.
35

Instrucciones Iterativas o repetitivas


Instrucciones break y continue
int main()
{
.
for ( int t = 0; t <100 ; t++ )
{
cout << t;
if (t==10)
break;
// salir del for
}
.
return 0;
}

36

Ejemplos

int main()
{
.
for ( int t = 0; t <100 ; t++ )
{
if (t%10==0)
continue;
cout << t;
}
.
return 0;
}

Instrucciones Iterativas o repetitivas


Instrucciones break y continue
Ejemplo
int main()
{
.
do
{
cin >> x;
if ( x < 0 )
continue;
cout << x;
}while (x !=100);
.
return 0;
}

37

Ignora lo que sigue y vuelve a


comprobar la condicin.

También podría gustarte