Está en la página 1de 24

Sentencias

condicionales o de
Selección
ESCUELA POLITÉCNICA NACIONAL
PERÍODO 2022B
PROF. DAVID VEGA
AGENDA
I. Sentencias condicionales
Variante if
Variante if-else
Variante if-else-if
II. Anidaciones en las sentencias condicionales
III. Errores comunes al usar sentencias condicionales

EPN-DEPARTAMENTO DE ELECTRÓNICA, TELECOMUNICACIONES Y REDES 2


I. Sentencias condicionales
Las sentencias de un programa en el lenguaje C se ejecutan secuencialmente
(una sentencia a continuación de la anterior) empezando por la primera y
terminando con la última sentencia.

Las sentencias condicionales, también llamadas sentencias de selección,


permiten efectuar alguna comprobación lógica en algún punto concreto del
programa

EPN-DEPARTAMENTO DE ELECTRÓNICA, TELECOMUNICACIONES Y REDES 3


I. Sentencias condicionales
 Las sentencias condicionales que nos permite el lenguaje C son:

EPN-DEPARTAMENTO DE ELECTRÓNICA, TELECOMUNICACIONES Y REDES 4


I. Sentencias condicionales:Variante if
Sintaxis

 Las sentencias asociadas al if pueden ser de cualquier tipo (sentencias de asignación,


llamada a una función, sentencias condicionales o iterativas).
 Si solo hay una sola sentencia dentro del if , las llaves son opcionales.
 Se recomienda indentar las sentencias dentro de if

5
I. Sentencias condicionales:Variante if
Ejemplo 1

Obsérvese que, en el programa anterior, no se han utilizado las llaves en la sentencia if


debido a que solo contiene una sentencia y, en este caso, las llaves pueden omitirse

6
I. Sentencias condicionales:Variante if
Ejemplo 2

Obsérvese que, a diferencia del programa del ejemplo 1, en este caso son obligatorias las llaves en la
sentencia if debido a que contiene más de una sentencia

7
I. Condicionales:Variante if-else
Sintaxis

 Las sentencias asociadas al if pueden ser de cualquier tipo (sentencias de asignación,


llamada a una función, sentencias condicionales o iterativas).
 Si solo hay una sola sentencia dentro del if y/o else , las llaves son opcionales
 Se recomienda indentar las sentencias

8
I. Condicionales:Variante if-else
Ejemplo 1

Obsérvese, en el ejemplo 1, que no se utilizan las llaves ni en la parte if , ni en la parte else ,


debido a que ambas partes solo tienen una única sentencia, y entonces las llaves pueden
omitirse.

9
I. Condicionales:Variante if-else
Ejemplo 2

Las llaves son obligatorias en la parte if .

10
I. Condicionales:Variante if-else-if
Sintaxis

11
I. Condicionales:Variante if-else-if
Ejemplo 1

12
I. Condicionales:Variante if-else-if
Ejemplo 2

Programa que calcula el volumen de una esfera o de un cilindro dependiendo del carácter
introducido desde el teclado por el usuario: Ver código fuente en ifelseif_ejemplo_02 de la
página web.

13
I. Condicionales switch
Sintaxis

Ejemplo en switch_ejemplo_01

14
II. Anidaciones en sentencias condicionales

En el ejemplo de arriba, debemos tener claro si la parte del else corresponde al primero o al segundo if.
Por regla general, un else siempre se asocia al if más cercano que no tiene else . En este caso, la parte
else se asocia al if más interno ( a > b ).

15
II. Anidaciones en sentencias condicionales
En el ejemplo anterior, si se quiere asociar el else al if más externo ( if (n > 0) ), entonces es
necesario utilizar las llaves y forzar la anidación deseada, como se muestra a continuación:

16
III. Errores comunes al usar sentencias
condicionales
Uso del operador de la asignación en lugar del operador relacional de igualdad en la
condición del if.

Correcto Incorrecto

if (a == 0) if (a = 0)
{ {
a = 2*a + 3; a = 2*a + 3;
} }

17
III. Errores comunes: Omisión de llaves en las
sentencias condicionales

En este código, no se han utilizado las llaves en la parte del else y, sin embargo, hay más de
una sentencia

18
III. Errores comunes: Uso de la variante if en
lugar de la variante if−else−if

Correcto Incorrecto

if (nota >= 9.0) if (nota >= 9.0)


printf("Tiene un sobresaliente"); printf("Tiene un sobresaliente");
else if(nota >= 7.5) if(nota >= 7.5)
printf("Tiene un nota muy buena"); printf("Tiene un nota muy buena");
else if(nota >= 6.0) if(nota >= 6.0)
printf("Ha aprobado"); printf("Ha aprobado");
else else
printf (“Ha suspendido"); printf (“Ha suspendido");

El uso de esta alternativa (incorrecta) no genera errores de sintaxis, pero si introduce


errores en la lógica del programa. Ver código en el Ejemplo_Variante
Que pasa si el usuario ingresa una nota de 9,4?

19
III. Errores comunes: Orden lógico de las
condiciones de la variante if−else−if

Si el usuario introduce 9.4 , el programa muestra: Ha aprobado , en lugar de: Tiene un


sobresaliente.

20
III. Errores comunes: Orden lógico de las
condiciones de la variante
El programa anterior funcionará correctamente si se cambia el orden de las condiciones, tal
como se ha mostrado en la sección anterior, o bien si se modifican las condiciones para que
sean excluyentes entre ellas. Ver códigos en condicionales_ejemplos

21
Deber
1. Crear un programa que solicité el radio de una circunferencia y contenga un menú
(switch) que permita seleccionar entre:

Calcular el área del circulo


Calcular el perímetro de la circunferencia
El área del cuadrado interior

22
Deber
2. Escriba un programa que lea por teclado el valor numérico de un día y un mes, y muestre
la estación del año a que corresponde dicha fecha. Si el usuario introduce una fecha
incorrecta, el programa muestra: Error Fecha incorrecta. Suponga que todos los meses tienen
31 días. Recuerde que la primavera comienza el 21 de marzo, el verano el 21 de junio, el
otoño el 21 de septiembre y el invierno el 21 de diciembre.
Ejemplos de ejecución (en negrita, datos ingresados por teclado): Introduzca día y mes
(separados por un espacio): -2 3
Error Fecha incorrecta
Introduzca día y mes (separados por un espacio): 12 13
Error Fecha incorrecta Introduzca día y mes (separados por un espacio): 3 12
El 03/12 estamos en la estación de otonyo

23
BIBLIOGRAFÍA
CASTELLS, Marta Jiménez; CALVIÑO, Beatriz Otero. Fundamentos de
ordenadores: programación en C. Universitat Politècnica de Catalunya.
Iniciativa Digital Politècnica, 2013.

M. Paz Sesmero Lorente ,Paula De Toledo Heras, F. Javier Ordoñez


Morales, Juan Gómez Romero, José A. Iglesias Martínez José Luis Mira
Peidro, Programación En Lenguaje C, Departamento de Informática,
Opencourseware Universidad Carlos III de Madrid, Octubre 2013

EPN-DEPARTAMENTO DE ELECTRÓNICA, TELECOMUNICACIONES Y REDES 24

También podría gustarte