Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rails Girls SP - Lógica de Programação com Ruby

Rails Girls SP - Lógica de Programação com Ruby

Elaine Naomi

October 22, 2019
Tweet

More Decks by Elaine Naomi

Other Decks in Programming

Transcript

  1. Lógica de Programação
    uma introdução com Ruby

    View full-size slide

  2. twitter.com/elaine_nw
    speakerdeck.com/elainenaomi
    Elaine Naomi Watanabe
    Desenvolvedora de Software (Plataformatec)
    Mestrado em Ciência da Computação (USP)
    2019

    View full-size slide

  3. OBJETIVO
    introdução à lógica de programação
    em 30 minutos

    View full-size slide

  4. Programa de Computador

    View full-size slide

  5. Conjunto de instruções que descrevem
    uma tarefa a ser realizada por um
    computador

    View full-size slide

  6. Conjunto de instruções que descrevem
    uma tarefa a ser realizada por um
    computador
    comandos

    View full-size slide

  7. Linguagem
    de Programação

    View full-size slide

  8. Linguagem que utilizamos para definir
    um conjunto de comandos para um
    computador

    View full-size slide

  9. Linguagem que utilizamos para definir
    um conjunto de comandos para um
    computador

    View full-size slide

  10. Linguagem que utilizamos para definir
    um conjunto de comandos para um
    computador

    View full-size slide

  11. Regras sintáticas e semânticas que
    permitem a comunicação com o
    computador

    View full-size slide

  12. Regras sintáticas e semânticas que
    permitem a comunicação com o
    computador

    View full-size slide

  13. Regras sintáticas e semânticas que
    permitem a comunicação com o
    computador

    View full-size slide

  14. Regras sintáticas e semânticas que
    permitem a comunicação com o
    computador
    Normalmente, comandos textuais

    View full-size slide

  15. Exemplo de código executado
    no terminal do Ruby

    View full-size slide

  16. comando válido

    View full-size slide

  17. comando válido

    View full-size slide

  18. comando inválido

    View full-size slide

  19. gerou o erro de divisão por zero

    View full-size slide

  20. um pouco de história

    View full-size slide

  21. 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

    View full-size slide

  22. E hoje existem diversas linguagens de programação!

    View full-size slide

  23. Inclusive o Ruby!

    View full-size slide

  24. mais um pouco de história

    View full-size slide

  25. 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

    View full-size slide

  26. https://insights.stackoverflow.com/survey/2019

    View full-size slide

  27. As linguagens
    mais bem pagas
    2019

    View full-size slide

  28. 6º Lugar: Ruby
    2019

    View full-size slide

  29. instalação

    View full-size slide

  30. https://www.ruby-lang.org/en/downloads/

    View full-size slide

  31. editor de texto

    View full-size slide

  32. - Sublime
    - VS Code
    - Atom
    - Vim
    - etc

    View full-size slide

  33. Exemplo do Sublime

    View full-size slide

  34. É um programa que permite executar
    comandos de texto via teclado

    View full-size slide

  35. Terminal no
    linux/macos
    Prompt de comandos
    no Windows

    View full-size slide

  36. É uma forma de executar comandos
    para interagir com o computador

    View full-size slide

  37. Começando com Ruby

    View full-size slide

  38. No terminal, digite:
    irb

    View full-size slide

  39. Terminal do ruby

    View full-size slide

  40. Definindo variáveis

    View full-size slide

  41. nome_da_variavel = "Valor da Variável"

    View full-size slide

  42. nome_da_variavel = "Valor da Variável"
    A variável vai guardar um valor
    acessível por meio de um nome

    View full-size slide

  43. nome_da_variavel = "Valor da Variável"
    Vamos acessar o valor/conteúdo da
    variável por meio do seu nome

    View full-size slide

  44. Não pode ter acentuação ou espaço
    no nome da variável
    nome_da_variavel = "Valor da Variável"

    View full-size slide

  45. nome = "Elaine Naomi"
    sobrenome = "Watanabe"
    nome + " " + sobrenome
    => "Elaine Naomi Watanabe"

    View full-size slide

  46. nome = "Ana Maria"
    sobrenome = "Silva"
    nome + " " + sobrenome
    => "Ana Maria Silva"

    View full-size slide

  47. nome = "Elaine Naomi"
    sobrenome = "Watanabe"
    idade = 30
    astigmatismo = 0.50

    View full-size slide

  48. nome = "Elaine Naomi"
    sobrenome = "Watanabe"
    idade = 30
    astigmatismo = 0.50
    Texto entre aspas
    Números sem aspas

    View full-size slide

  49. Texto = String
    Integer = Número Inteiro
    Float = Número real
    Texto = String
    nome = "Elaine Naomi"
    sobrenome = "Watanabe"
    idade = 30
    astigmatismo = 0.50

    View full-size slide

  50. lista_de_nomes = ["Ana","Maria","Bia"]
    lista_de_numeros = [1, 2, 3, 5, 8]
    Lista = Array
    Array de strings
    Array de integers

    View full-size slide

  51. pessoa = {nome: "Elaine",idade: 30 }
    pessoa[:nome]
    => "Elaine"
    pessoa[:idade]
    => 30 Hash

    View full-size slide

  52. 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"

    View full-size slide

  53. Operadores aritméticos

    View full-size slide

  54. + (adição)
    - (subtração)
    * (multiplicação)
    / (divisão)
    % (resto da divisão)
    ** (exponenciação)

    View full-size slide

  55. 1 + 1
    1 - 1
    1 * 1
    1 / 1
    5 % 2
    2 ** 3

    View full-size slide

  56. primeiro_item = 10
    segundo_item = 5
    primeiro_item + segundo_item
    primeiro_item - segundo_item
    primeiro_item / segundo_item

    View full-size slide

  57. Operadores de comparação

    View full-size slide

  58. == (igualdade)
    != (diferente)
    > (maior)
    < (menor)
    >= (maior igual)
    <= (menor igual)

    View full-size slide

  59. 1 == 1 # true (verdadeiro)
    1 <= 2 # true (verdadeiro)
    10 > 200 # false (falso)

    View full-size slide

  60. Estrutura de decisão

    View full-size slide

  61. primeiro_valor = 1
    segundo_valor = 2
    if primeiro_valor != segundo_valor
    puts "Valores diferentes"
    else
    puts "Valores iguais"
    end

    View full-size slide

  62. Operadores lógicos

    View full-size slide

  63. && (e)
    || (ou)
    ! (não)

    View full-size slide

  64. dia_aniversario = 25
    mes_aniversario = 9
    if dia_aniversario == Time.now.day &&
    mes_aniversario == Time.now.month
    puts "Feliz aniversário!"
    end

    View full-size slide

  65. 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"

    View full-size slide

  66. if Time.now.wday == 6 ||
    Time.now.wday == 0
    puts "É fim de semana!"
    end

    View full-size slide

  67. 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

    View full-size slide

  68. Estrutura de repetição

    View full-size slide

  69. pessoas = [ "Ana", "Beatriz", "Carol"]
    pessoas.each do | pessoa |
    puts "Olá, #{pessoa}"
    end

    View full-size slide

  70. Para cada item
    pessoas = [ "Ana", "Beatriz", "Carol"]
    pessoas.each do | pessoa |
    puts "Olá, #{pessoa}"
    end

    View full-size slide

  71. Vai chamar esse comando
    pessoas = [ "Ana", "Beatriz", "Carol"]
    pessoas.each do | pessoa |
    puts "Olá, #{pessoa}"
    end

    View full-size slide

  72. Olá, Ana
    Olá, Beatriz
    Olá, Carol

    View full-size slide

  73. Temos outras formas de fazer um loop
    (repetição), com o for, while, etc

    View full-size slide

  74. def exibir_boas_vindas(pessoa)
    puts "Olá, #{pessoa}"
    end
    pessoas = [ "Ana", "Beatriz", "Carol"]
    pessoas.each do | pessoa |
    exibir_boas_vindas(pessoa)
    end

    View full-size slide

  75. Representa um componente do seu
    sistema
    Uma pessoa, um produto, etc

    View full-size slide

  76. Conjunto de dados e métodos
    Regras de negócio desse componente

    View full-size slide

  77. class Produto
    def initialize(valor_compra)
    @valor_compra = valor_compra
    end
    def valor_venda
    @valor_compra * 1.5
    end
    end

    View full-size slide

  78. São criados a partir das classes
    Definem o estado, valores iniciais, etc

    View full-size slide

  79. produto_a = Produto.new(10.0)
    produto_a.valor_venda
    => 15.0
    produto_b = Produto.new(60.0)
    produto_b.valor_venda
    => 90.0

    View full-size slide

  80. Um programa/app vai ser um conjunto
    de comandos, variáveis, objetos,
    condicionais, etc

    View full-size slide

  81. Por onde começar?

    View full-size slide

  82. 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

    View full-size slide

  83. 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/

    View full-size slide

  84. Introdução à Computação
    Disponível em:
    https://www.casadocodigo.com.br/products/li
    vro-aprendendo-computacao-ruby

    View full-size slide

  85. 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

    View full-size slide

  86. 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/

    View full-size slide

  87. 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

    View full-size slide

  88. Grupo do Telegram sobre Ruby
    t.me/rubybrasil

    View full-size slide

  89. Plataformatec Inside - Novidades do Rails 6
    https://www.youtube.com/watch?v=FtZyxCPx-i8

    View full-size slide

  90. GURU SP - Grupo de Usuários de Ruby SP
    https://www.gurusp.org/

    View full-size slide

  91. GURU SP - Grupo de Usuários de Ruby SP
    https://www.gurusp.org/

    View full-size slide

  92. muito obrigada
    speakerdeck.com/elainenaomi

    View full-size slide