SlideShare uma empresa Scribd logo
1 de 6
Baixar para ler offline
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
5.1. Instrucción if-else
Objetivos
1. Entender el funcionamiento de la estructura condicional if-else.
En la mayoría de los programas en C que hemos encontrado hasta el momento, las
instrucciones se ejecutaban en el mismo orden en que aparecían en el programa. Cada
instrucción se ejecutaba una única vez. Los programas que se suelen escribir en la prác-
tica no son tan sencillos como éstos, ya que los que hemos visto no incluyen ningún tipo
de elementos de control lógico. En particular, en estos programas no aparecen compro-
baciones de condiciones que sean verdaderas o falsas ni aparece la ejecución repetida de
grupos individuales de instrucciones de forma selectiva. La mayoría de los programas de
interés práctico hacen uso intenso de estos elementos.
Por ejemplo, muchos programas requieren que se efectúe una comprobación lógica
en algún punto concreto de los mismos. A continuación se realizará alguna acción que
dependerá del resultado del test lógico. Esto se conoce como ejecución condicional. Exis-
te también una clase especial de ejecución condicional, llamada selección, en la que se
selecciona un grupo de instrucciones entre varios grupos disponibles.
Introducción
Antes de considerar con detalle las instrucciones de control de las que se dispone en C,
revisemos algunos conceptos presentados en los Capítulos anteriores que se deben utilizar
en conjunción con estas instrucciones. Comprender estos conceptos es fundamental para
lo que sigue.
Primero necesitaremos formar expresiones lógicas que serán verdaderas o falsas. Para
hacer esto podemos utilizar los cuatro operadores relacionales, <, <=, >, >=, y los dos
operadores de igualdad, == y ! =.
EJEMPLO 5.1 A continuación se muestran varias expresiones lógicas.
cont <= 100
sqrt(a+b+c) > 0.005
respuesta == O
balance >= maximo
car1 < 'T'
letra != 'x'
Las cuatro primeras expresiones involucran operandos numéricos. Su signicado debe
resultar fácilmente comprensible.
En la quinta expresión, car1 se supone que es una variable de tipo carácter. Esta
expresión será verdadera si el carácter representado por car1 se encuentra antes de la
T en el juego de caracteres, esto es, si el valor numérico que se utiliza para codicar el
carácter es menor que el valor numérico utilizado para codicar la letra T.
Pedro Ramírez pedroramirez22@gmail.com 1
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
La última expresión hace uso de la variable de tipo carácter letra. Esta expresión
será verdadera si el carácter representado por letra es algún otro que no sea x.
Además de los operadores relacionales y de igualdad, C posee dos conectivas lógicas
(también llamadas operadores lógicos),  (y) y || (o), y el operador unario de negación
!. Las conectivas lógicas se utilizan para combinar expresiones lógicas, formándose así
expresiones más complejas. El operador de negación se utiliza para invertir el valor de
una expresión lógica (por ejemplo, de verdadero a falso).
EJEMPLO 5.2 A continuación se muestran algunas expresiones lógicas que ilustran
la utilización de conectivas lógicas y del operador de negación.
(cont = 100)  (car1 != '*')
(balance  1000.0) || (estado == 'R')
(respuesta  0) || ((respuesta  5. O)  (respuesta = 10.0))
!((pagos = 1000.0)  (estado == 's'))
5.1.1. EJECUCIÓN CONDICIONAL: LA INSTRUCCIÓN if-else
La instrucción if-else se utiliza para realizar una comprobación lógica y a con-
tinuación llevar a cabo una de dos posibles acciones, dependiendo del resultado de la
comprobación (de que sea verdadera o falsa).
La parte else de la instrucción if-else es opcional. Por tanto, las instrucciones se
pueden escribir, en su forma general más simple,
if (expresión) instrucción
La expresión se debe encontrar entre paréntesis, como se ha indicado. De esta forma,
la instrucción se ejecutará sólo si la expresión tiene un valor no nulo (si expresión
es verdadera). Si la expresión tiene el valor cero (si expresión es falsa), entonces se
ignorará la instrucción.
La instrucción puede ser simple o compuesta. En la práctica suele ser una instruc-
ción compuesta que puede incluir otras instrucciones de control.
EJEMPLO 5.3 A continuación se muestran varias instrucciones if representativas.
if (x  0) printf (%f, x);
if (debito  0)
credito = 0;
if (x = 3.0) {
y = 3 * pow(x, 2);
Pedro Ramírez pedroramirez22@gmail.com 2
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
printf( %fn, y);
}
if ((balance  1000.) || (estado == 'R'))
printf ( %f, balance);
if ((a = 0)  (b = 5)) {
xmid = (a + b) / 2;
ymid = sqrt(xmid);
}
La primera instrucción hace que se imprima (visualice) el valor de la variable en
coma otante x si su valor es negativo. En la segunda instrucción, se asigna el valor cero
a credito si el valor de debito es mayor que cero. La tercera instrucción involucra una
instrucción compuesta en la que se evalúa y y a continuación se visualiza, si el valor de
x no excede de 3. En la cuarta instrucción tenemos una expresión lógica compleja, que
hace que el valor de balance se visualice si su valor es menor de 1000 o si estado tiene
asignado el valor R .
La última instrucción involucra una expresión lógica compleja y una instrucción com-
puesta. A las variables xmid e ymid se les asignarán, pues, valores apropiados sólo si el
valor actual de a es no negativo y el valor actual de b no excede de 5.
La forma general de una instrucción if que incluye la cláusula else es
if(expresión) instrucción 1 else instrucción 2
Si la expresión tiene un valor no nulo (si expresión es verdadera), entonces se
ejecutará instrucción 1. En otro caso (expresión es falsa), se ejecutará instrucción
2.
EJEMPLO 5.4 A continuación presentarnos varios ejemplos como muestra del uso de
la instrucción if-else completa.
if (estado == 'S')
tasa = 0.20 * pago;
else
tasa = 0.14 * pago;
if (debito  0) {
printf(cuenta nº %d está en números rojos, no_cuenta) ;
credito = 0;
}
else
Pedro Ramírez pedroramirez22@gmail.com 3
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
credito = 100.0;
if (x = 3)
y = 3 * pow(x, 2);
else
y = 2 * pow((x - 3), 2);
printf{%fn, balance);
if (circulo) {
scanf(%f, radio);
area = 3.14159 * radio * radio;
printf(Area del circulo = %f, area);
}
else {
scanf(%f %f, longitud, anchura);
area = longitud * anchura;
printf(Area del rectángulo = %f, area);
}
En el primer ejemplo el valor de tasa se determina de dos formas posibles, dependien-
do del carácter que se le haya asignado a la variable estado. Observe el punto y coma al
nal de cada instrucción,especialmente en la primera (tasa = 0.20 * pago;). Una forma
más concisa de hacer lo mismo es la siguiente:
tasa = (estado == 'S') ? (0.20 * pago) : (0.14*pago);
si bien este estilo no queda tan claro.
El segundo ejemplo examina el estado de débito de una cuenta. Si el valor de debito
es mayor que cero, se visualiza un mensaje y el límite de crédito se establece en cero; en
cualquier otro caso, el límite de crédito se establece en 1000,0. En el tercer ejemplo se
calcula el valor de y de dos formas distintas, dependiendo de si el valor de x es mayor o
no que 3.
El cuarto ejemplo muestra cómo se puede calcular un área de dos guras geométricas.
Si a circulo se le asigna un valor no nulo, se lee el radio del círculo, se calcula el área y
luego se visualiza. Pero si el valor de circulo es cero, entonces se leen la longitud y la
anchura de un rectángulo, se calcula el área y luego se visualiza. En cada caso, se rotula
el tipo de gura geométrica junto al valor del área correspondiente.
Es posible anidar (incluir) instrucciones if-else una dentro de otra. Estas anidacio-
nes pueden tomar formas diferentes. La forma más general de anidamiento doble es
if e1 if e2 s1
else s2
else if e3 s3
else s4
Pedro Ramírez pedroramirez22@gmail.com 4
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
en donde e1, e2 y e3 representan expresiones lógicas y s1, s2, s3 y s4 instrucciones. En
esta situación se ejecutará una instrucción if-else completa si e1 es no nula (verdadera),
y se ejecutará otra instrucción if-else si e1 es cero (falsa). Es posible, por supuesto,
que s1, s2, s3 y s4 contengan otras instrucciones if-else. Tendríamos en este caso un
anidamiento múltiple.
EJEMPLO 5.5 A continuación se muestra un ejemplo de tres instrucciones if-else
anidadas.
if ((hora = 0.)  (hora  12.))
printf(Buenos Días);
else if((hora = 12.)  (hora  18.))
printf(Buenas Tardes);
else if((hora = 18.)  (hora  24.))
else if printf(Buenas Noches);
else printf(Hora no válida);
Este ejemplo hace que se visualice un mensaje diferente a distintas horas del día. Con-
cretamente, se visualizará Buenos Días si hora tiene un valor entre 0 y 12; se visualizará
Buenas Tardes si hora tiene un valor entre 12 y 18; y se visualizará Buenas Noches si
hora tiene un valor entre 18 y 24. Si hora tiene un valor menor que cero, o mayor o igual
a 24, se visualizará un mensaje de error Hora no válida.
Cuestiones de Repaso
1. ¾Qué es ejecución condicional?
2. ¾Qué es selección?
3. Citar todas las reglas relacionadas con la utilización de los cuatro operadores re-
lacionales, los dos operadores de igualdad, las dos conectivas lógicas y el operador
unario de negación. ¾Qué tipos de operandos se utilizan con cada operador?
4. ¾Cómo se interpretan las variables y constantes de tipo carácter cuando se utilizan
como operandos de un operador relacional?
5. ¾Cuál es el propósito de la instrucción if-else?
6. Describir las dos formas diferentes de la instrucción if-else. ¾En qué se diferen-
cian?
7. Comparar el uso de la instrucción if-else con el del operador ? : . ¾De qué forma
se puede utilizar el operador ? : en lugar de una instrucción if-else?
8. Citar las reglas sintácticas asociadas con la instrucción if-else.
Pedro Ramírez pedroramirez22@gmail.com 5
CENTRO TECNOLÓGICO DE AVANZADA
AREA DE MECATRÓNICA
Código: M06 MICROCONTROLADORES I
Laboratorio: D-19
Duración: 2 Hs INSTRUCCIONES DE CONTROL
9. ¾Cómo se interpretan las instrucciones if-else anidadas? En particular, ¾cómo se
interpreta la siguiente?
if e1 if e2 s1
else s2
¾Qué expresión lógica se encuentra asociada a la cláusula else?
10. ¾Qué ocurre cuando se encuentra una expresión con valor no nulo dentro de un
grupo de instrucciones if-else anidadas?
Problemas
1. Explicar qué ocurre cuando se ejecuta la siguiente instrucción.
if(abs(x) xmin) x = (x 0) ? xmin : -xmin;
2. Escribir una estructura de control que examine el valor de una variable en coma
otante llamada temp y escriba uno de los siguientes mensajes dependiendo de su
valor:
a) HIELO, si el valor de temp es menor que 0.
b) AGUA, si el valor de temp se encuentra entre O y 100.
c) VAPOR, si el valor de temp es mayor que 100.
Pedro Ramírez pedroramirez22@gmail.com 6

