Skip to content

Latest commit

 

History

History
702 lines (537 loc) · 11.7 KB

slides.md

File metadata and controls

702 lines (537 loc) · 11.7 KB

La programmation avec Ruby

🖥 ⌨ 🤓

notes:

  • Présentation et commandes de bases
  • LiveCode
  • Jeux

Pourquoi Ruby ? 🤔

Un langage open-source dynamique qui met l'accent sur la simplicité et la productivité.

Sa syntaxe élégante en facilite la lecture et l'écriture.

## 👌

notes: Yukihiro « Matz » Matsumoto est le créateur de Ruby. Frustré par son expérience en développement Smalltalk et Lisp, il débute la conception d'un nouveau langage en 1993 sous Emacs, puis publie une première version en 1995.

vvv

Ruby on Rails

Framework pour applications web

 

Développés avec Ruby on Rails :

GitHub AirBnB SoundCloud Product Hunt Twitch ZenDesk

...

notes:

  • GitHub
  • AirBnB
  • SoundCloud
  • Product Hunt
  • Twitch
  • ZenDesk

Hello, World! 👋 🌍

 

puts "Bonjour Rails Girls !"

Types 🔖

`"Double arc-en-ciel"` _**String**_
`42` _**Integer**_
`3.14159` _**Float**_
`["Licorne", "Chaton", "Insecte"]` _**Array**_
`true` _**TrueClass**_
`false` _**FalseClass**_

Et quelques autres...

vvv

Le hash 📔

student = {
  "first_name" => "Nicolas",
  "age"        => 27,
}

Un hash est une collection de paire **clé/valeur**

{
  "key"       => "value",
  "other_key" => "other value"
}

vvv

Le hash 📔 (suite)

Accès à une valeur 🔍

student = {
  "first_name" => "Nicolas",
  "age"        => 27,
}
puts student["first_name"]

# => Nicolas

Variables 🎁

 

year = 2019
puts year

👉 2019

 

🎉

year = year + 1
puts year

👉 2020

notes:


Les fondamentaux 🛠

vvv

Conditions ✅ ❎

weather = "Il pleut"

if weather == "Il pleut"
  puts "Prenez votre parapluie 🌂"
end

 

weather = "Il fait beau"

if weather == "Il pleut"
  puts "Prenez votre parapluie 🌂"
else
  puts "Pensez à vos lunettes de soleil 😎"
end

notes: ⚠ Tout est vrai sauf false ou nil

vvv

Opérateurs logiques ☯️

Logical AND

result = a && b
a b **result**
false false _**false**_
true false _**false**_
false true _**false**_
true true _**true**_

notes: rain = true wind = true

if rain && wind puts "Restez à la maison !" end

vvv

Opérateurs logiques (suite)

Logical OR

result = a || b
a b **result**
false false _**false**_
true false _**true**_
false true _**true**_
true true _**true**_

notes: day = "Saturday"

if day == "Saturday" || day == "Sunday" puts "C'est le week end !" end

vvv

Opérateurs logiques (suite)

Logical NOT

result = !a
a **result**
false _**true**_
true _**false**_

notes: sunny = true

if !sunny puts "Bon finalement, on va pas à la mer" end

vvv

Boucles 🔁

For

for number in 1..10
  puts number
end

vvv

Boucles (suite) 🔁

While

counter = 1

while counter < 20
  puts counter
  counter = counter + 1
end

Until

counter = 23

until counter % 10 == 0
  counter = counter + 1
end
puts counter

⚠ Attention aux boucles infinies ! ⚠

notes: Faire tourner les boucles au tableau exercice multiplication

counter = 1
while counter < 11
  puts counter * 7
  counter = counter + 1
end

vvv

Boucles (fin) 🔁

.each

students = ["sarah", "guillaume", "maël", "marine", "pierre", "camille"]

students.each do |student|
  puts student.capitalize
end

Méthodes 🏭

 

Arranger la logique par boite noire

def hello_world
  puts "Bonjour tout le monde !"
end

hello_world
def greetings(name)
  puts "Bonjour " + name
end

greetings("Pierre")

Paradigme Ruby 👴🏻☝

 

"Tout est objet."

