2. F
I
E
E
-
2
0
1
3 Estructuras selectivas
Son estructuras de control que nos permiten
tomar decisiones lógicas.
Consiste en evaluar una expresión, y con un
resultado obtenido realizar una determinada
acción.
Las estructuras selectivas pueden ser de tres
tipos.
Alternativa Simple – sentencia if
Alternativa doble – if…else
Alternativa multiple
Sentencia if anidadas
Sentencias switch
3. F
I
E
E
-
2
0
1
3 SENTENCIAS IF
sentencia condicional simple
Se trata de una sentencia que, tras evaluar una
expresión lógica, ejecuta una serie de sentencias en
caso de que la expresión lógica sea verdadera. Su
sintaxis es
if(expresión lógica) {
sentencias
.
}
6. F
I
E
E
-
2
0
1
3 sentencia condicional compuesta
Es igual que la anterior, sólo que se añade un
apartado else que contiene instrucciones que
se ejecutarán si la expresión evaluada por el if
es falsa. Sintaxis:
if(expresión lógica){
sentencias
.
}
else {
sentencias
}
8. F
I
E
E
-
2
0
1
3 Anidación
Dentro de una sentencia if se puede colocar otra sentencia
if. A esto se le llama anidación y permite crear programas
donde se valoren expresiones complejas. Por ejemplo en
un programa donde se realice una determinada operación
dependiendo de los valores de una variable.
if (x==1) {
sentencias
…
}else {
if(x==2) {
sentencias
…
}else {
if(x==3) {
sentencias …
}
}
}
9. F
I
E
E
-
2
0
1
3 Anidación
Si-sino-si anidada (if-else-if): cuando se anidan
instrucciones if, se debe tener en cuidado de se saber en
todo momento la else que coresponde con cada if.
10. F
I
E
E
-
2
0
1
3 if – else - if
Si-sino-si (if-else-if): se utiliza la combinacion de
instrucciones if-else-if para realizar comparaciones
sucesivas multiples.
12. F
I
E
E
-
2
0
1
3 operador condicinal
El operador condicinal (?:) : la instrucción condicional ?
Proporciona una forma rápida de escribir una condición de
evaluacion. El operador se utiliza para sustituir una instrucción
if-else equivalente.
13. F
I
E
E
-
2
0
1
3 SENTENCIAS SWITCH
Se trata de una sentencia que permite construir
alternativas múltiples. Pero que en el lenguaje C
está muy limitada. Sólo sirve para evaluar el
valor de una variable entera (o de carácter, char).
Tras indicar la expresión entera que se evalúa, a
continuación se compara con cada valor
agrupado por una sentencia case. Cuando el
programa encuentra un case que encaja con el
valor de la expresión se ejecutan todos los case
siguientes.
Por eso se utiliza la sentencias break para hacer
que el programa abandone el bloque switch.
Sintaxis:
14. F
I
E
E
-
2
0
1
3 SENTENCIAS SWITCH
switch(expresión entera){
case valor1:
sentencias
break; /*Para que programa salte fuera del switch de otro modo
atraviesa todos los demás case */
case valor2:
sentencias
...
default:
sentencias
}
15. F
I
E
E
-
2
0
1
3 SENTENCIAS SWITCH
switch (diasemana) {
case 1:
printf(”Lunes”);
break;
case 2:
printf(”Martes”);
break;
case 3:
printf(”Miércoles”);
break;
case 4:
printf(”Jueves”);
break;
case 5:
printf(”Viernes”);
break;
case 6:
printf(”Sábado”);
break;
case 7:
printf(”Domingo”);
break;
default:
std::cout<<”Error”;
}
16. F
I
E
E
-
2
0
1
3 Selección de casos (switch - case)
Selección de casos (switch - case) : para la evaluación de
una variable o una expresión frente a varios valores, se
podrían utilizar instrucciones if-else-if anidadas o una
instrucción switch
18. F
I
E
E
-
2
0
1
3 Tarea
1. ¿Cuáles y cuántos son los números primos
comprendidos entre 1 y 1000?
2. Calcular el máximo de números positivos
introducidos por teclado, sabiendo que
metemos números hasta que
introduzcamos uno negativo. El negativo
no cuenta.
3. Determinar cuales son los múltiplos de 5
comprendidos entre 1 y N.
19. F
I
E
E
-
2
0
1
3 Solución
Algoritmo n_primos
Const
Primero=1
Limite=1000
Var
cont, i, j: entero
primo: boolean
Inicio
Cont 0
Desde i= primero hasta limite
primo verdadero
j 2
mientras (i>j) y (primo =verdadero)
Si i mod j = 0
Entonces primo falso
Sino j j + 1
Fin si
Fin mientras
Si primo = verdadero
Entonces escribir i” “
Cont cont + 1
Fin si
Fin desde
Escribir “Entre “primero” y “limite” hay “cont” nº primos”
Fin
20. F
I
E
E
-
2
0
1
3 Solución
Algoritmo maximo
Var
Num, max: entero
Inicio
Max 0
Escribir “Introduzca nº positivos y para acabar introduzca uno negativo”
Leer num
Mientras num >=0
Si num >max
Entonces max num
Fin si
Leer num
Fin mientras
Escribir “El mayor número es” max
Fin