SENTENCIAS DE CONTROL (SENTENCIAS if Y switch)



Documentos relacionados
Simples: Las estructuras condicionales simples se les conoce como Tomas de decisión. Estas tomas de decisión tienen la siguiente forma:

SENTENCIAS DE CONTROL (SENTENCIA switch)

SENTENCIAS DE CONTROL SENTENCIA if

Ejercicios Tema 3. Estructuras de Selección

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

SENTENCIAS DE CONTROL (SENTENCIAS if Y switch)

Programación. Ejercicios Tema 4 Estructuras de Control Repetitivas

Tema 5 Sentencias de control de flujo. Fundamentos de Informática

Hoja de problemas Estructuras de Control

EJERCICIOS DE PROGRAMACIÓN RELACIÓN VII (EJERCICIOS DE REPASO)

CAPITULO 6 ANUALIDADES ANTICIPADAS OBJETIVO

Problemas Condicionales

UNIVERSIDAD DON BOSCO FACULTAD DE ESTUDIOS TECNOLÓGICOS ESCUELA DE COMPUTACION

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS


MANUAL DE AYUDA MODULO TALLAS Y COLORES

3) Una tienda ofrece un descuento del 15% sobre el total de la compra y un cliente desea saber cuánto deberá pagar finalmente por su compra.

Práctica 4: Estructuras selectivas

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

Tecnologías en la Educación Matemática. Expresiones. Datos. Expresiones Aritméticas. Expresiones Aritméticas 19/08/2014

GUÍA DE LABORATORIO #3 ESTRUCTURAS ALGORÍTMICAS CONDICIONALES SIMPLES, DOBLES Y MÚLTIPLES

LABORATORIO 1 OPERACIONES DE ENTRADA Y SALIDA

ETS Caminos Santander. Curso Ejercicios de introducción a la programación.

UNIVERSIDAD DEL CAUCA PROGRAMACION ESTRUCTURADA

COMUNICADO Nro /11/2010. Ref.: Tarjetas de crédito. Tasas y costos promedio de las tarjetas de crédito a agosto de Tarjetas de Crédito

Sentencia de control if

Informática I. While & do While

UNIVERSIDAD DE ATACAMA

Guías _SGO. Gestione administradores, usuarios y grupos de su empresa. Sistema de Gestión Online

JORGE LUIS GONZÁLEZ ESCOBAR

Preliminares. Tipos de variables y Expresiones

CAPITULO V. SIMULACION DEL SISTEMA 5.1 DISEÑO DEL MODELO

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores


Tema 4: Problemas aritméticos.

OBJETIVOS. Explicar el manejo de archivos de texto. Explicar el manejo de archivos binarios. Desarrollar programas que usen archivos.

Técnicas de prueba 1. FUNDAMENTOS DE LA PRUEBA DEL SOFTWARE

Introducción a la Computación TFA

INSTITUTO DE EDUCACIÓN SUPERIOR TECNOLÓGICO PÚBLICO

APLICACION PRÁCTICA DE RAZONES Y PROPORCIONES PORCENTAJES Y SUS USOS XXIV

Excel Funciones financieras

GUÍA DE TRABAJO Tecnología en Sistemas de Información

AUTOR CARLOS EDUARDO BUENO VERGARA JORGE ARMANDO BUENO VERGARA USO DE LOS OBJETOS DEL PROGRAMA. Dfd INFORMÁTICA II PROFESOR. JOSÉ FRANCISCO AMADOR

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE HIDALGO

EJEMPLO PRÁCTICO DE CÁLCULO DEL VALOR DE VIDA DEL CLIENTE (VVC) O LIFE TIME VALUE (LTV)

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

FICHERO MUESTRA Pág. 1

Introducción al tipo de dato ARRAY

❷ Aritmética Binaria Entera

1. HABILIDAD MATEMÁTICA

Estructuras de Control en C

ACTIVIDADES DE RECUPERACIÓN MATEMÁTICAS 1º ESO

Tema 4: De esa comparación se pueden determinar las causas de posibles diferencias y efectuar las correcciones cuando correspondan.

Ejemplos de conversión de reales a enteros

EJERCICIOS SOBRE ANUALIDADES

PARTE 3 ECUACIONES DE EQUIVALENCIA FINANCIERA T E M A S

Tema 3. Medidas de tendencia central Introducción. Contenido

MANUAL DE USUARIO DE LA HERAMIENTA CONFIGURACION DE PRESUPUESTOS PARA DISTRIBUIDORES

Guía para el instructor

Diseño Estructurado de Algoritmos

Tema 7: Programación con Matlab

Para dudas, comentarios escribe a: C BASICO

1) Tacha los números que no sean naturales:

Interés Simple y Compuesto

1. DML. Las subconsultas

SECRETARÍA DE FINANZAS DEL DISTRITO FEDERAL P05 PANEL DE CONTROL DEL PROGRAMA HONORARIOS

Capítulo 4 Procesos con estructuras de repetición

Prof. Dr. Paul Bustamante

Ecuaciones de primer grado con dos incógnitas

Tema 4: Estructuras de Control Estructura y Contenidos

UNIDAD DIDÁCTICA 4 (FUNCIONES CONDICIONALES Y DE BÚSQUEDA)

ANALISIS DE DATOS CON EXCEL

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

CANTABRIA / JUNIO 04. LOGSE / MATEMÁTICAS APLICADAS A LAS CIENCIAS SOCIALES / ÁLGEBRA / BLOQUE 1 / OPCIÓN A