Mais conteúdo relacionado

Mais procurados

Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacion
aryesisgomez
 
Estructuras de repetición en programacion
Estructuras de repetición en programacionEstructuras de repetición en programacion
Estructuras de repetición en programacion
SERCOMPFAST
 
Elementos básicos de c++
Elementos básicos de c++Elementos básicos de c++
Elementos básicos de c++
luiscristian
 
Lenguaje de programación c
Lenguaje de programación cLenguaje de programación c
Lenguaje de programación c
victdiazm
 
Estructuras de seleccion anidadas
Estructuras de seleccion anidadasEstructuras de seleccion anidadas
Estructuras de seleccion anidadas
UVM
 
Unidad Iv Algoritmos
Unidad Iv AlgoritmosUnidad Iv Algoritmos
Unidad Iv Algoritmos
marthaill10
 
TUTORIAL PARA REALIZAR UN PSEUDOCODIGO
TUTORIAL PARA REALIZAR UN PSEUDOCODIGOTUTORIAL PARA REALIZAR UN PSEUDOCODIGO
TUTORIAL PARA REALIZAR UN PSEUDOCODIGO
AlfaBVB98
 

Mais procurados (20)

Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacion
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++
 
Estructuras de repetición en programacion
Estructuras de repetición en programacionEstructuras de repetición en programacion
Estructuras de repetición en programacion
 
