Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CONTROL EN LENGUAJE C
Estructuras Condicionales en Lenguaje C
DEPARTAMENTO DE COMPUTACIÓN
Ing. Karina Esquivel
Unidad V: Estructuras de Control en Lenguaje C
5.1 INTRODUCCIÓN:
Las estructuras lógicas selectivas se encuentran en la solución algorítmica de casi todo tipo
de problemas. Estas estructuras se utilizan cuando se debe tomar una decisión en el
desarrollo de la solución de un problema. La toma de decisión se basa en la evaluación
de una o más condiciones que nos señalarán como consecuencia la rama a seguir.
Es frecuente que nos encontremos con situaciones en las que debemos tomar varias
decisiones. Cuando esto ocurre, decimos que se realizan en cascada. Es decir, se toma
una decisión, se señala el camino a seguir, nos encontramos con otra decisión, se marca
el siguiente camino, y así sucesivamente. En estos casos prácticamente debemos construir
un árbol de decisión para plantear la solución.
La estructura decisión lógica o selectiva está formada por una condición de tipo lógico
que puede ser simple o compuesta, de la que salen dos posibles caminos: un conjunto de
acciones o secuencias a ejecutar, si el resultado de la condición es verdadera; u otro
conjunto de acciones o secuencias a realizar, si el resultado de la condición es falsa. Se
puede dar el caso de que falte uno de los grupos de instrucciones, pero nunca los dos;
esto sería un camino nulo que implica no tomar ninguna acción.
La estructura selectiva if permite que el flujo del diagrama siga por un camino específico
si se cumple una condición determinada. Si al evaluar la condición el resultado es
verdadero, entonces se sigue por un camino específico —hacia abajo— y se ejecuta una
operación o acción o un conjunto de ellas. Por otra parte, si el resultado de la evaluación
es falso, entonces se pasa(n) por alto esa(s) operación(es). En ambos casos se continúa
con la secuencia normal del diagrama de flujo.
Unidad V: Estructuras de Control en Lenguaje C
EJERCICIOS RESUELTOS:
Ejemplo 01: Programa en C lee dos números enteros y comprueba que el primer número
ingresado es divisible por el segundo número.
Solución:
#include <stdio.h>
int main()
{
int n1, n2;
printf("Introduzca el Primer Numero: ");
scanf("%d", &n1);
printf("Introduzca el Segundo Numero: ");
scanf("%d", &n2);
if (n1 % n2== 0)
printf("\n\t%d es divisible por %d\n",n1,n2);
return 0;
}
Unidad V: Estructuras de Control en Lenguaje C
Ejemplo de Ejecución:
Ejemplo 02: Programa en C que, al recibir como dato el salario de una persona, incremente
en un 10% el mismo si es menor a C$15,000 e imprima el nuevo salario.
Solución:
#include <stdio.h>
int main()
{
float salario,nsal,incremento;
printf("Introduzca el Salario en Cordobas: ");
scanf("%f", &salario);
if (salario < 15000)
{
incremento=salario*0.10;
nsal=salario+incremento;
printf("El Nuevo Salario es: %.2f",nsal);
}
return 0;
}
Ejemplo de Ejecución:
Unidad V: Estructuras de Control en Lenguaje C
Ejemplo 03: Programa en C que lee un número entero positivo y verifica si dicho número
es positivo, negativo o nulo.
#include <stdio.h>
int main()
{
int numero;
printf("Numero?");
scanf("%d", &numero);
if (numero < 0)
printf("\n%d es NEGATIVO",numero);
if (numero > 0)
printf("\n%d es POSITIVO",numero);
if (numero == 0)
printf("\n%d es NULO",numero);
return 0;
}
Ejemplo de Ejecución:
EJERCICIOS PROPUESTOS:
La estructura selectiva doble if-else permite que el flujo del diagrama se bifurque por dos
ramas diferentes en el punto de la toma de decisión. Si al evaluar la condición el resultado
es verdadero, entonces se sigue por un camino específico -el de la izquierda- y se ejecuta
una acción determinada o un conjunto de ellas. Por otra parte, si el resultado de la
evaluación es falso, entonces se sigue por otro camino -el de la derecha- y se realiza(n)
otra(s) acción(es). En ambos casos, luego de ejecutar las acciones correspondientes, se
continúa con la secuencia normal del diagrama de flujo.
if (expresion)
{
Sentencia1;
Sentencia2;
...
SentenciaN;
}
else
{
Sentencia1;
Sentencia2;
...
SentenciaN;
}
EJERCICIOS RESUELTOS:
Ejemplo 04: Programa en C que lee un número entero positivo y verifica si dicho número
es par o impar.
Solución:
#include <stdio.h>
int main(int argc, char *argv[])
{
int numero;
printf("Ingrese un numero: ");
scanf("%d",&numero);
if (numero % 2 == 0)
printf("\nEl numero %d es par\n",numero);
else
printf("\nEl numero %d es impar\n",numero);
return 0;
}
Ejemplo de Ejecución:
Unidad V: Estructuras de Control en Lenguaje C
Ejemplo 05: Programa en C que lee dos números enteros e imprime el mayor de los dos
números leídos.
Solución:
#include <stdio.h>
int main(int argc, char *argv[])
{
int n1,n2;
printf("Numero 1: ");
scanf("%d",&n1);
printf("Numero 2: ");
scanf("%d",&n2);
if (n1 > n2)
printf("\nEntre %d y %d el Mayor es: %d\n",n1,n2,n1);
else
printf("\nEntre %d y %d el Mayor es: %d\n",n1,n2,n2);
return 0;
}
Ejemplo de Ejecución:
Ejemplo 06: Programa en C tal que dada la función f(x), calcula la función para un valor
dado de x y lo visualiza en pantalla.
Unidad V: Estructuras de Control en Lenguaje C
Solución:
#include <stdio.h>
#include <math.h>
int main(int argc, char *argv[])
{
float f,x;
printf("Valor X: ");
scanf("%f",&x);
if (x<=0)
f=pow(x,2)-x;
else
f=-pow(x,2)+3*x;
printf("\nf(%.1f) = %.3f",x,f);
return 0;
}
Ejemplo de Ejecución:
Ejemplo de Ejecución:
EJERCICIOS PROPUESTOS:
2. Calcular el número de pulsaciones que debe tener una persona por cada 10
segundos de ejercicio aeróbico; la fórmula que se aplica cuando el sexo es
femenino es: num_pulsaciones=(220-edad)/10 y si el sexo es masculino:
num_pulsaciones=(210-edad)/10.
if (expresion1)
Sentencia1;
else if (expresion2)
Sentencia2;
else if (expresión N)
Sentencia N;
else
Sentencia e;
EJERCICIOS RESUELTOS:
Ejemplo 07: Programa en C que permita determinar en qué estado está el agua en función
de su temperatura. Si la temperatura es negativa el estado será sólido, si es positiva y
menor que 100 será líquido y si es mayor que 100 será gaseoso. Pedir al usuario el valor de
la temperatura.
Solución:
#include <stdio.h>
int main(int argc, char *argv[])
{
int temperatura;
printf("Temperatura? ");
scanf("%d",&temperatura);
if (temperatura<0)
printf("Estado Solido");
else if (temperatura>0 && temperatura<=100)
printf("Estado Liquido");
else
printf("Estado Gaseoso");
return 0;
}
Unidad V: Estructuras de Control en Lenguaje C
Ejemplo de Ejecución:
Ejemplo 08: En una tienda departamental ofrecen descuentos a los clientes en la Navidad,
de acuerdo con el monto de su compra. El criterio para establecer el descuento se muestra
abajo. Construye un diagrama de flujo y el correspondiente pseudocódigo que, al recibir
como dato el monto de la compra del cliente, obtenga el precio real que debe pagar
luego de aplicar el descuento correspondiente.
Compra < $500 ⇒ Descuento 0%.
$500 > Compra < $1500 ⇒ Descuento 10%.
$1500 > Compra < $5000 ⇒ Descuento 15%.
$5000 > Compra ⇒ Descuento 20%.
Solución:
#include <stdio.h>
int main(int argc, char *argv[])
{
float compra, pagar;
printf("Valor de la compra del Cliente es de: ");
scanf("%g", &compra);
if (compra < 500)
pagar = compra;
else if (compra>=500 && compra <=1500)
pagar = compra - (compra * 0.10);
else if (compra>1500 && compra<=5000)
pagar = compra - (compra *0.15);
else
pagar = compra - (compra * 0.20);
printf("El cliente debe pagar la suma de: C$%.2f\n", pagar);
return 0;
}
Ejemplo de Ejecución:
Unidad V: Estructuras de Control en Lenguaje C
Solución:
#include<stdio.h>
#include <math.h>
int main(void)
{
float X;
int Y;
printf("Ingrese el valor de Y: ");
scanf("%d",&Y);
Ejemploifde Ejecución:
(Y>0 && Y<=10)
X=4/Y-Y;
else
if (Y>10 && Y<=25)
X=pow(Y,3)-12;
EJERCICIOS PROPUESTOS:
else
if (Y>25 && Y<=50)
X=pow(Y,2)+(pow(Y,3)-18);
else
X = 0;
printf("\nY = %d\tX = %.2f", Y, X);
return 0;
}
EJERCICIOS PROPUESTOS:
1. Realice un programa en C que, al recibir como datos de entrada tres valores enteros
diferentes entre sí, determine si los mismos están en orden creciente.
2. Realice un programa en C que, al recibir como datos las ventas de tres vendedores
de una librería, imprima las mismas en forma descendente.
Unidad V: Estructuras de Control en Lenguaje C
Selecciona entre varias alternativas dependiendo del valor de una variable. Comienza
con la palabra reservada switch seguida de una expresión entre paréntesis. Luego de esto
vienen las etiquetas de selección a través de la palabra reservada case, ésta palabra
debe tener como argumento obligatoriamente constantes enteras, por ejemplo, int, char,
enum, pero no float, o cadena.
En varios de los casos puede hacerse referencia a una misma acción, para ello se disponen
en secuencia y la última cláusula case es la que hará referencia a la secuencia de
instrucciones asociada.
switch (expresión)
{
case exp1:
sentencia 1;
sentencia 2;
break;
case exp2:
sentencia1;
sentencia2;
break;
case expN:
sentencia N;
break;
default:
sentencia D;
}
Unidad V: Estructuras de Control en Lenguaje C
Por último puede haber una instrucción etiquetada como default y representa el caso en
el que el valor de la expresión no coincida con ningún valor de las etiquetas utilizadas.
Ejemplo 10: Realice un programa en C que simule una calculadora, de tal forma que:
• Si el usuario introduce +, sume dos números.
• Si el usuario introduce -, reste dos números.
• Si el usuario introduce *, multiplique dos números.
• Si el usuario introduce /, divida dos números. Asegúrese que el segundo operando
no sea cero, ya que la división por cero no está permitida.
Unidad V: Estructuras de Control en Lenguaje C
Solución:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int num1, num2, resp;
char operacion;
printf("Esta es una calculadora...\n\n");
printf("Ingrese dos numeros: ");
scanf("%d %d",&num1,&num2);
printf("Operacion?");
fflush(stdin);
operacion = getchar();
switch(operacion)
{
case '+':
resp = num1 + num2;
break;
case '-':
resp = num1 - num2;
break;
case '*':
resp = num1 * num2;
break;
case '/':
if(num2 != 0)
resp = num1 / num2;
else
{
printf("Division por cero no valida\n");
exit(0);
}
break;
default:
puts("Operacion invalida");
}
printf("%d %c %d = %d \n\n",num1,operacion,num2,resp);
return 0;
}
Ejemplo de Ejecución:
Unidad V: Estructuras de Control en Lenguaje C
Ejemplo 11: Realice un programa en C, que al recibir como datos la categoría académica
de un profesor de la UNAN-León y su salario, incremente éste último siguiendo las
especificaciones de la tabla e imprima tanto el nivel del profesor como su nuevo salario.
Use variables de tipo enumerado para declarar las categorías docentes.
Nivel Incremento
Profesor adjunto 4.5 %
Profesor auxiliar 2.5 %
Profesor asistente 5.5 %
Profesor titular 3.7 %
Unidad V: Estructuras de Control en Lenguaje C
Solución:
#include<stdio.h>
#include<stdlib.h>
enum profesor
{
adjunto=1,
auxiliar,
asistente,
titular
};
int main(void)
{
enum profesor nivel;
float sal;
printf("Categorias de profesor universitario:\n");
printf("---------------------------------------\n");
printf("1. Profesor adjunto\n");
printf("2. Profesor auxiliar\n");
printf("3. Profesor asistente\n");
printf("4. Profesor titular\n");
printf("Ingrese el nivel academico del profesor: ");
scanf("%d",&nivel);
printf("Ingrese el salario: ");
scanf("%f",&sal);
switch(nivel)
{
case adjunto:
sal = sal * 1.045;
Ejemplo de Ejecución:
break;
case auxiliar:
sal = sal * 1.025;
break;
Ejemplo 12:case asistente:
sal = sal * 1.055;
break;
case titular:
sal = sal * 1.037;
break;
default:
printf("Categoria incorrecta\n");
exit(0);
}
printf("\n\nNivel:%d\tNuevo salario:%.2f\n",nivel,sal);
return 0;
}
Unidad V: Estructuras de Control en Lenguaje C
Ejemplo 12: Realice un programa en C tal que al recibir un dato entero que corresponde
al día de una semana muestre por pantalla el día de la semana al que corresponde. Nota:
Si el número de día introducido es menor que 1 ó mayor que 7, se mostrará el mensaje:
"ERROR: Día incorrecto.".
Solución:
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int dia;
printf("Introduzca el dia de la semana: ");
scanf("%d",&dia);
switch(dia)
{
case 1:
printf("El dia 1 es:Lunes");
break;
case 2:
printf("El dia 2 es:Martes");
break;
case 3:
printf("El dia 3 es:Miercoles");
break;
case 4:
printf("El dia 4 es:Jueves");
break;
case 5:
printf("El dia 5 es:Viernes");
break;
case 6:
printf("El dia 6 es:Sabado");
break;
case 7:
printf("El dia 7 es:Domingo");
break;
default:
printf("Dia Incorrecto\n");
exit(-1);
}
return 0;
}
Unidad V: Estructuras de Control en Lenguaje C
Ejemplo de Ejecución:
EJERCICIOS PROPUESTOS:
REFERENCIAS BIBLIOGRÁFICAS: