IWI131 Programación de Computadores

¡Hola!

Te invito a resolver los siguientes problemas de programación en lenguaje Python de mi propia elaboración. Semanalmente, desde el segundo semestre del año 2012, como ayudante, los propongo a estudiantes en horario de ayudantía de la asignatura de Programación de Computadores, IWI131, de la Universidad Técnica Federico Santa María.

Pretendo una base con gran cantidad de ejercicios de distinta complejidad y que demanden los tópicos que se tratan en un primer curso de programación.

Existe para cada ejercicio una caja de comentarios, ¡utilízala!

¡Disfrútalos!

Calibrando un instrumento de medición

publicado a la‎(s)‎ 3 jul. 2013 18:50 por José David Marroquín Toledo   [ actualizado el 3 jul. 2013 18:58 ]

Respondiendo al requerimiento de un compañero de laboratorio, Aníbal debe calibrar el voltímetro que fue obra de su perspicacia. Para ello, el joven ha pensado utilizar una de las fuentes de poder de un fabricante de renombre que tiene un pequeño display de tres dígitos en donde es posible observar el valor de salida de voltaje o corriente, según se elija. Ambas cantidades físicas son reguladas desde dos perillas en el panel frontal del instrumento de laboratorio.

Cuando uno de ellos selecciona 0.50 [V] en la fuente de poder, el voltímetro de Aníbal lee 0.56 [V], diferencia que aumenta con valores más siginificativos, i.e., con 3.5 [V] desde la fuente se leen 3.81 [V] en la pseudo-creación del joven. Los compañeros de labores deciden registrar 9 valores en una tabla donde la primera columna corresponde al potencial establecido en la fuente (ftePoder) en voltios ([V]) y el segundo, el leído por el voltímetro (voltro), tal como se muestra a continuación.

 ftePoder  voltro
 0.50
 0.56
 1.00  1.08
 1.50  1.71
 2.00  2.23
 2.50  2.72
 3.00  3.28
 3.50  3.81
 4.00  4.38
 4.50  4.9

Proponga un procedimiento que, haciendo uso de la tabla, permita que el voltímetro de Aníbal muestra en su pantalla un valor muy próximo al real —el valor de voltaje que muestra el display de la fuente de poder debe ser muy cerca al mostrado por el instrumento que se requiere calibrar— y prográmelo en lenguaje de programación Python.

El salida del caso de prueba muestra un ejemplo de cómo debería interpretar su programa de calibración en el voltímetro los valores sin previa corrección.

Sugerencia: investigue el módulo numpy que puede importar escribiendo en su programa con import numpy as np. Visualice los datos para obtener una idea del algoritmo que debe programar con alguna de las funciones contenidas en la librería matplotlib.

Importante: Este problema tiene por objetivo que desarrolle su pensamiento algorítmico, lo agilice y haga uso de funciones disponibles que no vienen integradas en Python mediante la solución de una problemática de baja complejidad, pero real; no, la aplicación de conocimiento complejo y avanzado.

Dedicado a N. A. Carrasco. C.

Caso de prueba


>>> 2.23
2.03
>>> 4.38
4.01
>>> 3.17
2.89


Ley de Ohm y cuánto consume un artefacto eléctrico

publicado a la‎(s)‎ 26 sept. 2012 12:46 por José David Marroquín Toledo   [ actualizado el 26 sept. 2012 20:05 ]

Requerimiento: Sentencias de Control, Funciones y Módulos


Nota: Un archivo en formato PDF contiene el enunciado y el caso de prueba como se muestra tras el salto. Puedes descargar el fichero desde aquí.


Casos de prueba


>>>> ohm('x', 110, 470)

'La magnitud de la corriente es 0.234042553191 [A].'


>>>> ohm(0.5, 220, 'x')

'La magnitud de la resistencia es 440.0 [Ohm].'


>>>> consumo(1.5, ohm(1.5, 'x', 73.3), 6, 'USD$0.15')

'La magnitud de el voltaje es 109.95 [V].'

'El consumo por la utilizacion del dispositivo por 6 horas es de USD$0.1484325.'


>>>> consumo(1.5, 220, 8, 'CLP$109')

'El consumo por la utilizacion del dispositivo por 8 horas es de CLP$287.76.'



A la conquista de los techos del mundo

publicado a la‎(s)‎ 14 sept. 2012 21:14 por José David Marroquín Toledo   [ actualizado el 30 sept. 2012 9:54 ]

Requerimiento: Sentencias de Control

Alberto y David son dos amigos que desde hace algún tiempo sueñan con conquistar las cimas más altas del mundo, por lo que cada fin de semana suben hasta la cumbre de alguna montaña. En cada salida llevan consigo lo justo y su dinero prefieren invertirlo en alimentación y ropa apropiada para soportar lasccondiciones climáticas.

Las rutas, referidas en Internet y que normalmente son por senderos que otros han marcado, contienen waypoints, puntos de referencia. En sus salidas, como ninguno de ellos dispone de un smartphone con GPS, en uno de sus teléfonos celulares anotan la hora que marca el reloj al pasar por cada punto separadas de las otras por un guión y en formato militar. El instante de llegada a la cumbre, siempre antes de medianoche, es seguido por un guión y nada más, tal como aparece en el caso de prueba.

Usted deberá elaborar un programa en lenguaje Python que pregunte por la hora de inicio del recorrido, la cadena que uno de los amigos escribó para registar las horas en su teléfono móvil y la velocida media en [km/h]; que informe el tiempo entre cada tramo junto a los kilómetros aproximados que debieron recorrer y el tiempo total del viaje.

