13
5COP101 – Linguagens de Programação Aula 2 – Clojure/LISP 5COP101 Linguagens de Programação Aula 2 Clojure/LISP Prof. Dr. Sylvio Barbon Junior 1 Sylvio Barbon Jr – [email protected]

5COP101 Linguagens de Programação

Embed Size (px)

DESCRIPTION

Aula 2 Clojure/LISP Prof. Dr. Sylvio Barbon Junior. 5COP101 Linguagens de Programação. Sylvio Barbon Jr – [email protected]. 1. Sumário. 1) Razões para Estudar Clojure; 2) Obtendo a Clojure; 3) REPL; 4) Iniciando com a Clojure;. Sylvio Barbon Jr – [email protected]. 2. - PowerPoint PPT Presentation

Citation preview

Page 1: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

5COP101

Linguagens de Programação

Aula 2Clojure/LISP

Prof. Dr. Sylvio Barbon Junior

1Sylvio Barbon Jr – [email protected]

Page 2: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

Sumário

2Sylvio Barbon Jr – [email protected]

1) Razões para Estudar Clojure;

2) Obtendo a Clojure;

3) REPL;

4) Iniciando com a Clojure;

Page 3: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

Razões para Estudar Clojure

3Sylvio Barbon Jr – [email protected]

- A Clojure utiliza os recursos da JVM (Swing, SWT, “reliability”);- É um dos dialetos mais populares do LISP;- Foco em programação funcional em ambientes de desenvolvimento corporativo;- A Clojure oferece soluções de ambiente concorrentes e paralelização;- “Mistura” de Ruby + Python + Java + LISP

Page 4: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

Obtendo a Clojure

4Sylvio Barbon Jr – [email protected]

1) Java Runtime

2) clojure-1.4.0.jar

3) IDE: Leiningen ou Eclipse

* Versão atual é a 1.6

Page 5: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

REPL

5Sylvio Barbon Jr – [email protected]

- Ambiente de híbrido de implementação e execução;

- R: Read (código lido como entrada)

- E: Eval (avaliação do código)

- P: Print (saída da interpretação é escrita)

- L: Loop (controles para retornar ao passo “read”)

Page 6: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

Iniciando com a Clojure

6Sylvio Barbon Jr – [email protected]

% java -cp clojure-1.4.0.jar clojure.mainClojure 1.4.0user=>

public static double average (double[] numbers) {double sum = 0;for (int i = 0; i < numbers.length; i++) {

sum += numbers[i];}return sum / numbers.length;

}

(defn average[numbers](/ (apply + numbers) (count numbers)))

(defn average[numbers](/ (apply + numbers) (count numbers))

Page 7: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

Iniciando com a Clojure

7Sylvio Barbon Jr – [email protected]

(average [60 80 100 400]);= 160

(println (average [60 80 100 400])); 160;= nil

Page 8: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

Iniciando com a Clojure

8Sylvio Barbon Jr – [email protected]

Page 9: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

Iniciando com a Clojure

9Sylvio Barbon Jr – [email protected]

- Scalar Literals:– String:

– Booleans: true/false

– nil: null (Java)

– Characters:

– Keywords:

"hello there";= "hello there"

\o41;= \!

(def person {:name "Sandra Cruz":city "Portland, ME"});= #'user/person(:city person);= "Portland, ME"

Page 10: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

Iniciando com a Clojure

10Sylvio Barbon Jr – [email protected]

- Scalar Literals:– Symbols:

– Numbers:

– Expressão Regular:

(average [60 80 100 400]);= 160

(re-seq #"(\d+)-(\d+)" "1-3");= (["1-3" "1" "3"])

Page 11: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

Iniciando com a Clojure

11Sylvio Barbon Jr – [email protected]

- Scalar Literals:– Comentário: “;” ou “#_(xxxxx)”

– Espaço e vírgula: mesma função separar itens.(= [1 2 3] [1, 2, 3]);= true

Page 12: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

Iniciando com a Clojure

12Sylvio Barbon Jr – [email protected]

// Javapublic void hello(String name) { System.out.println("Hello, " + name);}; Clojure(defn hello [name] (println "Hello," name))

Page 13: 5COP101  Linguagens de Programação

5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP

Referências1- Sebesta, R. Conceitos de Linguagens de Programação. 5ª Edição. Porto

Alegre. Bookman, 2003.

2 – Chas Emerick, Brian Carper, Christophe Gand, Clojure Programming., O'really, 2012.