Professional Documents
Culture Documents
Lect - 3 PL Intervals Enumerations
Lect - 3 PL Intervals Enumerations
IT Department 2020-2021
Term - 2
Course
Programming Languages
Lecture -3
Intervals, Enumerations,
and Itemizations
Dr. Mohanad Rajab
1. Enumerations
it defines a collection of data as a finite number of pieces of data.
2
2. intervals
is a description of a class of numbers via boundaries.
3
(define W 300)
(define H 210)
(define CL (/ H 3))
(define SC (empty-scene W H))
(define UFO
(overlay (circle 10 "solid" "green")
(rectangle 40 4 "solid" "green")) )
(define (main y0) Interactive6.rkt
(big-bang y0
[on-tick nxt]
[to-draw render/status]))
(define (nxt y)(+ y 1))
(define (put y)(place-image UFO 150 y SC))
(define (render/status y)
(cond
[(<= 0 y CL) (place-image (text "DDD" 11 "green") 40 40(put y))]
[(and (< CL y) (<= y H)) (place-image (text "CCC" 11 "orange") 40 40 (put y))]
[(> y H) (place-image (text "LLL" 11 "red") 40 40 (put y))]))
(main 0)
4
(define W 300)
(define H 210)
(define CL (/ H 3))
(define SC (empty-scene W H))
(define UFO
(overlay (circle 10 "solid" "green")
(rectangle 40 4 "solid" "green")) )
(define (main y0)
(big-bang y0
[on-tick nxt]
[to-draw render/status]))
(define (nxt y)(+ y 1)) Interactive7.rkt
(define (put y)(place-image UFO 150 y SC))
(define (render/status y)
(place-image (cond
[(<= 0 y CL) (place-image (text "DDD" 11 "green"))]
[(and (< CL y) (<= y H)) (place-image (text "CCC" 11 "orange")) ]
[(> y H) (place-image (text "LLL" 11 "red")) ])
40 40 (put y)))
(main 0)
5
(define (show rr)
(cond 3. itemization
[(string? rr) (draw-rocket R-GROUNDED)]
[(<= -10 rr -1) (place-image (text (number->string rr) 20 "red")10 (* 3/4 W)
(draw-rocket R-GROUNDED))]
[(>= rr 0) (draw-rocket (+ rr R-CENTER))]))
(define (draw-rocket rr) (place-image R R-X (- H rr) SC))
(define (launch rr key-event)
(cond
[(string? rr) (if (string=? " " key-event) -10 rr)]
[(<= -10 rr -1) rr]
[(>= rr 0) (- H rr)]))
Generalize intervals and
(define (fly rr) enumerations
(cond
[(string? rr) rr]
(define W 100) ; 28x28
[(<= -10 rr -1) (if (= rr -1) 0 (+ rr 1))]
(define H 200) ;
[(>= rr 0) (+ rr R-VELOCITY)]))
(define SC (empty-scene W H))
(define (main rr)
(big-bang rr
(define R )
[to-draw show]
(define R-CENTER (/ (image-height R) 2))
[on-key launch]
(define R-X (/ W 2))
[on-tick fly 0.5]
(define R-GROUNDED R-CENTER)
))
Interactive8.rkt (define R-VELOCITY 5)
(main "hello")
6
; A Price falls into one of three intervals:
; --- 0 through 1000
; --- 1000 through 10000 Sample Problem : tax
; --- 10000 and above.
; interpretation the price of an item
(define (sales-tax p)
(cond (sales-tax 1400)
[(and (<= 0 p) (< p 1000)) 0]
[(and (<= 1000 p) (< p 10000)) (* 0.05 p)]
[(>= p 10000) (* 0.08 p)]))
7
Sample Problem How a traffic light functions
(define (bulb on c)
(if (equal? on c)
(circle RAD "solid" (conv c))
(circle RAD "outline" (conv c))))
9
(define-struct StructureName [FieldName ...])
10
(define-struct entry [ name phone email ] )
(define p1 (make-entry "Tara Harp" "666-7770" "th@smlu.edu")
(entry-name pl) ; "Tara Harp"
(define (x+ p)
(make-posn (+ (posn-x p) 3) (posn-y p)))
(define (scene+dot p)
(place-image DOT (posn-x p) (posn-y p) MTS))
(define (reset-dot p x y me)
(cond
[(mouse=? "button-down" me) (make-posn x y)]
[else p]))
12
Designing with Itemizations
(define MISSILE-WIDTH 1)
(define MISSILE-HEIGHT 15)
(define MISSILE
(rectangle MISSILE-WIDTH MISSILE-HEIGHT "solid" "red"))
13
;; starting positions
(define UFO-X 100)
(define UFO-Y 50)
(define TANK-X 150)
(define TANK-Y (- HEIGHT (/ TANK-HEIGHT 2)))
(define TANK-SPEED 3)
(define UFO-SPEED 3)
(define MISSILE-SPEED 3)
(define JUMP 3) ; UFO randomly jumps by this amount
;; a mock-up
(define MOCK-UP (place-image UFO UFO-X UFO-Y
(place-image TANK TANK-X TANK-Y SCENE)))
14
(define (si-render s)
(cond
[(aim? s) (tank-render (aim-tank s) (ufo-render (aim-ufo s) SCENE))]
[(fired? s) (tank-render (fired-tank s) (ufo-render (fired-ufo s) (missile-render (fired-missile s) SCENE)))]))
(define (si-game-over? s)
(cond
[(aim? s) (ufo-landed? (aim-ufo s))]
[(fired? s) (or (ufo-landed? (fired-ufo s)) (ufo-hit? (fired-ufo s) (fired-missile s)))]))
(define (si-move-proper s r)
(cond
[(aim? s) (make-aim (update-ufo (aim-ufo s) r) (update-tank (aim-tank s)))]
[(fired? s) (make-fired (update-ufo (fired-ufo s) r) (update-tank (fired-tank s))
(update-missile (fired-missile s)))]))
15
(define (update-ufo u r)
(cond
[(= r 0) (make-posn (posn-x u) (+ (posn-y u) (- UFO-SPEED JUMP)))]
[(= r 1) (make-posn (- (posn-x u) JUMP) (+ (posn-y u) UFO-SPEED))]
[(= r 2) (make-posn (+ (posn-x u) JUMP) (+ (posn-y u) UFO-SPEED))]))
(define (tank-turn-left t)
(cond
[(<= 0 (tank-vel t)) (make-tank (tank-loc t) (- 0 (tank-vel t)))]
[else t]))
16
(define (tank-right s)
(cond
[(aim? s) (make-aim (aim-ufo s) (tank-turn-right (aim-tank s)))]
[(fired? s) (make-fired (fired-ufo s) (tank-turn-right (fired-tank s)) (fired-missile s))]))
(define (tank-turn-right t)
(cond
[(< (tank-vel t) 0) (make-tank (tank-loc t) (- 0 (tank-vel t)))]
[else t]))
(define (fire-missile s)
(cond
[(aim? s) (make-fired (aim-ufo s) (aim-tank s) (make-posn (+ (tank-loc (aim-tank s))
(tank-vel (aim-tank s))) (- HEIGHT (/ TANK-HEIGHT 2))))]
[(fired? s) (make-fired (fired-ufo s) (fired-tank s) (make-posn (+ (tank-loc (fired-tank s))
(tank-vel (fired-tank s))) (- HEIGHT (/ TANK-HEIGHT 2))))]))
17
Vocabulary
Beginning student language
(Implements by racket)
18
grammar
program = def-expr …
def-expr = def
| expr
expr = variable
| value
| (primitive expr expr ...)
| (variable expr expr ...)
| (cond [expr expr] ... [expr expr])
| (cond [expr expr] ... [else expr])
19
Syntactic naming conventions
; function application:
(function argument ... argument)
; function definition:
(define (function-name parameter ... parameter)
function-body)
; conditional expression:
(cond
cond-clause
...
cond-clause)
; cond clause
[condition answer]
20