PRIMEROS PASOS PARA CREAR SU TIENDA ON LINE

Centro de Capacitación en Informática

Clases y Objetos. Informática II Ingeniería Electrónica

UNIVERSIDADES DE ANDALUCÍA PRUEBA DE ACCESO A LA UNIVERSIDAD OPCIÓN A

Tipo de interés nominal (TIN)

Lenguaje C. Tipos de Datos Simples y Estructuras de Control

Examen Principios de Programación Febrero 2012

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Valor del Dinero en el Tiempo Uno de los principios más importantes en todas las finanzas.

PARTE 2- Matemáticas pendientes de 3º ESO Indica, para cada representación gráfica, que tipo de sistema de ecuaciones es el representado:

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

Sistemas de ecuaciones de primer grado con dos incógnitas

Divisibilidad y números primos

A25. Informática aplicada a la gestión Curso 2005/2006 Excel Tema 7. Funciones avanzadas de Excel II

Fórmulas y enfoques utilizados para calcular el Tasa Efectiva de Interés (TEI) o Costo Anual Total (CAT)

PROBABILIDADES Y ESTADÍSTICA (C) Práctica 2

Funciones, x, y, gráficos

PHP y MySQL. Indice: Switch Bucles For While do...while

Vectores. 27/05/05 Programación Digital I 1

PRACTICA 6. VECTORES Y MATRICES.

manual rápido SOLUCION TPV ESPECIAL TIENDAS ALIMENTACIÓN

GUÍA CONTROL1 IN56A. Suponga además que el día de hoy, 20 de agosto de 2007, los precios de los instrumentos 1, 2 y 3 son los siguientes:

VI Olimpiada de Informática del estado de Guanajuato Solución Examen Teórico

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Transcripción:

2010 UNAN LEON FACULTAD DE CIENCIA Y TECNOLOGIA Departamento de Computación Autor: Asignatura: Programación Estructurada SENTENCIAS DE CONTROL (SENTENCIAS if Y switch) Este documento es una extracción del libro Programación en C, metodología, estructura de datos y objetos, de Luis Joyanes Aguilar e Ignacio Zahonero Martínez. Fue recopilado por la y completado con ejercicios obtenidos de otros textos e Internet.

ESTRUCTURAS DE CONTROL Las estructuras de control controlan el flujo de ejecución de un programa o función. Las estructuras de control permiten combinar instrucciones o sentencias individuales en una simple unidad lógica con un punto de entrada y un punto de salida. Las instrucciones o sentencias se organizan en tres tipos de estructuras de control que sirven para controlar el flujo de la ejecución: secuencia, selección y repetición. Hasta este momento sólo se ha utilizado el flujo secuencial. Una sentencia compuesta es un conjunto de sentencias encerradas entre llaves ( y ) que se utiliza para especificar un flujo secuencial. sentencia1; sentencia2;... sentencian; El control fluye de la sentencia1, a la sentencia2, y así sucesivamente. Sin embargo existen problemas que requieren etapas con dos o más opciones o alternativas a elegir en función del valor de una condición o expresión. 2

LA SENTENCIA if En C, la estructura de control de selección es una sentencia if. La sentencia if tiene dos alternativas o formatos posibles. El formato más sencillo tiene la sintaxis siguiente: if(condición) sentencia; condición es una expresión entera lógica sentencia es cualquier sentencia ejecutable, que se ejecutará sólo si la condición toma un valor distinto de cero. La sentencia if funciona de la siguiente manera: Cuando se llega a la sentencia if dentro de un programa, se evalúa la condición entre paréntesis que viene a continuación de if. Si condición es verdadera, se ejecuta sentencia; en caso contrario no se ejecuta sentencia. En cualquier caso la ejecución del programa continúa con la siguiente sentencia del programa. condición falsa sentencia verdadera Diagrama de flujo de una sentencia básica if 3

Ejemplo #1: Un hombre desea saber cuánto dinero se genera por concepto de intereses sobre la cantidad que tiene en inversión en el banco. El decidirá reinvertir los intereses siempre y cuando estos excedan a $7000, y en ese caso desea saber cuánto dinero tendrá finalmente en su cuenta. //if1.c float p_int, cap, interes, capf; void main(void) printf("introduzca su capital inicial: "); scanf("%g", &cap); printf("cual es el porcentaje de interes?: "); scanf("%g", &p_int); interes = cap * p_int; if(interes > 7000) capf = cap + interes; printf("el capital final es: %.2f\n",capf); Ejecución: 4

Ejemplo #2: Construya un programa tal, que dados como datos los valores enteros P y Q, determine si los mismos satisfacen la siguiente expresión: P 3 + Q 4 2P 2 < 680 En caso afirmativo debe imprimir los valores de P y Q. //expresion.c #include <math.h> int p,q,r; void main(void) printf("introduzca dos enteros:"); scanf("%d %d",&p,&q); r = pow(p,3) + pow(q,4) 2 * pow(p,2); if(r < 680) printf("p = %d, q = %d, r = %d\n",p,q,r); Ejemplo #3: El número de sonidos emitidos por un grillo en un minuto, es una función de la temperatura. Como resultado de esto, es posible determinar el nivel de la temperatura haciendo uso de un grillito como termómetro. La fórmula para la función es: t = n/4 + 40 Escriba un programa que le permita calcular la temperatura, teniendo en cuenta el número de sonidos emitidos por el grillo. 5

