Mémo Ruby

VOIR AUSSI -> MEMO RAILS
VOIR AUSSI -> MEMOTP-BLOG
VOIR AUSSI -> NOTIONS BASIQUES à propos des RESEAUX, SERVEUR, RASP.∏

# Commentaire
/**/ Commentaires

Variables

Déclarations et quelques opérations basiques

Arithmétique

a = 1
b = 2
c = 3
d = a + b // retourne 3
e = d * 3 // retourne 9

c.eql? d //"est ce que c est équivalent à d? --> retourne True

Caractères, mots…

phrase = "c'est la lutte finale…"
uneAutrePhrase = "d est égale à #{d}" //acceder à une variable dans une String

debutPhrase = "Coucou, " << "ça va?" //retourne "Coucou, ça va?"
puts "Je veux etre calife à la place du calife" * 3 // retourne 3 fois la phrase

deuxMots = "ma bite"
deuxMots[0,2] //retourne "ma"
deuxMots[0..2] //retourne "ma "
deuxMots[-4..-1] // retourne "bite"

Regex (regular Expression)
.scan(//) # \w +

$variableGlobale //variable accessible à tous

Fonctions

puts //retourne une variable ou le contenu d'un objet puis retour à la ligne
print //retourne un résultat sans espace ou saut de ligne
gets // entrée clavier

Création Fonction

def hypotenuse(premierCote, secondCote)
return Math.sqrt(premierCote * premierCote + secondCote * secondCote)
end

puts hypotenuse(2, 6)

Methodes

.reverse //inverse l'ordre du contenu d'un tableau
.size //retourne la taille d'un tableau
.class //retourne le type de l'objet (Fixnum (int), float, String…)
200.13.kind_of? Float // retourne True
13.kind.of? Integer // Retourne True

Tableaux

monTableau = [10, 20, 30] // écriture contenu
monTableau[0] // retourne 10
monTableau << 40 //ajoute 40 au tableau

Hashes

monHash = {cle: "usb", trousseau:"Vin du Jura"} //création d'un tableau de hashage
monHash[:cle] // on accede à la valeur d'un variable contenue dans le tableau, ici "usb" via "cle"
monHash[:insulte] = "Ptitcon" //ajoute du contenu au tableau. La clé est "insulte" est son contenu "Ptitcon"

On peut également faire des tableaux de hashes

recettes = [
{ingredients: "farine, blé",
cuisson: "30"},
{ingredients: "huile, crevettes",
cuisson: "10"} ]

Boucles

Parcourir l'ensemble d'un tableau (un peu comme "for" en Javascript ou en Processing"):

bieresDansLeFrigo = ["1664", "Heineken", "Chouffe", "Rochefort10", "Lupulus"] //création d'un tableau avec du contenu de type String
bieresDansLeFirgo.each do |biere|
puts biere
end

Répéter ( X fois, faire…)

//affiche 24 fois "Nous sommes toujours au jour de ce jour"

24.times do
puts "Nous sommes toujours au jour de ce jour"
end

//ajouter puis acceder à une variable-courante "i" avec #{}
//ci-dessous, "+1" à la variable i car compteur commence à zéro

12.times do |i|
puts "Je t'ai dit #{i + 1} fois Bonjour aujourd'hui"
end

Conditions

if (a > 0)
puts "a est supérieur à 0 car a est égale à #{a}"
else
puts "a est inférieur à 0, car a est égale à #{a}"
end

if (a == kingfullcerbere.size)
puts "a est aussi grand que la taille de mon tableau nommé kingfullcerbere"
else
puts "a n'est pas aussi grand que la taille de mon tableau"
end


EXERCICE synthèse:
-créer un tableau contenant différentes variable de type numérique
-parcourir ce tableau avec une boucle
-n'afficher que les nombres impairs avec % à l'interieur de cette phrase "x est un chiffre impair"

réponse:

exercice = [ 1, 2, 3, 4, 5, 6]
exercice.each do |i|
if i % 2 == 1
puts "#{i} est un chiffre impair"
else
puts "Pair"
end
end


Classes et Objets

Créer une Classe

class Animal
end

Créer une instance de cette classe

chien = Animal.new
puts chien.class
// retourne Animal

Établir des propriétés à notre classe, variant selon les paramètres passés pour chacun des objets

class Animal
attr_accessor :race, :prenom
end

chien = Animal.new
chien.race = "labrador"
chien.prenom = "Jack"

Créer méthodes (ou fonctions de la classe… ce sont des actions en qq sorte)
sans paramètres

class Animal
attr_accessor :race, :prenom

def identite
puts "cet animal est un " + race + " et il s'appelle " + prenom
end

end

Méthodes avec paramètres

class Animal
attr_accessor :race, :prenom, :animal

def identite
puts "cet animal est un " + race + " et il s'appelle " + prenom
end

def parle(genre, fois)
if genre == "chien"
fois.times do
puts "ouaf!"
end
end
end
end

chien = Animal.new
chien.race = "Labrador"
chien.prenom = "Michel"
chien.animal = "chien"

puts chien.race + " " + chien.prenom
puts chien.identite
chien.parle("chien", 4)

Initialiser sa classe avec des propriétés par défaut (ici on décide de ne donner qu'un prénom à notre objet)

class Humain
attr_accessor :prenom, :nom, :age

def initialize(donnageDePrenom)
@prenom = donnageDePrenom
end
end

jacky = Humain.new("Jacky")
puts jacky.prenom //afficher la propriété "prénom"

Hériter d'une classe (ex: un musicien (avec des propriétés spécifiques comme l'instruments, le nombre année de conservatoire…) hérite d'une classe "Humain" (nom, prénom, age, origine…)

class Humain
attr_accessor :prenom, :nom

def initialize(donnageDePrenom)
@prenom = donnageDePrenom
end

def parler(redondance)
redondance.times do
puts "blabla"
end
end

def manger
puts "miam miam"
end
end

class Footballeur < Humain
def tirer
puts "Yaaaa! But....?"
end
end

class Musicien < Humain
def jouer(instrument)
puts "je suis un bosse avec mon #{instrument}"
end
end

jacky = Humain.new("Jacky")
jacky.parler(3)
jacky.manger

henri = Musicien.new("Henri")
henri.jouer("saxophone")

emma = Footballeur.new("Emmanuelle")
emma.manger
emma.tirer

Composition (interaction entres plusieurs objets de nature différentes)

Interaction entre les propriétés?

class Humain
attr_accessor :prenom, :nom, :stylesJoues

def initialize(donnageDePrenom)
@prenom = donnageDePrenom
end
end

class Musicien < Humain
def joueDu(instrument)
puts "je joue du #{instrument} comme un demi-dieu indien"
end
end

class Repertoire
attr_accessor :genre, :artiste
def initialize(style, nomArtiste)
@genre = style
@artiste = nomArtiste
end
end

francis = Musicien.new("Francis")
francis.joueDu("saxophone")

classique = Repertoire.new("classique", "Mozart")
rock = Repertoire.new("rock", "Pink Floyd")

francis.stylesJoues = [classique, rock]

francis.stylesJoues.each do |s|
puts francis.prenom + " joue du " + s.genre
end

EXEMPLE COMPOSITION

class Admin
attr_accessor :login, :mdp, :articles
def initialize(nom)
@login = nom
puts "#{@login} s'est connecté"
end

def poste
end
end

class Article
attr_accessor :titre, :date, :contenu, :auteur
def initialize(nomPost)
@titre = nomPost
end

def afficherContenu
puts "Blablablablablablablablabla"
end
end


#Objet article, issu de la classe Artcle
premierArticle = Article.new("Bienvenu Sur mon Blog!")

#Objet directeur, utilisateur pouvant poster Article
directeur = Admin.new("Eudes-Patron")

#l'objet directeur peut avoir des objets aarticles
directeur.articles = [premierArticle]

#On parcourt l'ensemble du contenu des articles détenus par le directeur
directeur.articles.each do |i|
puts "les articles écrits par " + directeur.login + " sont : " + i.titre
puts "\n\n"
puts i.afficherContenu
end

Ref: Les inconnus, Schrek, Izongood, Calife, Astérix, Lutte des Classes, (commentaire: faire référence au théatre)

tk toolkit