RPG Fusion
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.



 
AccueilPortailRechercherDernières imagesS'enregistrerConnexion
Le Deal du moment : -29%
PC portable – MEDION 15,6″ FHD Intel i7 ...
Voir le deal
499.99 €

 

 Apprendre a scripter partie |(1) chapitre |||(3)

Aller en bas 
AuteurMessage
simoni52
Banni par abus de pouvoir
Banni par abus de pouvoir
simoni52


Masculin
Nombre de messages : 169
Age : 30
Projet(s) en cours : Rien pour l'instant d'officel
Niveau Rpg Maker : Euhh bezn question graphisme 5/10 Progrmmation 8.5/10 Scenario 6/10
Jeux Préférés : Advance wars
Date d'inscription : 27/04/2007

Apprendre a scripter partie |(1) chapitre |||(3) Empty
MessageSujet: Apprendre a scripter partie |(1) chapitre |||(3)   Apprendre a scripter partie |(1) chapitre |||(3) EmptyMer 18 Juil 2007, 12:09

Voici donc le troisieme chapitre pour apprendre le ruby.

Je repete que je ne connais pas le ruby mais je suis tombé desus en apprenands le php.

Ce tutoriel est de Loktar.

Chapitre 3]
Les bases du langage
* Structure d'un programme
* Stockage des données
* Instructions de contrôle

Les principaux atouts du langage ont déjà été énoncés, voyons maintenant certaines de ses caractéristiques plus profondes.

NDLR : Ce chapitre est l'un des plus importants (sauf si vous avez déjà les bases), si vous trouvez qu'il n'est pas assez détaillé, qu'il est trop "compact" ou d'une manière générale trop difficile ou désagéable à lire, n'hésitez pas à le signaler !

---------------------------------------------------------------------------------------------------------------

Structure d'un programme
Les délimiteurs d'instruction