//grilloif.c float t; int n; void main(void) printf("introduzca el número de sonidos emitidos por el grillo:\n"); scanf("%d",&n); if(n > 0) t = n/4.0 + 40; printf("la temperatura es:%.2f\n",t); Ejemplo #4: La tangente de un ángulo se define como el cociente entre el seno y el coseno de dicho ángulo. tan(α) = sen(α) cos(α) Construya un programa, que permita calcular la tangente de un ángulo, considerando que se conoce el valor del seno y del coseno del mismo. //tang.c float seno,coseno,tang; void main(void ) printf("seno= "); scanf("%f",&seno); printf("coseno= "); scanf("%f",&coseno); if(coseno!= 0) tang=seno/coseno; printf("el valor de la tangente es: %.4f",tang); 6

Ejercicios propuestos 1. En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000 Cuál será la cantidad que pagará una persona por su compra? 2. Realice un programa que lea dos números enteros y compruebe cuál es el valor del resto de la división (n % d). Si el resto es cero, n es divisible por d (en nuestro caso 36 es divisible por 4, ya que 36 / 4 = 9 y el resto es 0) 3. Escriba un programa que compare un número introducido por el usuario y compruebe si el número es positivo, negativo o nulo. SENTENCIA if DE DOS ALTERNATIVAS: if Un segundo formato de la sentencia if es la sentencia if-. Este formato de la sentencia if tiene la siguiente sintaxis: if(condición) sentencia1 sentencia2 condición Expresión lógica que determina la acción a ejecutar. sentencia1 Acción que realiza si la condición lógica es verdadera. sentencia2 Acción que se ejecuta si la expresión lógica es falsa. En este formato sentencia1 y sentencia2 son individualmente, o bien una única sentencia que termina con punto y coma(;) o un grupo de sentencias encerrado entre llaves. Se evalúa la condición. Si condición es verdadera, se ejecuta sentencia1 y en caso contrario se ejecuta sentencia2. 7

c o n d ic ió n v e r d a d e r a fa ls a s e n te n c ia 1 s e n te n c ia 2 Diagrama de flujo de la representación de una sentencia if- Ejemplo #1: Calcule el total a pagar por la compra de camisas. Si se compran tres camisas o más se aplica un descuento del 20% sobre el total de la compra y si son menos de tres camisas un descuento del 10%. //descuento.c int numcamisas; float prec, totcomp,totpag; void main(void) printf("cuantas camisas comprara?"); scanf("%d",&numcamisas); printf("ingrese el precio:"); scanf("%f",&prec); totcomp = numcamisas * prec; if(numcamisas >= 3) totpag = totcomp - totcomp * 0.20; totpag = totcomp - totcomp * 0.10; 8

printf("total a pagar = %.2f \n",totpag); Ejemplo #2: En un supermercado se hace una promoción, mediante la cual el cliente obtiene un descuento dependiendo de un número que se escoge al azar. Si el número escogido es menor que 74 el descuento es del 15% sobre el total de la compra, si es mayor o igual a 74 el descuento es del 20%. Obtener cuánto dinero se le descuenta. //descuento2.c int numero; float totcomp, descuento; void main(void) printf("escoja un numero:"); scanf("%d",&numero); printf("ingrese el total de la compra:"); scanf("%f",&totcomp); if(numero < 74) descuento = totcomp * 0.15; descuento = totcomp * 0.20; printf("descuento = %.2f \n",descuento); 9

Ejemplo #3: 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: numpulsaciones = (220 - edad)/10 y si el sexo es masculino: numpulsaciones = (210 - edad)/10 //pulsaciones.c int edad, numpulsaciones; char sexo; void main(void) printf("sexo(f/m):"); sexo = getchar(); printf("ingrese la edad:"); scanf("%d",&edad); if(sexo == 'F' sexo == 'f') numpulsaciones = (220 - edad)/10; numpulsaciones = (210 - edad)/10; printf("numero de pulsaciones = %d \n",numpulsaciones); Ejemplo #4: Una compañía de seguros está abriendo un dpto. de finanzas y estableció un programa para captar clientes, que consiste en lo siguiente: Si el monto por el que se efectúa la fianza es menor que $50 000 la cuota a pagar será por el 3% del monto, y si el monto es mayor que $50 000 la cuota a pagar será el 2% del monto. La afianzadora desea determinar cuál será la cuota que debe pagar un cliente. 10

//fianza.c float montofianza, cuota; void main(void) printf("ingrese el monto de la fianza:"); scanf("%f",&montofianza); if(montofianza < 50000) cuota = montofianza * 0.03; cuota = montofianza * 0.02; printf("cuota = %.2f \n",cuota); Ejemplo #5: Las raíces reales de la expresión ax 2 + bx + c = 0 se obtienen a través de la fórmula: 2 b ± b 4 ac 2 si x = b 4ac>= 0 2a Realice un programa para calcular las raíces reales, de ser posible, de una ecuación de segundo grado. 11