Elementos básicos de c++
Elementos básicos de c++Elementos básicos de c++
Elementos básicos de c++
 
Lenguaje c++
Lenguaje c++Lenguaje c++
Lenguaje c++
 
Lenguaje de programación c
Lenguaje de programación cLenguaje de programación c
Lenguaje de programación c
 
Estructuras de seleccion anidadas
Estructuras de seleccion anidadasEstructuras de seleccion anidadas
Estructuras de seleccion anidadas
 
Formas indeterminadas
Formas indeterminadasFormas indeterminadas
Formas indeterminadas
 
la instrucción if , Leer cadenas, caracteres
 la instrucción if , Leer cadenas, caracteres la instrucción if , Leer cadenas, caracteres
la instrucción if , Leer cadenas, caracteres
 
Formas indeterminadas
Formas indeterminadasFormas indeterminadas
Formas indeterminadas
 
Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantes
 
Unidad Iv Algoritmos
Unidad Iv AlgoritmosUnidad Iv Algoritmos
Unidad Iv Algoritmos
 
Formas indeterminadas
Formas indeterminadasFormas indeterminadas
Formas indeterminadas
 
Diapositivas
DiapositivasDiapositivas
Diapositivas
 
TUTORIAL PARA REALIZAR UN PSEUDOCODIGO
TUTORIAL PARA REALIZAR UN PSEUDOCODIGOTUTORIAL PARA REALIZAR UN PSEUDOCODIGO
TUTORIAL PARA REALIZAR UN PSEUDOCODIGO
 
