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
Entrada Salida Asignacin Simples Mltiples Hacer para Hacer mientras Repetir hasta
Estructuras Algortmicas
Condicionales Cclicas
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).
INSTRUCCIONES DE CONTROL
2
Instrucciones o sentencias condicionales IF, IF-ELSE, SWITCH
Instrucciones Condicionales
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 !!!
6 si
?
no
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
Ejemplos:
#include <iostream.h> int main() { int a, x = 0, y; cin >> a; if (a==0) x = 1; cout << x; return 0; } } #include <iostream.h> int main() { ... if (cantidad > 100) { descuento = 0.2; precio = n*descuento; } ... return 0;
Instrucciones Condicionales
Instruccin condicional doble : IF-ELSE
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
si
no
condicin
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
else {
instruccin
; ; }
instruccin
Instrucciones Condicionales
Instruccin condicional doble : IF-ELSE
Ejemplos:
#include <iostream.h> int main() { int a, x; cin >> a; if (a==0) x = 1; else x= 0; cout << x; return 0; } } #include <iostream.h> int main() { ... if (cantidad > 100) { descuento = 0.2; precio = n*descuento; } else precio = n; ... return 0;
10
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
?
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.
if (condicin1) instruccin 1; else if (condicin2) instruccin 2; else if (condicin3) instruccin 3; else instruccin 4;
12
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; return 0; }
13
#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; cout << fin del programa; return 0;
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 }
Constante 1 ? DATO Constante 2 ... ... ConstanteN
Accin (es)
Accin (es)
Accin (es)
Permiten comparar una variable con distintos valores posibles, ejecutando para cada caso una serie de instrucciones especficas.
14
Instrucciones Condicionales
Instruccin condicional mltiple : SWITCH
Formato general de la sentencia witch
switch (selector) { case constante1: instruccin1 bloque de instrucciones break; case constante2: instruccin2 bloque 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.
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
INSTRUCCIONES DE CONTROL
3
Instrucciones o sentencias repetitivas o iterativas WHILE, DO-WHILE, FOR
17
18
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 ( condicin ) instruccin;
19
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.
20
cuerpo
cuerpo
La variable que representa la condicin del bucle se denomina variable de control del bucle. Dicha variable debe ser: - inicializada - comprobada - actualizada
Actualizacin Se realiza dentro del cuerpo del bucle durante cada iteracin
21
Inicializacin Comprobacin
Es importante comprobar que en algn momento, la condicin del bucle se hace falsa, de forma que no obtengamos bucles infinitos.
Actualizacin
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
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.
cuerpo
si
no
condicin Accin(es)
Accin(es)
no
condicin
si
25
26
i k inf
?
i sup
no
Accin(es) iki+1
for ( inicializacin ; condicin ; actualizacin ) { instruccin 1; instruccin n; Formato general de la } sentencia for
27
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
29
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.
30
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
Bucle infinito
33
INSTRUCCIONES DE CONTROL
4
Sentencias BREAK y CONTINUE
34
La instruccin continue , interrumpe la ejecucin del cuerpo del bucle y fuerza una nueva iteracin.
35
Ejemplos
int main() { . for ( int t = 0; t <100 ; t++ ) { if (t%10==0) continue; cout << t; } . return 0; }
36
37