http://www.scigwi.org/Members/offray/htdp.es/htdp.es/htdp.es.0.1.pdf


En Phyton

editar

Ejercicio 2.2

editar
#Evaluar las raíces de 4, 2 y -1. Calcular la tangente de un ángulo.
# Raíces:
import math
def raiz (x):
return (math.sqrt x)
print raiz (4)
print raiz (2)
print raiz (-1)
math.sqrt(4)
math.sqrt(2)# Tangente de un ángulo:
  1. import math
  2. math.tan(ángulo en radianes)

import math math.tan(math.pi)

math.sqrt(-1)
  1. Tangente de un ángulo:
  2. import math
  3. math.tan(ángulo en radianes)

import math math.tan(math.pi)

# Tangente de un ángulo:
# import math
# math.tan(ángulo en radianes)
import math
print math.tan(math.pi)

Ejercicio 2.3

editar
#Programa Fahrenheit->Celsius que consume una temperatura medida en Fahrenheit y produce el equivalente Celsius:
def Fa_A_Cel (F):
   return ((F-32)*(5/9))
   print Fa_A_Cel(41)
# Ejemplo:
Fahrenheit_A_Celsius(41)

Ejercicio 2.4

editar
#Programa dolar->euro que recibe una cantidad en dólares y retorna el equivalente en euros
def Dolar_A_Euro (do):
    return (do*(3313.42/2682.34))
    print Dolar_A_Euro(50)
# Ejemplo: 
Dolar_A_Euro (50)

Ejercicio 2.5

editar
#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)
   print triangulo (5 , 6)
# Ejemplo:
triangulo (5,6)

Ejercicio 2.6

editar
#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))
    print comvert3 (1 , 2 , 3)
   # Ejemplo:
convert3(1,2,3)

Ejercicio 2.7

editar
# 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(n)
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

editar
#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/100))
    print impuesto (2000)
def pago (horas):
    return (12*horas)
    print pago (48)
# Ejemplos:
impuesto (2000)
    pago (48)


Ejercicio 2.9

editar
#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
    print suma_monedas (1 , 2 , 3 , 4)
# Ejemplo:
suma_monedas(1,2,3,4)

Ejercicio 2.10

editar
#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óntotal-gananciaa, que recibe el número de asistentes y retorna cuántos ingresosse producen.
def ganancia_total (asistentes):
    return ((5*asistentes)-(20+(0.5*asistentes)))
    print ganacia_total (120)

# Ejemplo: 
ganancia_total (120)


Algunos elementos de programacion

editar

Diseño de una funcion

editar
I.Contrato:Nombre de la funcion
II.Tipos de variable
III. Proposito:Que hace la funcion
IV. Definicion:Codigo de la funcion
V. Prueba:Se invoca la funcion y se indica cual es el resultado empleado


En Dr Scheme

editar

En esta seccion se colocan algunos ejercicio extraidos de la lectura H

Ejercicio 2.1.

editar
;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 (sin ángulo en radianes). Ejemplo:

(sin (/ pi 2))

; Determinar el máximo de dos números (max num1 num2). Ejemplo:

(max 1 6)

Ejemplo 2.2

editar
; Evaluar las raíces de 4, 2, -1:

(sqrt 4) (sqrt 2) (sqrt -1)

; Tangente de un ángulo (tan ángulo en radianes). Ejemplo:

(tan pi)

Ejemplo 2.3

editar
;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")

Ejemplo 2.4

editar
;Defina el programa dolar->euro que consume un número de dólares y produce un equivalente en euros.

(define (dolar->euro d)

(/ (* d 3313.42) 2682.34))

(dolar->euro 50)

Ejercicip 2.5

editar
;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))

(area-triangulo 5 6)

;Ejemplo: Calcular el área del triángulo con base 5 y altura 6


Ejercicio 2.6

editar
;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))

(convert3 1 2 3)


Ejercicio 2.7

editar
;Evalue las siguientes expresiones   ,  ,  ,   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.

editar
;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))

(impuesto 2000)

(define (pago-neto horas)

(* horas 12))

(pago-neto 48)

Ejercicio 2.9.

editar
;Definir el programa suma-monedas, que onsume 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.

editar
;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))))

(ganancia-total 120)

Ejercicio 2.11

editar
;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

editar
;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

editar
; 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

editar
; Ejecutar el siguie(+ 5 (/ 1 0nte 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)

====Ejercicio 3.1.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)


  1. Ejercicio 3.1.1. Determina cuántos asistentes pueden acceder si el valor del
  2. tiquete es $3.00, $4.00 y $5.00.
  3. Contrato:
  4. asistentes: número -> número
  5. 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.1.2.

