Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior | ||
temas:programacao:fp [2015/10/11 20:39] phil [4) Funções são cidadãos do primeiro classe] |
temas:programacao:fp [2017/04/26 20:45] phil |
||
---|---|---|---|
Linha 17: | Linha 17: | ||
(1 2 (3 4)) | (1 2 (3 4)) | ||
- | Expressões também são listas. Sempre o nome do operador ou função como a primeiro elemento do lista e as operandos / argumentos depois. | + | Expressões também são listas. Sempre o nome do operador ou função como o primeiro elemento do lista e as operandos / argumentos depois. |
(+ 2 2) | (+ 2 2) | ||
Linha 25: | Linha 25: | ||
=== Exerciso 1.=== | === Exerciso 1.=== | ||
- | Traduze esta expressão em Lisp e avalia no sua computador | + | Traduze esta expressão em Lisp e avalia no seu computador |
3 * (5 + 9) | 3 * (5 + 9) | ||
Linha 66: | Linha 66: | ||
(define x 15) | (define x 15) | ||
- | |||
(if (< 10 x) " | (if (< 10 x) " | ||
Linha 73: | Linha 72: | ||
(define (f x) (* x x)) | (define (f x) (* x x)) | ||
- | |||
(f 8) | (f 8) | ||
Linha 105: | Linha 103: | ||
(list 1 2 3 4) | (list 1 2 3 4) | ||
- | |||
(range 10) | (range 10) | ||
| | ||
Linha 130: | Linha 127: | ||
(define (vv xs) (cons (car (cdr xs)) (list (car xs)))) | (define (vv xs) (cons (car (cdr xs)) (list (car xs)))) | ||
- | |||
(vv ' | (vv ' | ||
Linha 195: | Linha 191: | ||
===== E agora, vamos brincar ===== | ===== E agora, vamos brincar ===== | ||
+ | |||
+ | #lang racket | ||
+ | |||
+ | (require racket/ | ||
+ | (require racket/ | ||
+ | |||
+ | (define target (make-bitmap 400 400)) | ||
+ | (define dc (new bitmap-dc% [bitmap target])) | ||
+ | (make-object image-snip% target) | ||
+ | |||
+ | |||
+ | (define (:x p) (car p)) | ||
+ | (define (:y p) (cadr p)) | ||
+ | |||
+ | (define (desenha dc forma cor) | ||
+ | (send dc set-pen cor 3 ' | ||
+ | (if (< (sequence-length forma) 2) '() | ||
+ | (let ([p1 (car forma)] | ||
+ | [p2 (cadr forma)] ) | ||
+ | (send dc draw-line (:x p1) (:y p1) (:x p2) (:y p2)) | ||
+ | (desenha dc (cdr forma) cor) ) ) | ||
+ | ) | ||
+ | |||
+ | |||
+ | (define quad1 '( (0 0) (0 100) (100 100) (100 0) (0 0))) | ||
+ | (define quad2 '( (100 200) (100 300) (200 300) (200 200) (100 200))) | ||
+ | |||
+ | (define cena (list quad1 quad2)) | ||
+ | |||
+ | (define (repaint dc) | ||
+ | (for ([forma cena]) | ||
+ | (desenha dc forma " | ||
+ | ) | ||
+ | ) | ||
+ | |||
+ | (define frame (new frame% | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | (new canvas% [parent frame] | ||
+ | | ||
+ | (lambda (canvas dc) | ||
+ | (repaint dc) | ||
+ | )]) | ||
+ | |||
+ | (send frame show #t) | ||
+ | |||
+ | |||
+ | | ||
+ | Obs : Mais informacao dos funcoes do desenha em Racket sao aqui : http:// | ||
+ |