Matematica forma indeterminada
Matematica forma indeterminadaMatematica forma indeterminada
Matematica forma indeterminada
 
Ultimo trabajo
Ultimo trabajoUltimo trabajo
Ultimo trabajo
 
Tema 2: Instrucciones estructuradas #IPG2MURJC
Tema 2: Instrucciones estructuradas #IPG2MURJCTema 2: Instrucciones estructuradas #IPG2MURJC
Tema 2: Instrucciones estructuradas #IPG2MURJC
 
Estructura Selectiva
Estructura Selectiva Estructura Selectiva
Estructura Selectiva
 
Trabajo derivadas daniel vizcaya
Trabajo derivadas daniel vizcayaTrabajo derivadas daniel vizcaya
Trabajo derivadas daniel vizcaya
 

Semelhante a 5.1 instruccion if-else

Sentencias condicionales y ciclos
Sentencias condicionales y ciclosSentencias condicionales y ciclos
Sentencias condicionales y ciclos
Sohar Carr
 
Estructura Condicional
Estructura CondicionalEstructura Condicional
Estructura Condicional
Regina Flores
 
ESTRUCTURA DE CONTROLYoselyn garcia trabajo
ESTRUCTURA DE CONTROLYoselyn garcia trabajoESTRUCTURA DE CONTROLYoselyn garcia trabajo
ESTRUCTURA DE CONTROLYoselyn garcia trabajo
DANNYOSE
 

Semelhante a 5.1 instruccion if-else (20)

Sentencias condicionales y ciclos
Sentencias condicionales y ciclosSentencias condicionales y ciclos
Sentencias condicionales y ciclos
 
Estructura Condicional
Estructura CondicionalEstructura Condicional
Estructura Condicional
 
Estructuras de control selectiva
Estructuras de control selectivaEstructuras de control selectiva
Estructuras de control selectiva
 
20.estructuras-control.pdf
20.estructuras-control.pdf20.estructuras-control.pdf
20.estructuras-control.pdf
 
Lenguaje c
Lenguaje cLenguaje c
Lenguaje c
 
Manual
ManualManual
Manual
 
Función SI - Alumno: Julio Salazar
Función SI - Alumno: Julio SalazarFunción SI - Alumno: Julio Salazar
Función SI - Alumno: Julio Salazar
 
If
IfIf
If
 
Funciones excel
Funciones excelFunciones excel
Funciones excel
 
Salto condicional
Salto condicionalSalto condicional
Salto condicional
 
Estructuras condicionales
Estructuras condicionalesEstructuras condicionales
Estructuras condicionales
 
ESTRUCTURA DE CONTROLYoselyn garcia trabajo
ESTRUCTURA DE CONTROLYoselyn garcia trabajoESTRUCTURA DE CONTROLYoselyn garcia trabajo
ESTRUCTURA DE CONTROLYoselyn garcia trabajo
 
Factorial en C++
Factorial en C++Factorial en C++
Factorial en C++
 
Guia 4
Guia 4Guia 4
Guia 4
 
Las funciones 1
Las funciones 1Las funciones 1
Las funciones 1
 
Las funciones 1
Las funciones 1Las funciones 1
Las funciones 1
 
