Ana Maria Salgado G 2013 Sentencia de control for M.Sc. Ana María Salgado. Universidad Nacional Autónoma de Nicaragua León. Abril 2013 1 M.Sc. Ana María Salgado G.
Unidad IV: Estructuras de control Sentencia for La forma general de esta sentencia es: for (expresion 1; expresion 2; expresion 3) sentencia; Inicialmente se ejecuta expresión 1, se hace para inicializar la variable que controla la repetición del bucle. expresión 2 es una condición que debe ser cierta para que se ejecute sentencia. expresión 3 se utiliza para modificar el valor de la variable que controla el ciclo, se realiza un incremento o decremento. El bucle se repite mientras expresión 2 sea cierto. Si sentencia es compuesta se encierra entre. Si se omite expresión 2 se asumirá el valor permanente de 1 y el bucle se ejecutará de forma indefinida (bucle infinito). Ejemplo #1: //holafor.c int i; for(i=0; i < 5; i++) printf("hola!\n"); printf("el valor de i es: %d\n",i); 2 M.Sc. Ana María Salgado G.
Ejemplo #2: //fordesc2.c int n; for(n=10; n >5; n--) printf("%d \t %d \n",n,n*n*n); Ejemplo #3: //potencia.c int i,p=1,base,n; printf("entero elevado a una potencia\n"); printf("base:"); scanf("%d",&base); printf("potencia:"); scanf("%d",&n); for (i=1;i<=n ;i++) p=p*base; printf("%d^%d = %d\n",base,n,p); 3 M.Sc. Ana María Salgado G.
Ejemplo #4: float i; for(i = 1; i <= 5; i += 0.5) printf("%g\n",i); Ejemplo #5: //Bucle controlado por dos variables int f,c; for(f = 3, c = 6; f + c < 40; f++, c += 2) printf("f = %d\t c = %d\n", f, c); Ejercicios resueltos Ejercicio #1: Escriba un programa que reciba dos parámetros enteros, m y n, con m<n. Se debe calcular la suma: 1 1 1 1 + + +... + m m + 1 m + 2 m + n //serie1.c int m,n,i; float suma=0; do printf("introduzca los enteros m y n\n"); scanf("%d %d",&m,&n); while(m>n); 4 M.Sc. Ana María Salgado G.
for(i=0;i<=n;i++) suma+=1.0/(float)(m+i); printf("el resultado de la funcion es %g\n",suma); Ejercicio #2: Se usa el esquema siguiente para calcular la comisión mensual por ventas(en dólares) ganada por un empleado de una empresa bienes raíces: Ventas totales Comisión Hasta 100,000 1% de las ventas totales $100,000 200,000 1% de los primeros $100,000 más 2% del exceso sobre $100,000 Más de $200,000 1% de los primeros $100,000 más 2% de los siguientes $100,000 más 3% del exceso sobre $200,000 a) Escriba un programa que calcule la comisión mensual de un grupo de vendedores con base en su total de ventas. b) Haga que el programa anterior lleve un registro de cuántos empleados recibieron una comisión de, por lo menos, 2000 dólares. //comision3.c float ventas,com; int nempleados, i, n=0; char nombre[100]; printf("cuantos empleados quiere procesar?"); scanf("%d",&nempleados); for(i=0;i<nempleados;i++) fflush(stdin); printf("\nintroduzca el nombre del empleado #%d:",i+1); gets(nombre); printf("\ncuanto fue su venta?:"); fflush(stdin); scanf("%f",&ventas); 5 M.Sc. Ana María Salgado G.
if(ventas <=100000) com = ventas * 0.01; else if(ventas >100000 && ventas <=200000) com = (100000 * 0.01) + ((ventas - 100000) * 0.02); else if(ventas >200000) com = (100000 * 0.01) + (100000 * 0.02) + ((ventas - 200000) * 0.03); printf("el empleado %s vendio %g y su comision fue %g\n",nombre,ventas,com); if(com >=2000) n++; printf("\n\n%d empleados recibieron una comision de por lo menos 2000 dolares\n",n); Ejercicio #3: Escriba un programa de nómina para una compañía que tiene seis empleados, algunos de los cuales son hombres y otros mujeres. Para cada empleado el programa debe leer el nombre, el sexo, las horas de trabajo y el sueldo por hora. La primera parte de la impresión debe dar el nombre y el pago de cada empleado. La segunda parte, el total de los pagos para cada sexo, así como el promedio de los pagos a los hombres y el promedio de los pagos a las mujeres. //nomina.c float pago, phora, pagotothombres =0, pagototmuj=0, promuj, promhomb; char sexo; int htrab, i, muj=0, homb=0; char nombre[100]; for(i=0;i<6;i++) printf("\n\nempleado #%d\n",i+1); fflush(stdin); printf("\nintroduzca el nombre\n"); gets(nombre); printf("sexo:"); sexo = getchar(); 6 M.Sc. Ana María Salgado G.
printf("horas trabajadas y sueldo por hora:"); scanf("%d %f",&htrab,&phora); pago=htrab*phora; printf("el empleado %s tiene un salario de %g\n",nombre,pago); if(sexo == 'f') pagototmuj+=pago; muj++; if(sexo == 'm') pagotothombres+=pago; homb++; printf("\ntotal de pagos para mujeres es %f\n",pagototmuj); printf("\ntotal de pagos para hombres es %f\n",pagotothombres); promhomb = pagotothombres/homb; promuj = pagototmuj/muj; printf("\npago promedio de hombres = %f\n",promhomb); printf("\npago promedio de mujeres = %f\n",promuj); Ejercicio #4: Escriba un programa que calcule la suma de la siguiente serie: 1 2 3 n + + + +... + 2 n x x x x 1 3 7 M.Sc. Ana María Salgado G.
//serie2.c #include <math.h> int x,n,i; float suma = 1; printf("ingrese el valor de n:"); scanf("%d",&n); printf("ingrese el valor de x:"); scanf("%d",&x); for(i = 1; i <= n; i++) suma = suma +i/pow(x,i); printf("suma = %.2f\n",suma); Ejercicio #5: Escriba un programa para evaluar la función y = 4x 2 16x + 15, donde x toma los valores de 1 a 2, en incremento de 0.1. Para cada x la salida debe dar el valor de y. Además debe imprimir el mensaje POSITIVO o NEGATIVO, según el signo de y. El formato de salida debe ser: Valor de x Valor de y Signo 1.0 3.00 POSITIVO 1.1 2.24 POSITIVO... 2.0-1.00 NEGATIVO 8 M.Sc. Ana María Salgado G.
Solución: //posneg2.c #include <stdlib.h> #include <math.h> float x, y; printf("valor de x\tvalor de y\tsigno\n"); printf("-------------------------------------\n"); for(x = 1; x <= 2; x+=0.1) y = 4 * pow(x,2) - 16 * x + 15; if(y > 0) printf("%.2f\t\t%.2f\t\tpositivo\n",x,y); else if(y < 0) printf("%.2f\t\t%.2f\t\tnegativo\n",x,y); Ejercicios propuestos 1. El profesor de una materia desea conocer la cantidad de sus alumnos que no tienen derecho al examen de nivelación. Diseñe un programa que lea las calificaciones obtenidas en las 5 unidades por cada uno de los 40 alumnos y escriba la cantidad de ellos que no tienen derecho al examen de nivelación. 2. Un jeep puede viajar 500 km con un tanque lleno de gasolina. Desde una posición inicial, conteniendo n tanques de gasolina el mismo jeep puede viajar: L = 500 ( 1 + 1/3 + 1/5 +...+ 1 / (2n -1) ) km Estableciendo economía de combustible en una ruta. Diseñe un programa que calcule el valor de L dado n. 3. Diseñe un programa que calcule e imprima el pago de 102 trabajadores que laboran en la Cía. GACMAN. Los datos que se leerán serán los siguientes: a) Las horas trabajadas b) El sueldo por hora c) El tipo de trabajador (1.-obrero,2.-empleado) 9 M.Sc. Ana María Salgado G.
Para calcular los pagos considerar lo siguiente: - Los obreros pagan 10 % de impuesto - Los empleados pagan 10 % de impuesto. - Los trabajadores (obreros y empleados) que reciban un pago menor de 100,000 pesos no pagan impuesto. -Al final se deberá imprimir el total a pagar a los trabajadores y a los empleados. 4. 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 100 vendedores y que escriba la comisión anual que le corresponda a cada vendedor. Suponer que nadie vende más de 10,000,000 al año. 5. Un grupo de 100 estudiantes presentan un examen de Física. Diseñe un diagrama que lea por cada estudiante la calificación obtenida y calcule e imprima: A.- La cantidad de estudiantes que obtuvieron una calificación menor a 50. B.- La cantidad de estudiantes que obtuvieron una calificación de 50 o más pero menor que 80. C.- La cantidad de estudiantes que obtuvieron una calificación de 70 o más pero menor que 80. D. La cantidad de estudiantes que obtuvieron una calificación de 80 o más. 6. Calcule la suma de los términos de la serie FIBONACCI cuyos valores se encuentran entre 100 y 10,000. 7. Hacer un programa que calcule e imprima los números primos comprendidos entre 1 y 100. 8. Cierta Universidad tiene N estudiantes. Elabore un programa que encuentre el promedio de edad de los estudiantes mayores de 21 años y el promedio de edad del resto de estudiantes. Por cada estudiante se tiene un registro que contiene su código y edad. 9. En un grupo de N registros se tienen las notas de: Algoritmos, Matemáticas y Español de cada uno de los estudiantes. Diseñe un programa que obtenga la nota promedio de cada estudiante. 10. Elabore un algoritmo que lea 100 números y determine la media de los números positivos y negativos. 10 M.Sc. Ana María Salgado G.
11. Escribir un algoritmo que calcule X n donde: X, puede ser cualquier número real. n, un número positivo, nulo o negativo. 12. Elabore un programa que permita calcular el factorial de un número. Bibliografía Ceballos Francisco Javier. Curso de Programación C/C++. Segunda Edición. Editorial RAMA, Madrid, 2002. Joyanes Aguilar Luis, Zahonero Martínez Ignacio. Programación en C. Metodología, estructura de datos y objetos. Mc Graw Hill. Byron S. Gottfried. Programación en C. Mc Graw Hill. H.M. Dietel P. J. Dietel. Como Programar en C/C++. Segunda Edición. Prentice Hall. Hernández María Lourdes. Diseño estructurado de algoritmos. Diagramas de flujos y pseudocódigos. Universidad de Teuxtepe, México. Oviendo Efraín. Lógica de Programación. 11 M.Sc. Ana María Salgado G.