editar
; 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)


  1. Ejercicio 3.1.2. Usa los resultados del ejercicio 3.1.1. para determinar el
  2. costo de una función de $3.00, $4.00 y $5.00. También determina los ingresos
  3. que cada función produce con esos precios. Finalmente, calcula cuál es la
  4. ganancia en cada función. ¿Cuál es el mejor precio para maximizar la ganancia?
  5. Contrato:
  6. ganancia: número -> número
  7. determina la ganancia, la diferencia entre ingresos y costos, recibiendo el
  8. valor del tiquete
  9. Contrato:
  10. ingresos: número -> número
  11. calcula los ingresos a partir del valor del tiquete
  12. Contrato:
  13. costo: número -> número
  14. obtiene el costo del show mediante el valor del tiquete
  15. Contrato:
  16. asistentes: número -> número
  17. 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)

  1. Para maximizar la ganancia del teatro, el mejor precio del tiquete es $3.00 y
  2. la ganancia de $1063.2


Ejercicio 3.1.3.

editar
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)


(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
  1. Ejercicio 3.1.3. Determinar la ganancia que el propietario del teatro hace con
  2. $3.00, $4.00 y $5.00 usando las definiciones del programa de las dos columnas.
  3. Con "How to design programs":
  4. Contrato:
  5. ganancia: número -> número
  6. determina la ganancia, la diferencia entre ingresos y costos, recibiendo el
  7. valor del tiquete
  8. ingresos: número -> número
  9. calcula los ingresos a partir del valor del tiquete
  10. costo: número -> número
  11. obtiene el costo del show mediante el valor del tiquete
  12. asistentes: número -> número
  13. 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)

  1. Con "How not to design programs":
  2. Contrato:
  3. GANANCIA: número -> número
  4. 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.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.1.4.

editar
; 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
  1. Ejercicio 3.1.4. Después de estudiar el costo de la función, el propietario
  2. descubre algunas formas de bajar el costo. Como resultado de sus reformas, el
  3. propietario ya no paga un costo fijo. Ahora simplemente paga $1.50 por asistente.
  4. Modifica ambos programas y prueba de nuevo con los precios del tiquete de $3.00,
  5. $4.00 y $5.00, y compara los resultados.
  6. Con "How to design programs":
  7. Contrato:
  8. ganancia: número -> número
  9. determina la ganancia, la diferencia entre ingresos y costos, recibiendo el
  10. valor del tiquete
  11. ingresos: número -> número
  12. calcula los ingresos a partir del valor del tiquete
  13. costo: número -> número
  14. obtiene el costo del show mediante el valor del tiquete
  15. asistentes: número -> número
  16. 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)

  1. Con "How not todesign programs":
  2. Contrato:
  3. GANANCIA: número -> número
  4. 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)

  1. Para maximizar la ganancia del teatro, el mejor valor del tiquete es $4.00 y la
  2. ganancia es $675.


Ejercicio 3.2.1.

editar
; 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)
  1. ejercicio 3.2.1
  2. proporcionar variables definidas para todas las constantes que aparecen
  3. en el programa ganancia de la figura 5 y reemplace las constantes con sus
  4. nombres.
  5. contrato:
  6. ganancia : numero->numero
  7. profit  : numero->numero
  8. proposito: propocionar variables definidas a las constantes de dos programas
  9. ejemplo: ganancia(5) debe producir 415.2 ; profit(5) debe producir 415.2

m = 150 teatro = 180 pb = 120 vtb = 5 cp = .04

  1. 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)
  1. 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 )

  1. el resultado e sperado es 1063.2

profit(3 )

  1. el resultado esperado es 1063.2

print ganancia(4)

  1. el resultado esperado es 889.20000000000005

profit(4)

  1. el resultado esperado es 889.20000000000005

print ganancia(5)

  1. el resultado esperado es 415.19999999999999

profit(5)

  1. el resultado esperado es 415.1999999999999


Ejercicio 3.3.1.

editar
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)
  1. Ejercicio 3.3.1. Los Estados Unidos usan el Sistema Inglés de medidas. El resto
  2. del mundo usa el sistema métrico. La siguiente tabla muetsra las 6 unidades
  3. principales de medidas de longitud del Sistema Inglés:
  4. Inglés Métrico
  5. 1 inch = 2.54 cm.
  6. 1foot = 12 in.
  7. 1 yard = 3 ft.
  8. 1 rod = 5(1/2) yd.
  9. 1 furlong = 40 rd.
  10. 1 mile = 8 fl.
  11. Crear las funciones inches->cm, feet->inches, yards->feet, rods->yards,
  12. furlongs->rods, y miles->furlongs.
  13. Luego desarrolla las funciones feet->cm, yards->cm, rods->inches, y miles->feet.
  14. Definición de constantes:

