Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pseudoco C +
Pseudoco C +
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.
2009/2010
INSTRUCCIONES DE CONTROL
1
Introduccin a las sentencias de control
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
2009/2010
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). )
2
Instrucciones o sentencias condicionales IF, IF-ELSE, SWITCH
2009/2010
no
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
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;
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 Condicionales
Instruccin condicional IF, IF-ELSE
Diagrama sintctico:
if
condicin
) {
instruccin
; ; }
instruccin
else {
instruccin
; ; }
instruccin
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;
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
?
2009/2010
12
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 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;
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;
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;
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
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.
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
17
INSTRUCCIONES DE CONTROL
3
Instrucciones o sentencias repetitivas o iterativas WHILE, DO-WHILE, FOR
2009/2010
18
2009/2010
19
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;
2009/2010
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
2009/2010
21
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
2009/2010
22
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
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
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
2009/2010
25
si
no
condicin A i ( ) Accin(es)
Accin(es)
no
condicin di i
si
2009/2010
26
2009/2010
27
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
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
2009/2010
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
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
33
Bucle infinito
2009/2010
INSTRUCCIONES DE CONTROL
4
Sentencias BREAK y CONTINUE
2009/2010
35
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
Ejemplos
int main() { . for ( int t = 0; t <100 ; t++ ) { if (t% (t%10==0) 0 0) continue; cout << t; } . return 0; }
37
2009/2010
2009/2010
38