Linguagem Funcional Scala

17
UFERSA – Universidade Federal Rural do Semi-Árido Davi Matos * Linguagem Scala

Transcript of Linguagem Funcional Scala

Page 1: Linguagem Funcional Scala

UFERSA – Universidade Federal Rural do Semi-Árido

Davi Matos

*Linguagem Scala

Page 2: Linguagem Funcional Scala

*Programação Funcional• Baseadas em funções matemáticas;

• Alto nível de abstração;

• Não dependência de operações;

• Dados imutáveis;

• Abstração Lambda;

• Redução do código-fonte;

• Maior velocidade;

• Facilita a implementação;

Page 3: Linguagem Funcional Scala

*Programação Funcional• Linguagens mais famosas:• Lisp

• Haskell

• OCaml

• Python

• Scala

Page 4: Linguagem Funcional Scala

*Linguagem Scala• Criada em 2001 por

Martin Odersky;

• Algumas frustrações com Java;

• Melhorar experiência Java;

• Primeiro release público em 2003;

Page 5: Linguagem Funcional Scala

*Linguagem Scala• Paradígma Orientado ao Objeto;

• Paradígma Funcional;

• Roda sobre a JVM;

• Não é uma extensão de Java, pois possui sintaxe e construções próprias;

• Integração com Java e .NET;

Page 6: Linguagem Funcional Scala

*Linguagem Scala

Page 7: Linguagem Funcional Scala

*Linguagem Scala• Declaração de tipo variáveis omitidas;

• Ponto e virgula omitido;

• Operadores são métodos;

Page 8: Linguagem Funcional Scala

*Linguagem Scala• If’s ternários (numa linha só);

• For pode retornar valores;

Page 9: Linguagem Funcional Scala

*Linguagem Scala• Parâmetros de construtores

implícitos;

Page 10: Linguagem Funcional Scala

*Scala no Cenário Funcional• Principal interesse: Resolver o

problema de multicores;

• Imutabilidade;

Page 11: Linguagem Funcional Scala

*Scala no Cenário Funcional• Função de Ordem Superior;

• Funções podem ser passadas e retornadas

Page 12: Linguagem Funcional Scala

*Recursos de Scala • Método Apply para Strings;

• Pré-Condições;

Page 13: Linguagem Funcional Scala

*Recursos de Scala• Traits

• Funcionamento semelhante a Interface

Page 14: Linguagem Funcional Scala

*Recursos de Scala• Pattern Match

• Funcionamento semelhante ao switch

Page 15: Linguagem Funcional Scala

*Ping-Pong Scala

Page 16: Linguagem Funcional Scala

*Ping-Pong Scala• Utilizando bibliotecas Java:

• AWT;

• Swing;

• Plotando elementos

• setPaint();

• fillRect();

• fillOval();

Page 17: Linguagem Funcional Scala

*Ping-Pong Scala• Movimentos

• Bola: Começa no centro e velocidade crescente;

• Barras: Via teclado, teclas UP/DOWN, W/S

• Tratamentos de colisões:

• Bola > barras;

• Bola > bordas;

• Bola saindo da tela