Vous êtes sur la page 1sur 15

Alfredo Vellido : www.lsi.upc.

edu/~avellido

Fonaments dInformtica
Semana 4. Composiciones iterativas

RECAP: Composiciones alternativas

Estructura alternativa if
Sintaxis (caso simple):

if (<expresion>) { <bloque de instrucciones> }

RECAP: Composiciones alternativas


Estructura alternativa if Sintaxis (caso complejo):
if (<expresion1>) { <bloque de instrucciones1> else if (<expresion2>){ <bloque de instrucciones2> else if (<expresion3>){ <bloque de instrucciones3> ... else { <bloque de instruccionesX> (<expresionX> es expresin booleana } } } }

RECAP: Composiciones alternativas

Leyes de De Morgan
!(a && b) == (!a || !b) !(a || b) == (!a && !b)
Ej.: !(a < 10 || a > 20) == (!(a < 10) && !(a > 20)) == (a >= 10 && a <= 20)

Composiciones alternativas
Estructura alternativa switch
La composicin alternativa switch tiene la siguiente sintaxis (en su forma ms simple): switch (<expresion>) { case <valor1>: <sentencia1> break; case <valor2>: <sentencia2> break; ... case <valorn>: <sentencian> break; [default: <sentenciad>] }

Composiciones alternativas Estructura alternativa switch (2)


Una vez el programa llega al switch, se evala <expresion> y se compara su valor con los valores opcionales. Si coinciden, se ejecuta la sentencia correspondiente. Si para cada opcin hay ms de una sentencia, se han de utilizar llaves:

switch (<expresion>) { case <valor1>: {<sentencia1_1> ... break;} ... case <valorn>: {<sentencian_1> ... break;} }

Composiciones alternativas
Estructura alternativa switch (3)
Un ejemplo. Poniendo notas char nota; cin >> nota; switch (nota) { case S: cout << suspenso << endl; break; case A: cout << aprobado << endl; break; case N: cout << notable <<endl; break; case E: cout << excelente << endl; break; }

Composiciones iterativas Estructura iterativa while


Motivacin: con asignaciones, entradas/salidas y alternativas, el nmero de operaciones esta limitado por la longitud del programa. No siempre sabremos cuntas haremos, depende de los datos. Ejemplo: Leer una secuencia de nmeros y dar su suma como resultado de salida. Con 1, 2, 3 10, tendramos que declarar hasta 10 variables, 10 lecturas, 10 sumas Y si no sabemos a priori cuntos nmeros vendrn por entrada?

Composiciones iterativas Estructura iterativa while

La composicin iterativa while tiene la siguiente sintaxis: while (<expresion E>) { <bloque de instrucciones B> }

Composiciones iterativas

Estructura iterativa while

while (<expresion E>) { <bloque de instrucciones B> }

Efecto de repeticin / bucle: if (E) {B} if (E) {B} ... if (E) {B} (hasta que !E) Observaciones: La condicin es una expresin booleana Las llaves no son necesarias si slo hay una instruccin

Composiciones iterativas
Estructura iterativa while (ej1)
La tabla de multiplicar del 4 ( papel y boli ), vista por pantalla como:

4 * 1 = 4 ... etc.
#include <iostream> using namespace std; int main(void){ int num1 = 1; while (num1 <= 10) { cout << "4 * " << num1 << " = " << 4*num1 << endl; num1++; } ... }

Composiciones iterativas
Estructura iterativa while (ej2)
Ejemplo: Clculo del factorial de un entero positivo n introducido por teclado

int n; cin >> n; int f = 1; while (n>1) {f = f*n; n--;} cout << f << endl; // Observad el caso n=0, n=1

Composiciones iterativas
Estructura iterativa while (ej3)
Ejemplo: Dado un entero por teclado, invertir el orden de sus cifras y sacar el nmero invertido por pantalla (bases numricas: base 10) int n; cin >> n; while(n!=0) { cout << n%10; n=n/10; }

Composiciones iterativas La estructura iterativa while se puede anidar ...

Con la siguiente sintaxis: while (<expresion E1>) { <bloque de instrucciones B> while (<expresion E2>) { ... } ... }

Composiciones iterativas Estructura iterativa while (4b)


Ej. de while anidado: tablas de multiplicar al completo:
int main(void){ int num1 = 1; while (num1 <= 10) { int num2 = 1; while (num2 <= 10) { cout << num1 << "*" << num2 << "=" << num1*num2<<endl; num2++; } num1++; } system (pause);return 0;
}

Vous aimerez peut-être aussi