linguagem funcional scala
TRANSCRIPT
![Page 1: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/1.jpg)
UFERSA – Universidade Federal Rural do Semi-Árido
Davi Matos
*Linguagem Scala
![Page 2: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/2.jpg)
*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](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/3.jpg)
*Programação Funcional• Linguagens mais famosas:• Lisp
• Haskell
• OCaml
• Python
• Scala
![Page 4: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/4.jpg)
*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](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/5.jpg)
*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](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/6.jpg)
*Linguagem Scala
![Page 7: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/7.jpg)
*Linguagem Scala• Declaração de tipo variáveis omitidas;
• Ponto e virgula omitido;
• Operadores são métodos;
![Page 8: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/8.jpg)
*Linguagem Scala• If’s ternários (numa linha só);
• For pode retornar valores;
![Page 9: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/9.jpg)
*Linguagem Scala• Parâmetros de construtores
implícitos;
![Page 10: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/10.jpg)
*Scala no Cenário Funcional• Principal interesse: Resolver o
problema de multicores;
• Imutabilidade;
![Page 11: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/11.jpg)
*Scala no Cenário Funcional• Função de Ordem Superior;
• Funções podem ser passadas e retornadas
![Page 12: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/12.jpg)
*Recursos de Scala • Método Apply para Strings;
• Pré-Condições;
![Page 13: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/13.jpg)
*Recursos de Scala• Traits
• Funcionamento semelhante a Interface
![Page 14: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/14.jpg)
*Recursos de Scala• Pattern Match
• Funcionamento semelhante ao switch
![Page 15: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/15.jpg)
*Ping-Pong Scala
![Page 16: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/16.jpg)
*Ping-Pong Scala• Utilizando bibliotecas Java:
• AWT;
• Swing;
• Plotando elementos
• setPaint();
• fillRect();
• fillOval();
![Page 17: Linguagem Funcional Scala](https://reader033.vdocuments.pub/reader033/viewer/2022061611/55843ad7d8b42a77068b4dd9/html5/thumbnails/17.jpg)
*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