Las funciones 1
Las funciones 1Las funciones 1
Las funciones 1
 
Las funciones 1
Las funciones 1Las funciones 1
Las funciones 1
 
Estructuras de control de flujo
Estructuras de control de flujoEstructuras de control de flujo
Estructuras de control de flujo
 
Taller algoritmos2
Taller algoritmos2Taller algoritmos2
Taller algoritmos2
 

Mais de SNPP (20)

RR00X_RESUMEN.pdf
RR00X_RESUMEN.pdfRR00X_RESUMEN.pdf
RR00X_RESUMEN.pdf
 
RR_TAYI.pdf
RR_TAYI.pdfRR_TAYI.pdf
RR_TAYI.pdf
 
1. panel de le ds
1. panel de le ds1. panel de le ds
1. panel de le ds
 
7. incubadora de huevos
7. incubadora de huevos7. incubadora de huevos
7. incubadora de huevos
 
6. visualizacion remota de consumo de agua en tiempo real
6. visualizacion remota de consumo de agua en tiempo real6. visualizacion remota de consumo de agua en tiempo real
6. visualizacion remota de consumo de agua en tiempo real
 
5. alimentador de animales domesticos smart feeder
5. alimentador de animales domesticos smart feeder5. alimentador de animales domesticos smart feeder
5. alimentador de animales domesticos smart feeder
 
3. radar medidor de velocidad
3. radar medidor de velocidad3. radar medidor de velocidad
3. radar medidor de velocidad
 
2. soft starter monofasico
2. soft starter monofasico2. soft starter monofasico
2. soft starter monofasico
 
Operadores y expresiones
Operadores y expresionesOperadores y expresiones
Operadores y expresiones
 
6.2 cadenas de caracteres
6.2 cadenas de caracteres6.2 cadenas de caracteres
6.2 cadenas de caracteres
 
6.1 vectores
6.1 vectores6.1 vectores
6.1 vectores
 
5.5 instruccion for
5.5 instruccion for5.5 instruccion for
5.5 instruccion for
 
5.4 instruccion do-while
5.4 instruccion do-while5.4 instruccion do-while
5.4 instruccion do-while
 
5.3 instruccion while
5.3 instruccion while5.3 instruccion while
5.3 instruccion while
 
5.2 instruccion switch
5.2  instruccion switch5.2  instruccion switch
5.2 instruccion switch
 
4. entrada y salida de datos
4. entrada y salida de datos4. entrada y salida de datos
4. entrada y salida de datos
 
3.6 funciones de biblioteca
3.6 funciones de biblioteca3.6 funciones de biblioteca
3.6 funciones de biblioteca
 
3.5 operador condicional
3.5 operador condicional3.5 operador condicional
3.5 operador condicional
 
2.10 entrada y salida
2.10 entrada y salida2.10 entrada y salida
2.10 entrada y salida
 
2.9 variables
2.9 variables2.9 variables
2.9 variables
 

Último

SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALSESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
EdwinC23
 

Último (20)

ingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptxingenieria grafica para la carrera de ingeniera .pptx
ingenieria grafica para la carrera de ingeniera .pptx
 
3er Informe Laboratorio Quimica General (2) (1).pdf
3er Informe Laboratorio Quimica General  (2) (1).pdf3er Informe Laboratorio Quimica General  (2) (1).pdf
3er Informe Laboratorio Quimica General (2) (1).pdf
 
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALESCAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
CAPACITACIÓN EN AGUA Y SANEAMIENTO EN ZONAS RURALES
 
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
metodos de fitomejoramiento en la aolicacion de plantas
metodos de fitomejoramiento en la aolicacion de plantasmetodos de fitomejoramiento en la aolicacion de plantas
metodos de fitomejoramiento en la aolicacion de plantas
 
Video sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptxVideo sustentación GA2- 240201528-AA3-EV01.pptx
Video sustentación GA2- 240201528-AA3-EV01.pptx
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
Instrumentacion para el control de procesos.pdf
Instrumentacion para el control de procesos.pdfInstrumentacion para el control de procesos.pdf
Instrumentacion para el control de procesos.pdf
 
TECNOLOGIA DE CONCRETO 2024 estudiante.pdf
TECNOLOGIA DE CONCRETO 2024 estudiante.pdfTECNOLOGIA DE CONCRETO 2024 estudiante.pdf
TECNOLOGIA DE CONCRETO 2024 estudiante.pdf
 
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdfNTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
NTC 3883 análisis sensorial. metodología. prueba duo-trio.pdf
 
