Title: Control de Flujo (I): If, Switch
1Control de Flujo (I)If, Switch
- Clase 7
- Introducción a la Programación
- Marcos Sepúlveda(marcos_at_ing.puc.cl)
2Resumen del curso hasta ahora
- Sabemos definir un algoritmo
- Sabemos escribir programas simples, que
- Reciben inputs
- Hacen cálculos
- Entregan output
- Sabemos especificar sub-algoritmos dentro de un
programa funciones - En los laboratorios han adquirido práctica con
los computadores
3Qué es el control de flujo?
- Permite que un programa tome decisiones
- Escoja que hacer dadas alternativas
- Ejecute ciclos
- Por lo tanto sirve para expresar comportamientos
más complejos - Ejemplos?
4Aumenta la expresividad de lo que podemos
describir en un programa
- Podremos programar una gran variedad de cosas.
- Todo lo que se puede describir con
- árboles de decisión, o
- diagramas de flujo
5El comando if
- Si ocurre la expresión, se lleva a cabo el bloque
de instrucciones - Ej. hacer la función valorAbsoluto.
if ( expresión-booleana ) ...
Bloque de instrucciones ...
AB?
SI
NO
6Variación if/else
if ( expresión-booleana ) ...
instrucciones ... else
... instrucciones ...
AB?
NO
SI
- Si ocurre algo, hacer X, si no ocurre hacer Y
- Ej. programa que imprime par o impar,
dependiendo del número.
7Variación if/else if/else
- Permite escoger entre varias ramas
- Propuesto dibujar el diagrama de flujo
- Ej. programa que imprime etapa de la vida
dependiendo de la edad (niño 0-12, adolescente
13-19, joven 20-30, adulto 31-50, mayor 51-)
if ( expresión-booleana ) ...
instrucciones ... else if (
expresión-booleana ) ...
instrucciones ... else
... instrucciones ...
8Ejemplos if
- Crédito autorizado
- int salario, credito
- if (salario gt 1000000)
- credito 5000000
- else if (salario gt 500000)
- credito 2000000
- else if (salario gt 100000)
- credito 1000000
- else
- credito 0
9EjemploQué hago el sábado por la noche?
10EjemploQué hago el sábado por la noche?
- main()
- char respuesta
- printf("Veamos que hacer el sabado por la
noche...\n") - printf("Desea quedarse en casa? (s/n) ")
- scanf("s", respuesta)
- if (respuesta's')
- printf("Le gusta ver TV? (s/n) ")
- scanf("s", respuesta)
- if (respuesta's')
- printf("Hay algun programa bueno esta
noche? (s/n) ") - scanf("s", respuesta)
- if (respuesta's')
- printf("Sugerencia Coma cabritas y vea
el programa que pasan\n") - else
- printf("Sugerencia Arriende una
pelicula\n") -
11EjemploQué hago el sábado por la noche?
- else
- printf("Le gusta bailar? (s/n) ")
- scanf("s", respuesta)
- if (respuesta's')
- printf("Le gusta la musica tropical? (s/n)
") - scanf("s", respuesta)
- if (respuesta's')
- printf("Sugerencia Vaya a la discotheque
El Merengazo\n") - else
- printf("Sugerencia Vaya a la discotheque
Los Tarros\n") -
- else
- printf("Le gusta ir al cine? (s/n) ")
- scanf("s", respuesta)
- if (respuesta's')
- printf("Sugerencia Vaya a ver una
pelicula\n") - else
- printf("Sugerencia Vaya a un pub y
tomese un Pisco Sour\n") -
12Mini-tarea
- Haga un programa (que utilice funciones) que
reciba tres números y devuelva - Sumatoria
- Pitatoria
- Promedio
- Mínimo
- Máximo
13Instrucción switch
switch ( expresión ) case constante1
... Bloque de
instrucciones 1 ...
break case constante2
... Bloque de
instrucciones 2 ...
break ... case
constanteN ...
Bloque de instrucciones N
... break
default / Opcional /
... Bloque de instrucciones
N1 ...
- Similar a if / else if / else
- Es más claro, es similar a un menú de
alternativas. - break hace que el programa salte al final del
switch. - default es un atrapa todo.
14Ejemplos switch
- / Tipico switch para un menu de una aplicacion.
En la variable - entera opcion el usuario ingreso su eleccion
dentro del menu - /
- switch (opcion)
- case 1
- opcion1()
- break
-
- case 2
- opcion2()
- break
-
- case 3
- opcion3()
- break
-
- default printf("Opcion invalida\n")
-
15Ejemplos switch
- / Dado un mes, identifica el trimestre /
- switch (mes)
- case 1
- case 2
- case 3
- printf("Primer trimestre\n")
- break
-
- case 4
- case 5
- case 6
- printf("Segundo trimestre\n")
- break
-
- case 7
- case 8
- case 9
- printf("Tercer trimestre\n")
- break
16Ejemplo Conversión a letras de una cantidad de
dos dígitos
- Programa que convierte una cantidad de dos
dígitos a letras, en la forma en que sería útil,
por ejemplo, para escribir un cheque. El programa
es una versión muy simple que soporta sólo
cantidades entre 30 y 99 (no se consideran
excepciones).
17EjemploCálculo de 2n
- Programa que calcula 2n, para n entre 1 y 10.
Para la implementación se emplea un switch sin
breaks, lo cual puede ser una técnica de
programación peligrosa.
18EjemploCálculo de 2n
- main()
- int n
- int x 2
- printf("Calculo de 2n. Ingrese n entre 1 y
10 ") - scanf("d", n)
- switch(n)
- case 10 x x 2
- case 9 x x 2
- case 8 x x 2
- case 7 x x 2
- case 6 x x 2
- case 5 x x 2
- case 4 x x 2
- case 3 x x 2
- case 2 x x 2
-
19Ejemplos
- Hacer un programa que transforme desde números
enteros a números romanos (1-100). - Hacer un programa que una fecha de estilo 1 4
2003, la escriba como 1 de Abril de 2003. - Mini-tarea Ídem al anterior pero que escriba
Lunes, 1 de Abril de 2003.