En Ruby, les instructions peuvent être regroupées en bloc. Ces blocs sont liés à une boucle, une condition, etc. Ils sont le plus souvent délimités par des accolades (comme dans la majorité des langages de programmation de haut niveau). Il est néanmoins possible de remplacer l'accolade fermante } par le mot-clé end, dans certans cas, l'accolade ouvrante { doit être remplacée par do, dans d'autres, un mot-clé (comme if) suffit, comme en témoigne cet exemple :

Code:
condition {
instructions
}


équivaut à :

Code:
condition
  instructions
end


En général, la deuxième solution est plus appropriée, sauf si vous êtes omnibulé par le gain de place dans votre code source (pour faire tenir votre bloc sur une seule ligne, les accolades sont plus pratiques, mais c'est déconseillé Wink ).

Les instructions du programme sont usuellement séparées par un point virgule (situé en fin de ligne). Ruby (contrairement à certains autres langages) vous permet d'omettre ce point virgule si vous vous limitez à une seule instruction par ligne. Nous utiliserons cette particularité dans tout le tutoriel.
Stockage des données
Les variables


Une donnée peut être associée à un mot la caractérisant. Ce mot est appelé variable. Lorsque vous vous apprêtez à utiliser une variable, vous devez l'initialiser, c'est à dire lui associer une valeur (un chiffre, une chaîne de caractères, etc.), sans quoi elle sera verra assigner la valeur nil (null dans d'autres langages, absence de valeur) par défaut (sauf pour les variables locales). Voici un exemple :

Code:
nom = "Aristote"
annee = "2006" #surtout pas de caractère accentué dans un nom de variable
langage = "Ruby"
repetitions = 2
puts (nom + " apprend le " + langage + " en " + annee) * repetitions
puts "#{nom} apprend le #{langage} en #{annee}" * repetitions


Une variable ne doit surtout pas débuter par un chiffre !


Ce code produit :

Code:
Aristote apprend le Ruby en 2006Aristote apprend le Ruby en 2006
Aristote apprend le Ruby en 2006Aristote apprend le Ruby en 2006


En effet #{variable} est remplacé (lorsqu'il est placé entre guillemets) par la valeur de la variable en question, ici #{nom} est remplacé par "Aristote".

Récupérer une saisie au clavier


puts et print que nous avons déjà rencontrées plus tôt sont des méthodes capables d'afficher une chaîne de caractères sur la sortie standart (console).


Pour effectuer l'opération inverse, c'est-à-dire saisir une chaîne de caractères sur l'entrée standart (lorsque vous tapez quelque chose au clavier), utilisez la méthode gets et placez ce qu'elle reçoit dans une variable :

Code:
puts "votre nom ?"
nom = gets
puts "votre nom est #{nom}"


Les flux d'entrées et de sorties seront vus plus en détails par la suite Wink

Fermons cette parenthèse et revenons à nos variables : par définition, la valeur d'une variable peut varier au court du programme, il en existe 4 types.

Les variables globales


Les variables globales sont des variables dont la valeur est accessible n'importe où dans le programme. Leur nom commence par le symbole $. Il existe quelques variables globales dont le nom est réservé, dont en voici quelques unes (utiles pour suivre le cheminement d'un script ou pour localiser des erreurs) :

* $_ désigne la dernière chaîne lue par gets
* $@ désigne le lieu de l'erreur (le cas échéant)
* $. désigne la dernière ligne lue par l'interpréteur
* $* désigne les arguments de la ligne de commande


Les variables locales


Un nom de variable locale débute par une lettre minuscule (comme toutes les variables que nous avons utilisées dans nos exemples jusque là) ou par un tiret underscore : _
Par défaut, les variables sont locales, elles sont théoriquement accessibles partout dans le programme, mais contrairement aux variables globales, elles ne possèdent pas la valeur nil avant initialisation.

Si vous ne savez pas quel type de variable utiliser, et que vous voulez faire les choses rapidement et simplement, utilisez une variable locale.


Les variables d'instance


Les variables d'instance commencent par le symbole @. Ces variables ne sont accessibles que depuis une classe. Il est aussi à noter que deux objets de la même classe peuvent avoir des mêmes variables d'instance mais dont la valeur diffère. Elles sont donc spécifiques à une instance d'une classe donnée.

Les variables de classe


Ces variables contiennent une information stockée dans la classe elle-même et non dans les objets instanciés par cette classe, en outre cette information s'applique à toutes les instances créées par cette classe. Ces variables commencent par @@.

Les constantes


Les constantes remplissent la même fonction que les variables, à la seule différence que vous ne devez pas modifier leur valeur le long du programme. Si vous le faites, vous n'obtiendrez pas d'erreur, mais un simple avertissement. Le nom d'une constante débute par une majuscule, vous pouvez également les écrire intégralement en majuscule, pour les repérer plus facilement.
Un petit exemple pour récapituler :

Code:
class Chameau
  @@nombre_pattes = 4 # variable de classe
  @@nombre_bosses = 2 # idem
  RACE = "chameau" # constante de classe, non précédée de @@
  def marcher
    puts "..."
    $sensation = "fatigue" # variable globale
  end
  def boire(l)
    litres = l # variable locale
    BOISSON = "eau" # constante
  end
  def appeler(nom)
    @nom = nom # variable d'instance
  end
end


Les tableaux


Un tableau est une structure pouvant stocker des données. Des données de types différents peuvent cohabiter dans un même tableau (par exemple, un nombre quelconque et une chaîne de caractères). Un tableau est délimité par des crochets et les différents éléments dont il est constitué sont séparés par des virgules.

Chaque élément du tableau est associé à un chiffre (un entier naturel pour être exact [Don hypocrite] ) qui représente la case du tableau qu'il occupe, la première case porte le numéro 0. Un exemple pour vous éclairer :

prix = [30, 400, 25, 73] # création d'un tableau quelconque contenant des entiers
puts prix # affichage de toutes les valeurs du tableau
langues = ["fr", "en", "ruby"] # un tableau de chaînes de caractères
puts langues # que l'on affiche


et on obtient :

Code:
30
400
25
73
fr
en
ruby


Les hachages


Les hachages sont des tableaux particuliers, au lieu d'associer une valeur à la place qu'elle occupe dans le tableau, elle sera associée à une clé (un autre mot Wink ). Voilà qui devrait vous parler davantage :

Code:
livre = {
    "titre"  => "Toto perd la tête",
    "auteur"  => "Toto",
    "sujet"  => "La vie de Toto"
}

Dans cet exemple, "Toto" est associé à la clé "auteur", cette valeur est désignée par livre["auteur"].

Si on avait eu recours à un tableau, on aurait utilisé livre[2] pour désigner "Toto". La seconde différence essentielle avec les tableaux ordinaires est l'utilisation d'accolades dans la déclaration des éléments à la place de crochets. Vérifiez que vous ne vous êtes pas trompés en cas d'erreur inexpliquée ^^ .

Quand utiliser un hachage plutôt qu'un tableau ?

Lorsque les données sont du mêmes type, et qu'elles appartiennent à un même ensemble (par exemple : la suite des nombres premiers jusqu'à 1000, la liste des prénoms de vos amis, etc.) un tableau est plus indiqué. Dans tous les autres cas, un hachage devrait convenir davantage. Tout dépend de ce que vous estimez être le plus pratique en fonction de vos besoins. Wink
Instructions de contrôle
Les conditions


Sans les conditions, les programmes seraient monotones, linéaires, ils fonctionneraient toujours de la même façon. Or, dans la plupart des cas, on a besoin d'adapter le déroulement du programme en fonction de certains paramètres (le plus souvent, une action de l'utilisateur), voilà pourquoi les programmeurs ont recours aux structures conditionnelles. [Don hypocrite]