//raiz.c #include <math.h> float a,b,c,d,x1,x2; void main(void) printf("introduzca los valores de a,b,c: "); scanf("%f %f %f",&a,&b,&c); d = b * b - 4 * a * c; printf("d = %f\n",d); if(d >= 0) x1 = (-b + sqrt(d)) / (2 * a); x2 = (-b - sqrt(d)) / (2 * a); printf("las raices de la ecuacion son: %f %f\n",x1,x2); printf("no se pueden calcular las raices\n"); Ejemplo #6: Una empresa quiere hacer una compra de varias piezas de la misma clase a una fábrica de refacciones. La empresa, dependiendo del monto total de la compra, decidirá qué hacer para pagar al fabricante. Si el monto total de la compra es $500 000 ó más, la empresa tendrá la capacidad de invertir de su propio dinero un 55% del monto de la compra, pedir prestado al banco un 30% y el resto lo pagará solicitando un crédito al fabricante. Si el monto total de la compra no excede de $500 000, la empresa tendrá capacidad de invertir de su propio dinero un 70% y el restante 30% lo pagará solicitando crédito al fabricante. 12

El fabricante cobra por concepto de intereses un 20% sobre la cantidad que se le pague a crédito. //refacciones.c float costopza, totcomp, cantinv, prestamo, credito, interes; int numpza; void main( ) printf("costo de la pieza: "); scanf("%f", &costopza); printf("numero de piezas: "); scanf("%d", &numpza); totcomp = costopza * numpza; if(totcomp >= 500000) cantinv = totcomp * 0.55; prestamo = totcomp * 0.30; credito = totcomp * 0.15; cantinv = totcomp * 0.70; prestamo = 0; credito = totcomp * 0.30; interes = credito * 0.20; printf("\ncantidad invertida: %.2f\nPrestamo:%.2f\n",cantinv, prestamo); printf("credito = %.2f\nIntereses = %.2f\n",credito, interes); 13

Ejemplo #7: Dada la función f(x) calcular la función para un valor dado x y visualizarlo en pantalla. f(x)= x 2 x para x <= 0.0 -x 2 + 3x para x > 0 //funcion.c #include <math.h> void main() float f, x; printf("elige un valor de x: "); scanf("%f",&x); /* seleccion del rango en que se encuentra x */ if(x <= 0.0) f = pow(x,2) - x; f = -pow(x,2) + 3 * x; printf("f(%.1f) = %.3f", x,f); Comentario: Una vez introducido x, se evalúa la condición x <= 0.0, si es cierta asigna a f, x 2 x; en caso contrario asigna a f, -x 2 + 3x 14

Ejercicios propuestos 1. Determinar si un alumno aprueba o reprueba un curso, sabiendo que aprobará si su promedio de tres calificaciones es mayor o igual a 70; reprueba en caso contrario. Para ambos casos, imprima también su promedio. 2. Un obrero necesita calcular su salario semanal, el cual se obtiene de la siguiente manera: Si trabaja 40 horas o menos se le paga $16 por hora Si trabaja más de 40 horas se le paga $16 por cada una de las primeras 40 horas y $20 por cada hora extra. 3. Calcular el mayor de dos números leídos del teclado y visualizarlo en pantalla. 4. Escriba un programa que pueda determinar, dados dos números enteros, si un número es divisor de otro. 5. Dados tres datos, enteros positivos, que representan las longitudes de los lados de un triángulo; realice un programa que determine si el triángulo es: Equilátero: tres lados iguales Isósceles: dos lados iguales Escaleno: tres lados diferentes 6. Que lea dos números y los imprima en forma ascendente. 7. Calcular el total que una persona debe pagar en una llantera, si el precio de cada llanta es de $800 si se compran menos de 5 llantas y de $700 si se compran 5 o más. 8. En una escuela la colegiatura de los alumnos se determina según el número de materias que cursan. El costo de todas las materias es el mismo. Se ha establecido un programa para estimular a los alumnos, el cual consiste en lo siguiente: si el promedio obtenido por un alumno en el último periodo es mayor o igual que 9, se le hará un descuento del 30% sobre la colegiatura y no se le cobrara IVA; si el promedio obtenido es menor que 9 deberá pagar la colegiatura completa, la cual incluye el 10% de IVA. Obtener cuánto debe pagar un alumno. 15

9. Una empresa de bienes raíces ofrece casas de interés social, bajo las siguientes condiciones: Si los ingresos del comprador son $8000 o más, el enganche será del 15% del costo de la casa y el resto se distribuirá en pagos mensuales, a pagar en diez años. Si los ingresos del comprador son menos de $8000, el enganche será del 30% del costo de la casa y el resto se distribuirá en pagos mensuales a pagar en 7 años. La empresa quiere obtener cuanto debe pagar un comprador por concepto de enganche y cuanto por cada pago parcial. 10. El gobierno ha establecido el programa SAR (Sistema de Ahorro para el Retiro) que consiste en que los dueños de la empresa deben obligatoriamente depositar en una cuenta bancaria un porcentaje del salario de los trabajadores; adicionalmente los trabajadores pueden solicitar a la empresa que deposite directamente una cuota fija o un porcentaje de su salario en la cuenta del SAR, la cual le será descontada de su pago. Un trabajador que ha decidido aportar a su cuenta del SAR desea saber la cantidad total de dinero que estará depositado a esa cuenta cada mes, y el pago mensual que recibirá. SENTENCIAS if ANIDADAS Una sentencia if es anidada cuando la sentencia de la rama verdadera o la rama falsa, es a su vez una sentencia if. Una sentencia if anidada se puede utilizar para implementar decisiones con varias alternativas o multialternativas. Sintaxis: if(condición1) sentencia1 if(condición2) sentencia2... if(condición n) sentencia n sentencia e 16

