Cours Ruby

Document d Introduction à Ruby


Télécharger Document d Introduction à Ruby

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Introduction à

Ruby

Rémi

”FiFouille”

Laurent

 

Rémi ”FiFouille” Laurent

FSUGAr &

#ubuntu-fr-classroom

14 mars 2007

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Historique

Utilisations                                                                                  Première partie I

Technique

 

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Historique

Historique

Utilisations Technique Utilisations

Informations

Rapidité

Technique

Informations

Rapidité

Qui, quand, ou` ?

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Ruby est l’initiative du japonais Yukihiro ”Matz”

Historique

Matsumoto.

Utilisations

Il a commencé à écrire ce langage en 1993,

Technique

Informationsla première version publique date de 1995.

Rapidité

Actuellement Ruby en est à la version 1.8.

La version de développement 1.9 débouchera sur Ruby 2.0.

Ruby est distribué sous les termes de la GNU GPLv2 ainsi que la Ruby License.

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Historique

Historique

Utilisations Technique Utilisations

Informations

Rapidité

Technique

Informations

Rapidité

Introduction à

Ruby

Rémi

”FiFouille”

Laurent

 

Historique

Ruby peut avoir de nombreuses applications :

Domaines d’utilisation de Ruby

UtilisationsScript : sysadmin, génération de code/documents InformationsApplications classiques se basant sur nombre de Rapiditébibliothèques disponibles

Technique

Web : Ruby on Rails, ERB, ...

Apprentissage, test : irb, simplicité et lisibilité du code

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Historique

Historique

Utilisations Technique Utilisations

Informations

Rapidité

Technique

Informations Rapidité

Informations techniques diverses

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Historique                   Quelques caractéristiques techniques :

Utilisationslangage de script

Technique

Informationsdynamique

Rapidité

ramasse miette / garbage collector procédural - orienté objet - fonctionnel tout est objet

Introduction à

Ruby

Rémi

”FiFouille”

Laurent

 

Historique

Utilisations

Technique

Informations

Actuellement Ruby est relativement plus lent que du Python par exemple d’ou` l’idée d’utiliser des VM (Machines Virtuelles)

Machines virtuelles

RapiditéYarv - Yet Another Ruby VM - pour Ruby 2.0 - bientôt

JRuby - utilisation de la JVM (Java) - opérationnel Rite - première VM prévue pour Ruby 2.0 - projet mort?

Parrot - la VM prévue pour Perl 6 -???

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Installation

Indispensables                                                                             Deuxième partie II

Ubuntu/Debian

Premiers pas

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

Introduction à

      Ruby                              Installation

Rémi       Indispensables Laurent             Ubuntu/Debian

”FiFouille”

Installation                            Premiers pas

Indispensables

Ubuntu/Debian  Hello World! Premiers pas Hello #{you}!

Hello World!

Hello #{you} !

”Types” de                              ”Types” de base

base Numériques

Numériques

Chaˆ?nes de

caractères                                    Chaˆ?nes de caractères

Tableaux

Tables de                                         Tableaux

hachage

Exemples                                         Tables de hachage

Application

ConversionExemples

Application Conversion


Introduction à

Ruby

Rémi

”FiFouille” Laurent

Installation                    Les applications à installer sont :

Indispensables

Ubuntu/DebianRuby - l’interpréteur Hello World!irb - Interactive Ruby - interpréteur interactif

Premiers pas

Hello #{you} !

On peut encore installer :

”Types” de base

NumériquesRuby Gems - installeur de ’paquets’ ruby

Chaˆ?nes de

caractèresRake - Ruby make

Tableaux

Tables de hachage

Exemples

Application

Conversion

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Installation                    Les applications à installer sont :

Indispensables

Ubuntu/DebianRuby - l’interpréteur Hello World!irb - Interactive Ruby - interpréteur interactif

Premiers pas

Hello #{you} !

On peut encore installer :

”Types” de base

NumériquesRuby Gems - installeur de ’paquets’ ruby

Chaˆ?nes de

caractèresRake - Ruby make

Tableaux

Tables de hachage

Exemples

Application

