twitter.com/elaine_nw
speakerdeck.com/elainenaomi
Elaine Naomi Watanabe
Desenvolvedora de Software (Plataformatec)
Mestrado em Ciência da Computação (USP)
2019
Slide 5
Slide 5 text
OBJETIVO
introdução à lógica de programação
em 30 minutos
Slide 6
Slide 6 text
Programa de Computador
Slide 7
Slide 7 text
Conjunto de instruções que descrevem
uma tarefa a ser realizada por um
computador
Slide 8
Slide 8 text
Conjunto de instruções que descrevem
uma tarefa a ser realizada por um
computador
comandos
Slide 9
Slide 9 text
Linguagem
de Programação
Slide 10
Slide 10 text
Linguagem que utilizamos para definir
um conjunto de comandos para um
computador
Slide 11
Slide 11 text
Linguagem que utilizamos para definir
um conjunto de comandos para um
computador
Slide 12
Slide 12 text
Linguagem que utilizamos para definir
um conjunto de comandos para um
computador
Slide 13
Slide 13 text
Regras sintáticas e semânticas que
permitem a comunicação com o
computador
Slide 14
Slide 14 text
Regras sintáticas e semânticas que
permitem a comunicação com o
computador
Slide 15
Slide 15 text
Regras sintáticas e semânticas que
permitem a comunicação com o
computador
Slide 16
Slide 16 text
Regras sintáticas e semânticas que
permitem a comunicação com o
computador
Normalmente, comandos textuais
Slide 17
Slide 17 text
Exemplo de código executado
no terminal do Ruby
Slide 18
Slide 18 text
comando válido
Slide 19
Slide 19 text
comando válido
Slide 20
Slide 20 text
comando inválido
Slide 21
Slide 21 text
gerou o erro de divisão por zero
Slide 22
Slide 22 text
Regras!
Slide 23
Slide 23 text
texto
Slide 24
Slide 24 text
texto
Slide 25
Slide 25 text
um pouco de história
Slide 26
Slide 26 text
Ada Lovelace
A primeira programadora de computadores da história
Escreveu o primeiro algoritmo do mundo no século XIX
Também matemática e escritora inglesa
Dia 15 de outubro celebramos o dia da Ada Lovelace
Dia de celebrar os feitos das mulheres em tecnologia
Slide 27
Slide 27 text
E hoje existem diversas linguagens de programação!
Slide 28
Slide 28 text
Inclusive o Ruby!
Slide 29
Slide 29 text
mais um pouco de história
Slide 30
Slide 30 text
Yukihiro Matsumoto "Matz"
Criou o Ruby em 1993
24 anos atrás!
Utilizada mais para programação web
Objetivo do Ruby
Ser uma linguagem que ajude a cada pessoa
desenvolvedora no mundo a ser mais produtiva,
a gostar de programar e a ser feliz
Ref: youtu.be/oEkJvvGEtB4
Slide 31
Slide 31 text
https://insights.stackoverflow.com/survey/2019
Slide 32
Slide 32 text
As linguagens
mais bem pagas
2019
Slide 33
Slide 33 text
6º Lugar: Ruby
2019
Slide 34
Slide 34 text
Setup
Slide 35
Slide 35 text
instalação
Slide 36
Slide 36 text
https://www.ruby-lang.org/en/downloads/
Slide 37
Slide 37 text
editor de texto
Slide 38
Slide 38 text
- Sublime
- VS Code
- Atom
- Vim
- etc
Slide 39
Slide 39 text
Exemplo do Sublime
Slide 40
Slide 40 text
terminal
Slide 41
Slide 41 text
É um programa que permite executar
comandos de texto via teclado
Slide 42
Slide 42 text
Terminal no
linux/macos
Prompt de comandos
no Windows
Slide 43
Slide 43 text
É uma forma de executar comandos
para interagir com o computador
Slide 44
Slide 44 text
Começando com Ruby
Slide 45
Slide 45 text
No terminal, digite:
irb
Slide 46
Slide 46 text
Terminal do ruby
Slide 47
Slide 47 text
No content
Slide 48
Slide 48 text
Definindo variáveis
Slide 49
Slide 49 text
nome_da_variavel = "Valor da Variável"
Slide 50
Slide 50 text
nome_da_variavel = "Valor da Variável"
A variável vai guardar um valor
acessível por meio de um nome
Slide 51
Slide 51 text
nome_da_variavel = "Valor da Variável"
Vamos acessar o valor/conteúdo da
variável por meio do seu nome
Slide 52
Slide 52 text
Não pode ter acentuação ou espaço
no nome da variável
nome_da_variavel = "Valor da Variável"
Slide 53
Slide 53 text
nome = "Elaine Naomi"
sobrenome = "Watanabe"
nome + " " + sobrenome
=> "Elaine Naomi Watanabe"
Slide 54
Slide 54 text
nome = "Ana Maria"
sobrenome = "Silva"
nome + " " + sobrenome
=> "Ana Maria Silva"
Array de Hashes
1 é a posição do
segundo item
lista_de_pessoas = [
{nome: "Elaine",idade: 30},
{nome: "Ana",idade: 20}
]
lista_de_pessoas[1][:nome]
=> "Ana"
primeiro_valor = 1
segundo_valor = 2
if primeiro_valor != segundo_valor
puts "Valores diferentes"
else
puts "Valores iguais"
end
Slide 70
Slide 70 text
Operadores lógicos
Slide 71
Slide 71 text
&& (e)
|| (ou)
! (não)
Slide 72
Slide 72 text
dia_aniversario = 25
mes_aniversario = 9
if dia_aniversario == Time.now.day &&
mes_aniversario == Time.now.month
puts "Feliz aniversário!"
end
Slide 73
Slide 73 text
dia_aniversario = 25
mes_aniversario = 9
if dia_aniversario == Time.now.day &&
mes_aniversario == Time.now.month
puts "Feliz aniversário!"
end
Precisa ser o mesmo dia
e mês para retornar
"Feliz Aniversário"
Slide 74
Slide 74 text
if Time.now.wday == 6 ||
Time.now.wday == 0
puts "É fim de semana!"
end
Slide 75
Slide 75 text
if Time.now.wday == 6 ||
Time.now.wday == 0
puts "É fim de semana!"
end
Precisa ser ou sábado ou domingo
para ser fim de semana
Slide 76
Slide 76 text
Estrutura de repetição
Slide 77
Slide 77 text
pessoas = [ "Ana", "Beatriz", "Carol"]
pessoas.each do | pessoa |
puts "Olá, #{pessoa}"
end
Slide 78
Slide 78 text
Para cada item
pessoas = [ "Ana", "Beatriz", "Carol"]
pessoas.each do | pessoa |
puts "Olá, #{pessoa}"
end
Slide 79
Slide 79 text
Vai chamar esse comando
pessoas = [ "Ana", "Beatriz", "Carol"]
pessoas.each do | pessoa |
puts "Olá, #{pessoa}"
end
Slide 80
Slide 80 text
Olá, Ana
Olá, Beatriz
Olá, Carol
Slide 81
Slide 81 text
Temos outras formas de fazer um loop
(repetição), com o for, while, etc
Slide 82
Slide 82 text
Métodos
Slide 83
Slide 83 text
def exibir_boas_vindas(pessoa)
puts "Olá, #{pessoa}"
end
pessoas = [ "Ana", "Beatriz", "Carol"]
pessoas.each do | pessoa |
exibir_boas_vindas(pessoa)
end
Slide 84
Slide 84 text
Classes
Slide 85
Slide 85 text
Representa um componente do seu
sistema
Uma pessoa, um produto, etc
Slide 86
Slide 86 text
Conjunto de dados e métodos
Regras de negócio desse componente
Slide 87
Slide 87 text
class Produto
def initialize(valor_compra)
@valor_compra = valor_compra
end
def valor_venda
@valor_compra * 1.5
end
end
Slide 88
Slide 88 text
Objetos
Slide 89
Slide 89 text
São criados a partir das classes
Definem o estado, valores iniciais, etc
Um programa/app vai ser um conjunto
de comandos, variáveis, objetos,
condicionais, etc
Slide 92
Slide 92 text
Por onde começar?
Slide 93
Slide 93 text
Material em português
Ruby em 20 minutos
https://www.ruby-lang.org/pt/documentation/quickstart/
Conhecendo o Ruby (Livro do Taq)
http://eustaquiorangel.com/livro-ruby
Aprenda a programar
https://www.jmonteiro.com/aprendaaprogramar/
Tutorial Ruby
http://guru-sp.github.io/tutorial_ruby/
Ruby 101 (Post do TK)
https://medium.com/trainingcenter/ruby-101-o-b%C3%A1sico-260e8605962
Slide 94
Slide 94 text
Material em português
Aprenda Ruby on Rails (Curadoria do Felipe Orlando)
https://github.com/felipeorlando/aprenda-rubyonrails
Lógica de programação
https://blog.dankicode.com/logica-de-programacao/
Variáveis, constantes e tipos de dados
https://mclp.dicasdeprogramacao.com.br/licao-3-variaveis-constantes-e-tipos-de-dados/
PodProgramar Podcast
https://mundopodcast.com.br/podprogramar/
Mamilos Podcast
https://www.b9.com.br/shows/mamilos/algoritmo-g-1-mulher-nao-e-boa-em-exatas/
Slide 95
Slide 95 text
Introdução à Computação
Disponível em:
https://www.casadocodigo.com.br/products/li
vro-aprendendo-computacao-ruby
Slide 96
Slide 96 text
Disponível em:
https://www.casadocodigo.com.br/products/li
vro-oo-solid
Orientação a Objetos e
SOLID para Ninjas
Exemplos em Java mas os
conceitos servem para todas as
linguagens orientadas a objeto
Slide 97
Slide 97 text
Material em inglês:
Exercism:
https://exercism.io/tracks/ruby
HackerRank:
https://www.hackerrank.com/domains/ruby
Udemy:
https://www.udemy.com/courses/search/?q=ruby
Tutorials Point:
https://www.tutorialspoint.com/ruby
TryRuby:
https://ruby.github.io/TryRuby/
Slide 98
Slide 98 text
Disponível em inglês:
https://www.amazon.com/Practical-Object-Ori
ented-Design-Agile-Primer/dp/0134456475/ref
=dp_ob_title_bk
Practical Object-Oriented Design:
An Agile Primer Using Ruby
Slide 99
Slide 99 text
Grupo do Telegram sobre Ruby
t.me/rubybrasil
Slide 100
Slide 100 text
Plataformatec Inside - Novidades do Rails 6
https://www.youtube.com/watch?v=FtZyxCPx-i8
Slide 101
Slide 101 text
GURU SP - Grupo de Usuários de Ruby SP
https://www.gurusp.org/
Slide 102
Slide 102 text
GURU SP - Grupo de Usuários de Ruby SP
https://www.gurusp.org/