/* incrementar contadores de números positivos, números negativos o ceros */ if (x > 0) num_pos = num_pos + 1; if(x < 0) num_neg = num_neg + 1; num_ceros = num_ceros + 1; La ejecución de la sentencia if anidada se realiza como sigue: Se comprueba la primera condición (x > 0); si es verdadera, num_pos se incrementa en 1 y se salta el resto de la sentencia if. Si la primera condición es falsa, se comprueba la segunda condición (x < 0); si es verdadera num_neg se incrementa en uno; en caso contrario se incrementa num_ceros en uno. Es importante considerar que la segunda condición se comprueba sólo si la primera condición es falsa. Ejemplo #1: Haga un programa que permita calcular el valor de f(x), según la expresión: X 2 si (x mod 4)=0 X/6 si (x mod 4)=1 f(x)= x si (x mod 4)=2 x 3 + 5 si (x mod 4)=3 17

//if3.c #include <math.h> int x; float y ; void main(void) printf("x = "); scanf("%d",&x); if (x % 4 == 0) y = x * x; if (x % 4 == 1) y = (float)x / 6; if(x % 4 == 2) y = sqrt((double)x); if(x % 4 == 3) y = pow(x,3) + 5; printf(" y = %.2f \n ",y); Ejemplo #2: Una frutería ofrece las manzanas con descuento según la siguiente tabla: NUM. DE KILOS COMPRADOS % DESCUENTO 0-2 0% 2.01-5 10% 5.01-10 15% 10.01 en adelante 20% Determinar cuánto pagará una persona que compre manzanas es esa frutería. 18

//manzanas.c float nkilos,compra, pkilo,pago, descuento; void main(void) printf("cuantos kilos de manzana comprara?:"); scanf("%f",&nkilos); printf("precio del kilo?:"); scanf("%f",&pkilo); compra = nkilos * pkilo; if(nkilos >= 0 && nkilos <= 2) descuento = 0; if(nkilos >= 2.01 && nkilos <= 5) descuento = compra * 0.10; if(nkilos >= 5.01 && nkilos <= 10) descuento = compra * 0.15; descuento = compra * 0.20; pago = compra - descuento; printf("pago = %.2f\n",pago); Ejemplo #3: El IMSS requiere clasificar a las personas que se jubilaran en el año de 1997. Existen tres tipos de jubilaciones: por edad, por antigüedad joven y por antigüedad adulta. Las personas adscritas a la jubilación por edad deben tener 60 años o más y una antigüedad en su empleo de menos de 25 años. Las personas adscritas a la jubilación por antigüedad joven deben tener menos de 60 años y una antigüedad en su empleo de 25 años o más. Las personas adscritas a la jubilación por antigüedad adulta deben tener 60 años o más y una antigüedad en su empleo de 25 años o más. Determinar en qué tipo de jubilación, quedara adscrita una persona. 19

//jubilacion.c int edad,ant; void main(void) printf("edad?:"); scanf("%d",&edad); printf("antiguedad?:"); scanf("%d",&ant); if(edad >= 60 && ant < 25) printf("la jubilacion es por edad\n"); if(edad < 60 && ant >= 25) printf("la jubilacion es por antiguedad joven\n"); if(edad >= 60 && ant >= 25) printf("la jubilacion es por antiguedad adulta.\n"); printf("no tiene por que jubilarse\n"); Ejemplo #4: Un individuo debe realizar un muestreo para determinar en qué categoría se encuentran las personas que viven en su zona habitacional. Se determinan las categorías con base en la siguiente tabla: CATEGORIA EDAD Niños 0-12 Jóvenes 13-29 Adultos 30-59 Viejos 60 en adelante 20

//edadcategoria.c int edad; void main(void) printf("edad?:"); scanf("%d",&edad); if(edad >= 0 && edad <= 12) printf("te encuentras en la categoria Ninos\n"); if(edad >= 13 && edad <= 29) printf("te encuentras en la categoria Jovenes\n"); if(edad >= 30 && edad <= 59) printf("te encuentras en la categoria Adultos\n"); printf("te encuentras en la categoria Viejos\n"); Ejemplo #5: Tomando como base los resultados obtenidos en un laboratorio de análisis clínicos, un médico determina si una persona tiene anemia o no, lo cual depende de su nivel de hemoglobina en la sangre, de su edad y de su sexo. Si el nivel de hemoglobina que tiene una persona no se encuentra el rango que le corresponde, se determina su resultado como positivo y en caso contrario como negativo. La tabla en la que el médico se basa para obtener el resultado es la siguiente: EDAD NIVEL HEMOGLOBINA 0-1 mes 13-26 g% > 1 y < = 6 meses 10-18 g% > 6 y < = 12 meses 11-15 g% > 1 y < = 5 años 11.5-15 g% > 5 y < = 10 años 12.6-15.5 g% > 10 y < = 15 años 13-15.5 g% mujeres > 15 años 12-16 g% hombres > 15 años 14-18 g% 21

//hemoglobina.c int tipoedad, meses, edad; char sexo; float nihem; void main(void) printf("edad en meses o en anyos?:\n"); printf("1. Meses\n"); printf("2. Anyos\n"); scanf("%d",&tipoedad); if(tipoedad == 1) printf("cuantos meses tiene el bebe?"); scanf("%d",&meses); if(tipoedad == 2) printf("cuantos anyos tiene?"); scanf("%d",&edad); printf("sexo:"); fflush(stdin); sexo = getchar(); printf("nivel de hemoglobina?"); scanf("%f",&nihem); if((meses >= 0 && meses <= 1) && (nihem >=13 && nihem <= 26 )) printf("negativo, no tiene anemia\n"); if((meses > 1 && meses <= 6) && (nihem >= 10 && nihem <= 18)) printf("negativo, no tiene anemia\n"); 22

