Está en la página 1de 19

Programacin I E. U. Estadstica, U.

Complutense de Madrid Primer curso, Grupo B Curso 2009-2010

Instrucciones de control en C++

Yolanda Garca Ruiz D17C ygarciar@fdi.ucm.es yg @ http://gpd.sip.ucm.es/yolanda/


Departamento de Sistemas Informticos y Computacin (UCM)

INSTRUCCIONES DE CONTROL

CONTENIDOS
1 Introduccin a las sentencias de control. 1. 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 en C++

Yolanda Garca Ruiz

2009/2010

INSTRUCCIONES DE CONTROL

1
Introduccin a las sentencias de control

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

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
Entrada Salida Asignacin Simples Mltiples Hacer para Hacer mientras Repetir hasta

Estructuras Algortmicas

C di i Condicionales l C li Cclicas

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

INSTRUCCIONES DE CONTROL en C++


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


Instrucciones de control en C++ Yolanda Garca Ruiz 2009/2010 5

INSTRUCCIONES DE CONTROL en C++

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

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

Instrucciones Condicionales en C++


Instruccin condicional simple: IF
Se corresponde con la estructura algortmica El formato general de una sentencia if es la siguiente: if (condicin) { instruccin 1; instruccin n; } Atencin !!!
Instrucciones de control en C++ si
?

no

condicin Instruccin (es )

if (condicin) instruccin;

Si se cumple la condicin, entonces se ejecuta j la instruccin el bloque q de instrucciones; en caso contrario, no se ejecutan.
2009/2010 7

Yolanda Garca Ruiz

Instrucciones Condicionales
Instruccin condicional simple: IF
Ejemplos:
#include <iostream> int main() { int a, x = 0, y; cin >> a; if (a==0) x = 1; cout << x; return 0; } } #include <iostream> int main() { ... if (cantidad > 100) { descuento = 0.2; precio = n*descuento; } ... return 0;

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

Instrucciones Condicionales
Instruccin condicional doble : IF-ELSE
Estructura algortmica asociada: Formato general de la sentencia if-else if ( (condicin) di i ) { varias instrucciones 1; } else { varias instrucciones 2; }
Instruccin(es )1 Instruccin(es )2

si

no

condicin di i

if ( (condicin) di i ) 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.
2009/2010 9

Instrucciones de control en C++

Yolanda Garca Ruiz

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

if

condicin

) {

instruccin

; ; }

instruccin

else {

instruccin

; ; }

instruccin

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

10

Instrucciones Condicionales
Instruccin condicional doble : IF-ELSE
Ejemplos:
#include <iostream> int main() { int a, x; cin >> a; if (a==0) x = 1; else x= 0; cout << x; return 0; } } #include <iostream> int main() { ... if (cantidad > 100) { descuento = 0.2; precio = n*descuento; } else l precio = n; ... return 0;

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

11

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 si
?

condicin1 A i ( Accin (es) )


no

condicin2 Accin (es) Accin (es)

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

12

Instrucciones Condicionales
Instruccin condicional doble : IF-ELSE anidadas
if (condicin1) instruccin 1; else if (condicin2) instruccin 2; else instruccin 3;

La sintaxis de instrucciones IF-ELSE anidadas

La escritura en sangra facilita la comprensin p del cdigo g as como el chequeo del buen funcionamiento.

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

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

13

Instrucciones Condicionales
#include <iostream> 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; return 0; } }
14

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

Q hacen Qu stos cdigos ?

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;

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

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: t t 2 instruccin2 bloque de instrucciones break; defeault: instruccin2 bloque de instrucciones }
Constante 1 ? DATO Constante 2 ... ... ConstanteN

A i (es) Accin ( )

A i (es) Accin ( )

Accin (es)

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

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

Instrucciones Condicionales
Instruccin condicional mltiple : SWITCH
Formato general de la sentencia witch
switch (selector) { case constante1: i t instruccin1 i 1 bl bloque d de i instrucciones t i break; case constante2: instruccin2 bloque q de instrucciones break; defeault: instruccin3 bloque de instrucciones }

El valor de selector debe ser un nmero entero. Puede ser una variable, una expresin una llamada a una funcin.

Cada caso comienza con un case y termina con un break

Qu ocurre si se me olvida algn break ?

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

16

Instrucciones Condicionales
Instruccin condicional mltiple : SWITCH
Ejemplo #include <iostream> 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; }
Instrucciones de control en C++ Yolanda Garca Ruiz 2009/2010

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

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

17

INSTRUCCIONES DE CONTROL

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

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

18

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 di i o mediante di un contador. d

Sentencias WHILE, DO-WHILE y FOR

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