if - else


La structure en if - else est la plus simple des structures conditionnelles. Elle évalue une expression, si (if) cette condition est remplie, certaines instructions sont exécutées, sinon (else) on en exécute d'autres. Comme l'illustre cet exemple :

Code:
age = 17
if age >= 18
  puts "vous etes majeur"
else
  puts "vous etes mineur"
end


Vous pouvez modifier la valeur de age pour voir le résultat obtenu. Afin de tester ce genre d'expression arithmétique, vous disposez des opérateurs suivants :

* == vérifie l'égalité de premier terme par rapport au second (à ne pas confondre avec le symbole d'égalité simple qui sert à l'affectation de valeurs)
* < vérifie que le premier terme est strictement inférieur au second
* > vérifie que le premier terme est strictement supérieur au second
* <= vérifie que le premier terme est inférieur ou égal au second
* >= vérifie que le premier terme est supérieur ou égal au second
* != vérifie l'inégalité du premier terme par rapport au second


Une structure conditionnelle se termine par le mot-clé end. Mais celui ci se situe après la dernière condition (ici après le else, et non après le if)

Si une condition est vérifiée, l'état true (vrai(e)) lui est assigné, le cas échéant, ce sera la valeur false. Ces deux mots-clés sont ce qu'on appelle des valeurs booléennes, vous pouvez aussi les assigner à des variables.

Code:
estMajeur = false
if (estMajeur)
  puts "Vous etes majeur"
else
  puts "Vous etes mineur"
end


La valeur true se déduit d'elle même, vous n'avez pas besoin d'écrire if (estMajeur == true). Pour tester la valeur false, on aurait pu écrire if (estMajeur == false), mais ceci fonctionne aussi : if !(estMajeur).

else if / elsif


La condition vue précédemment peut être enrichie davantage, des choix intermédiaires peuvent être proposés, par test de plusieurs conditions successives (si.. sinon si.. sinon si.. sinon). La première condition vérifiée comme étant vraie sera exécutée, les autres seront alors ignorées (même si elles sont vraies elles aussi).

Code:
a = 5
b = 4
c = 7
if (a < b) # la condition est fausse
  #instruction quelconque
else if (a < c) # la condition est vraie
  #instruction quelconque
elsif (b < c)  # la notation elsif équivaut à else if
                # la condition est vraie mais ne sera pas considérée comme true
                # les instructions qui la suivent ne seront pas exécutées
  #instruction quelconque
else
  #instruction quelconque
end


Les remarques faites précédemment sont encore valables ici.

unless


unless est la condition contraire de if. Elle exécute une instruction sauf si la condition est vérifiée. Par exemple :

Code:
unless 1>3 # condition fausse
        puts "yes"  # on exécute
end


unless (estMajeur) effectue la même chose que if !(estMajeur), vous pouvez donc utiliser la condition que vous préférez. :p

L'instruction case