notes: Language orienté objets. Il existe des languages impératifs, des langages fonctionnels...

vvv

Objet ?

🚗

Caractéristiques Comportements
Marque : `Simca` `Démarrer`
Couleur : `rouge` `Tourner à droite`
... ...

notes: Un objet est une entité qui contient des informations et des mécanismes concernant un sujet, manipulés dans un programme


LiveCode

notes:

# TODO
# - Le programme choisi un nombre entre 1 et 50
#   et demande à l'utilisateur de renseigner un nombre entre 1 et 50
#
# - Si l'utilisateur trouve le bon 'prix', il gagne
#   Sinon le programme l'aide en lui disant '+' ou '-'

Jeux 🎮

🔗 http://tiny.cc/ruby_101

vvv

Jeux 🎮

👉 Découverte de l'environnement de dev

# Expected result:
sum(2, 5)
# => 7

sum(36, 6)
# => 42
# Indice et Pseudocode
def sum(a, b)
  # sum a and b
  # return result
end

vvv

Jeux (solution) 🎮

👉 Découverte de l'environnement de dev

# Solution
def sum(a, b)
  c = a + b
  return c
end
sum(2, 5)
sum(36, 6)

vvv

👉 Autoriser l'accès grâce au mot de passe "LeWagon"

# Expected result:
grant_access("123456")
# => "Accès refusé"

grant_access("LeWagon")
# => "Bienvenue, vous allez changer de vie"
# Indice et Pseudocode
def grant_access(given_password)
  real_password = "LeWagon"
  # Si le mot de passe donné est même que le bon mot de passe :
    puts "...?" # j'affiche le message de bienvenue
  # sinon
    puts "...?" # j'affiche le message d'accès refusé
  # fin
end

vvv

Jeux (solution) 🎮

👉 Autoriser l'accès grâce au mot de passe "LeWagon"

# Solution
def grant_access(given_password)
  real_password = "LeWagon"
  if given_password == real_password
    puts "Bienvenue, vous allez changer de vie"
  else
    puts "Accès refusé"
  end
end
grant_access("123456")
grant_access("LeWagon")

vvv

Comment afficher un tweet ?

Tweet

`author` `content` `date`

vvv

Comment afficher un tweet ? (suite)

Le hash 📔 !

tweet = {
  "author"  => "nantes.rb",
  "content" => "RailsGirls c'est trop cool ! 🤩",
  "date"    => "20 septembre"
}

Résultat attendu 🖥

nantes.rb - 20 20 septembre
> RailsGirls c'est trop cool ! 🤩
---

Code ⌨

puts tweet["author"] + ' - ' + tweet["date"]
puts '> ' + tweet["content"]
puts '---'

vvv

Afficher plusieurs tweets 🐦🐦🐦

Tweet

vvv

Afficher plusieurs tweets 🐦🐦🐦

Comment ? 🤔

Un `array`

de hashes

tweets = [
  {
    "author"  => "nantes.rb",
    "content" => "RailsGirls c'est trop cool ! 🤩",
    "date"    => "20 septembre"
  },
  {
    "author"  => "Le Wagon Nantes & Rennes",
    "content" => "Prochaine session le 14 octobre à Nantes 😍",
    "date"    => "20 septembre"
  },
  {
    "author"  => "Clever Cloud",
    "content" => "Clever Cloud est fier de participer au Rails Gilrs de Nantes 🚀",
    "date"    => "20 septembre"
  }
]

vvv

Afficher plusieurs tweets 🐦🐦🐦

Résultat attendu 🖥

nantes.rb - 20 septembre
> RailsGirls c'est trop cool ! 🤩
---
e Wagon Nantes & Rennes - 20 septembre
> Aujourd'hui, on lance officiellement Le Wagon Executive 😍
---
Clever Cloud - 20 septembre
> Clever Cloud est fier de participer au Rails Gilrs de Nantes 🚀
---

Code ⌨

for tweet in tweets # OU tweets.each do |tweet|
  puts tweet["author"] + ' - ' + tweet["date"]
  puts '> ' + tweet["content"]
  puts '---'
end

Questions

💬❔

vvv

Disponible sur GitHub 🙏

 

🔗 https://github.com/nantesrb/ruby_101