Balance materia y energia procesos de Secado
Balance materia y energia procesos de SecadoBalance materia y energia procesos de Secado
Balance materia y energia procesos de Secado
 
Análisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECOAnálisis de Costos y Presupuestos CAPECO
Análisis de Costos y Presupuestos CAPECO
 
Mantenimiento-de-Transformadores-Monofasicos[1].pptx
Mantenimiento-de-Transformadores-Monofasicos[1].pptxMantenimiento-de-Transformadores-Monofasicos[1].pptx
Mantenimiento-de-Transformadores-Monofasicos[1].pptx
 
Mecatronica Automotriz .pdf
Mecatronica Automotriz              .pdfMecatronica Automotriz              .pdf
Mecatronica Automotriz .pdf
 
ARMADURAS METODO NODOS.pptx......................
ARMADURAS METODO NODOS.pptx......................ARMADURAS METODO NODOS.pptx......................
ARMADURAS METODO NODOS.pptx......................
 
1. Equipos Primarios de una Subestaciones electricas
1. Equipos Primarios de una Subestaciones electricas1. Equipos Primarios de una Subestaciones electricas
1. Equipos Primarios de una Subestaciones electricas
 
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdfGUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
GUIA DE SEGURIDAD PARA VENTILACION DE MINAS-POSITIVA.pdf
 
Auditoría de Sistemas de Gestión
Auditoría    de   Sistemas     de GestiónAuditoría    de   Sistemas     de Gestión
Auditoría de Sistemas de Gestión
 
Trabajos Preliminares en Obras de Construcción..pdf
Trabajos Preliminares en Obras de Construcción..pdfTrabajos Preliminares en Obras de Construcción..pdf
Trabajos Preliminares en Obras de Construcción..pdf
 
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONALSESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
SESION 11 SUPERVISOR SSOMA SEGURIDAD Y SALUD OCUPACIONAL
 