if((meses > 6 && meses <= 12) && (nihem >=11 && nihem <= 15)) printf("negativo, no tiene anemia\n"); if((edad > 1 && edad <= 5) && (nihem >=11.5 && nihem <= 15)) printf("negativo, no tiene anemia\n"); if((edad > 5 && edad <= 10) && (nihem >=12.6 && nihem <= 15.5)) printf("negativo, no tiene anemia\n"); if((edad > 10 && edad <= 15) && (nihem >=13 && nihem <= 15.5)) printf("negativo, no tiene anemia\n"); if(((sexo == 'F' sexo == 'f') && edad > 15) && (nihem >=12 && nihem <= 16)) printf("negativo, no tiene anemia\n"); if(((sexo == 'M' sexo == 'm')&& edad > 15) && (nihem >=14 && nihem<= 18)) printf("negativo, no tiene anemia\n"); printf("positivo\n"); Ejemplo #6: //tarifaluz.c /* Visualiza la tarifa de luz según el gasto de corriente eléctrica. Para un gasto menor de 1000Kw por hora, la tarifa es 1.2, entre 1000 y 1850Kw por hora es 1.0 y mayor de 1850Kw por hora es 0.9 */ #define TARIFA1 1.2 #define TARIFA2 1.0 #define TARIFA3 0.9 23

void main() float gasto, tasa; printf("\n Gasto de corriente: "); scanf("%f",&gasto); if(gasto < 1000) tasa = TARIFA1; if(gasto >=1000 && gasto <= 1850) tasa = TARIFA2; tasa = TARIFA3; printf("\n Tasa que le corresponde a %.1f Kw x h es de %f \n",gasto, tasa); Ejemplo #7: Leer tres números enteros diferentes e imprimir el número mayor de los tres. //mayor.c void main(void) int num1, num2, num3, mayor; printf("introduzca tres enteros diferentes: "); scanf("%d %d %d", &num1, &num2, &num3); if((num1 > num2) && (num1 > num3)) mayor = num1; if((num2 > num1) && (num2 > num3)) mayor = num2; mayor = num3; printf("el mayor es %d \n",mayor); 24

Ejemplo #8: Una persona enferma, que pesa 70 kg, se encuentra en reposo y desea saber cuántas calorías consume su cuerpo durante todo el tiempo que realice una misma actividad. Las actividades que tiene permitido realizar son únicamente dormir o estar sentado en reposo. Los datos que tiene son que estando dormido consume 1.08 calorías por minuto y estando sentado en reposo consume 1.66 calorías por minuto. //enferma.c #include <string.h> int tiempo; char actividad[30]; float calorias; void main(void) printf("que actividad realiza, dormir o estar sentado en reposo?: \n"); gets(actividad); printf("\nintroduzca el tiempo en minutos en que ejecuta una de las dos actividades: \n"); scanf("%d",&tiempo); if (!strcmp(actividad,"dormir")) calorias = 1.08 * tiempo; printf("\nsu cuerpo consume %.2f calorias por minuto\n",calorias); if (!strcmp(actividad,"estar sentado en reposo")) calorias = 1.66 * tiempo; printf("\nsu cuerpo consume %.2f calorias por minuto\n",calorias); printf("\nactividad invalida\n"); 25

Ejercicios propuestos 1. Leer 2 números enteros; si son iguales que los multiplique, si el primero es mayor que el segundo que los reste y si no que los sume. 2. En una tienda de descuento se efectúa una promoción en la cual se hace un descuento sobre el valor de la compra total según el color de la bolita que el cliente saque al pagar en caja. Si la bolita es de color blanco no se le hará descuento alguno, si es verde se le hará un 10% de descuento, si es amarilla un 25%, si es azul un 50% y si es roja un 100%. Determinar la cantidad final que el cliente deberá pagar por su compra. se sabe que solo hay bolitas de los colores mencionados. 3. En una fábrica de computadoras se planea ofrecer a los clientes un descuento que dependerá del número de computadoras que compre. Si las computadoras son menos de cinco se les dará un 10% de descuento sobre el total de la compra; si el número de computadoras es mayor o igual a cinco pero menos de diez se le otorga un 20% de descuento; y si son 10 o mas se les da un 40% de descuento. El precio de cada computadora es de $11,000 4. Calcular la utilidad que un trabajador recibe en el reparto anual de utilidades si este se le asigna como un porcentaje de su salario mensual que depende de su antigüedad en la empresa de acuerdo con la sig. tabla: Tiempo Utilidad Menos de 1 año 5 % del salario 1 año o más y menos de 2 años 7% del salario 2 años o más y menos de 5 años 10% del salario 5 años o más y menos de 10 años 15% del salario 10 años o más 20% del salario 5. En una llantera se ha establecido una promoción de las llantas marca Ponchadas, dicha promoción consiste en lo siguiente: Si se compran menos de cinco llantas el precio es de $300 cada una, de $250 si se compran de cinco a 10 y de $200 si se compran más de 10. Obtener la cantidad de dinero que una persona tiene que pagar. 26

