Ferramentas do usuário

Ferramentas do site


temas:programacao:fp

Essa é uma revisão anterior do documento!


Introdução ao Racket

Baixa o ambiente do Racket pra sua computador http://racket-lang.org/ aqui

As ideias do Lisp (incluindo Racket, Scheme, Clojure etc.)

1) A sintaxe é muito simples.

As programas são feito de listas.

  (1 2 3) 
 

E listas dentro as listas

  (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.

  (+ 2 2)
  
  (* 3 (+ 2 5))
  

Exerciso 1.

Traduze esta expressão em Lisp e avalia no sua computador

 
  3 * (5 + 9)
 

E isso?

  4 * (1 + 2 + 3 + 4 + 5 + 6) * 5 / 10

Sua programa em Lisp e nada mais do que um series destas expressões.

Por exemplo, o expressão condicional utilizando “if” :

  (if (= 0 1) "sim" "nao")

Obs : em Racket, o “verdade” 'e #t e “falso” 'e #f

  (= 0 1)
  (= 1 1)

Ou funções que lidar com strings.

  (substring "todo bem?" 0 4)
  
  (substring "abcdefg" 3)

Utilizar “string-append” pra concatenar duas strings.

  (string-append "A" "BC")

Teste de igualidade :

  (equal? "abc" "abc")
  (equal? "abc" "abcd")

Obs : O marca do interligação pode ser utilizado nos nomes do funções e variáveis.

Criando um nome, e vinculando um valor com o nome utilizar o função “define”

  (define x 15)
  (if (< 10 x) "sim" "nao")

Criando uma função também com estrutura de lista … utilizando o função “define”

  (define (f x) (* x x))
  (f 8)

Exerciso 2.

Criar um função que receber dois argumentos strings e responde se eles tem as primeiros 4 caracteres iguais.

Eg.

  (teste "askhkjasdhk" "askhbhdifdsbkfbkdsjb") -> "sim"
  (teste "askhfdfsdkfbksdj" "lhsdlfsbdk") -> "nao"

Adaptar sua função pra receber as dois argumentos e um numero n e teste as primeiros n caracteres.

2) As listas são sua estrutura de dados mais importante

3) Recursividade é sua jeito de navegar dentro as estruturas

4) Funções são cidadãos do primeiro classe

E agora, vamos brincar

temas/programacao/fp.1444577492.txt.gz · Última modificação: 2015/10/11 15:31 por phil