Conversion

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Installation                    Les applications à installer sont :

Indispensables

Ubuntu/DebianRuby - l’interpréteur Hello World!irb - Interactive Ruby - interpréteur interactif

Premiers pas

Hello #{you} !

On peut encore installer :

”Types” de base

NumériquesRuby Gems - installeur de ’paquets’ ruby caractèresRake - Ruby make

Chaˆ?nes de

Tableaux

Tables de hachage

Exemples

Application

Conversion


Introduction à

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

sudo apt-get install ruby1.8 irb1.8 sudo apt-get install rubygems rake

Astuce :

echo "require ’irb/completion’" >> $HOME/.irbrc

Vous aurez alors une auto complétion dans irb

Ruby

Rémi

”FiFouille”

Laurent

Introduction à

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

sudo apt-get install ruby1.8 irb1.8 sudo apt-get install rubygems rake

Astuce :

echo "require ’irb/completion’" >> $HOME/.irbrc

Vous aurez alors une auto complétion dans irb

Ruby

Rémi

”FiFouille”

Laurent

Introduction à

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

sudo apt-get install ruby1.8 irb1.8 sudo apt-get install rubygems rake

Astuce :

echo "require ’irb/completion’" >> $HOME/.irbrc

Vous aurez alors une auto complétion dans irb

Ruby

Rémi

”FiFouille”

Laurent


Introduction à

      Ruby                              Installation

      Rémi                                   Indispensables

”FiFouille”

     Laurent                                  Ubuntu/Debian

Installation                             Premiers pas

Indispensables

Ubuntu/Debian Hello World! Premiers pas Hello #{you}!

Hello World!

Hello #{you} !

”Types” de                              ”Types” de base

base Numériques

Numériques

Chaˆ?nes de

caractères                                    Chaˆ?nes de caractères

Tableaux

Tables de                                         Tableaux

hachage

Exemples                                         Tables de hachage

Application

ConversionExemples

Application Conversion

Introduction à

Rémi

”FiFouille” Laurent

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Dans irb :

puts "Hello World!"

Dans un fichier, :

#!/usr/bin/ruby -w puts "Hello World!"

Ruby

-w active les avertissements

Tableaux

Tables de

hachageruby -c vérifie la syntaxe

Exemples

Application

Conversionn’oubliez pas de rendre exécutable ...

Introduction à

Rémi

”FiFouille” Laurent

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Dans irb :

puts "Hello World!"

Dans un fichier, :

#!/usr/bin/ruby -w puts "Hello World!"

Ruby

-w active les avertissements

Tableaux

Tables de

hachageruby -c vérifie la syntaxe

Exemples

Application

Conversionn’oubliez pas de rendre exécutable ...

Introduction à

Rémi

”FiFouille” Laurent

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Dans irb :

puts "Hello World!"

Dans un fichier, :

#!/usr/bin/ruby -w puts "Hello World!"

Ruby

-w active les avertissements

Tableaux

Tables de

hachageruby -c vérifie la syntaxe

Exemples

Application

Conversionn’oubliez pas de rendre exécutable ...


Introduction à

Ruby

Rémi

 

”FiFouille” Laurent

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

you = gets puts "Hello " + you + " !" you = gets.chomp puts "Hello #{you} !"

On obtient :

fifi <ENTER>

Hello fifi !

fifi <ENTER>

Hello #{you} !

Hello fifi !

Introduction à

Ruby

Rémi

 

”FiFouille” Laurent

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

you = gets puts "Hello " + you + " !" you = gets.chomp puts "Hello #{you} !"

On obtient :

fifi <ENTER>

Hello fifi !

fifi <ENTER> Hello fifi !

Hello #{you} !

Introduction à

      Ruby                              Installation



      Rémi                                   Indispensables

”FiFouille”

     Laurent                                  Ubuntu/Debian

Installation                             Premiers pas

Indispensables

Ubuntu/Debian  Hello World! Premiers pas Hello #{you}!

Hello World!

Hello #{you} !

”Types” de                              ”Types” de base

base Numériques caractères       Chaˆ?nes de caractères

Numériques

Chaˆ?nes de

Tableaux