6. En un juego de preguntas a las que se responde Si o No gana quien responda correctamente las tres preguntas. Si se responde mal a cualquiera de ellas ya no se pregunta la siguiente y termina el juego. Las preguntas son: 1. Colon descubrió América? 2. La independencia de México fue en el año 1810? 3. The Doors fue un grupo de rock Americano? 7. Un proveedor de estéreos ofrece un descuento del 10% sobre el precio sin IVA, de algún aparato si este cuesta $2000 o más. Además, independientemente de esto, ofrece un 5% de descuento si la marca es NOSY. Determinar cuánto pagará, con IVA incluido, un cliente cualquiera por la compra de su aparato. 8. La Cía. Automovilística Mexicana, S.A. de C.V premia anualmente a sus mejores vendedores de acuerdo a la siguiente tabla: Si vendió Le corresponde de Comisión sobre ventas totales 1,000,000 <= v < 3,000,000 3% 3,000,000 <= v < 5,000,000 4% 5,000,000 <= v < 7,000,000 5% 7,000,000 <= v 6% Diseñar un programa que lea las ventas de un vendedor y que escriba la comisión que le corresponde. 9. Determinar la cantidad de dinero que recibirá un trabajador por concepto de las horas extras trabajadas en una empresa, sabiendo que cuando las horas de trabajo exceden de 40, el resto se consideran horas extras y que estas se pagan al doble de una hora normal cuando no exceden de 8; si las horas extras exceden de 8 se pagan las primeras 8 al doble de lo que se pagan las horas normales y el resto al triple. 27

SENTENCIA DE CONTROL switch La sentencia switch es una sentencia C que se utiliza para seleccionar una de entre múltiples alternativas. La sentencia switch es especialmente útil cuando la selección se basa en el valor de una variable simple o de una expresión simple denominada selector. El valor de esta expresión puede ser de tipo int o char, pero no de tipo float ni double. Sintaxis: switch(selector) case etiqueta1: sentencia1; case etiqueta2: sentencia2;.. case etiquetan: sentencian; default: sentenciad; El selector se evalúa y se compara con cada una de las etiquetas del case. La expresión selector debe ser un tipo ordinal, por ejemplo, int, char, pero no float, o string. Cada etiqueta es un valor único, constante y cada etiqueta debe tener un valor distinto de los otros. Si el valor de selector es igual a una de las etiquetas case, por ejemplo, etiquetai, entonces la ejecución comenzará con la primera sentencia de la secuencia sentenciai y continuará hasta que se encuentre el final de la sentencia de control switch, o hasta encontrar la sentencia break. Es habitual que después de cada bloque de sentencias correspondiente a una secuencia se desee terminar la ejecución del switch, para ello se sitúa la sentencia break como última sentencia del bloque; break hace que siga la ejecución en la siguiente sentencia al switch. 28

Sintaxis con break: switch(selector) case etiqueta1: sentencia1; case etiqueta2: sentencia2;... case etiquetan: sentencian; default: sentenciad; Si el valor de selector no está listado en ninguna etiqueta case, no se ejecutará ninguna de las opciones a menos que se especifique una acción por defecto. Una sentencia break consta de la palabra reservada break seguida por un punto y coma. Cuando la computadora ejecuta las sentencias siguientes a una etiqueta case, continúa hasta que se alcanza una sentencia break. Si la computadora encuentra una sentencia break, termina la sentencia switch. Si se omiten las sentencias break, después de ejecutar el código de case, la computadora ejecutará el código que sigue a la siguiente case. 29

Ejemplo #1: //numero.c int numero; void main(void) printf("introduzca un entero: "); scanf("%d",&numero); switch(numero) case 0: puts("cero"); case 1: puts("uno"); case 2: puts("dos"); default: puts("fuera de rango"); Ejemplo #2: Hacer un algoritmo que imprima el nombre de un artículo, clave, precio original y su precio con descuento. El descuento lo hace en base a la clave, si la clave es 1 el descuento es del 10% y si la clave es 2 el descuento es del 20% (solo existen dos claves). 30

//clave.c #include <stdlib.h> char nombreart[30]; int clave; float prec_orig,prec_desc; void main(void) printf("introduzca el nombre de un articulo:"); gets(nombreart); printf("ingrese su clave:"); scanf("%d",&clave); printf("precio original?"); scanf("%f",&prec_orig); switch(clave) case 1: prec_desc = prec_orig - prec_orig * 0.10; case 2: prec_desc = prec_orig - prec_orig * 0.20; default: printf("clave invalida\n"); exit(0); printf("\n\nclave = %d\n",clave); printf("articulo: %s \n", nombreart); printf("precio original = %.2f \n",prec_orig); printf("precio con descuento = %.2f\n\n",prec_desc); 31

Ejemplo #3: Dada una nota de un examen mediante un código escribir el literal que le corresponde a la nota. void main( ) char nota; printf( Introduzca calificación (A F) y pulse Intro: ); scanf( %c, &nota); switch(nota) case A : puts( Excelente. Examen superado ); case B : puts( Notable. Suficiencia ); case C : puts( Aprobado ); case D : case F : puts( Suspendido ); default: puts( No es posible esa nota ); puts( Final del programa ); 32