Cette instruction teste une suite de conditions : elle évalue plusieurs cas et exécute certaines instructions en conséquence (la première condition vérifiée masque les autres comme dans la structure if - elsif - else). Voici comment l'utiliser :

Code:
z = 4
case z # on teste différents cas en fonction de la valeur de z
when 1 # dans le cas où z = 1
  print "z = 1"
when "maison" # dans le cas ou z contient la chaîne "maison"
  print "z = 'maison'"
when z = 2
when z = 3
when z = 4
  puts "z = 4"
when z = 5
end


Il est également possible de tester si la variable testée appartient à un intervalle donné, nous verrons comment faire ceci lors de l'étude de la boucle for. Cette structure case se termine là aussi par un end.

Les boucles


Les boucles sont utilisées dans l'objectif de répéter une instruction donnée un certain nombre de fois. Là aussi, il existe plusieurs manières d'accomplir la même chose.

La boucle while


La boucle while (tant que) équivaut à un if qui se répète tant qu'une certaine condition est considérée comme true ou tant qu'elle est considérée comme false.

Code:
a =2
b = 5
while (a < b)
  puts "a < b"
end

Ici, la condition est toujours vraie, la boucle se répètera alors à l'infini. Donc dans une boucle while, on modifie la valeur d'une donnée prise en compte dans l'instruction, qui est ici un nombre, mais qui pourrait aussi bien être une valeur booléenne :

Code:
estConnecte = true
while(estConnecte)
  puts "vous etes connecte"
  .. # instructions quelconques
  estConnecte = false # au bout de X exécutions de la boucle
end
puts "vous avez ete deconnecte"

De cette façon, on peut régler l'exécution d'une boucle while en utilisant un compteur et ainsi exécuter une instruction un certain nombre de fois. Voici comment procéder :

Code:
var = 0 # on initialise la variable
while (var <= 14)
  puts var
  var = var + 1 # on augmente sa valeur de 1, sinon la boucle est infinie
end


La boucle loop


La boucle loop est infinie, et ne prend donc pas de condition en paramètre, elle équivaut à une boucle while(true). Etant donné qu'elle est infinie, il vous faudra l'instruction break pour en sortir.

Code:
n = 0
loop {
  puts n
  if (n > 10)
    break # sort de la boucle
  end
  n = n+2
}


La boucle until


La boucle until est à la boucle while ce que unless est à if [Don hypocrite] . Cette boucle ne s'exécute non pas tant que la condition est vraie, mais jusqu'à ce qu'elle soit vraie. Elle est donc totalement équivalente à while !(condition), voici un exemple :

Code:
n = 0
until n>5
  puts n
  n = n+2
end


La boucle for


La boucle for est quelque peu différente de la précédente : elle exécute une instruction donnée pour chaque élément d'un ensemble, par exemple pour obtenir le même résultat que celui fourni par la seconde boucle while étudiée (c'est à dire écrire tous les nombres de l'ensemble [O; 14]) il nous faut écrire :

Code:
for nombre in (0..14)
  puts nombre
end


les instructions (puts nombre) sont exécutées pour chaque élément (désigné par nombre) de l'ensemble défini (ici 0..14).

Petite parenthèse :
La notation t..n désigne les éléments compris dans l'intervalle délimité par t et n où t et n sont des nombres et sont considérés comme étant inclus dans cet intervalle.
La notation t...n désigne le même ensemble, à la différence que la seconde borne de l'ensemble est exclue, donc n n'en fait pas partie.
Ceci est notamment utile pour les chaînes de caractères, si on considère : sdz = "siteduzero", alors puts sdz[0..3] affichera "site", on remarque alors que la chaîne de caractère est rangée dans un tableau (la première lettre porte l'indice 0).

Une boucle for se termine par un end.
Revenir en haut Aller en bas
http://kakuro.fr.tc
 
Apprendre a scripter partie |(1) chapitre |||(3)
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Apprendre a scripter partie | chapitre |
» Apprendre a scripter partie |(1) chapitre ||(2)
» Apprendre a scripter partie |(1) chapitre |||(3) bis

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Fusion :: LUDOTHEQUE :: Temple du Savoir :: Scripts-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser