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

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

583e920a7e9238a1c21e923025f8f641?s=128

Elaine Naomi

October 22, 2019
Tweet

Transcript

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

  2. Hello

  3. 1996

  4. twitter.com/elaine_nw speakerdeck.com/elainenaomi Elaine Naomi Watanabe Desenvolvedora de Software (Plataformatec) Mestrado

    em Ciência da Computação (USP) 2019
  5. OBJETIVO introdução à lógica de programação em 30 minutos

  6. Programa de Computador

  7. Conjunto de instruções que descrevem uma tarefa a ser realizada

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

    por um computador comandos
  9. Linguagem de Programação

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

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

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

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

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

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

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

    computador Normalmente, comandos textuais
  17. Exemplo de código executado no terminal do Ruby

  18. comando válido

  19. comando válido

  20. comando inválido

  21. gerou o erro de divisão por zero

  22. Regras!

  23. texto

  24. texto

  25. um pouco de história

  26. 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
  27. E hoje existem diversas linguagens de programação!

  28. Inclusive o Ruby!

  29. mais um pouco de história

  30. 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
  31. https://insights.stackoverflow.com/survey/2019

  32. As linguagens mais bem pagas 2019

  33. 6º Lugar: Ruby 2019

  34. Setup

  35. instalação

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

  37. editor de texto

  38. - Sublime - VS Code - Atom - Vim -

    etc
  39. Exemplo do Sublime

  40. terminal

  41. É um programa que permite executar comandos de texto via

    teclado
  42. Terminal no linux/macos Prompt de comandos no Windows

  43. É uma forma de executar comandos para interagir com o

    computador
  44. Começando com Ruby

  45. No terminal, digite: irb

  46. Terminal do ruby

  47. None
  48. Definindo variáveis

  49. nome_da_variavel = "Valor da Variável"

  50. nome_da_variavel = "Valor da Variável" A variável vai guardar um

    valor acessível por meio de um nome
  51. nome_da_variavel = "Valor da Variável" Vamos acessar o valor/conteúdo da

    variável por meio do seu nome
  52. Não pode ter acentuação ou espaço no nome da variável

    nome_da_variavel = "Valor da Variável"
  53. nome = "Elaine Naomi" sobrenome = "Watanabe" nome + "

    " + sobrenome => "Elaine Naomi Watanabe"
  54. nome = "Ana Maria" sobrenome = "Silva" nome + "

    " + sobrenome => "Ana Maria Silva"
  55. nome = "Elaine Naomi" sobrenome = "Watanabe" idade = 30

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

    astigmatismo = 0.50 Texto entre aspas Números sem aspas
  57. Texto = String Integer = Número Inteiro Float = Número

    real Texto = String nome = "Elaine Naomi" sobrenome = "Watanabe" idade = 30 astigmatismo = 0.50
  58. lista_de_nomes = ["Ana","Maria","Bia"] lista_de_numeros = [1, 2, 3, 5, 8]

    Lista = Array Array de strings Array de integers
  59. pessoa = {nome: "Elaine",idade: 30 } pessoa[:nome] => "Elaine" pessoa[:idade]

    => 30 Hash
  60. 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"
  61. Operadores aritméticos

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

    da divisão) ** (exponenciação)
  63. 1 + 1 1 - 1 1 * 1 1

    / 1 5 % 2 2 ** 3
  64. primeiro_item = 10 segundo_item = 5 primeiro_item + segundo_item primeiro_item

    - segundo_item primeiro_item / segundo_item
  65. Operadores de comparação

  66. == (igualdade) != (diferente) > (maior) < (menor) >= (maior

    igual) <= (menor igual)
  67. 1 == 1 # true (verdadeiro) 1 <= 2 #

    true (verdadeiro) 10 > 200 # false (falso)
  68. Estrutura de decisão

  69. primeiro_valor = 1 segundo_valor = 2 if primeiro_valor != segundo_valor

    puts "Valores diferentes" else puts "Valores iguais" end
  70. Operadores lógicos

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

  72. dia_aniversario = 25 mes_aniversario = 9 if dia_aniversario == Time.now.day

    && mes_aniversario == Time.now.month puts "Feliz aniversário!" end
  73. 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"
  74. if Time.now.wday == 6 || Time.now.wday == 0 puts "É

    fim de semana!" end
  75. 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
  76. Estrutura de repetição

  77. pessoas = [ "Ana", "Beatriz", "Carol"] pessoas.each do | pessoa

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

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

    pessoas.each do | pessoa | puts "Olá, #{pessoa}" end
  80. Olá, Ana Olá, Beatriz Olá, Carol

  81. Temos outras formas de fazer um loop (repetição), com o

    for, while, etc
  82. Métodos

  83. def exibir_boas_vindas(pessoa) puts "Olá, #{pessoa}" end pessoas = [ "Ana",

    "Beatriz", "Carol"] pessoas.each do | pessoa | exibir_boas_vindas(pessoa) end
  84. Classes

  85. Representa um componente do seu sistema Uma pessoa, um produto,

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

  87. class Produto def initialize(valor_compra) @valor_compra = valor_compra end def valor_venda

    @valor_compra * 1.5 end end
  88. Objetos

  89. São criados a partir das classes Definem o estado, valores

    iniciais, etc
  90. produto_a = Produto.new(10.0) produto_a.valor_venda => 15.0 produto_b = Produto.new(60.0) produto_b.valor_venda

    => 90.0
  91. Um programa/app vai ser um conjunto de comandos, variáveis, objetos,

    condicionais, etc
  92. Por onde começar?

  93. 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
  94. 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/
  95. Introdução à Computação Disponível em: https://www.casadocodigo.com.br/products/li vro-aprendendo-computacao-ruby

  96. 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
  97. 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/
  98. 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
  99. Grupo do Telegram sobre Ruby t.me/rubybrasil

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

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

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

  103. None
  104. None
  105. muito obrigada speakerdeck.com/elainenaomi