Ejemplo #4: Realice un programa que haga las siguientes conversiones: De toneladas a kilogramos. De pie a metros. Tome en cuenta las siguientes consideraciones: 1 tonelada equivale a 1000 kilogramos 1 pie equivale a 0.3047 metros Cree un tipo enumerado. Utilice switch. //toneladakg.c #include <stdlib.h> float ton, metro, pie, kg; void main() enum tipo toneladakg = 1, piemt ; enum tipo conversion; printf("1 - De toneladas a kilogramos\n"); printf("2 - De pie a metros\n"); printf("\npulse la opcion deseada: "); scanf("%d", &conversion); switch (conversion) case toneladakg: printf("ingrese las toneladas:"); scanf("%f",&ton); kg = ton * 1000; printf("kg = %.2f\n",kg); 33

case piemt: printf("\n metros? "); scanf("%f", &metro); pie = metro * 0.3047; printf("pie = %.3f\n",pie); default: printf("\nla opción no es correcta\n"); exit(0); /* error; salir de main */ Ejemplo #5: Realice un programa 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. //calculadora.c #include <stdlib.h> double num1, num2, resp; char operacion; void main(void) printf("esta es una calculadora...\n\n"); printf("ingrese dos numeros: "); scanf("%lf %lf",&num1,&num2); printf("operacion?"); fflush(stdin); operacion = getchar(); 34

switch(operacion) case '+': resp = num1 + num2; case '-': resp = num1 - num2; case '*': resp = num1 * num2; case '/': if(num2!= 0) resp = num1 / num2; printf("division por cero no valida\n"); exit(0); default: puts("operacion invalida"); printf("%g %c %g = %g \n\n",num1,operacion,num2,resp); 35

Ejemplo #6: Escriba un programa que permita lo siguiente: Convertir una temperatura de grados Fahrenheit a grados Centígrados Convertir una temperatura de grados Centígrados a grados Fahrenheit F = 9/5 * C + 32 C = 5/9 * (F 32) //fahrcent.c #include <stdlib.h> int opcion; float f, c; void main(void) printf("1 - Convertir de centigrados a fahrenheit\n"); printf("2 - Convertir de fahrenheit a centigrados\n"); printf("\ningrese la opcion deseada: "); scanf("%d", &opcion); switch (opcion) case 1: printf("\ngrados centigrados:"); scanf("%f",&c); f = 9.0/5.0 * c + 32; printf("%.2f centigrados equivalen a %.2f grados fahrenheit\n\n",c,f); case 2: printf("\ngrados fahrenheit? "); scanf("%f", &f); c = 5.0/9.0 * (f - 32); printf("%.2f fahrenheit equivalen a %.2f grados centigrados\n\n",f,c); 36

default: printf("\nopcion incorrecta\n"); exit(0); /* error; salir de main */ Ejercicios propuestos 1. Realice un programa que me permita saber si un determinado carácter car es una vocal. 2. Escriba un programa que calcule el importe a pagar por un vehículo al circular por una autopista. El vehículo puede ser una bicicleta, una moto, un coche, o un camión. Para definir el conjunto vehículos utilizaremos un tipo enumerado. El importe se calculará según los siguientes datos: Un importe fijo de 100 córdobas para las bicicletas. Las motos y los carros pagarán 30 córdobas por Km. Los camiones pagarán 30 córdobas por Km más 25 córdobas por Tm La presentación en pantalla de la solución, será de la forma siguiente: 1 - bicicleta 2 moto 3 carro 4 - camión 5 salir Seleccione la opción deseada: 4 Kilómetros y toneladas? 100 50 Importe = 4250 3. Realizar un programa que permita ingresar un número correspondiente a los días de una semana y muestre el nombre del día. Que se permita trabajar hasta que el usuario indique lo contrario. Use switch. 37

4. Escriba un programa tal, que dados como datos el modelo de un vehículo y su precio, determine el valor final que debe pagar el comprador. El concesionario está haciendo descuentos teniendo en cuenta el modelo, con base en la siguiente tabla: Modelo Descuento Cutlass 8% Cavalier 5% Chevy 6% Century 9% Haga uso de una enumeración. Defínala como un nuevo tipo. Además, utilice break y una opción por defecto que imprima El modelo no es válido. 5. En un hospital se ha hecho un estudio sobre los pacientes registrados durante los últimos 10 años, con el objeto de hacer una aproximación de los costos de internación por paciente. Se obtuvo un costo promedio diario según el tipo de enfermedad que aqueja al paciente; además se pudo determinar que en promedio todos los pacientes con edad entre 10 y 25 años implican un costo adicional del 20%. La siguiente tabla expresa los costos diarios, según el tipo de enfermedad. Tipo de enfermedad Costo/Paciente/Día 1 25 2 40 3 20 4 32 Construya un programa que calcule e imprima el costo total que representa un paciente. 6. El costo de las llamadas telefónicas nacionales, depende de la ciudad en la que se encuentre y del número de minutos hablados. En la siguiente tabla se presenta el costo por minuto, por ciudad. A cada ciudad se le ha asociado una clave. 38

Clave Ciudad Precio 1 León 2 5 Managua 2.2 8 Estelí 4.5 9 Matagalpa 3.5 13 Jinotega 6 2 Chinandega 6 15 Rivas 5 Realice un programa en Lenguaje C, que permita calcular e imprimir el costo total de una llamada. Use enumerados. 8. Efectúe un programa que haga las siguientes conversiones: De pulgadas a milímetros. De yardas a metros. De millas a kilómetros. Use un tipo enumerado. 1 milímetro = 25.40 pulgadas 1 metro = 0.9144 yardas 1 km = 1.6093 millas 39