Upload
cally-rivera
View
37
Download
3
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
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]
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;
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
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
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”)
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))
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
5COP101 – Linguagens de ProgramaçãoAula 2 – Clojure/LISP
Iniciando com a Clojure
8Sylvio Barbon Jr – [email protected]
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"
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"])
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
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))
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.