Importante: Los tildes en el código de fuente del programa deben ser omitidos intencionalmente. Respete las salidas de su programa siguiendo el caso de prueba. Use la función round() para aproximar las distancias.

Caso de prueba


Hora de inicio: 0847
Hora de reloj entre waypoints de la ruta: 0954-1154-1426-1718-
Velocidad media estimada en [km/h]: 2.1
El tramo 1 fue realizado en 1 hora(s) y 7 minutos, y debieron haber recorrido cerca de 2 [km].
El tramo 2 fue realizado en 2 hora(s) y 0 minutos, y debieron haber recorrido cerca de 4 [km].
El tramo 3 fue realizado en 2 hora(s) y 32 minutos, y debieron haber recorrido cerca de 5 [km].
El tramo 4 fue realizado en 2 hora(s) y 52 minutos, y debieron haber recorrido cerca de 6 [km].
El tiempo total fue de 8 horas y 31 minutos.


Valor aproximado para la función seno

publicado a la‎(s)‎ 12 sept. 2012 21:16 por José David Marroquín Toledo   [ actualizado el 26 sept. 2012 19:38 ]

Requerimiento: Sentencias de Control

La fórmula del tercer ejercicio del primer certamen tipo propuesto por la coordinación de la asignatura de Programación de Computadores —que puedes visualizar aquí— está relacionado con la expansión de la serie Maclaurin para la función seno, con ella se puede obtener el valor aproximado de dicha función, entre otras, y la precisión de la aproximación aumenta en la medida que se considera una mayor cantidad de términos.

Ud. debe, utilizando lo que ha aprendido sólo hasta el tópico Sentencias de Control, aproximar la función seno para un primer valor de entrada x hasta que la diferencia entre dos términos consecutivos de la serie no supere a un segundo valor p.

Nota: El código fuente que resuelve este ejercicio se encuentra disponible para su descarga aquí o desde el vínculo bajo la caja de comentarios.


Completada para cumpleaños

publicado a la‎(s)‎ 7 sept. 2012 22:12 por José David Marroquín Toledo   [ actualizado el 26 sept. 2012 19:40 ]

Requerimiento: Sentencias de Control

En el departamento 131 del edificio Alta Práctica, se celebrará con una completada el cumpleaños de Nicolás, el menor de tres hermanos. La experiencia culiniaria de un vecino ayuda a los parientes a inferir que se requiere medio tomate, media palta y una vienesa para la elaboración de un completo italiano. Una de las hermanas decide la preparación de dos de ellos por invitados y el padre, que es panadero, aportará con la cantidad justa de panes de mesa.

Elabore un programa en lenguaje Python que registre las donaciones por unidad de tomate, palta y por diez unidades de vienesas realizadas por los mismos invitados con el ingreso de las cadenas tomate, palta y vienesas, respectivamente. La entrada de datos debe ser detenida con la instrucción nada mas para luego preguntar por la cantidad de invitados y finalmente, mostrar la donación, el requerimiento y compra obligatoria de cada elemento en caso que se requiera tal acción.

Importante: los tildes en el código de fuente del programa deben ser omitidos intencionalmente. Respete las salidas de su programa siguiendo el caso de prueba.

Caso de prueba


Donacion: palta
Donacion: palta
Donacion: tomate
Donacion: palta
Donacion: vienesas
Donacion: palta
Donacion: vienesas
Donacion: nada mas
Numero de invitados: 8
Se dono 1 tomate(es), se requiere(en) 8 y se debe(en) comprar 7.
Se dono 4 palta(as), se requiere(en) 8 y se debe(en) comprar 4.
Se dono 20 vienesa(as), se requiere(en) 16 y no es necesario comprar otros(as), existen excedentes.

Actualización: El código fuente que resuelve este ejercicio se encuentra disponible para su descarga aquí o desde el vínculo bajo la caja de comentarios.


Rama de lucha libre

publicado a la‎(s)‎ 7 sept. 2012 21:27 por José David Marroquín Toledo   [ actualizado el 3 jul. 2013 17:26 ]

Requerimiento: Sentencias de Control

Ribelino Fuentealba, en su afán de integrar la incipiente rama de lucha libre al interior del campus de su universidad, decide ejecutar un plan de entrenamiento de elaboración propia a 7 días de las exigentes pruebas de admisión. Su programa semanal de entrenamiento consiste en la realización de 150 flexiones de brazo, 200 abdominales y 1 una hora y 40 minutos de trote. Como al séptimo día debe presentarse, considera que es apropiado descansar el anterior. Su padre le aportará con 3000 pesos diarios si, al final de cada jornada, efectúa la quinta parte de cada uno de los ejercicios. Por otro lado, si completa su entrenamiento en menos de 4 días, su madre doblará el aporte total realizado por el progenitor.

Ayude a Ribelino escribiendo un programa en lenguaje Python que registre la cantidad de flexiones, abdominales y minutos de trote diarios, y que informe si completó o no su entrenamiento con las salidas Entrenamiento completo o Entrenamiento incompleto, respectivamente; y el aporte del padre, madre y el total.

Importante: los tildes en el código de fuente del programa deben ser omitidos intencionalmente. Respete las salidas de su programa siguiendo el caso de prueba.


Caso de prueba


Dia 1
Flexiones: 100
Abdominales: 60
Minutos de trote: 30
Dia 2
Flexiones: 50
Abdominales: 141
Minutos de trote: 75
Entrenamiento completo
Aporte del padre: 6000
Aporte de la madre: 12000
Aporte total: 18000


1-6 of 6