Tables de                                         Tableaux

hachage

Exemples                                         Tables de hachage

Application

ConversionExemples

Application Conversion

Numeric, Integer, Fixnum, Bignum, Float

Introduction à

 

Ruby

Hiérarchie :

Rémi

”Types” de

   

base

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

puts 5 puts 5*2 a = 5**2 puts a puts a + 10

=> 5

=> 10

=> 25

=> 35

 

puts "5" * 4

=> 5555 ?!&?

”FiFouille” Laurent

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

Numeric, Integer, Fixnum, Bignum, Float

Introduction à

 

Ruby

Hiérarchie :

Rémi

”Types” de

   

base

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

puts 5 puts 5*2 a = 5**2 puts a puts a + 10

=> 5

=> 10

=> 25

=> 35

 

puts "5" * 4

=> 5555 ?!&?

”FiFouille” Laurent

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

Introduction à

Ruby

Rémi

”FiFouille”

Laurent

   

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

puts "foobar" str = "foo" + "bar" puts str + " hello" puts str * 2

puts "_#{str}_" puts "foobar".upcase

=> foobar

=> foobar hello

=> foobarfoobar

=> _foobar_

=> FOOBAR

puts ajoute le retour à la ligne, alors que print non.

Chaˆ?nes de caractères - String

Introduction à

Ruby

Rémi

”FiFouille”

   

Laurent

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

arr1 = [1,2,3] arr1[0] arr1[-1] arr1[1..2] arr2 = [] arr2 << 2 << 4 << 3 arr1 + arr2 arr1 & arr2 arr1 - arr2

(arr1+arr2).sort

=> 1

=> -3

=> [2, 3]

=> [1, 2, 3, 2, 4, 3]

=> [2, 3]

=> [1]

=> [1, 2, 2, 3, 3, 4]

Les tableaux - Array

Introduction à

Ruby

Rémi

”FiFouille”

 

Laurent

Installation

Indispensables

Ubuntu/Debian Premiers pas

