Usuario:Nelson castaneda~eswikibooks
MIS MAPAS MENTALES
MIS EJERCICIOS DE HEURISTICA
CAPITULO 2 (PYTHON)
Ejercicio 2.1
- Descubra si DrPython tiene operaciones para sacar raiz de un numero y para computar el seno
de un angulo.
- Raíz de un número (math.sqrt(número)). Ejemplo:
import math math.sqrt(25)
- Seno de un ángulo (ángulo en radianes). Ejemplo:
import math math.sin(math.pi / 2)
Ejercicio 2.2
- Evaluar las raíces de 4, 2 y -1. Calcular la tangente de un ángulo.
- Raíces:
import math import cmath print math.sqrt(4) print math.sqrt(2) print cmath.sqrt(-1)
- Tangente de un ángulo:
- math.tan(ángulo en radianes)
import math print math.tan(math.pi)
Ejercicio 2.3
- Programa Fahrenheit->Celsius que consume una temperatura medida en Fahrenheit y produce el
- equivalente Celsius:
def Fahrenheit_A_Celsius (F):
return((F - 32) * (5.0 / 9.0))
- Ejemplo:
print Fahrenheit_A_Celsius(41)
Ejercicio 2.4
- Programa dolar->euro que recibe una cantidad en dólares y retorna el equivalente en euros
def Dolar_A_Euro(dolar):
return(dolar * (3313.42 / 2682.34))
- Ejemplo:
print Dolar_A_Euro(50)
Ejercio 2.5
- Programa triángulo que consume la longitud del lado del triángulo y su altura, retorna el área
- del triángulo:
def triangulo(base , altura):
return((base*altura)/2)
- Ejemplo:
print triangulo (5 , 6)
Ejercicio 2.6
- Programa convert3 que recibe 3 dígitos, empezando con el dígito menos significativo, seguido por
- el siguiente más significativo y asísucesivamente. El programa produce el número correspondiente.
def convert3 (num1,num2,num3):
return ((num3 * 100) + (num2 * 10) + (num1))
- Ejemplo:
print convert3(1,2,3)
Ejercicio 2.7
- Evaluar n/3 + 2, n^2 + 10, (1/2)n^2 + 20 y 2 - 1/n; para los valores de n=2, n=5, n=9.
def f(n):
return ((n / 3) + 2)
print f(2) print f(5) print f(9) def f(n):
return ((n * n) + 10)
print f(2) print f(5) print f(9) def f(n):
return (((1 / 2) * n * n) + 20)
print f(2) print f(5) print f(9) def f(n):
return (2 - (1 / n))
print f(2) print f(5) print f(9)
Ejercicio 2.8
- Programa impuesto que determina el impuesto por el pago bruto. La tasa de impuesto es del 15%.
- También definir pago-neto, programa que determina el pago que un trabajador recibe por un número
- de horas trabajadas. Asumiendo una tasa horaria de $12.
def impuesto (pago):
return (pago * (15.0 / 100))
def pago (horas):
return (12 * horas)
- Ejemplos:
print impuesto (2000) print pago (48)
Ejercicio 2.9
- Programa suma-monedas, que recibe cuatro números: el número de monedas de $50, $100, $500 y
- $1000; retorna la cantidad de dinero total.
def suma_monedas (m1,m2,m3,m4):
return ((m1 * 50) + (m2 * 100) + (m3 * 500) + (m4 * 1000))
- m1 = número de monedas de $50
- m2 = número de monedas de $100
- m3 = número de monedas de $500
- m4 = número de monedas de $1000
- Ejemplo:
print suma_monedas(1,2,3,4)
Ejercicio 2.10
- En un teatro cada asistente paga $5 por tiquete. Cada función cuesta al teatro $20, más $0.5 por
- asistente. Desarrolla la función total-ganancia, que recibe el número de asistentes y retorna
- cuántos ingresos se producen.
def ganancia_total (asistentes):
return ((5 * asistentes) - (20 + (0.5 * asistentes)))
- Ejemplo:
print ganancia_total (120)
Capitulo 3 (python)
Ejercicio 3.11
- Ejercicio 3.1.1. Determina cuántos asistentes pueden acceder si el valor del
- tiquete es $3.00, $4.00 y $5.00.
- Contrato:
- asistentes: número -> número
- determina el número de asistentes a partir del precio del tiquete
def asistentes(precio):
return (120+(150*(5-precio)))
print asistentes(3) print asistentes(4) print asistentes(5)
Ejercicio 3.12
- Ejercicio 3.1.2. Usa los resultados del ejercicio 3.1.1. para determinar el
- costo de una función de $3.00, $4.00 y $5.00. También determina los ingresos
- que cada función produce con esos precios. Finalmente, calcula cuál es la
- ganancia en cada función. ¿Cuál es el mejor precio para maximizar la ganancia?
- Contrato:
- ganancia: número -> número
- determina la ganancia, la diferencia entre ingresos y costos, recibiendo el
- valor del tiquete
- Contrato:
- ingresos: número -> número
- calcula los ingresos a partir del valor del tiquete
- Contrato:
- costo: número -> número
- obtiene el costo del show mediante el valor del tiquete
- Contrato:
- asistentes: número -> número
- determina el número de asistentes y recibe el valor del tiquete
def ganancia(precio):
return (ingresos(precio)-costo(precio))
def ingresos(precio):
return (asistentes(precio)*precio)
def costo(precio):
return (180+(0.4*asistentes(precio)))
def asistentes(precio):
return (120+(150*(5-precio)))
print costo(3.00) print costo(4.00) print costo(5.00) print ingresos(3.00) print ingresos(4.00) print ingresos(5.00) print ganancia(3.00) print ganancia(4.00) print ganancia(5.00)
- Para maximizar la ganancia del teatro, el mejor precio del tiquete es $3.00 y
- la ganancia de $1063.2
Ejercicio 3.13
- Ejercicio 3.1.3. Determinar la ganancia que el propietario del teatro hace con
- $3.00, $4.00 y $5.00 usando las definiciones del programa de las dos columnas.
- Con "How to design programs":
- Contrato:
- ganancia: número -> número
- determina la ganancia, la diferencia entre ingresos y costos, recibiendo el
- valor del tiquete
- ingresos: número -> número
- calcula los ingresos a partir del valor del tiquete
- costo: número -> número
- obtiene el costo del show mediante el valor del tiquete
- asistentes: número -> número
- determina el número de asistentes y recibe el valor del tiquete
def ganancia(precio):
return (ingresos(precio)-costo(precio))
def ingresos(precio):
return (asistentes(precio)*precio)
def costo(precio):
return (180+(0.4*asistentes(precio)))
def asistentes(precio):
return (120+(150*(5-precio)))
print ganancia(3.00) print ganancia(4.00) print ganancia(5.00)
- Con "How not to design programs":
- Contrato:
- GANANCIA: número -> número
- determina la ganancia y recibe el valor del tiquete
def GANANCIA (valor):
return (((120+(150*(5-valor)))*valor)-(180+(0.4*(120+(150*(5-valor))))))
print GANANCIA (3.00) print GANANCIA (4.00) print GANANCIA (5.00)
Ejercicio 3.14
- Ejercicio 3.1.4. Después de estudiar el costo de la función, el propietario
- descubre algunas formas de bajar el costo. Como resultado de sus reformas, el
- propietario ya no paga un costo fijo. Ahora simplemente paga $1.50 por asistente.
- Modifica ambos programas y prueba de nuevo con los precios del tiquete de $3.00,
- $4.00 y $5.00, y compara los resultados.
- Con "How to design programs":
- Contrato:
- ganancia: número -> número
- determina la ganancia, la diferencia entre ingresos y costos, recibiendo el
- valor del tiquete
- ingresos: número -> número
- calcula los ingresos a partir del valor del tiquete
- costo: número -> número
- obtiene el costo del show mediante el valor del tiquete
- asistentes: número -> número
- determina el número de asistentes y recibe el valor del tiquete
def ganancia(precio):
return (ingresos(precio)-costo(precio))
def ingresos(precio):
return (asistentes(precio)*precio)
def costo(precio):
return (1.50*asistentes(precio))
def asistentes(precio):
return (120+(150*(5-precio)))
print ganancia(3.00) print ganancia(4.00) print ganancia(5.00)
- Con "How not todesign programs":
- Contrato:
- GANANCIA: número -> número
- determina la ganancia y recibe el valor del tiquete
def GANANCIA (valor):
return (((120+(150*(5-valor)))*valor)-(1.50*(120+(150*(5-valor)))))
print GANANCIA (3.00) print GANANCIA (4.00) print GANANCIA (5.00)
- Para maximizar la ganancia del teatro, el mejor valor del tiquete es $4.00 y la
- ganancia es $675.
Ejercio 3.15
- ejercicio 3.2.1
- proporcionar variables definidas para todas las constantes que aparecen
- en el programa ganancia de la figura 5 y reemplace las constantes con sus
- nombres.
- contrato:
- ganancia : numero->numero
- profit : numero->numero
- proposito: propocionar variables definidas a las constantes de dos programas
- ejemplo: ganancia(5) debe producir 415.2 ; profit(5) debe producir 415.2
m = 150 teatro = 180 pb = 120 vtb = 5 cp = .04
- programa ganancia de la figura 5
def ganancia (precio_tiquete):
return ingresos(precio_tiquete) - costos(precio_tiquete)
def ingresos (precio_tiquete):
return asistentes(precio_tiquete)*precio_tiquete
def costos (precio_tiquete):
return teatro+cp*asistentes(precio_tiquete)
def asistentes (precio_tiquete):
return pb+m*(vtb- precio_tiquete)
- programa porfit de la figura 5
def profit (precio_tiquete):
return (((pb+(m*(vtb -
precio_tiquete)))*precio_tiquete)-(teatro+(cp*(pb+(m*(vtb-precio_tiquete)))))) print ganancia(3 )
- el resultado e sperado es 1063.2
profit(3 )
- el resultado esperado es 1063.2
print ganancia(4)
- el resultado esperado es 889.20000000000005
profit(4)
- el resultado esperado es 889.20000000000005
print ganancia(5)
- el resultado esperado es 415.19999999999999
profit(5)
- el resultado esperado es 415.1999999999999
Ejercicio 3.16
- Ejercicio 3.3.1. Los Estados Unidos usan el Sistema Inglés de medidas. El resto
- del mundo usa el sistema métrico. La siguiente tabla muetsra las 6 unidades
- principales de medidas de longitud del Sistema Inglés:
- Inglés Métrico
- 1 inch = 2.54 cm.
- 1foot = 12 in.
- 1 yard = 3 ft.
- 1 rod = 5(1/2) yd.
- 1 furlong = 40 rd.
- 1 mile = 8 fl.
- Crear las funciones inches->cm, feet->inches, yards->feet, rods->yards,
- furlongs->rods, y miles->furlongs.
- Luego desarrolla las funciones feet->cm, yards->cm, rods->inches, y miles->feet.
- Definición de constantes:
INCH = 2.54 FOOT = 12 YARD = 3 ROD = 5.05 FURLONG = 40 MILE = 8
- Contrato:
- inches_cm: número -> número
- recibe pulgadas y retorna el equivalente en centímetros
def inches_cm (inches):
return (inches * INCH)
- Contrato:
- feet_inches: número -> número
- recibe pies y retorna el equivalente en pulgadas
def feet_inches (feet):
return (feet * FOOT)
- Contrato:
- yards_feet: número -> número
- recibe yardas y retorna el equivalente en pies
def yards_feet (yards):
return (yards * YARD)
- Contrato:
- rods_yards: número -> número
- recibe rods y retorna el equivalente en yardas
def rods_yards (rods):
return (rods * ROD)
- Contrato:
- furlongs_rods: número -> número
- recibe furlongs y retorna el equivalente en rods
def furlongs_rods (furlongs):
return (furlongs * FURLONG)
- Contrato:
- miles_furlongs: número -> número
- recibe millas y retorna el equivalente en furlongs
def miles_furlongs (miles):
return (miles * MILE)
def feet_cm (feet):
return (inches_cm (feet_inches (feet)))
def yards_cm (yards):
return (inches_cm (feet_inches (yards_feet (yards))))
def rods_inches (rods):
return (feet_inches (yards_feet (rods_yards (rods))))
def miles_feet (miles):
return (yards_feet (rods_yards (furlongs_rods (miles_furlongs (miles)))))
- Ejemplos:
print inches_cm (1) print feet_inches (1) print yards_feet (1) print rods_yards (1) print furlongs_rods (1) print miles_furlongs (1) print feet_cm (1) print yards_cm (1) print rods_inches (1) print miles_feet (1)
Ejercicio 3.16
- Ejercicio 3.3.2. Desarrolla el programa volumen_cilindro. Este consume el radio
- de la base de un cilindro y su altura; retorna el volumen del cilindro.
- Contrato:
- volumen_cilindro: número número -> número
- recibe el radio de la base de un cilindro y su altura, retorna su volumen
import math def volumen_cilindro (radio, altura):
return (math.pi * radio * radio * altura)
- Ejemplo:
- Un recipiente con forma de cilindro circular recto mide 35 cm. de altura y 16 cm.
- de diámetro. Encuentre el volumen del cilindro.
print volumen_cilindro (8,35)
- Respuesta: 7037.16
Ejercicio 3.17
- Ejercicio 3.3.3. Desarrolla area_cilindro. El programa recibe el radio de la
- base del cilindro y su altura. EL resultado es el área de la superficie del
- cilindro.
- Contrato:
- area_cilindro: número número -> número
- recibe el radio de la base de un cilindro y su altura, retorna su volumen
import math def area_cilindro (radio,altura):
return ((2 * math.pi * radio * altura)+(2 * math.pi * radio * radio))
- Ejemplo: Un recipiente con forma de cilindro circular recto mide 35 cm. de
- altura y 16 cm. de diámetro. Encuentra el área del cilindro.
print area_cilindro (8,35)
- Respuesta: 2161.41
Ejercicio 3.18
- ejercicio 3.3.4
- desarrollar la funcion area_tubo, computa la superficie del area de un tubo,
- el cual es un cilindro abierto. el programa consume tres valores; el radio
- interno del tubo, la longitud y el grosor.
- contrato: area_tubo: numero numero numero -> numero
- proposito: hallar el area de un tubo.
- ejemplo: area_tubo ( 3,5,8 ): debe producir 401.92
import math def area_tubo(radin,grosor,long):
return 2*math.pi*(radin+grosor)*long
print area_tubo(3,5,8)
- el resultado esperado es 402.12385965949352
Ejercicio 3.19
- Ejercicio 3.3.5. Dessarrolla el programa altura, que determina la altura que
- alcanza un cohete en cierto tiempo. Si el cohete acelera a una constante g,
- este alcanza una velocidad g·t en unidades de tiempo t y una altura de 1/2·v·t
- donde v es la velocidad en el tiempo t.
- Contrato:
- altura: número número -> número
- recibe la aceleración g y un tiempo t, retorna la altura
- velocidad: número número -> número
- recibe la aceleración g y un tiempo t, retorna la velocidad
def altura (g,tiempo):
return (0.5*velocidad(g,tiempo))
def velocidad (g,tiempo):
return (g*tiempo)
- Ejemplo: Determinar la altura y la velocidad que alcanza un cohete cuya aceleración
- es de 10 m/s^2 en 300 segundos.
print altura (10,300) print velocidad (10,300)
- Respuesta esperada: altura = 1500 , velocidad = 3000
Ejercicio 3.20
- ejercicio 3.3.6
- renombre el programa fahrenheit->celsius del ejercicio 2.2.1 . el programa
- consume una temperatura medida en fahrenheit y produce el equivalente en
- celsius. desarrollar el programa celsius->fahrenheit, el cual consume una
- temperatura medida en celsius y produce el equivalente en fahrenheit.
- contrato: celsius_fahrenheit : numero->numero
- proposito: convierte una temperatura medida el celsius y produce su
- equivalente en fahrenheit.
- ejemplo: celsius-fahrenheit ( -2 ): debe producir 28.4
def celsius_fahrenheit(t):
return ((9/5.0)* t ) + 32
print celsius_fahrenheit(-2)
- el resultado esperado es 28.4
Capitulo 2 (drscheme)
Ejercicio 2.1
- Descubra si Dr Scheme tiene operaciones para sacar raiz de un numero; para computar el seno de un
angulo y para determinar el maximo de dos nuemeros. ;Raíz de un número (sqrt Número). Ejemplo: (sqrt 25) ;Seno de un ángulo (ángulo en radianes). Ejemplo: (sin (/ pi 2)) ;Determinar el máximo de dos números (max num1 num2). Ejemplo: (max 1 6)
Ejercicio 2.2
;Evaluar las raíces de 4, 2 y -1: (sqrt 4) (sqrt 2) (sqrt -1)
Ejercicio 2.3
;Defina el programa Fahrenheit->Celsius que consume una temperatura medida en ;Fahrenheit y produce el equivalente Celsius: (define (Fahrenheit->Celsius F) (* (/ 5 9) (- F 32))) ;Ejemplo: Hallar la temperatura en escala Celsius equivalente a 41ºF (Fahrenheit->Celsius 41) (convert-gui Fahrenheit->Celsius) (convert-repl Fahrenheit->Celsius) (convert-file "entrada.dat" Fahrenheit->Celsius "salida.dat")
Ejercicio 2.4
;Defina el programa dolar->euro que consume un número de dólares y produce un ;equivalente en euros. (define (dolar->euro dolar) (/ (* dolar 3313.42) 2682.34)) (dolar->euro 10) ;3313.42 y 2682.34 corresponden a los valores en pesos del Euro y del Dolar ;respectivamente.
Ejercicio 2.5
;Defina el programa triángulo que consume la longitud del lado del triángulo y su altura y produce ;el área del triángulo. (define (area-triangulo lado altura) (/ (* lado altura) 2)) ;Ejemplo: Calcular el área del triángulo con base 5 y altura 6 (area-triangulo 5 6)
Ejercicio 2.6
;Programa convert3, consume 3 dígitos, empezando con el dígito menos significativo, seguido por el siguiente más significativo y así sucesivamente. El programa produce el número correspondiente. (define (convert3 num1 num2 num3) (+ (* num3 100) (* num2 10) num1)) ;Ejemplo: (convert3 1 2 3)
Ejercicio 2.7
;Evalúe las siguientes expresiones (n / 3) + 2, n2 + 10, (1 / 2) * n2 + 20, 2 - (1 / n) para n=2, n=5 y n=9 (define (f n) (+ (/ n 3) 2)) (f 2) (f 5) (f 9) (define (g n) (+ (* n n) 10)) (g 2) (g 5) (g 9) (define (h n) (+ (* (/ 1 2) (* n n)) 20)) (h 2) (h 5) (h 9) (define (b n) (- 2 (/ 1 n))) (b 2) (b 5) (b 9)
Ejercicio 2.8
;Definir el programa impuesto que determina el impuesto sobre el pago bruto. (Taza de impuestos ;15%). Definir pago-neto, que determina el pago de un empleado del número de horas trabajadas. (Taza ;horaria de US$12) (define (impuesto pago) (/ (* 15 pago) 100)) (define (pago-neto horas) (* horas 12)) (impuesto 2000) (pago-neto 40)
Ejercicio 2.9
;Definir el programa suma-monedas, que consume cuatro números: el número de monedas de $50, $100, ;$500 y $1000 en una bolsa; produce la cantidad de dinero en la bolsa. (define (suma-monedas m1 m2 m3 m4) (+ (* m1 50)(* m2 100)(* m3 500)(* m4 1000))) (suma-monedas 1 2 3 4)
Ejercicio 2.10
;Un teatro tiene una sencilla función. Cada cliente paga US$5 por tiquete. Cada realización cuesta al teatro US$20, más US$8.50 por asistente. Desarrollar la función ganancia-total. Consume el número de asistentes y produce cuántos ingresos producen los asistentes. (define (ganancia-total asistentes) (- (* 5 asistentes) (+ 20 (* 8.50 asistentes)))
Ejercicio 2.11
;Evaluar las siguientes expresiones, leer y comprender los mensajes de error: ;(+ (10) 20) ;(10 + 20) ;En las expresiones anteriores se esperaba un nombre u operación definida después del paréntesis, pero se encontró un número ;(+ +) ;El operador "+" debe estar aplicado a argumentos
Ejercicio 2.12
;Leer los mensajes de error al ejecutar las siguientes expresiones y fijar la definición apropiada. ;(define (f 1)(+ x 10)) ; La definición de la función debe estar entre paréntesis; se requiere el nombre del primer argumento de la función (x), pero en su lugar hay un número (1). ;(define (g x) + x 10) ; Falta un paréntesis antes del operador "+" y otro para cerrar la definición de la función ;(define h(x)(+ x 10)) ;x no está definido, no es un argumento ;La definición correcta sería: (define (i x) (+ x 10))
Ejercicio 2.13
- Evaluar las siguientes expresiones gramaticalmente legales
;(+ 5 (/ 1 0)): Division por cero ;(sin 10 20): El seno solo espera un argumento y recibe 2 (10 20) ;(somef 10): Hace referencia a una "función" indefinida
Ejercicio 2.14
;Ejecutar el siguiente programa y evaluar (somef 10 20) y (somef 10) en la ventana de Interacciones: (define (somef x) (sin x x)) ;En la definición de la función somef recibe un solo parámetro y en la expresión (somef 10 20) la función recibe 2 argumentos ;En la función, el seno recibe 2 argumentos y según su definición solo recibe un argumento (en radianes)
Capitulo 3(drsheme)
Ejercicio 3.1
; Ejercicio 3.1.1. Determina cuántos asistentes pueden acceder si el valor del ;tiquete es de $3.00, $4.00 y $5.00. Usa los ejemplos para formular una regla ;general que calcule el ; número de asistentes con el valor del tiquete. ; asistentes : número -> número ; determina el número de asistentes a partir del precio del tiquete ;(define (asistentes precio-tiquete) ...) (define (asistentes precio-tiquete) (+ 120 (* (/ 15 .10) (- 5.00 precio-tiquete)))) (asistentes 3.00) (asistentes 4.00) (asistentes 5.00)
Ejercicio 3.2
; Ejercicio 3.1.2. Usa los resultados del ejercicio 3.1.1. para determinar el ;costo de un show de $3.00, $4.00 y $5.00. También determina los ingresos que ;cada show produce con esos precios. Finalmente, calcula cuál es la ganancia en ;cada show. ¿Cuál es el ; mejor precio para maximizar la ganancia? ; ganancia : número -> número ; determina la ganancia como la diferencia entre ingresos y costos, recibiendo ;el precio del tiquete ; (define (ganancia precio-tiquete) ...) ; ingresos: número -> número ; calcula los ingresos a partir del precio del tiquete ; (define (ingresos precio-tiquete) ...) ; costo : número -> número ; obtiene el costo mediante el precio del tiquete ; (define (costo precio-tiquete) ...) ; asistentes : número -> número ; determina el número de asistentes y recibe el precio del tiquete ; (define (asistentes precio-tiquete) ...) (define (ganancia precio-tiquete) (- (ingresos precio-tiquete) (costo precio-tiquete))) (define (ingresos precio-tiquete) (* (asistentes precio-tiquete) precio-tiquete)) (define (costo precio-tiquete) (+ 180 (* .04 (asistentes precio-tiquete)))) (define (asistentes precio-tiquete) (+ 120 (* (/ 15 .10) (- 5.00 precio-tiquete)))) (costo 3.00) (costo 4.00) (costo 5.00) (ingresos 3.00) (ingresos 4.00) (ingresos 5.00) (ganancia 3.00) (ganancia 4.00) (ganancia 5.00) ; Para maximizar la ganancia del teatro el mejor precio del tiquete es $3.00, y ;la ganancia $1063.2
Ejercicio 3.3
; Ejercicio 3.1.3. Determinar la ganancia que el propietario del cine hace con ; $3.00, $4.00 y $5.00 usando las definiciones del programa en dos columnas. ; Con "How to design programs": ; ganancia : número -> número ; determina la ganancia como la diferencia entre ingresos y costos, recibiendo ;el precio del tiquete ; (define (ganancia precio-tiquete) ...) ; ingresos: número -> número ; calcula los ingresos a partir del precio del tiquete ; (define (ingresos precio-tiquete) ...) ; costo : número -> número ; obtiene el costo mediante el precio del tiquete ; (define (costo precio-tiquete) ...) ; asistentes : número -> número ; determina el número de asistentes y recibe el precio del tiquete ; (define (asistentes precio-tiquete) ...) (define (ganancia precio-tiquete) (- (ingresos precio-tiquete) (costo precio-tiquete))) (define (ingresos precio-tiquete) (* (asistentes precio-tiquete) precio-tiquete)) (define (costo precio-tiquete) (+ 180 (* .04 (asistentes precio-tiquete)))) (define (asistentes precio-tiquete) (+ 120 (* (/ 15 .10) (- 5.00 precio-tiquete)))) (ganancia 3.00) (ganancia 4.00) (ganancia 5.00) ; Con "How not to design programs": ; GANANCIA : número -> número ; determina la ganancia y recibe el precio del tiquete ; (define (GANANCIA precio) ...) (define (GANANCIA precio) (- (* (+ 120 (* (/ 15 .10) (- 5.00 precio))) precio) (+ 180 (* .04 (+ 120 (* (/ 15 .10) (- 5.00 precio))))))) (GANANCIA 3.00) (GANANCIA 4.00) (GANANCIA 5.00)
Ejercicio 3.4
; Ejercicio 3.1.4. Después de estudiar el costo del show, el propietario ;descubre algunas formas de bajar el costo. Como resultado de sus reformas, el ;propietario ya no paga un costo fijo. Ahora simplemente paga $1.50 por ;asistente. Modifica ambos programas y prueba de nuevo con los precios del ;tiquete de $3.00, $4.00 y $5.00, y compara los resultados. ; Con "How to design a program": ; ganancia : número -> número ; determina la ganancia como la diferencia entre ingresos y costos con el ;precio del tiquete ; (define (ganancia precio-tiquete) ...) ; ingresos: número -> número ; calcula los ingresos a partir del precio del tiquete ; (define (ingresos precio-tiquete) ...) ; costo : número -> número ; obtiene el costo mediante el precio del tiquete ; (define (costo precio-tiquete) ...) ; asistentes : número -> número ; determina el número de asistentes y recibe el precio del tiquete ; (define (asistentes precio-tiquete) ...) (define (ganancia precio-tiquete) (- (ingresos precio-tiquete) (costo precio-tiquete))) (define (ingresos precio-tiquete) (* (asistentes precio-tiquete) precio-tiquete)) (define (costo precio-tiquete) (* 1.50 (asistentes precio-tiquete))) (define (asistentes precio-tiquete) (+ 120 (* (/ 15 .10) (- 5.00 precio-tiquete)))) (ganancia 3.00) (ganancia 4.00) (ganancia 5.00) ;Con "How not to design a program": ; GANANCIA : número -> número ; determina la ganancia y recibe el precio del tiquete ; (define (GANANCIA precio) ...) (define (GANANCIA precio) (- (* (+ 120 (* (/ 15 .10) (- 5.00 precio))) precio) (* 1.50 (+ 120 (* (/ 15 .10) (- 5.00 precio)))))) (GANANCIA 3.00) (GANANCIA 4.00) (GANANCIA 5.00) ; Para maximizar la ganancia del teatro el mejor precio del tiquete es $4.00 y ;la ganancia es $675
Ejercicio 3.5
; Ejercicio 3.2.1. Proporciona definiciones de variables para todas las ;constantes que aparecen en el programa de ganancias de la figura 5 y reemplaza ;las constantes con sus nombres. (define COSTOSHOW 180) ; Costo de cada presentación (define AUMENTOCOSTO 0.04) ; Con más de 120 asistentes el costo de la presentación aumenta en 0.04 (define ASISTENCIA 120) ; Asistentes = 120, Precio del tiquete = $5.00 (define AUMENTOASISTENCIA 15) ; Si el precio del tiquete disminuye 0.10 asisten 15 personas más (define PRECIO 0.10) ; Decremento del precio del tiquete (define TIQUETE 5.00) ; Precio del tiquete = $5.00, Asistentes = 120 ;Con "How to design programs": (define (ganancia precio-tiquete) (- (ingresos precio-tiquete) (costo precio-tiquete))) (define (ingresos precio-tiquete) (* (asistentes precio-tiquete) precio-tiquete)) (define (costo precio-tiquete) (+ COSTOSHOW (* AUMENTOCOSTO (asistentes precio-tiquete)))) (define (asistentes precio-tiquete) (+ ASISTENCIA (* (/ AUMENTOASISTENCIA PRECIO) (- TIQUETE precio-tiquete)))) ;Con "How not to design programs": (define (GANANCIA precio) (- (* (+ ASISTENCIA (* (/ AUMENTOASISTENCIA PRECIO) (- TIQUETE precio))) precio) (+ COSTOSHOW (* AUMENTOCOSTO (+ ASISTENCIA (* (/ AUMENTOASISTENCIA PRECIO) (- TIQUETE precio))))))) ; PRUEBAS: (asistentes 3.00) (costo 3.00) (ingresos 3.00) (ganancia 3.00) (GANANCIA 3.00)
Ejercicio 3.6
; Ejercicio 3.3.1. Los Estados Unidos usan el Sistema Inglés de medidas. El resto del ; mundo usa el sistema métrico. Por lo tanto, personas que viajan al extranjero y ; compañías que comercian con socios extrajeros usualmente necesitan convertir de medidas ; inglesas a las métricas y viceversa. La siguiente tabla muestra las 6 unidades ; principales medidas de longitud del Sistema Inglés: ; Inglés Métrico ; 1 inch = 2.54 cm ; 1 foot = 12 in. ; 1 yard = 3 ft. ; 1 rod = 5(1/2) yd. ; 1 furlong = 40 rd. ; 1 mile = 8 fl. ; Crear las funciones inches->cm, feet->inches, yards->feet, rods->yards, furlongs->rods, ; and miles->furlongs. ; Luego desarrolla las funciones feet->cm, yards->cm, rods->inches, and miles->feet. (define INCH 2.54) (define FOOT 12) (define YARD 3) (define ROD 5.05) (define FURLONG 40) (define MILE 8) ; inches->cm : número -> número ; recibe pulgadas y retorna el equivalente en centímetros ; (define (inches->cm inches) ...) (define (inches->cm inches) (* inches INCH) ) ; feet->inches : número -> número ; recibe pies y retorna el equivalente en pulgadas ; (define (feet->inches feet) ...) (define (feet->inches feet) (* feet FOOT) ) ; yards->feet : número -> número ; recibe yardas y retorna el equivalente en pies ; (define (yards->feet yards) ...) (define (yards->feet yards) (* yards YARD) ) ; rods->yards : número -> número ; recibe "rods" y retorna el equivalente en yardas ; (define (rods->yards rods) ...) (define (rods->yards rods) (* rods ROD) ) ; furlongs->rods : número -> número ; recibe "furlongs" y retorna su equivalente en "rods" ; (define (furlongs->rods furlongs) ...) (define (furlongs->rods furlongs) (* furlongs FURLONG) ) ; miles->furlongs : número -> número ; recibe millas y retorna el equivalente en "furlongs" ; (define (miles->furlongs miles) ...) (define (miles->furlongs miles) (* miles MILE) ) (define (feet->cm feet) (inches->cm (feet->inches feet))) (define (yards->cm yards) (inches->cm (feet->inches (yards->feet yards)))) (define (rods->inches rods) (feet->inches (yards->feet (rods->yards rods)))) (define (miles->feet miles) (yards->feet (rods->yards (furlongs->rods (miles->furlongs miles))))) ; Ejemplos: (inches->cm 1) (feet->inches 1) (yards->feet 1) (rods->yards 1) (furlongs->rods 1) (miles->furlongs 1)
Ejercicio 7
; Ejercicio 3.3.2. Desarrolla el programa volumen-cilindro. Este consume el radio de la ; base de un cilindro y su altura; y retorna el volumen del cilindro. ; volumen-cilindro : número número -> número ; recibe el radio de la base de un cilindro y su altura y retorna el volumen del cilindro ; (define (volumen-cilindro radio altura) ...) (define (volumen-cilindro radio altura) (* pi radio radio altura)) ; Ejemplo: Un recipiente con forma de cilindro circular recto mide 35 cm de altura y 16 cm ; de diámetro. Encuentre el volumen del cilindro. (volumen-cilindro 8 35)
Ejercicio 8
; Ejercicio 3.3.3. Desarrolla area-cilindro. El programa recibe el radio de la base del ; cilindro y su altura. El resultado es el área de la superficie del cilindro. ; area-cilindro : número número -> número ; recibe el radio de la base de un cilindro y su altura y determina el área del cilindro ; (define (area-cilindro radio altura) ...) (define (area-cilindro radio altura) (+ (* 2 pi radio altura) (* 2 pi radio radio))) ; Ejemplo: Un recipiente con forma de cilindro circular recto mide 35 cm de altura y 16 cm ; de diámetro. Encuentre el área del cilindro. (area-cilindro 8 35)
Ejercicio 9
;Ejercicio 3.3.4. ;desarrollar la funcion area-tubo. computa la superficie del area de un tubo, el cual es un cilindro abierto. el programa ;consume tres valores; el radio interno del tubo, la longitud y el grosor. ;CONTRATO: area-tubo : numero numero numero-> numero ;PROPOSITO:hallar el area de un tubo ;EJEMPLO:(area-tubo 3 5 8) debe producir 401.92 (define (area-tubo radin grosor long) ( * 2 3.14 ( + radin grosor) long)) (area-tubo 3 5 8)
Ejercicio 10
; Ejercicio 3.3.5. Desarrolla el programa altura, que determina la altura que alcanza ; un cohete en cierto tiempo. Si el cohete acelera a una constante g, este alcanza una ; velocidad de g · t en unidades de tiempo t y una altura de 1/2 * v * t donde v es la ; velocidad en el tiempo t. ; altura : número número -> número ; recibe la aceleración g y un tiempo t y retorna la altura ; (define (altura g tiempo) ...) ; velocidad : número número -> número ; recibe la aceleración g y un tiempo t y retorna la velocidad ; (define (velocidad g tiempo) ...) (define (altura g tiempo) (* 0.5 (velocidad g tiempo))) (define (velocidad g tiempo ) (* g tiempo)) ; Ejemplo: Determinar la altura y la velocidad que alcanza un cohete cuya aceleración es ; 10 m/s^2 en 300 segundos. (altura 10 300) (velocidad 10 300)
Ejercicio 11
;Ejercicio 3.3.6. ;Renombre el programa fahrenheit->celsius del ejercicio 2.2.1. el programa consume una temperatura medida en fahrenheit y ;produce el equivalente en celsius. Desarrollar el programa celsius -> fahrenheit, el cual consume una temperatura medida en ;celsius y produce el equivalente en fahrenheit. ;CONTRATO: celsius-fahrenheit : numero->numero ;PROPOSITO: convierte una temperatura medida en celsius y produce su equivalente en fahrenheit. ;EJEMPLO: ( celsius-fahrenheit -2 ) debe producir 28.4 (define ( celsius-fahrenheit t) (+ (*( / 9 5 ) t ) 32 )) ( celsius-fahrenheit -2 )