Departamento de Informática Universidad Técnica Federico Santa María Ejercicios Certamen 1: Programación de Computadores (IWI-131) Luis Pizarro Q.
Luis Pizarro Q. © Pauta Control 1 n Ud. tiene un sueldo base de $ , pero le descuentan 10% por su AFP y 8.5% por su previsión de salud. Suponga que deposita en su cuenta de ahorros la tercera parte de lo que le queda, a un 1.5% de interes mensual. Escriba un programa que permita conocer cuánto ha ahorrado al cabo de 1 año. PROGRAM Ahorro; CONST base = ; VAR mes: INTEGER; sueldoneto, cuenta: REAL; BEGIN cuenta := 0; sueldoneto := base * 0.815; FOR mes := 1 TO 12 DO cuenta := (cuenta + sueldoneto / 3) * 1.015; WRITELN(‘Ahorro acumulado en un año es: ’, cuenta) END.
Luis Pizarro Q. © P1-C n Considerando las siguientes asignaciones: a:= 1; b:= 2; c:= 3; d:= 4; i:= 3; j:= -5; n:= 10; s:= ‘A’; Indique el valor lógico de las siguientes expresiones: 1. 2*i >= i DIV 2 6 >= 1 TRUE 2. (i DIV 2) > (j+6) 1 > 1 FALSE 3. (n = 10) AND (s >= ‘A’) TRUE AND TRUE TRUE 4. a - b / c * SQRT(d) / 3 * * (a - b) / (c * SQRT(d)) (1 - 2) / (3 * 2) -1 /
Luis Pizarro Q. © P2-C n Rutee el siguiente programa PASCAL. Haga una tabla indicando los resultados paso a paso. PROGRAM rutear; CONST a = 10; c = 1; VAR x, y, z: INTEGER; BEGIN x := 0; y := 1; z := 2; REPEAT z := z + c; y := 2 * x + y + z; IF y < a THEN y := y + 1; x := x - 1; UNTIL z > y WRITELN(‘Valores de x,y,z: ‘,x,y,z) END. a c x y z y < a z > y TRUE -1 5 FALSE 7 4 TRUE -2 8 FALSE 9 5 TRUE FALSE 10 6 FALSE -4 FALSE 9 7 TRUE FALSE 8 8 TRUE -6 9 FALSE 6 9 TRUE -7 7 TRUE Valores de x,y,z:
Luis Pizarro Q. © P3-C n Una persona está estudiando un plan de ahorros para los próximos 20 años. Mensualmente podría ahorrar $ Además al final de cada año piensa agregar $ al monto acumulado. El banco le ofrece 1.5% de interés mensual, pagados al final de cada mes. De esta forma, al final del primer mes tendría *1.015; al final del segundo tendría ( * )*1.015; y así sucesivamente. Desarrolle un programa PASCAL que permita calcular el monto total acumulado al cabo de 20 años, indicando además la cantidad ganada por concepto de intereses. PROGRAM Ahorro; VAR año, mes: INTEGER; ahorrototal, gananciamensual: REAL; BEGIN ahorrototal := 0; gananciatotal := 0; FOR año := 1 TO 20 DO BEGIN FOR mes := 1 TO 12 DO BEGIN gananciatotal := gananciatotal + (ahorrototal ) * 0.015; ahorrototal := (ahorrototal ) * 1.015; END; ahorrototal := ahorrototal ; WRITELN(‘La ganancia acumulada en el año ‘, año, ‘ es: ’, gananciatotal); WRITELN(‘El ahorro acumulado en el año ‘, año, ‘ es: ’, ahorrototal) END; END.
Luis Pizarro Q. © PROGRAM calcular_potencia; VAR n, conta: INTEGER; x, potencia: REAL; solucion: BOOLEAN; BEGIN WRITE(‘Ingrese Base y Exponente: ’); READLN(x, n); solucion := TRUE; IF n = 0 THEN potencia := 1 ELSE IF n > 0 THEN BEGIN potencia := 1; FOR conta := 1 TO n DO potencia := potencia * x; END ELSE IF x = 0 THEN BEGIN WRITELN(‘No hay solución’); solucion := FALSE END ELSE BEGIN potencia := 1; conta := 0; WHILE conta < n DO BEGIN potencia := potencia * x; conta := conta + 1 END; potencia := 1 / potencia END; IF solucion THEN WRITELN(x, ‘^’, n, ’=‘, potencia) END. PROGRAM calcular_potencia; VAR n, conta: INTEGER; x, potencia: REAL; solucion: BOOLEAN; BEGIN WRITE(‘Ingrese Base y Exponente: ’); READLN(x, n); solucion := TRUE; IF n = 0 THEN potencia := 1 ELSE IF n > 0 THEN BEGIN potencia := 1; conta := 0; REPEAT potencia := potencia * x; conta := conta + 1; UNTIL conta = n END ELSE IF x = 0 THEN BEGIN WRITELN(‘No hay solución’); solucion := FALSE END ELSE BEGIN potencia := 1; conta := 0; REPEAT potencia := potencia * x; conta := conta + 1; UNTIL conta = n potencia := 1 / potencia END; IF solucion THEN WRITELN(x, ‘^’, n, ’=‘, potencia) END. P4-C n El siguiente programa permite calcular x n, donde x es real distinto de 0, y n puede ser +, - ó 0. Reemplace c/u de las estructuras de control iterativas por una equivalente.
Luis Pizarro Q. © Ejercicio: Calcular N términos de la serie de Fibonacci {1,1,2,3,5,8,13,21,...} PROGRAM Fibonacci; VAR i, j, z, cont, N: INTEGER; BEGIN WRITE(‘Ingrese N: ‘); READLN(N); i := 1; j := 1; IF N = 1 THEN WRITE(i) ELSE IF N = 2 THEN WRITE(i,’ - ‘, j) ELSE BEGIN WRITE(i,’ - ‘, j,’ - ‘); FOR cont := 3 TO N DO BEGIN WRITE(i+j,’ - ‘); z := i; i := j; j := z + i END END. PROGRAM Fibonacci; VAR i, j, z, cont, N: INTEGER; BEGIN WRITE(‘Ingrese N: ‘); READLN(N); i := 1; j := 1; IF N = 1 THEN WRITE(i) ELSE IF N = 2 THEN WRITE(i,’ - ‘,j) ELSE BEGIN WRITE(i,’ - ‘,j,’ - ‘); cont := 2; REPEAT WRITE(i+j,’ - ‘); z := i; i := j; j := z + i; cont := cont + 1; UNTIL cont = N END END.
Departamento de Informática Universidad Técnica Federico Santa María Ejercicios Certamen 1: Programación de Computadores (IWI-131) Luis Pizarro Q.