5.1 instruccion if-else

  • 1. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL 5.1. Instrucción if-else Objetivos 1. Entender el funcionamiento de la estructura condicional if-else. En la mayoría de los programas en C que hemos encontrado hasta el momento, las instrucciones se ejecutaban en el mismo orden en que aparecían en el programa. Cada instrucción se ejecutaba una única vez. Los programas que se suelen escribir en la prác- tica no son tan sencillos como éstos, ya que los que hemos visto no incluyen ningún tipo de elementos de control lógico. En particular, en estos programas no aparecen compro- baciones de condiciones que sean verdaderas o falsas ni aparece la ejecución repetida de grupos individuales de instrucciones de forma selectiva. La mayoría de los programas de interés práctico hacen uso intenso de estos elementos. Por ejemplo, muchos programas requieren que se efectúe una comprobación lógica en algún punto concreto de los mismos. A continuación se realizará alguna acción que dependerá del resultado del test lógico. Esto se conoce como ejecución condicional. Exis- te también una clase especial de ejecución condicional, llamada selección, en la que se selecciona un grupo de instrucciones entre varios grupos disponibles. Introducción Antes de considerar con detalle las instrucciones de control de las que se dispone en C, revisemos algunos conceptos presentados en los Capítulos anteriores que se deben utilizar en conjunción con estas instrucciones. Comprender estos conceptos es fundamental para lo que sigue. Primero necesitaremos formar expresiones lógicas que serán verdaderas o falsas. Para hacer esto podemos utilizar los cuatro operadores relacionales, <, <=, >, >=, y los dos operadores de igualdad, == y ! =. EJEMPLO 5.1 A continuación se muestran varias expresiones lógicas. cont <= 100 sqrt(a+b+c) > 0.005 respuesta == O balance >= maximo car1 < 'T' letra != 'x' Las cuatro primeras expresiones involucran operandos numéricos. Su signicado debe resultar fácilmente comprensible. En la quinta expresión, car1 se supone que es una variable de tipo carácter. Esta expresión será verdadera si el carácter representado por car1 se encuentra antes de la T en el juego de caracteres, esto es, si el valor numérico que se utiliza para codicar el carácter es menor que el valor numérico utilizado para codicar la letra T. Pedro Ramírez pedroramirez22@gmail.com 1
  • 2. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL La última expresión hace uso de la variable de tipo carácter letra. Esta expresión será verdadera si el carácter representado por letra es algún otro que no sea x. Además de los operadores relacionales y de igualdad, C posee dos conectivas lógicas (también llamadas operadores lógicos), (y) y || (o), y el operador unario de negación !. Las conectivas lógicas se utilizan para combinar expresiones lógicas, formándose así expresiones más complejas. El operador de negación se utiliza para invertir el valor de una expresión lógica (por ejemplo, de verdadero a falso). EJEMPLO 5.2 A continuación se muestran algunas expresiones lógicas que ilustran la utilización de conectivas lógicas y del operador de negación. (cont = 100) (car1 != '*') (balance 1000.0) || (estado == 'R') (respuesta 0) || ((respuesta 5. O) (respuesta = 10.0)) !((pagos = 1000.0) (estado == 's')) 5.1.1. EJECUCIÓN CONDICIONAL: LA INSTRUCCIÓN if-else La instrucción if-else se utiliza para realizar una comprobación lógica y a con- tinuación llevar a cabo una de dos posibles acciones, dependiendo del resultado de la comprobación (de que sea verdadera o falsa). La parte else de la instrucción if-else es opcional. Por tanto, las instrucciones se pueden escribir, en su forma general más simple, if (expresión) instrucción La expresión se debe encontrar entre paréntesis, como se ha indicado. De esta forma, la instrucción se ejecutará sólo si la expresión tiene un valor no nulo (si expresión es verdadera). Si la expresión tiene el valor cero (si expresión es falsa), entonces se ignorará la instrucción. La instrucción puede ser simple o compuesta. En la práctica suele ser una instruc- ción compuesta que puede incluir otras instrucciones de control. EJEMPLO 5.3 A continuación se muestran varias instrucciones if representativas. if (x 0) printf (%f, x); if (debito 0) credito = 0; if (x = 3.0) { y = 3 * pow(x, 2); Pedro Ramírez pedroramirez22@gmail.com 2
  • 3. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL printf( %fn, y); } if ((balance 1000.) || (estado == 'R')) printf ( %f, balance); if ((a = 0) (b = 5)) { xmid = (a + b) / 2; ymid = sqrt(xmid); } La primera instrucción hace que se imprima (visualice) el valor de la variable en coma otante x si su valor es negativo. En la segunda instrucción, se asigna el valor cero a credito si el valor de debito es mayor que cero. La tercera instrucción involucra una instrucción compuesta en la que se evalúa y y a continuación se visualiza, si el valor de x no excede de 3. En la cuarta instrucción tenemos una expresión lógica compleja, que hace que el valor de balance se visualice si su valor es menor de 1000 o si estado tiene asignado el valor R . La última instrucción involucra una expresión lógica compleja y una instrucción com- puesta. A las variables xmid e ymid se les asignarán, pues, valores apropiados sólo si el valor actual de a es no negativo y el valor actual de b no excede de 5. La forma general de una instrucción if que incluye la cláusula else es if(expresión) instrucción 1 else instrucción 2 Si la expresión tiene un valor no nulo (si expresión es verdadera), entonces se ejecutará instrucción 1. En otro caso (expresión es falsa), se ejecutará instrucción 2. EJEMPLO 5.4 A continuación presentarnos varios ejemplos como muestra del uso de la instrucción if-else completa. if (estado == 'S') tasa = 0.20 * pago; else tasa = 0.14 * pago; if (debito 0) { printf(cuenta nº %d está en números rojos, no_cuenta) ; credito = 0; } else Pedro Ramírez pedroramirez22@gmail.com 3
  • 4. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL credito = 100.0; if (x = 3) y = 3 * pow(x, 2); else y = 2 * pow((x - 3), 2); printf{%fn, balance); if (circulo) { scanf(%f, radio); area = 3.14159 * radio * radio; printf(Area del circulo = %f, area); } else { scanf(%f %f, longitud, anchura); area = longitud * anchura; printf(Area del rectángulo = %f, area); } En el primer ejemplo el valor de tasa se determina de dos formas posibles, dependien- do del carácter que se le haya asignado a la variable estado. Observe el punto y coma al nal de cada instrucción,especialmente en la primera (tasa = 0.20 * pago;). Una forma más concisa de hacer lo mismo es la siguiente: tasa = (estado == 'S') ? (0.20 * pago) : (0.14*pago); si bien este estilo no queda tan claro. El segundo ejemplo examina el estado de débito de una cuenta. Si el valor de debito es mayor que cero, se visualiza un mensaje y el límite de crédito se establece en cero; en cualquier otro caso, el límite de crédito se establece en 1000,0. En el tercer ejemplo se calcula el valor de y de dos formas distintas, dependiendo de si el valor de x es mayor o no que 3. El cuarto ejemplo muestra cómo se puede calcular un área de dos guras geométricas. Si a circulo se le asigna un valor no nulo, se lee el radio del círculo, se calcula el área y luego se visualiza. Pero si el valor de circulo es cero, entonces se leen la longitud y la anchura de un rectángulo, se calcula el área y luego se visualiza. En cada caso, se rotula el tipo de gura geométrica junto al valor del área correspondiente. Es posible anidar (incluir) instrucciones if-else una dentro de otra. Estas anidacio- nes pueden tomar formas diferentes. La forma más general de anidamiento doble es if e1 if e2 s1 else s2 else if e3 s3 else s4 Pedro Ramírez pedroramirez22@gmail.com 4
  • 5. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL en donde e1, e2 y e3 representan expresiones lógicas y s1, s2, s3 y s4 instrucciones. En esta situación se ejecutará una instrucción if-else completa si e1 es no nula (verdadera), y se ejecutará otra instrucción if-else si e1 es cero (falsa). Es posible, por supuesto, que s1, s2, s3 y s4 contengan otras instrucciones if-else. Tendríamos en este caso un anidamiento múltiple. EJEMPLO 5.5 A continuación se muestra un ejemplo de tres instrucciones if-else anidadas. if ((hora = 0.) (hora 12.)) printf(Buenos Días); else if((hora = 12.) (hora 18.)) printf(Buenas Tardes); else if((hora = 18.) (hora 24.)) else if printf(Buenas Noches); else printf(Hora no válida); Este ejemplo hace que se visualice un mensaje diferente a distintas horas del día. Con- cretamente, se visualizará Buenos Días si hora tiene un valor entre 0 y 12; se visualizará Buenas Tardes si hora tiene un valor entre 12 y 18; y se visualizará Buenas Noches si hora tiene un valor entre 18 y 24. Si hora tiene un valor menor que cero, o mayor o igual a 24, se visualizará un mensaje de error Hora no válida. Cuestiones de Repaso 1. ¾Qué es ejecución condicional? 2. ¾Qué es selección? 3. Citar todas las reglas relacionadas con la utilización de los cuatro operadores re- lacionales, los dos operadores de igualdad, las dos conectivas lógicas y el operador unario de negación. ¾Qué tipos de operandos se utilizan con cada operador? 4. ¾Cómo se interpretan las variables y constantes de tipo carácter cuando se utilizan como operandos de un operador relacional? 5. ¾Cuál es el propósito de la instrucción if-else? 6. Describir las dos formas diferentes de la instrucción if-else. ¾En qué se diferen- cian? 7. Comparar el uso de la instrucción if-else con el del operador ? : . ¾De qué forma se puede utilizar el operador ? : en lugar de una instrucción if-else? 8. Citar las reglas sintácticas asociadas con la instrucción if-else. Pedro Ramírez pedroramirez22@gmail.com 5
  • 6. CENTRO TECNOLÓGICO DE AVANZADA AREA DE MECATRÓNICA Código: M06 MICROCONTROLADORES I Laboratorio: D-19 Duración: 2 Hs INSTRUCCIONES DE CONTROL 9. ¾Cómo se interpretan las instrucciones if-else anidadas? En particular, ¾cómo se interpreta la siguiente? if e1 if e2 s1 else s2 ¾Qué expresión lógica se encuentra asociada a la cláusula else? 10. ¾Qué ocurre cuando se encuentra una expresión con valor no nulo dentro de un grupo de instrucciones if-else anidadas? Problemas 1. Explicar qué ocurre cuando se ejecuta la siguiente instrucción. if(abs(x) xmin) x = (x 0) ? xmin : -xmin; 2. Escribir una estructura de control que examine el valor de una variable en coma otante llamada temp y escriba uno de los siguientes mensajes dependiendo de su valor: a) HIELO, si el valor de temp es menor que 0. b) AGUA, si el valor de temp se encuentra entre O y 100. c) VAPOR, si el valor de temp es mayor que 100. Pedro Ramírez pedroramirez22@gmail.com 6