19

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : WHILE
Se corresponde con la estructura algortmica hacer_mientras: Cuerpo del bucle Formato general de la sentencia t i while hil
while ( condicin ) { instruccin 1; instruccin n; }
si
?

no

condicin 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.
while hil ( condicin di i ) instruccin;

Cada repeticin del cuerpo del bucle se denomina iteracin


20

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : WHILE
Ejemplo:
#include <iostream> i t main() int i () { contador = 0; ; while (contador < 100) { cout << Hola; contador t d ++ ++; } ... return 0; }

La condicin ser evaluada siempre i antes t de d cada d iteracin. it i El cuerpo p del bucle while se repite p mientras la condicin sea cierta. El cuerpo de un bucle while se ejecutar cero o ms veces.

cue erpo

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

21

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : WHILE
Inicializacin Se realiza antes de la instruccin while
contador = 0; while (contador < 100) { cout << Hola; contador ++; } ...

IMPORTANTE
La variable que representa la condicin del bucle se denomina variable i bl de d control t l del d l bucle b l . Dicha variable debe ser: - inicializada - comprobada - actualizada

c cuerpo

Actualizacin Se realiza dentro del cuerpo del bucle durante cada iteracin
Instrucciones de control en C++ Yolanda Garca Ruiz

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

2009/2010

22

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"; g a = false; } else cout << "Muy Muy bien, bien otro ms: " ; } return 0; }
Instrucciones de control en C++ Yolanda Garca Ruiz

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

Actualizacin
23

2009/2010

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : DO-WHILE
Se corresponde con la estructura algortmica Formato general de la sentencia do-while do { instruccin 1; instruccin n; } while hil ( condicin di i ) );
Accin(es)
no

do instruccin; 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.
2009/2010 24

Instrucciones de control en C++

Yolanda Garca Ruiz

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : DO-WHILE
Ejemplo:
#include <iostream> int main() { char n; do { cout << "introducir nmero: "; cin >> n; if ((isdigit(n)) ((isdigit(n))== false) cout << Solo se admiten nmeros";

El cuerpo de un bucle do do-while 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.

cu uerpo

} while ((isdigit(n)) != false); return 0; }

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

25

Instrucciones Iterativas o repetitivas


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

si

no

condicin A i ( ) Accin(es)

Accin(es)
no

condicin di i

si

En do-while primero se ejecuta el bloque de instrucciones y luego se comprueba la condicin.

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

26

Instrucciones Iterativas o repetitivas


Traduccin de WHILE a DO-WHILE

while ( condicin ) { instruccin 1; instruccin n; }

if (condicin) do { instruccin 1; ; instruccin n; } while ( condicin );

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

27

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.
Se corresponde con la estructura algortmica hacer_desde hasta
si

i inf
?

i sup

no

Accin(es) ii+1

for ( inicializacin ; condicin ; actualizacin ) { instruccin 1; i t instruccin i n; Formato general de la } sentencia for
Instrucciones de control en C++ Yolanda Garca Ruiz 2009/2010 28

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 p 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.
Instrucciones de control en C++ Yolanda Garca Ruiz 2009/2010 29

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. bucle Se pueden utilizar una o varias variables. Parte de iteracin: Expresin lgica. 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; }
30

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

Instrucciones Iterativas o repetitivas


Instruccin de control repetitiva : FOR
Ejemplo:

La variable de control es n entero, su valor inicial es 1 Su valor final es 10 Se incrementa de 2 en 2 2.


Pasada 1 2 3 4 5 Valor de n 1 3 5 7 9

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

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.
Instrucciones de control en C++ Yolanda Garca Ruiz 2009/2010 31

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, 0 j = 100; i<j ; i++ i++, j j--) ) { int k; j; 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
2009/2010 32

Instrucciones de control en C++

Yolanda Garca Ruiz

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 t << endl; dl } . return 0; ; }

Valor de las variables de control en cada pasada


valor de i 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 valor de j 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 i+j 5 11 17 23 29 35 41 47 53 59 65 71 77 83 89 95

Se realizan un total de 16 pasadas.

Se ejecuta el cuerpo de la instruccin for mientras se cumpla la condicin.


Instrucciones de control en C++ Yolanda Garca Ruiz 2009/2010

33

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


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

Bucle infinito

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

INSTRUCCIONES DE CONTROL

4
Sentencias BREAK y CONTINUE

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

35

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.
Instrucciones de control en C++ Yolanda Garca Ruiz 2009/2010 36

Instrucciones Iterativas o repetitivas


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

Ejemplos

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

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

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; }

Ignora lo que sigue y vuelve a comprobar b l la condicin. di i

Instrucciones de control en C++

Yolanda Garca Ruiz

2009/2010

38

También podría gustarte