Il s’agit d’une table ou` des clés correspondent à des valeurs. Une fonction de hachage calcule une clé unique pour une clé donnée et lui fait correspondre une valeur.

Définition - Hash

Tableaux

 

Tables de hachage

grandes tailles)

clé ’pomme’ - valeur ’rouge’

Hello World! Hello #{you} ! collision : ’pomme’ ne peut être ’rouge’ et ’verte’ à la fois

”Types” de base fonction de hachage : répartition uniforme des index caractèresrapide d’accès par rapport aux tableaux (surtout pour les

Numériques

Chaˆ?nes de

Exemples

Application

Conversion

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

Exemples - Hash h = { ’pomme’ => ’rouge’ } h[42] = "la réponse à ..." puts h[’pomme’] + h[42] puts h.has_key?’pomme’ puts h.has_key?(’poire’) h = (5) puts h[123] h[123] += 2 puts h[123]

=> true

=> false

=> 5

=> 7

h = { ’pomme’ => [ ’rouge’, ’verte’]\

’banane’ => ’jaune’ }


 

Introduction à

Ruby

Rémi

 

”FiFouille” Laurent

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

Nous allons compter le nombre de mots dans une phrase :

str = "Les pommes sont rouges ou vertes,\

les bananes jaunes et\ les poires sont vertes ou jaunes"

h = (0) str.split(/ /).each { |mot| h[mot] += 1 } puts "jaunes : #{h[’jaunes’]}" => 2 puts "rouges : #{h[’rouges’]}" => 1 puts "orange : #{h[’orange’]}" => 0

PS : si vous n’avez pas tout compris, ¸ca va venir;)

Application pratique

Introduction à

Ruby

Rémi

 

”FiFouille” Laurent

Installation

Indispensables

Ubuntu/Debian

Premiers pas

Hello World!

Hello #{you} !

”Types” de base

Numériques

Chaˆ?nes de caractères

Tableaux

Tables de hachage

Exemples

Application

Conversion

Nous allons compter le nombre de mots dans une phrase :

str = "Les pommes sont rouges ou vertes,\

les bananes jaunes et\ les poires sont vertes ou jaunes"

h = (0) str.split(/ /).each { |mot| h[mot] += 1 } puts "jaunes : #{h[’jaunes’]}" => 2 puts "rouges : #{h[’rouges’]}" => 1 puts "orange : #{h[’orange’]}" => 0

PS : si vous n’avez pas tout compris, ¸ca va venir;)

Application pratique

Conversions entre types (classes)

Introduction à

Ruby

Rémi

”FiFouille”

 

Laurent

Les conversions sont possibles :

Installationentier ? chaˆ?ne de caractère — 5.to_s

Indispensables

Ubuntu/Debianentier ? réel — 6.to_f

Premiers pas

Hello World!chaˆ?ne ? réel — "3.14".to_f ”Types” detableau ? chaˆ?ne de caractère — [2,3].to_s Numériquesrange ? tableau — (1..5).to_a

Hello #{you} !

base

Chaˆ?nes de

caractèresTableaux...

Tables de

 

hachage

Exemples

Application

Attention aux arrondis, mise à plat, ...

Conversion

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique                                                                             Troisième partie III

Comparaison Logique

case where else

I/O

Lecture

Ecriture´


Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

Opérateurs

Arithmétique Comparaison Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

Opérateurs arithmétiques de base

puts "hello" * 2               => "hellohello" [1,2,3,4] - [2,3]    => [1,4] str = "hello" str << " world!" puts str + "%0.2f" % 4.425   => hello world!4.42 [1,2,3] * 2    => [1,2,3,1,2,3] puts 5 % 3            => 2

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

Opérateurs de comparaison

==,!= (in)égalité au sens strict 5 == 5 , "hello" != "Hello" <=> comparaison, renvoie -1, 0 ou +1 selon la comparaison, utilisé pour spécifier un ordre de tri (Array#sort par exemple) === comparaison utilisée dans le cadre de case ... when

(5..10)     === 6     => true (’a’..’z’) === ’b’  => true (’a’..’z’) === ’Z’   => false

<,>,<=,>= classiques dirons-nous

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

Opérateurs logiques

Opérateurs logiques classiques qui ont, entre autres, des propriétés intéressantes sur les tableaux :

[1,2,3] & [1,2]



=> [1, 2]

[1,2,3] | [1,2,4]

=> [1, 2, 3, 4]

7 ^ 2 (111^010=110)

=> 5

6 & 2 (110&010=010)

=> 2

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

if expr then ... elsif expr ... else ... end val = gets if ( val == 6 )

puts "c’est 6" elsif (1..5) === val puts "entre 1 et 5 compris" else puts "autre chose" end

puts "c’est 6" if val == 6 puts "c’est pas 6" unless val == 6

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

for x in y ... f(x) end

for i in [1,3,2,4].sort.reverse puts "valeur = #{i}" end

for i in (2..10) puts "2 exposant #{i} = #{2**i}" end

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

while expr do ... end

i = 2 while i <= 256 do puts i i = i*i end # avec une expression rationnelle # pour nos plus fidèles auditeurs while s = gets next if ~ /^#/ break if ~ /^quitter$/ puts s end

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

case expr when expr then ... else ... end var = gets case var when /quitter/ puts "quitter" exit

when /heure/ puts else puts "non reconnu" end

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture Ecriture´

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

Lecture dans un fichier fd = open("monfichier", "r") do |ligne| puts ligne end fd.close

On ouvre donc le fichier, en lecture ”r” et ensuite on utilise un itérateur sur le ’descripteur’ de fichier obtenu.

do |ligne|

projette ligne par ligne dans la variable ligne, variable ligne qu’on affiche avec puts.

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

Ecriture dans un fichier´

L’opération d’écriture n’est pas fort différente :

fd = open("monfichier", "w+")

10.times { |i| "#{i} : #{i*i}" }

fd.close

Il s’agit du même principe que pour la lecture, sauf que nous avons spécifié le bloc entre parenthèses et pas entre do ... end.

Voyons maintenant ce qu’est un itérateur et un bloc. PS : les modes sont les mêmes qu’en C avec fopen(3) : man fopen

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Opérateurs

Arithmétique

Comparaison

Logique

Blocs conditionnels if elsif else end for x in y while do ... case where else

I/O

Lecture

Ecriture´

Ecriture dans un fichier´

L’opération d’écriture n’est pas fort différente :

fd = open("monfichier", "w+")

10.times { |i| "#{i} : #{i*i}" }

fd.close

Il s’agit du même principe que pour la lecture, sauf que nous avons spécifié le bloc entre parenthèses et pas entre do ... end.

Voyons maintenant ce qu’est un itérateur et un bloc. PS : les modes sont les mêmes qu’en C avec fopen(3) : man fopen


Introduction à

Ruby

Rémi

”FiFouille” Laurent

Itérateurs

Définition                                                                               Quatrième partie IV

Exemples

Blocs

Définition Exemples

Exceptions

Définition Exemples

Orienté Objet Parlons-en Introduction à

      Ruby                 10  Itérateurs

RémiDéfinition ”FiFouille”Exemples

Laurent

11

Itérateurs Blocs DéfinitionDéfinition

ExemplesExemples 1

BlocsExemples 2

Définition

Exemples 1

Exemples 2                   12   Regex

Définition

Regex

DéfinitionExemples

Exemples

Exceptions      13            Exceptions DéfinitionDéfinition

Exemples

Exemples

Orienté Objet Parlons-en

                       14   Orienté Objet

Parlons-en

Introduction à

Ruby

Rémi

”FiFouille”

Laurent

 

Itérateurs

Définition Exemples

Blocs

Définition

Exemples 1

Exemples 2

Regex

Définition Exemples

Exceptions

Définition

Exemples

Un itérateur permet de parcourir une collection de données, et ce, d’une manière unifiée, quelle que soit la représentation interne de cette collection de donnée.

Dès lors il permet, à l’aide de mécanismes sensiblement ressemblants, de parcourir : un tableau, une liste, un arbre, une table de hachage, une base de donnée, un fichier, ...

Itérateurs - Définition

Orienté Objet

Parlons-en

Introduction à

Ruby

Rémi

”FiFouille”

Laurent

 

Itérateurs

Définition Exemples

Blocs

Définition

Exemples 1

Exemples 2

Regex

Définition Exemples

Exceptions

Définition

Exemples

Un itérateur permet de parcourir une collection de données, et ce, d’une manière unifiée, quelle que soit la représentation interne de cette collection de donnée.

Dès lors il permet, à l’aide de mécanismes sensiblement ressemblants, de parcourir : un tableau, une liste, un arbre, une table de hachage, une base de donnée, un fichier, ...

Itérateurs - Définition

Orienté Objet

Parlons-en

Introduction à

Ruby

Rémi

”FiFouille”

 

Laurent

Itérateurs

Définition Exemples

Blocs

Définition

Exemples 1

Exemples 2

Regex

Définition Exemples

Exceptions

Définition Exemples

Orienté Objet

Parlons-en

[1,2,3].each { |i| puts i }

h = { ’banane’ => ’jaune’, ’poire’ => ’verte’,\

’pomme’ => ’rouge’ }

h.each { |k,v| puts "#{k} est #{v}" }

#exemple en Ruby on Rails list = (:all,\

:conditions => [ ’nom ilike ?’, ’jacque’ ]) { |c| c.email = ’’; c.save }

Itérateurs - Exemples

Introduction à

      Ruby                 10  Itérateurs

RémiDéfinition ”FiFouille”Exemples

Laurent

11

Itérateurs Blocs DéfinitionDéfinition

ExemplesExemples 1

BlocsExemples 2

Définition

Exemples 1

Exemples 2                   12   Regex

Définition

Regex

DéfinitionExemples

Exemples

Exceptions      13            Exceptions DéfinitionDéfinition

Exemples

Exemples

Orienté Objet Parlons-en

                       14   Orienté Objet

Parlons-en

Introduction à

Ruby

Rémi

”FiFouille”

Laurent

 

Itérateurs

Définition Exemples

Blocs

Définition

Exemples 1

Exemples 2

Regex

Définition Exemples

Exceptions

Définition

Exemples

Un peu comme les pointeurs de fonction en C, Ruby permet d’associer une fonction à une variable.

Cependant Ruby va plus loin, non seulement avec les closures qui permettent d’accéder à une partie de l’environnement manipulé, mais encore en permettant la création de bloc/proc dynamiques.

Un bloc ou proc peut être vu comme un bout de code associé à un symbole et réutilisable facilement dans différents contextes.

Blocs & Procs - Définition

Orienté Objet

Parlons-en

Introduction à

Ruby

Rémi

 

”FiFouille” Laurent

Itérateurs

Définition Exemples

Blocs

Définition

Exemples 1

Exemples 2

Regex

Définition Exemples

Exceptions

Définition Exemples

Orienté Objet

Parlons-en

heure = lambda { .to_s } def do_n_times(n, &block)

lambda { n.times { puts yield } }

end

proc1 = do_n_times(3) { "il est " + } proc2 = do_n_times(3) { sleep 1;\

"il est " + }

2.times { }

Blocs & Procs - Exemples 1

Introduction à

Ruby

Rémi

 

”FiFouille” Laurent

Itérateurs

Définition Exemples

Blocs

Définition

Exemples 1

Exemples 2

Regex

Définition Exemples

Exceptions

Définition Exemples

Orienté Objet

Parlons-en

arr = [’11’,’2’,’33’,’4’,’55’] { rand } { |x,y| x.length <=> y.length }

class Hash def each_times(&block)

each { |k,v| k.times { yield v } } end

end

h = { 2 => "hello", 1 => "coin", 4 => "pouet" }

Blocs & Procs - Exemples 2

h.each_times { |s| puts "valeur : " + s }

Introduction à

      Ruby                 10  Itérateurs

RémiDéfinition ”FiFouille”Exemples

Laurent

11

Itérateurs Blocs DéfinitionDéfinition

ExemplesExemples 1

BlocsExemples 2

Définition

Exemples 1

Exemples 2                   12   Regex

Définition

Regex

DéfinitionExemples

Exemples

Exceptions      13            Exceptions DéfinitionDéfinition

Exemples

Exemples

Orienté Objet Parlons-en

                       14   Orienté Objet

Parlons-en

Introduction à

Ruby

Rémi

”FiFouille”

 

Laurent

Itérateurs

Définition

Exemples

Une expression rationnelle c’est : une notation permettant de décrire des chaˆ?nes de caractères, en gros :



Définition

 

Exemples

Exceptions

Définition

Exemples

copains—son patron)

Pour plus d’informations, je vous renvoie à une autre présentation;)

Expressions rationnelles - Définition

Blocsde repérer des schémas donnés de chaˆ?ne de caractères Définition de les manipuler Regex(d’impressionner—de traumatiser) (sa copine—ses

Exemples 1

Exemples 2

Orienté Objet

Parlons-en

Introduction à

Ruby

Rémi

”FiFouille”

 

Laurent

Itérateurs

Définition Exemples

Blocs

Définition

Exemples 1

Exemples 2

Regex

Définition Exemples

Exceptions

Définition Exemples

Orienté Objet

Parlons-en

#bon courage ;) str = "bonjour, comment va ?"

str.match(/^bon(.*),.+(m{2,}).+(..\?)$/) foo, bar, baz = $1, $2, $3.gsub(/ /, ’h’) puts "#{bar}h, quelle #{foo}née ! #{baz}"

puts "bonjour" if str =~ /^bonjour/ puts str puts "bien" if str =~ /va\s*\?$/

Expressions rationnelles - Exemples

Introduction à

      Ruby                 10  Itérateurs

RémiDéfinition ”FiFouille”Exemples

Laurent

11

Itérateurs Blocs DéfinitionDéfinition

ExemplesExemples 1

BlocsExemples 2

Définition

Exemples 1

Exemples 2                   12   Regex

Définition

Regex

DéfinitionExemples

Exemples

Exceptions      13            Exceptions DéfinitionDéfinition

Exemples

Exemples

Orienté Objet Parlons-en

                       14   Orienté Objet

Parlons-en

Introduction à Ruby

 

Rémi

”FiFouille” Laurent

Itérateurs

Définition Exemples

Blocs

Définition

Exemples 1

Exemples 2

Regex

Définition Exemples

Exceptions

Définition Exemples

Orienté Objet

Parlons-en

Avec de simples codes de retour il est parfois difficile de remonter une erreur et de la définir précisément, il est parfois encore plus difficile de se remettre proprement d’une erreur rencontrée.

Les exceptions sont là pour palier à ce problème, en définissant précisément une erreur, et en permettant de terminer proprement chaque partie ou étape du programme.

Les cas les plus classiques sont la fermeture de fichiers ou de connexions réseaux, mais d’autres sont envisageables bien entendu.

Exceptions - Définition

Introduction à Ruby

 

Rémi

”FiFouille” Laurent

Itérateurs

Définition Exemples

Blocs

Définition

Exemples 1

Exemples 2

Regex

Définition Exemples

Exceptions

Définition Exemples

Orienté Objet

Parlons-en

filename = "" tmpfilename = "/tmp/" + filename begin fd = open(filename, ’w+’) .to_s

rescue raise "erreur" if filename == tmpfilename $ "essai avec un fichier temporaire" filename = tmpfilename retry

ensure

fd.close if fd end

Exceptions - Exemples

Introduction à

      Ruby                 10  Itérateurs

RémiDéfinition ”FiFouille”Exemples

Laurent

11

Itérateurs Blocs DéfinitionDéfinition

ExemplesExemples 1

BlocsExemples 2

Définition

Exemples 1

Exemples 2                   12   Regex

Définition

Regex

DéfinitionExemples

Exemples

Exceptions      13            Exceptions DéfinitionDéfinition

Exemples

Exemples

Orienté Objet Parlons-en

                       14   Orienté Objet

Parlons-en

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Itérateurs

Définition

Exemples

 

Blocs

Définition

Exemples 1

Exemples 2

Vous voulez qu’on en parle?

Parce qu’il paraˆ?t que ¸ca ferait de trop pour une seule fois;)

Orienté Objet

Regex

Définition Exemples

Exceptions

Définition Exemples

Orienté Objet

Parlons-en

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Itérateurs

Définition

Exemples

 

Blocs

Définition

Exemples 1

Exemples 2

Vous voulez qu’on en parle?

Parce qu’il paraˆ?t que ¸ca ferait de trop pour une seule fois;)

Orienté Objet

Regex

Définition Exemples

Exceptions

Définition Exemples

Orienté Objet

Parlons-en

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Conclusion

Documentation                                                                      Cinquième partie V

 

Introduction à

Ruby

Rémi

”FiFouille” Laurent

Conclusion

Documentation


15  Conclusion

Introduction à

Ruby

Rémi

”FiFouille”

 

Laurent

Conclusion

Documentation

Ruby semble être un langage fort agréable, facile à apprendre et utiliser, qui dispose de nombre de bibliothèques intéressantes, qui propose des extensions simples à mettre en oeuvre, une approche orientée objet omniprésente, et de nombreux domaines d’application.

16  Documentation Conclusion

Pour ceux qui ne l’auraient pas compris, l’auteur de ces slides apprécie Ruby

Introduction à

Ruby

Rémi

”FiFouille”

 

Laurent

Conclusion

Documentation

Ruby semble être un langage fort agréable, facile à apprendre et utiliser, qui dispose de nombre de bibliothèques intéressantes, qui propose des extensions simples à mettre en oeuvre, une approche orientée objet omniprésente, et de nombreux domaines d’application.

Conclusion

Pour ceux qui ne l’auraient pas compris, l’auteur de ces slides apprécie Ruby

Documentation disponible

Introduction à Ruby

 

Rémi

”FiFouille”

Laurent

Il existe beaucoup de documentation accessible gratuitement, la plupart du temps :

Conclusion - EN

The Pragmatic Programmer Guide - 2nd Edition par Dave Thomas $ gem server et puis http ://localhost :8808 si vous avez installé des modules avec rubygems Agile Web Development with Rails pour ceux qui voudraient essayer Ruby On Rails



335