[HTDP] <2.2 变量和程序>

exercise_2.2.scm

#lang racket/base

;;; [HTDP] <2.2 变量和程序> <习题 2.2.1>
;;; <合约> Fahrenheit->Celeiue : number->number
;;; <用途> 图形化的操作将华氏温度转化为摄氏温度
(require htdp/convert) ;; 包含"convert.rkt"
(define Fahrenheit->Celeiue ; 定义转换规则
  (lambda (Fahrenheit)
    (* (- Fahrenheit 32) (/ 5 9))))

(convert-gui Fahrenheit->Celeiue) ;; 图像界面, 转换温度
(convert-repl Fahrenheit->Celeiue) ;; 交互输入, 转换温度
(convert-file "in.dat" Fahrenheit->Celeiue "out.dat") ;; 输入输出都在指定文件中, 转换温度

#lang racket/base

;;; [HTDP] <2.2 变量和程序> <习题 2.2.2>
;;; <合约> dullar->euro : number->number
;;; <用途> 将美元转换为欧元
(define RATE 0.82338) ;; 1美元=0.8238欧元
(define dullar->euro ; 定义转换规则
  (lambda (dullar)
    (* dullar RATE)))

(dullar->euro 1) ; 0.82338
(dullar->euro 30) ; 24.7014

;;; [HTDP] <2.2 变量和程序> <习题 2.2.3>
;;; <合约> triangle : (number number)->number
;;; <用途> 输入三角形的底和高计算三角形的面积
(define triangle ; 定义计算规则
  (lambda (bottom height)
    (/ (* bottom height) 2)))

(triangle 1 2) ; 1
(triangle 23 6) ; 69

;;; [HTDP] <2.2 变量和程序> <习题 2.2.4>
;;; <合约> convert3 : (number number number)->number
;;; <用途> 输出三个数字组成的数值
(define convert3 ; 定义计算规则
  (lambda (number1 number2 number3)
    (+ (* number1 1) (* number2 10) (* number3 100))))

(convert3 1 2 3) ; 321

;;; [HTDP] <2.2 变量和程序> <习题 2.2.5>
;;; <合约> function1 : number->number
;;; <用途> n^2 + 10
(define function1 ; 定义计算规则
  (lambda (number)
    (+ (* number number) 10)))

(function1 4) ; 26

;;; [HTDP] <2.2 变量和程序> <习题 2.2.5>
;;; <合约> function2 : number->number
;;; <用途> (1/2) * n^2 + 20
(define function2 ; 定义计算规则
  (lambda (number)
    (+ (* (/ 1 2) (* number number)) 20)))

(function2 20) ; 220

;;; [HTDP] <2.2 变量和程序> <习题 2.2.5>
;;; <合约> function3 : number->number
;;; <用途> 2-(1/n)
(define function3 ; 定义计算规则
  (lambda (number)
    (- 2 (/ 1 number))))

(function3 4) ; 7/4


你可能感兴趣的:(Scheme)