Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Hello

Slide 3

Slide 3 text

1996

Slide 4

Slide 4 text

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"

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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"

Slide 61

Slide 61 text

Operadores aritméticos

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

Operadores de comparação

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

Estrutura de decisão

Slide 69

Slide 69 text

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

Slide 90

Slide 90 text

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

Slide 91

Slide 91 text

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/

Slide 103

Slide 103 text

No content

Slide 104

Slide 104 text

No content

Slide 105

Slide 105 text

muito obrigada speakerdeck.com/elainenaomi