SlideShare uma empresa Scribd logo
1 de 197
Baixar para ler offline
programação funcional
com Ruby
potencialize e simplifique qualquer codebase.
@serradura
rodrigo.serradura@gmail.com
Objetivo
Potencializar + simplificar = ?
Potencializar + simplificar =
Código expressivo, sequencialmente lógico e
modular.
Potencializar + simplificar =
Código expressivo, sequencialmente lógico e
modular.
Por que?
Potencializar + simplificar =
Código expressivo, sequencialmente lógico e
modular.
Por que?
Como?
A simplicidade do
paradigma
funcional.
A simplicidade do
paradigma
funcional.
O poder do
Functional First
Development.
λ Paradigma funcional
O que é uma função?
O que é uma função?
É o mapeamento de uma entrada para uma saída.
O que é uma função?
É o mapeamento de uma entrada para uma saída.
O que é uma função?
É o mapeamento de uma entrada para uma saída.
Exemplo:
f(x) = x + 1
O que é uma função?
É o mapeamento de uma entrada para uma saída.
Exemplo:
f(x) = x + 1
f(2) == 3
f(3) == 4
O que é uma função?
É o mapeamento de uma entrada para uma saída.
Exemplo:
f(x) = x + 1
f(2) == 3
f(3) == 4
O output é determinado pelo input!
1. Testes automatizados visam garantir as regras de
negócios.
﹡ Testes seguem a estrutura de uma função. Ex: (Arrange, Act, Assert)
2. Linters servem de input para um código padronizado.
3. Retrospectivas ágeis avaliam o output para melhorar o
próximo input.
4. UX - Discovery > Delivery
Princípios funcionais para a vida
"Most of the biggest problems in
software are problems of
misconception.
— Rich Hickey
(Criador da linguagem Closure)
Programação funcional:
Dois fatos históricos
1. Lambda calculus
λ-calculus
Lambda Calculus
● Criada em 1930 (88 anos atrás).
● Representa computações matemáticas através de funções
anônimas.
● Exemplos de funções:
quadrado = (x) ↦ x * x
soma_dos_quadrados = (x, y) ↦ x² + y²
2. Linguagem
de programação Lisp
Lisp
● Criada em 1958 (60 anos atrás).
● Segunda linguagem de programação mais antiga. (Fortran -
imperativa - é por apenas um ano, há mais antiga.
● Sintaxe influenciada pelo λ-calculus.
● Exemplos de
funções:
Lisp
● Criada em 1958 (60 anos atrás).
● Segunda linguagem de programação mais antiga. (Fortran -
imperativa - é por apenas um ano, há mais antiga.
● Sintaxe influenciada pelo λ-calculus.
● Exemplos de
funções:
Lisp - Executando uma função anônima (λ)
Lisp - Executando uma função anônima (λ)
Lisp - Executando uma função anônima (λ)
Lisp - Executando uma função anônima (λ)
Resultado
Lisp - Executando uma função anônima (λ)
Lisp - Executando uma função anônima (λ)
Semelhanças entre
λ-calculus e LISP
Resumo até aqui...
1. Programação funcional tem origem na matemática.
2. λ-calculus: Representa computações matemáticas através de
funções anônimas.
3. LISP (a primeira linguagem funcional) tem influência do λ-calculus.
Bacana, mas o que isso tudo tem
haver com Ruby?
https://www.ruby-lang.org/en/about
Semelhanças entre
λ-calculus, LISP e Ruby
Semelhanças entre
λ-calculus, LISP, Ruby e Javascript
(Rápida curiosidade)
Para quem curtiu a introdução...
Alerta de Spoiler
Desse ponto em diante, todos os
conceitos poderão ser aplicados
em qualquer linguagem que
suporte princípios funcionais.
Ex: Javascript, Python, Java (8+), Kotlin, Swift...
Desse ponto em diante, todos os
conceitos poderão ser aplicados
em qualquer linguagem que
suporte princípios funcionais.
Ex: Javascript, Python, Java (8+), Kotlin, Swift...
Ruby é funcional?
λ + = ?%
Talk is
cheap.
Show me the
code.
Linus Torvalds
https://en.wikipedia.org/wiki/Functional_programming
https://en.wikipedia.org/wiki/Functional_programming
https://en.wikipedia.org/wiki/Functional_programming
https://en.wikipedia.org/wiki/Functional_programming
https://en.wikipedia.org/wiki/Functional_programming
https://en.wikipedia.org/wiki/Functional_programming
https://en.wikipedia.org/wiki/Functional_programming
https://en.wikipedia.org/wiki/Functional_programming
First-class functions
Uma função é um tipo de dado
como qualquer outro.
First-class functions
Função é um tipo de dado
Higher-order functions
Funções podem receber e retornar
funções
Higher-order functions (1 de 3)
Funções podem receber e retornar funções
Higher-order functions (2 de 3)
Funções podem receber e retornar funções
Higher-order functions (3 de 3)
Funções podem receber e retornar funções
Higher-order functions (3 de 3)
Pure-functions
Operações sem side-effects
(memória ou I/O)
Pure functions (1 de 4)
Operações sem side-effects (memória ou I/O)
(...
Legenda: Abrindo um rápido parêntese
Pure functions (1 de 4)
Operações sem side-effects (memória ou I/O)
Como a função tem acesso a variável counter?
Pure functions (1 de 4)
Operações sem side-effects (memória ou I/O)
Como a função tem acesso a variável counter?
Resposta: closure
Pure functions (1 de 4)
Operações sem side-effects (memória ou I/O)
O que significa closure?
Pure functions (1 de 4)
Operações sem side-effects (memória ou I/O)
O que significa closure?
R: Capacidade da função em "lembrar" do escopo em que
foi declarada.
…)
Legenda: Fechando o parêntese
Pure functions (2 de 4)
Operações sem side-effects (memória ou I/O)
Pure functions (3 de 4)
Operações sem side-effects (memória ou I/O)
Pure functions (4 de 4)
Operações sem side-effects (memória ou I/O)
Pure functions (4 de 4)
Operações sem side-effects (memória ou I/O)
Recursion
Recursion
Recursion
Strict versus non-strict evaluation
Lazy evaluation = computar um
resultado apenas quando
necessário
Strict versus non-strict evaluation
Lazy evaluation = computar um resultado apenas quando necessário
Strict versus non-strict evaluation
Lazy evaluation = computar um resultado apenas quando necessário
Type systems
O que é uma função?
É o mapeamento de uma entrada para uma saída.
Exemplo:
f(x) = x + 1
f(2) == 3
f(3) == 4
O output é determinado pelo input!
O que é uma função?
É o mapeamento de uma entrada para uma saída.
Exemplo:
f(x) = x + 1
f(2) == 3
f(3) == 4
O output é determinado pelo input!
Quanto mais garantido o input melhores
serão as garantias (corretude) do output.
Type Systems (1 de 2)
Type Systems (2 de 2)
(...
Legenda: Abrindo um rápido parêntese
Type Systems (2 de 2)
Closures!
Type Systems (2 de 2)
Assim como um Hash, lambdas
podem ser invocadas com
colchetes
…)
Legenda: Fechando o parêntese
Type Systems (2 de 2)
Imutabilidade
Referential transparency
Referential transparency (1 de 4)
Imutabilidade
Operações sem side-effects (memória ou I/O)Imutabilidade
Referential transparency (2 de 4)
Operações sem side-effects (memória ou I/O)
Referential transparency (3 de 4)
Imutabilidade
Operações sem side-effects (memória ou I/O)Imutabilidade
Referential transparency (4 de 4)
(...
Legenda: Abrindo um rápido parêntese
Operações sem side-effects (memória ou I/O)Imutabilidade
Referential transparency (4 de 4)
Operações sem side-effects (memória ou I/O)Imutabilidade
Referential transparency (4 de 4)
Em Ruby, podemos invocar
qualquer callable com .()
Operações sem side-effects (memória ou I/O)Imutabilidade
Referential transparency (4 de 4)
Em Ruby, podemos invocar
qualquer callable com .()
sum.call(1, 1)
sum.(1, 1)
…)
Legenda: Fechando o parêntese
Referential transparency
Imutabilidade
Ruby é funcional?
λ + = ?%
Photo by Maarten van den Heuvel on Unsplash
Aplicação prática
Helping the Rails helpers
Helping the Rails helpers
Imã para código procedural
Helping the Rails helpers
Imã para código ruim
Lambda, Lambda, Lambda
Parte 1 de 2
Lorem Lorem ipsum dolor sit amet, consectetur adipiscing elit. x
Refatorando em: 3, 2, 1...
(...
Legenda: Abrindo um rápido parêntese
Functional objects (Parte 1 de 2)
Functional objects (Parte 1 de 2)
Callable objects = Respondem .call
Functional objects (Parte 1 de 2)
Functional objects (Parte 1 de 2)Sua classe é um verbo e faz uma
única coisa?
Então ela se comporta como uma
função!
…)
Legenda: Fechando o parêntese
(...
Legenda: Abrindo um rápido parêntese
Currying
…)
Legenda: Fechando o parêntese
Components, Components...
Parte 2 de 2
Implementação do Components::Base
56 LOC
rails console snippets
rails console snippets
https://github.com/serradura/rails-components
Legal… Mas, só tem exemplos com
Rails?
https://github.com/serradura/request_via
Potencializar + simplificar =
Código expressivo, sequencialmente lógico e
modular.
Por que?
Como?
λ O poder do Functional
First Development
"So much complexity in software
comes from trying to
make one thing do two things."
— Ryan Singer
ActiveRecord model
ActiveRecord model
ActiveRecord model
Mapeia os registros do banco de dados para objetos Ruby
ActiveRecord model
Mapeia os registros do banco de dados para objetos Ruby
Contém as regras de validação de estado dos objetos
ActiveRecord model
Mapeia os registros do banco de dados para objetos Ruby
Contém as regras de validação de estado dos objetos
Gerencia as operações de CRUD
ActiveRecord model
Mapeia os registros do banco de dados para objetos Ruby
Contém as regras de validação de estado dos objetos
Gerencia as operações de CRUD
Permite criar comandos para serem executados antes e depois das
operações de CRUD. (callbacks)
ActiveRecord model
Mapeia os registros do banco de dados para objetos Ruby
Contém as regras de validação de estado dos objetos
Gerencia as operações de CRUD
Permite criar comandos para serem executados antes e depois das
operações de CRUD. (callbacks)
Encapsula a construção de queries complexas.
ActiveRecord model
Mapeia os registros do banco de dados para objetos Ruby
Contém as regras de validação de estado dos objetos
Gerencia as operações de CRUD
Permite criar comandos para serem executados antes e depois das
operações de CRUD. (callbacks)
Encapsula a construção de queries complexas.
Encapsula as regras de negócio da sua aplicação.
ActiveRecord model
Mapeia os registros do banco de dados para objetos Ruby
Contém as regras de validação de estado dos objetos
Gerencia as operações de CRUD
Permite criar comandos para serem executados antes e depois das
operações de CRUD. (callbacks)
Encapsula a construção de queries complexas.
Encapsula as regras de negócio da sua aplicação.
Potencializar + simplificar =
Código expressivo,
sequencialmente lógico e modular.
SOLID
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
CreateUser
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
CreateUser
CreateUser.new(UserRepository)
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
CreateUser
CreateUser.new(UserRepository)
.call == Design by contract
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
CreateUser
CreateUser.new(UserRepository)
.call == Design by contract
Composition over Inheritance
Single responsibility principle
Open/closed principle
Liskov substitution principle
Interface segregation principle
Dependency inversion principle
CreateUser
CreateUser.new(UserRepository)
.call == Design by contract
Composition over Inheritance
CreateUser é abstrato por não ter
implementar o Repository
ActiveRecord model
Mapeia os registros do banco de dados para objetos Ruby
Contém as regras de validação de estado dos objetos
Gerencia as operações de CRUD
Permite criar comandos para serem executados antes e depois das
operações de CRUD. (callbacks)
Encapsula a construção de queries complexas.
Encapsula as regras de negócio da sua aplicação.
Pensando no ActiveRecord…
Como ser SOLID já que o mesmo tem tantas
funcionalidades / responsabilidades?
ActiveRecord model
Mapeia os registros do banco de dados para objetos Ruby
Contém as regras de validação de estado dos objetos
Gerencia as operações de CRUD
Permite criar comandos para serem executados antes e depois das
operações de CRUD. (callbacks)
Encapsula a construção de queries complexas.
Encapsula as regras de negócio da sua aplicação.
Pensando no ActiveRecord…
Como ser SOLID já que o mesmo tem tantas
funcionalidades / responsabilidades?
Resposta: Crie implementações para cada uma dessas
responsabilidades!
ou melhor...
seja DRY!
(Don’t Repeat Yourself)
A simplicidade do
paradigma
funcional.
O poder do
Functional First
Development.
Opa! Calma aí…
E aquela parada de Functional First Development?
Functional First Development
First, code
everything you can
without using any
side effects.
Then, code your
side effects.
Functional First Development
dry-transaction
Talk is
cheap.
Show me the
code.
Linus Torvalds
https://github.com/serradura/backend-code-challenge
Mecanismo de entrega: HTTP
Outros tipos: Tasks (ETL), Background jobs
Domínio
Operações: R(ead)
Operações: CRUD
V
M
C
ActiveRecord, Rails... tem
um enorme poder contido.
M
V
C
ActiveRecord, Rails... tem
um enorme poder contido.
Que tal canalizar,
modularizar e maximizar
todo o potencial?
M
V
C
ActiveRecord, Rails... tem
um enorme poder contido.
Que tal canalizar,
modularizar e maximizar
todo o potencial?
λ,.( )
Potencializar + simplificar =
Código expressivo, sequencialmente lógico e
modular.
Por que?
Como?
"The cost of adding a feature isn’t just
the time it takes to code it. The cost
also includes the addition of an
obstacle to future expansion. The
trick is to pick the features that don’t
fight each other."
— John Carmack
Obrigado
@serradura
rodrigo.serradura@gmail.com

Mais conteúdo relacionado

Mais procurados

Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsHelder da Rocha
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcionalfabiocerqueira
 
Laboratório de Programação II: Threads
Laboratório de Programação II: ThreadsLaboratório de Programação II: Threads
Laboratório de Programação II: ThreadsAlex Camargo
 
Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *Alex Camargo
 
Minicurso - Web sites dinâmicos: PHP com orientação a objetos
Minicurso - Web sites dinâmicos: PHP com orientação a objetosMinicurso - Web sites dinâmicos: PHP com orientação a objetos
Minicurso - Web sites dinâmicos: PHP com orientação a objetosMaradona Morais
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamenteRodrigo Amaral
 
Python Funcional
Python FuncionalPython Funcional
Python Funcionalpugpe
 
Akka no Just Java 2012
Akka no Just Java 2012Akka no Just Java 2012
Akka no Just Java 2012Paulo Siqueira
 
Conhecendo Ruby on Rails
Conhecendo Ruby on RailsConhecendo Ruby on Rails
Conhecendo Ruby on RailsSergio Henrique
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorFelipe Hummel
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacoteManuel Menezes de Sequeira
 

Mais procurados (20)

Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
Python - Programação funcional
Python - Programação funcionalPython - Programação funcional
Python - Programação funcional
 
Curso de Python e Django
Curso de Python e DjangoCurso de Python e Django
Curso de Python e Django
 
Introdução ao paradigma funcional com scala
Introdução ao paradigma funcional com scalaIntrodução ao paradigma funcional com scala
Introdução ao paradigma funcional com scala
 
Programando com Python
Programando com PythonProgramando com Python
Programando com Python
 
Laboratório de Programação II: Threads
Laboratório de Programação II: ThreadsLaboratório de Programação II: Threads
Laboratório de Programação II: Threads
 
Monadic Design
Monadic DesignMonadic Design
Monadic Design
 
Haskell
HaskellHaskell
Haskell
 
Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *Laboratório de Programação II: Uso do ponteiro void *
Laboratório de Programação II: Uso do ponteiro void *
 
Programação funcional no dia a dia
Programação funcional no dia a diaProgramação funcional no dia a dia
Programação funcional no dia a dia
 
Minicurso - Web sites dinâmicos: PHP com orientação a objetos
Minicurso - Web sites dinâmicos: PHP com orientação a objetosMinicurso - Web sites dinâmicos: PHP com orientação a objetos
Minicurso - Web sites dinâmicos: PHP com orientação a objetos
 
Python
PythonPython
Python
 
Python: programação divertida novamente
Python: programação divertida novamentePython: programação divertida novamente
Python: programação divertida novamente
 
Python Funcional
Python FuncionalPython Funcional
Python Funcional
 
Haskell
HaskellHaskell
Haskell
 
Akka no Just Java 2012
Akka no Just Java 2012Akka no Just Java 2012
Akka no Just Java 2012
 
Lpiii dp-apostila
Lpiii dp-apostilaLpiii dp-apostila
Lpiii dp-apostila
 
Conhecendo Ruby on Rails
Conhecendo Ruby on RailsConhecendo Ruby on Rails
Conhecendo Ruby on Rails
 
Três anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitorTrês anos de Scala no NewsMonitor
Três anos de Scala no NewsMonitor
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 

Semelhante a Programação funcional com Ruby

Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangElaine Naomi
 
Apresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBAApresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBALuciano Borges
 
Desmistificando Built-in Functions, Lambda e List Comprehension...
Desmistificando Built-in Functions, Lambda e List Comprehension...Desmistificando Built-in Functions, Lambda e List Comprehension...
Desmistificando Built-in Functions, Lambda e List Comprehension...Matheus Pereira
 
47612195 apostila-de-scilab
47612195 apostila-de-scilab47612195 apostila-de-scilab
47612195 apostila-de-scilabMarco Antônio
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialFabio Spanhol
 
Ruby e Erlang de mãos dadas
Ruby e Erlang de mãos dadasRuby e Erlang de mãos dadas
Ruby e Erlang de mãos dadasÉverton Ribeiro
 
Programação Funcional - Luiz Stangarlin
Programação Funcional - Luiz StangarlinProgramação Funcional - Luiz Stangarlin
Programação Funcional - Luiz StangarlinDev PP
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcionalGabriel Schade Cardoso
 
Introdução Programação Funcional
Introdução Programação FuncionalIntrodução Programação Funcional
Introdução Programação FuncionalNatan Mai
 
Ruby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaRuby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaGabriel Molter
 
Functional programming feat. Swift (Portuguese)
Functional programming feat. Swift (Portuguese)Functional programming feat. Swift (Portuguese)
Functional programming feat. Swift (Portuguese)FrankKair1
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsLucas Caton
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Ismar Silveira
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Railsismaelstahelin
 
Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015
Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015
Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015André Curvello
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação FuncionalTales Andrade
 

Semelhante a Programação funcional com Ruby (20)

Functional Programming - Scala
Functional Programming - ScalaFunctional Programming - Scala
Functional Programming - Scala
 
Além da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e ErlangAlém da programação funcional com Elixir e Erlang
Além da programação funcional com Elixir e Erlang
 
Apresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBAApresentação Ruby no Dojo da UFBA
Apresentação Ruby no Dojo da UFBA
 
Desmistificando Built-in Functions, Lambda e List Comprehension...
Desmistificando Built-in Functions, Lambda e List Comprehension...Desmistificando Built-in Functions, Lambda e List Comprehension...
Desmistificando Built-in Functions, Lambda e List Comprehension...
 
47612195 apostila-de-scilab
47612195 apostila-de-scilab47612195 apostila-de-scilab
47612195 apostila-de-scilab
 
Computação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo TutorialComputação Científica com SciPy - Brevíssimo Tutorial
Computação Científica com SciPy - Brevíssimo Tutorial
 
Ruby e Erlang de mãos dadas
Ruby e Erlang de mãos dadasRuby e Erlang de mãos dadas
Ruby e Erlang de mãos dadas
 
Programação Funcional - Luiz Stangarlin
Programação Funcional - Luiz StangarlinProgramação Funcional - Luiz Stangarlin
Programação Funcional - Luiz Stangarlin
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcional
 
Aula python
Aula pythonAula python
Aula python
 
Introdução Programação Funcional
Introdução Programação FuncionalIntrodução Programação Funcional
Introdução Programação Funcional
 
Programacao funcional
Programacao funcionalProgramacao funcional
Programacao funcional
 
Ruby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e PráticaRuby on Rails - Filosofia e Prática
Ruby on Rails - Filosofia e Prática
 
Functional programming feat. Swift (Portuguese)
Functional programming feat. Swift (Portuguese)Functional programming feat. Swift (Portuguese)
Functional programming feat. Swift (Portuguese)
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 
Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2Paradigmas de Linguagens de programacao - Aula #2
Paradigmas de Linguagens de programacao - Aula #2
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015
Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015
Aplicações multicore com Linux Embarcado usando Raspberry Pi 2 - TDC2015
 
Python
PythonPython
Python
 
Usando POP com Programação Funcional
Usando POP com Programação FuncionalUsando POP com Programação Funcional
Usando POP com Programação Funcional
 

Mais de tdc-globalcode

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadetdc-globalcode
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...tdc-globalcode
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucessotdc-globalcode
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPAtdc-globalcode
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinotdc-globalcode
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...tdc-globalcode
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicestdc-globalcode
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publicatdc-globalcode
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#tdc-globalcode
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocustdc-globalcode
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?tdc-globalcode
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golangtdc-globalcode
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QAtdc-globalcode
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciatdc-globalcode
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Servicetdc-globalcode
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETtdc-globalcode
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8tdc-globalcode
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...tdc-globalcode
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#tdc-globalcode
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Coretdc-globalcode
 

Mais de tdc-globalcode (20)

TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidadeTDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
TDC2019 Intel Software Day - Visao Computacional e IA a servico da humanidade
 
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
TDC2019 Intel Software Day - Tecnicas de Programacao Paralela em Machine Lear...
 
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de SucessoTDC2019 Intel Software Day - ACATE - Cases de Sucesso
TDC2019 Intel Software Day - ACATE - Cases de Sucesso
 
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPATDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
TDC2019 Intel Software Day - Otimizacao grafica com o Intel GPA
 
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVinoTDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
TDC2019 Intel Software Day - Deteccao de objetos em tempo real com OpenVino
 
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
TDC2019 Intel Software Day - OpenCV: Inteligencia artificial e Visao Computac...
 
TDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devicesTDC2019 Intel Software Day - Inferencia de IA em edge devices
TDC2019 Intel Software Day - Inferencia de IA em edge devices
 
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca PublicaTrilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
Trilha BigData - Banco de Dados Orientado a Grafos na Seguranca Publica
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
TDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case EasylocusTDC2018SP | Trilha Go - Case Easylocus
TDC2018SP | Trilha Go - Case Easylocus
 
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
TDC2018SP | Trilha Modern Web - Para onde caminha a Web?
 
TDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em GolangTDC2018SP | Trilha Go - Clean architecture em Golang
TDC2018SP | Trilha Go - Clean architecture em Golang
 
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QATDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
TDC2018SP | Trilha Go - "Go" tambem e linguagem de QA
 
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendenciaTDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
TDC2018SP | Trilha Mobile - Digital Wallets - Seguranca, inovacao e tendencia
 
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR ServiceTDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
TDC2018SP | Trilha .Net - Real Time apps com Azure SignalR Service
 
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NETTDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
TDC2018SP | Trilha .Net - Passado, Presente e Futuro do .NET
 
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
TDC2018SP | Trilha .Net - Novidades do C# 7 e 8
 
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
TDC2018SP | Trilha .Net - Obtendo metricas com TDD utilizando build automatiz...
 
TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#TDC2018SP | Trilha .Net - .NET funcional com F#
TDC2018SP | Trilha .Net - .NET funcional com F#
 
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net CoreTDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor  em .Net Core
TDC2018SP | Trilha .Net - Crie SPAs com Razor e C# usando Blazor em .Net Core
 

Último

INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorEdvanirCosta
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxferreirapriscilla84
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdfAna Lemos
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números Mary Alvarenga
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfHELENO FAVACHO
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTailsonSantos1
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 

Último (20)

INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de Professor
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
Discurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptxDiscurso Direto, Indireto e Indireto Livre.pptx
Discurso Direto, Indireto e Indireto Livre.pptx
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
A QUATRO MÃOS - MARILDA CASTANHA . pdf
A QUATRO MÃOS  -  MARILDA CASTANHA . pdfA QUATRO MÃOS  -  MARILDA CASTANHA . pdf
A QUATRO MÃOS - MARILDA CASTANHA . pdf
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
CRUZADINHA - Leitura e escrita dos números
CRUZADINHA   -   Leitura e escrita dos números CRUZADINHA   -   Leitura e escrita dos números
CRUZADINHA - Leitura e escrita dos números
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdfProjeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
Projeto_de_Extensão_Agronomia_adquira_ja_(91)_98764-0830.pdf
 
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptxTeoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
Teoria heterotrófica e autotrófica dos primeiros seres vivos..pptx
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 

Programação funcional com Ruby