INCH = 2.54 FOOT = 12 YARD = 3 ROD = 5.05 FURLONG = 40 MILE = 8

  1. Contrato:
  2. inches_cm: número -> número
  3. recibe pulgadas y retorna el equivalente en centímetros

def inches_cm (inches):

   return (inches * INCH)
  1. Contrato:
  2. feet_inches: número -> número
  3. recibe pies y retorna el equivalente en pulgadas

def feet_inches (feet):

   return (feet * FOOT)
  1. Contrato:
  2. yards_feet: número -> número
  3. recibe yardas y retorna el equivalente en pies

def yards_feet (yards):

   return (yards * YARD)
  1. Contrato:
  2. rods_yards: número -> número
  3. recibe rods y retorna el equivalente en yardas

def rods_yards (rods):

   return (rods * ROD)
  1. Contrato:
  2. furlongs_rods: número -> número
  3. recibe furlongs y retorna el equivalente en rods

def furlongs_rods (furlongs):

   return (furlongs * FURLONG)
  1. Contrato:
  2. miles_furlongs: número -> número
  3. 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)))))
  1. 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)

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.


Ejercicio 3.3.2.

editar
; 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)
  1. Ejercicio 3.3.2. Desarrolla el programa volumen_cilindro. Este consume el radio
  2. de la base de un cilindro y su altura; retorna el volumen del cilindro.
  3. Contrato:
  4. volumen_cilindro: número número -> número
  5. 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)
  1. Ejemplo:
  2. Un recipiente con forma de cilindro circular recto mide 35 cm. de altura y 16 cm.
  3. de diámetro. Encuentre el volumen del cilindro.

print volumen_cilindro (8,35)

  1. Respuesta: 7037.16

Ejercicio 3.3.3.

editar
; 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)
  1. Ejercicio 3.3.3. Desarrolla area_cilindro. El programa recibe el radio de la
  2. base del cilindro y su altura. EL resultado es el área de la superficie del
  3. cilindro.
  4. Contrato:
  5. area_cilindro: número número -> número
  6. 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))
  1. Ejemplo: Un recipiente con forma de cilindro circular recto mide 35 cm. de
  2. altura y 16 cm. de diámetro. Encuentra el área del cilindro.

print area_cilindro (8,35)

  1. Respuesta: 2161.41


 ====Ejercicio 3.3.4.====


;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)
  1. ejercicio 3.3.4
  2. desarrollar la funcion area_tubo, computa la superficie del area de un tubo,
  3. el cual es un cilindro abierto. el programa consume tres valores; el radio
  4. interno del tubo, la longitud y el grosor.
  5. contrato: area_tubo: numero numero numero -> numero
  6. proposito: hallar el area de un tubo.
  7. 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)

  1. el resultado esperado es 402.12385965949352


Ejercicio 3.3.5.

editar
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)
  1. Ejercicio 3.3.5. Dessarrolla el programa altura, que determina la altura que
  2. alcanza un cohete en cierto tiempo. Si el cohete acelera a una constante g,
  3. este alcanza una velocidad g·t en unidades de tiempo t y una altura de 1/2·v·t
  4. donde v es la velocidad en el tiempo t.
  5. Contrato:
  6. altura: número número -> número
  7. recibe la aceleración g y un tiempo t, retorna la altura
  8. velocidad: número número -> número
  9. 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)
  1. Ejemplo: Determinar la altura y la velocidad que alcanza un cohete cuya aceleración
  2. es de 10 m/s^2 en 300 segundos.

print altura (10,300) print velocidad (10,300)

  1. Respuesta esperada: altura = 1500 , velocidad = 3000


ejercicio 3.3.6

editar
;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 )


  1. ejercicio 3.3.6
  2. renombre el programa fahrenheit->celsius del ejercicio 2.2.1 . el programa
  3. consume una temperatura medida en fahrenheit y produce el equivalente en
  4. celsius. desarrollar el programa celsius->fahrenheit, el cual consume una
  5. temperatura medida en celsius y produce el equivalente en fahrenheit.
  6. contrato: celsius_fahrenheit : numero->numero
  7. proposito: convierte una temperatura medida el celsius y produce su
  8. equivalente en fahrenheit.
  9. ejemplo: celsius-fahrenheit ( -2 ): debe producir 28.4

def celsius_fahrenheit(t):

   return ((9/5.0)* t ) + 32

print celsius_fahrenheit(-2)

  1. el resultado esperado es 28.4