Bonjour, voici un premier cours sur le langage Ruby.
PRÉLUDE
Pour commencer, sachez que je vais en premier lieu parler du langage Ruby et non le RGSS (qui en découle).
Pour tester les codes durant les cours et pour vous entraîner, je vous suggère de créer un nouveau projet sous RM (XP ou VX). Supprimez tous les scripts par défaut, même le Main.
RM sans ses scripts est un interpréteur qui pourra tester nos codes =).
Cours 1 : Les différents types d’expressions et leurs applications
Dans ce tout premier cours, je vais vous présenter les quelques types d’expressions que vous aurez l’occasion d’utiliser dans vos codes.
Il existe :
+
Les nombres (Fixnum)
-Les entiers (Intergers) Exemple : 5
-Les décimaux ( Floats) Exemples : 4.0 ; 6.21534
+
Les chaînes de caractère (String) Exemples : «Salut ! » ou « 45 »
/!\ Remarque : Les chaînes de caractères sont toujours définies par les guillemets ! 45 est différent de « 45 » !
A) Math & co
Nous allons voir les opérations possibles avec les nombres et les String.
1) Les Nombres
Voici quelques exemples de ce que l'on peut faire.
- Code:
-
p 3+4 # Ceci affichera 7
p 7-3.0 # Ceci affichera 4.0
p 4*6 # Ceci affichera 24
p 8/5 # Ceci affichera 1
p 8/5.0 # Ceci affichera 1.6
p 8%5 # Ceci affichera 3
p 5**4.0 # Ceci affichera 625
Examinons tout ceci:
- L'expression "p" (ou print) est une méthode ( nous verrons ce que sont les méthodes ultérieurement) qui affiche la valeur de ce qui suit.
- Tout ce qui est après les # sont des
commentaires. C'est à dire qu'ils n'ont aucun impact sur le fonctionnement du script, ils servent seulement à la compréhension, selon le bon vouloir du codeur, du script.
-Ici rien de bien compliqué. Les opérateurs " %" et "**" sont respectivement le modulo et la puissance. Le modulo donne le reste d'une fraction.
- Le plus important ici est la différence de résultats entre 8/5 et 8/5.0. Le bon résultat est 1.6 mais pourquoi alors 8/5 = 1 ?
===> Car vous avez tout simplement ordonner à l'ordinateur de donner le résultat de cette division tronqué à l'entier. Or dans 8/5.0, le terme 5.0 est un décimal.
Donc l'ordinateur fera :" Tient, cette fois-ci il me donne un décimal, je lui donne donc les valeurs après la virgule". Un ordinateur c'est bête, il vous donne le résultat selon la nature des termes même si c'est faux. Donc si vous voulez un résultat bon, pensez à mettre au moins un terme en décimal.
- Pour ce qui est de la priorité, c'est la même chose ici. Les termes dans les parenthèses doivent être calculés avant tout.
2) Les chaînes de Caractère
Nous pouvons utiliser des Strings dans des calculs mais sous certaines conditions dans certains cas.
Nous pouvons seulement additionner un strings avec d'autre string et multiplier un string avec un Fixnum.
- Code:
-
p "Salut" + "Salut" # Ceci affichera SalutSalut
p "Salut " + "Salut" # Ceci affichera Salut Salut
p "Salut" + " Salut" # Ceci affichera Salut Salut
p 4 * "salut" # Ceci affichera Error
p "salut" * 4 # Ceci affichera salutsalutsalutsalut
Examinons tout ceci:
-Pour les additions, on assemble des chaînes avec d'autre chaînes. En revanche, pensez toujours à ajouter un espace entre chaque string sinon nous aurons un résultat comme la première addition.
RQ: Un espace dans des guillemets est considéré comme un caractère.
- Nos deux multiplications ont les mêmes termes, pourquoi nous avons une erreur pour l'une et non pour l'autre?
==> Dans une multiplication, la position des nombres importe peu. Il en va autrement pour des Strings.
En effet, là il faut lire (dans le langage humain) cette opération:
- Code:
-
4 * "salut"
=> On peut traduire par: "On multiplie 4 par "salut"." Ceci est donc totalement illogique.
- Code:
-
"salut" * 4
=> " On multiplie "salut" par 4. Ici on comprends que l'on a 4 fois le string "salut".
Ce que vous devez donc bien comprendre ici, c'est que la position des termes dans une multiplication est très importante si vous utilisez des chaînes de caractères. C'est le terme après le "*" qui joue le rôle du multiplicateur, ce qu'un string ne peut pas faire.
B) J'ai toujours voulu être un Fixnum....
Sous ce sous titre bizarre, ce cache une partie intéressante qu'est la "
conversion de type"
Kézako?La conversion de type se résume à plusieurs méthodes qui permet de changer une expression d 'un type en un autre type.
Voici la liste des convertisseur:
- Code:
-
to_i #Transforme l'expression en un Intergers (entier)
to_f #Transforme l'expression en un Float (décimal)
to_s #Transforme l'expression en un String (Chaîne de caractère)
to_a #Transforme l'expression en un Array (tableau)
Voici quelques exemples:
- Code:
-
p "42".to_i # Affiche 42
p "42".to_f # Affiche 42.0
p "42".to_s # Affiche "42"
p "42".to_a # Affiche [42]
p "abc".to_i # Affiche 0
p "abc".to_f # Affiche 0.0
Précision: Les deux dernières conversions affiche 0 car l'ordinateur ne sait pas transformer des caractères non numériques en nombre (nous également ^^), il met donc 0.
Voici pour ce premier cours, j'espère que vous comprendrez et n'hésitez pas à me poser des questions et à faire des critiques de ce cours (constructives bien entendu) pour que je puisse améliorer les prochains. Very Happy
Metroid_Prime