CLASE 7
PROGRAMACIÓN II
MAT 340
Prof. Arnulfo Ariel Ríos A.
Abril 2024
Ejemplo 7: Crear un programa que lea por
teclado el nombre, la estatura en metros y el
peso en kilogramos de una persona, y que
calcule el IMC (índice de masa corporal de la
persona) y lo presente en pantalla junto al
nombre de la persona.
Observaciones: Nótese que el índice de masa corporal de una
persona es el resultado de dividir el peso en kilogramos entre la
estatura elevada al cuadrado (medida en metros).
Una ventaja que ofrece el lenguaje Python con respecto a C++
consiste en el hecho de los números fraccionarios y los números
complejos son tipos de datos ya establecidos dentro de la librería
standard del lenguaje Python, mientras que en C++ ha de
recurrirse a algoritmos más extensos y detallados para lograr
programas que realicen operaciones aritméticas con estos tipos de
números. El siguiente ejemplo se puede realizar fácilmente por
medio de un algoritmo secuencial en Python, no así en C++,
aunque tampoco es imposible.
Ejemplo 8. Crear un programa
que lea por teclado dos
números fraccionarios a y b, y
que calcule y presente en
pantalla la suma, la diferencia, el
producto y el cociente de
dichos números.
Observaciones:
Lo primero que debemos resaltar es que para usar la función Fraction tenemos que
importarla de la librería fractions (que es parte de la librería standard de Python), esto se
establece en la primera línea.
Lo segundo, es que aquí mostramos una manera más rápida para leer un dato y
transformarlo al tipo de número que queremos, ya que hacemos ambas cosas en una
misma línea:
a = Fraction(input()) se lee y se convierte a la vez.
Y se utiliza el mismo procedimiento con el valor b:
b = Fraction(input())
Una alternativa para desarrollar este proyecto en C++ podría
ser el definir la suma de fracciones según la fórmula:
(a/b)+(c/d)=(ad+bc)/(bd) donde a, b, c y d son enteros que el
usuario podría ingresar por teclado, (Este es un reto que usted
puede proponerse) con el inconveniente de que la fracción así
obtenida no estaría simplificada, simplificarla requeriría código
adicional más avanzado. De manera similar se podría trabajar
con la resta, el producto y la división, pero la complejidad
contrasta con la sencillez (y exactitud) del programa en Python.
En el siguiente ejemplo trabajaremos con números complejos.
Ejemplo 9. Crear un programa similar al ejemplo
anterior pero que opere con dos números
complejos a+bi y c+di, es decir que calcule y
presente en pantalla:
(a+bi) + (c+di),
(a+bi) - (c+di),
(a+bi)·(c+di), y
(a+bi)/(c+di).
Nótese que para el programa en C++ se leen los coeficientes
a, b, c y d y las soluciones para suma, resta, producto y cociente
se construyen a base de las fórmulas ya conocidas de la
aritmética de complejos.
Compárese con la sencillez del código en Python en
donde gracias a la librería cmath (que es diferente a la
librería del mismo nombre de C++) se trabaja de
manera natural con números complejos. Basta con
leer los coeficientes a, b, c y d para declarar que
z1=complex(a,b) y que z2=complex(c,d) y se puede
ya pedir que el programa calcule z1+z2, z1-z2, z1·z2
y z1/z2. Nótese también que los números complejos
en Python utilizan la letra j en lugar de la i para
denotar la parte imaginaria.
PROGRAMAS SECUENCIALES
USANDO TURTLE PARA DIBUJAR.
El módulo Turtle que es parte de la
librería estándar de Python, nos
permite realizar dibujos sencillos
donde cada trazo constituye un paso
de un algoritmo secuencial.
Nótese que la posición del lápiz apunta inicialmente hacia la
derecha, →, la dirección hacia la cual se dibuja el trazo se
modifica haciendo que dicha dirección gire 90 grados hacia
la izquierda (left(90)), también es posible construir este
cuadrado usando el comando right() que permite girar la
dirección del trazo hacia la derecha según la cantidad de
grados que se le indique. El comando penup() permite
levantar el lápiz para que no se dibuje nada hasta que
volvamos a bajar la punta usando el comando pendown().
Esto permite recolocar la punta del lápiz en otras
posiciones del plano cartesiano, o desplazarse sin que quede
marca en el dibujo. El comando forward nos permite
especificar un avance en la dirección en la que se encuentre
el lápiz.
Ejemplo 2: Crear un programa que dibuje un círculo de radio 100.
TAREA
Diseñar por medio de diagrama de flujo y posteriormente
desarrollar en C++ y Python:
1. Crear un programa que envíe por pantalla el mensaje “este es
mi primer programa de 2021”
2. Crear un programa que lea por teclado la edad del usuario y que
presente en pantalla el mensaje “El usuario tiene [edad]
años”.
3. Crear un programa que lea tres números enteros o decimales por
teclado, y luego presente la suma de los dos primeros,
multiplicada por el tercer número.
4. Crear un programa que lea cuatro números enteros o decimales
a, b, c y d. El programa deberá calcular el resultado de
𝑎
𝑏
+ 𝑐 𝑑.
5. Crear un programa que lea por teclado cuatro números a, b, c y
d. El programa deberá calcular el valor de 𝑎𝑏 − 𝑐𝑑.
7. Crear un programa que lea el radio de una esfera y que calcule y
presente en pantalla el volumen y la superficie de dicha esfera.
8. Crear un programa que lea por teclado las medidas de los tres lados
de un triángulo y calcule y presente en pantalla el área de dicho
triángulo.
9. Crear un programa que lea por teclado una temperatura en grados
Celsius y la transforme a grados Fahrenheit y que presente dicha
temperatura en pantalla.
10.Crear un programa que lea por teclado una temperatura en grados
Fahrenheit y que la transforme a grados Celsius y presente el
resultado en pantalla.
11.Crear un programa que lea por teclado el largo, el ancho y el
espesor de un paralelepípedo y que calcule su superficie y su
volumen y que presente ambos resultados en pantalla.
12. Crear un programa que lea por teclado el precio de venta de
tres productos A, B, y C. El programa deberá calcular la suma de
los tres productos (subtotal), el ITBMS correspondiente a dicho
subtotal, y el costo final, y deberá presentar en pantalla los tres
resultados. Ejemplo:
Producto A: 45.78
Producto B: 17.36
Producto C: 5.75
Subtotal: 68.89
ITBMS: 4.82
TOTAL 73.71