Sujet: Cours #1 : Types et Variables Mar 5 Aoû 2008 - 20:37
HS: Bon, disons que je suis en train de tout mettre en oeuvre, donc ce premier cours risque de servir de test autant pour moi que pour vous.
Niveau : Néophyte.
Outils : RPG Maker VX (ou un autre compilateur ruby, mais puisque VX fonctionne, aussi bien en profiter).
Préparation : Téléchargez le projet vierge de la section. Ouvrez-le. Vous verrez qu'il n'y a rien dans ce projet. Aller dans la fenêtre des scripts pour y découvrir le même vide. Maintenant, vous êtes prêts à apprendre le Ruby. Ce projet vide est référé comme «Le projet du cours.» (Ceux qui auraient la première version, il y a une version corrigée, car j'avais oublié d'inclure un fichier important pour que ça fonctionne.)
Sujets traités : Les types, les variables et les conversions.
Cours :
Théories
Bon tout d'abord, nous commencerons par les types de données possibles en Ruby. Parmis les type de base, il y a les Integers (entiers), les Floats (décimales à point flottant), les Strings (chaînes de caractères). Ensuite, il y a les types plus avancés, les Arrays (matrices unidimensionnelles ou vecteur ou tableaux à index) et les Hashes (matrice bidimensionnelle ou tableau de référence). Apprenez les termes anglais, car c'est ceux-là qui sont utilisés lorsque vous coderez.
Un point important à savoir, c'est que le type est déterminé par la valeur et non par le nom. Donc, une variable ne porte pas le type, c'est sa valeur qui détermine si c'est un nombre ou une chaîne ou un tableau. Par contre, sachez que les types ne sont pas compatibles entre eux, à l'exception des floats et des integers qui peuvent être tous deux membres d'une opération arithmétiques. Normalement, le résultat sera convertit en float. Les nombres entiers ou flottants sont écrits sans artifice. Les chaînes sont entourées par des guillemets anglais. Les tableaux sont encadrés par des crochets [] et les membres sont séparés par des virgules. Également, il est important de se rappeler que les décimales ne sont pas séparées par une virgule, mais par un point. Pour cette leçon, les tableaux ne seront pas couverts, car leur utilisation est bien différente.
Bon c'est bien beau tout ça, mais il faut pouvoir tester ce dont on parle. Voici les trois premiers mots clés pour la leçon.
begin : ce mot clé indique qu'une section commence. Il est toujours en paire avec end. end : ce mot clé indique la fin d'une section. Il est toujours en paire avec autre chose. print : ce mot clé permet d'afficher quelque chose à l'écran.
NB: Attention sous VX, seul print fonctionne. RGSS est une version simplifiée de ruby (avec moins de commandes). put et get ne fonctionne pas sous RMVX.
Donc, dans le projet du cours, dans la fenêtre de script, prenez la page de script vierge. (Si c'est la première leçon que vous prenez, assurez vous qu'il n'y a pas d'autres scripts et toute tout la page est blanche.) On veut afficher, des valeurs, rien de plus simple. Il faut toujours commencer par begin et finir par end. Donc, allons-y. Écrivez begin, faites deux ou trois enter puis écrivez end. Assurez-vous de toujours rester à l'intérieur de begin et de end, sinon votre script ne sera pas exécuté. Donc, entre le begin et le end, écrivez print 1, puis print "allo", puis print 1.0, le tout, toujours séparé par des ENTERs. Cela devrait ressembler à ceci :
Code:
begin
print 1 print "allo" print 1.0
end
Faites OK sur la fenêtre des scripts. Lancer le jeu en mode test. Voyez le résultat. Bon. Si on veut mettre plusieurs valeurs en ligne ou afficher un résultat... Voici un autre test. Le premier est une multiplication, le deuxième une répétition, la troisième une concaténation (concat) et le quatrième une addition.
Quand on fait des math en Ruby, le compilateur respecte la priorité des opérations ()*/+-. Comme dit précédemment, on ne peut pas mélanger les types sauf dans quelques exceptions. Mais dans quelques minutes, on va régler ce problème. Mais tout d'abord, voyons les variables. Les variables sont des noms qu'on donne à une valeur afin d'y référer ailleurs. Pour lui donner une valeur, on la fait suivre du symbole = puis on y inscrit la valeur. Le nom des variables peut contenir n'importe quel symbole alphanumérique ainsi que des barres de soulignement (underscores), mais ne peut pas commencer par un chiffre.
Ce résultat est assez semblable à ce que nous faisions il y a deux secondes à peine, mais cette fois avec des variables. Bon maintenant, passons aux choses sérieuses, la conversion des types. Regardons uniquement les 3 premières conversions possibles to_f, to_i, to_s. Dans l'ordre, ils signifient, vers float, vers integer, vers string. Donc, vous pouvez imaginer une acquisition et afficher le résultat en mélangeant texte et nombres. Notez que la conversion d'un string en nombre transforme uniquement le code de la première lettre de la chaine en sa valeur du code ASCII. Donc supposons que vous mangez deux pommes et que vous désirez l'afficher ainsi que le nombre de pomme qu'il reste dans le panier, voici comment on peut faire.
Code:
begin
panier = 20 manger = 2 print "J'avais " + panier.to_s + " pommes. J'en ai mangé " + manger.to_s + ". Donc, il m'en reste " +(panier-manger).to_s +"."
end
J'ai placé ce code ainsi pour que le code soit imprimable sur papier. Notez bien ceci. Normalement, la ligne du print devrait être sur une seule ligne. Cependant, puisque j'utilise la concaténation, le compilateur cherche à trouver la seconde partie. Si vous voulez faire cela, faites attention. Le + doit toujours être sur la ligne d'avant, car sinon, ça engendre une erreur de compilation. Idéalement, écrivez qu'une seule ligne par instruction et une seule instruction par ligne.
Il y a différent types de variables, dans l'immédiat, on ne voit pas leur utilité, mais sachez les reconnaitres. Il y a les constantes, les variables locales, les variables d'instances et les variables globales. Les constantes ne sont pas des variables au sens propre, mais leur utilisation est semblable. On reconnait les constantes à leur nom écrit en majuscule. Ces valeurs sont permanentes tant que le module qui les a créés existe, c'est à dire, tout le temps. Nous verrons les modules dans la leçon 3. Pour le moment, sachez uniquement qu'une constante est écrite en majuscule alors que les variables sont écrites en minuscules. Les variables locales sont écrites simplement en minuscule. Celle-ci existe tant que le end de la section courante n'a pas été atteint. Sa durée de vie est la plus courte de toutes les variables. Dès qu'on sort du contexte où la variable a été créée, celle-ci n'existe plus. Les variables d'instances sont écrites en minuscules, mais sont précédées par un @. Celles-ci sont disponibles tant que l'instance de la classe existe. Les classes font également partie de la 3e leçon. Elles ont une durée de vie moyenne puisqu'elles sont disponibles pour l'ensemble de la classe et que deux instances de la même classe créent deux instances différentes de la même variable. Nous verrons cela plus en détail plus tard. Sachez uniquement que les variables ayant un @ appartiennent à cette catégorie. Finalement, les variables globales, qui sont précédé par un $, existant tant que le programme tourne, autrement dit, tout le temps et accessible de tous. Une seule instance de ces variables est valable. Donc deux instances d'une même classe partagent la même variable globale et c'est la même pour toutes les classes. Le choix de la variable est crucial selon l'utilisation qu'on veut en faire. Donc, voici une représentation des variables.
Voilà c'est tout pour cette leçon. La leçon 2 traitera des contrôles et des tableaux. N'oubliez pas de faire les exercices.
Exercices
Ne postez pas vos résultats ici. Merci de ne pas dévoiler les réponses aux autres. Toutes transmissions de réponses seront effacées. Référez-vous au solutionnaire pour vous évaluer.
Pour ces exercices, n'utilisez que des variables locales lorsque vous en aurez besoin.
#1. Faite un code qui permettra d'afficher le résultat d'une équation complexe (qui utilise ( ) + - * / ) pour montrer la priorité des opérations.
#2. Prenez ce résultat et faites afficher une phrase qui explique ce que veut dire ce chiffre. Insérez le résultat à l'intérieur de ce texte.
#3. À l'aide d'une autre affiche à l'écran, faite une conversion forcée de integer et de float puis afficher les 2 à l'écran en indiquant, grâce à du texte, lequel est lequel.
Pondération des exercices 1. 5pts 2. 7pts 3. 8pts
Bonne chance.
Dernière édition par MirainoHikari le Lun 10 Mai 2010 - 9:06, édité 5 fois
ibiky-ushiha
Voyageur Lv.10
Age : 35 Inscrit le : 07/07/2008 Messages : 498
Sujet: Re: Cours #1 : Types et Variables Mar 5 Aoû 2008 - 22:45
Voila j'ai fais les exercice #1 et #2 mais je ne compren pas bien le #3 pourrais tu ci tu le veux bien m'expliquer un peut ce qu'il faut faire .
Merci a toi.
Invité
Invité
Sujet: Re: Cours #1 : Types et Variables Mer 6 Aoû 2008 - 1:12
Je crois qu'il veut qu'on utilise un autre print pour afficher le résultat des fonction de conversion to_i et to_f.
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: Cours #1 : Types et Variables Mer 6 Aoû 2008 - 1:18
Kakono-san a été plus rapide que moi. (Tu permets que je t'appelle comme ça en fait? comment puis-je te nommé pour faire plus court?) En effet, je veux que vous fassiez un deuxième print avec les conversions et du texte. C'est aussi simple que ça... Un indice, l'exercices oblige de faire une double conversion pour l'affichage.
Bon je n'ai pas d'autre méthode pour le moment. Vous pouvez donc me remettre vos codes par MP sous forme de code. je ne veux pas d'exécutable ni de lien vers un truc à downloader, utilisé les balises «code». Envoyer moi seulement le texte. Je mettrai votre note dans votre profil et vous l'enverrai par MP.
Dernière édition par MirainoHikari le Mer 6 Aoû 2008 - 1:35, édité 2 fois
Invité
Invité
Sujet: Re: Cours #1 : Types et Variables Mer 6 Aoû 2008 - 1:26
Kakono-san, Kako-kun, Yami-san, Yami, Kakono, Kako. Je n'ai pas vraiment de préférence. Ça fait 1 an et demi que je suis au Québec et j'ai l'habitude que mon vrai nom soit prononcé n'importe comment. Alors mon nickname, c'est encore moins grave. Selon la politesse de mon pays, ce serait Kakono-san, mais comme vous êtes tous occidentaux, Yami ou Kakono, ça va.
ibiky-ushiha
Voyageur Lv.10
Age : 35 Inscrit le : 07/07/2008 Messages : 498
Sujet: Re: Cours #1 : Types et Variables Mer 6 Aoû 2008 - 1:45
Merci bien donc ci j'ai bien compris on doit trouver une méthode pour faire les exo 1et 2 mais d'une autre façon c'est cela ou j'ai vraiment rien compris?
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: Cours #1 : Types et Variables Mer 6 Aoû 2008 - 2:58
En fait, je ne veux pas te donner de réponse. Mais en fait, tu vas avoir un print pour le #1 et 2 ensemble et un print pour le #3... Autrement dit, quand tu va exécuter ton script, tu va voir 2 fenêtres que tu devras cliquer sur OK pour fermer. La première dira un truc du genre «La réponse est 64.» et le dexième dira quelque chose du genre «En float : 64.0, en int : 64».
ibiky-ushiha
Voyageur Lv.10
Age : 35 Inscrit le : 07/07/2008 Messages : 498
Sujet: Re: Cours #1 : Types et Variables Mer 6 Aoû 2008 - 3:03
Oui, j'ai déjà 2 fenêtre avec une la raiponce a mon calcul et un autre qui explique pourquoi ce chiffre et il reviens dans la phrase mais je capte pas le 3 ^^.
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: Cours #1 : Types et Variables Mer 6 Aoû 2008 - 3:44
Dans ce cas, tu en auras 3... Le 3e, comme KakonoYami t'as dit, tu devra utiliser la fonction .to_i et .to_f pour convertir ton résultat en int puis en float. Ce que je veux, c'est que tu affiche le résultat en float et en int. C'est toujours la même question en fait, mais c'est pour voir si tu maitrise bien les conversions inter-type. Il se peut que tu ait à faire 2 conversion de suite pour être en mesure de l'afficher. Rendu là, je ne peux pas répondre plus en détail sans te donner la réponse... Fait de ton mieux. Soumet ton code et je te l'annoterai. S'il y a des problèmes rendus là, je pourrai t'expliquer pourquoi en détail, mais essaye de trouver la solution par toi même.
ibiky-ushiha
Voyageur Lv.10
Age : 35 Inscrit le : 07/07/2008 Messages : 498
Sujet: Re: Cours #1 : Types et Variables Mer 6 Aoû 2008 - 5:32
Oui senseï je crois avoir compris maintenant c'est vrais que le langage entre scripteur et pas simple ^^.
Merci .
Raitosan
† Fondateur du forum †
Age : 31 Inscrit le : 09/02/2008 Messages : 1974
Sujet: Re: Cours #1 : Types et Variables Mer 6 Aoû 2008 - 8:02
Voila, je t' ai envoyer les 3 exercices par mp
PS oublier: Merci pour ton cours
Zarhadan
Noble Lv.8
Age : 31 Inscrit le : 24/07/2008 Messages : 223
Sujet: Re: Cours #1 : Types et Variables Mer 6 Aoû 2008 - 10:02
J'pige pas dutout, faut écrire quoi dans l'espace nommé Spcript ? Le premier code, le 2e ? J'sais pas >< Mais bon après tout un cour ca sert à apprendre !! J'vais relire xD
PS : Raito t'as fini les Death Note ? Trop jolie le plan d'la fin :pleaaase: Edit Raito-san: Ouais, j' ai fini Death Note en anime et en manga En revanche, dans l' anime sa se fini tranquil alors que dans le manga on voit raito entrain de supplier ryuuku de tuer near et tout, mais il se fait tuer par ryuuku avec une crise cardiaque
ibiky-ushiha
Voyageur Lv.10
Age : 35 Inscrit le : 07/07/2008 Messages : 498
Sujet: Re: Cours #1 : Types et Variables Mer 6 Aoû 2008 - 10:03
moi je compren toujours pas l'exo 3 ^^.
Raitosan
† Fondateur du forum †
Age : 31 Inscrit le : 09/02/2008 Messages : 1974
Sujet: Re: Cours #1 : Types et Variables Mer 6 Aoû 2008 - 10:47
En fait, il faut que tu affiche un message, avec le résultat en int et l' autre en float
désoler j' ai pas le droit de donner les soluces^^
Edit Hikari: En effet, mais tu ne donne pas de soluce, tu n'as fait que répéter autrement ce que tout le monde lui dit . Edit Raito-san: Je sais, justement, je lui dit que je n' ai pas le droit de lui donner le soluces XD
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: Cours #1 : Types et Variables Mer 3 Sep 2008 - 13:39
J'ai trop de question par rapport au numéro 3.
Voici un indice. Il faut que vous utilisiez de manière consécutive, sans passer par une variable intermédiaire, le .to_i et .to_s et par la suite, avec la même variable, .to_f et .to_s en écrivant du texte autours de vos nombres du genre «Ce nombre en entier» «Ce nombre en flottant». Là, j'ai presque donné la réponse. Chercher un peu, ça ne fonctionnera peut-être pas du premier coups, mais réfléchissez. Il y a plusieurs façon d'arriver à ses fin. Si j'ai d'autres questions sur le #3 de ce cours, je vais vous inviter poliment à relire le cours.
N'oublier pas que les parenthèses peuvent servir pour isoler une valeur.
Rai The One
Noble Lv.8
Age : 38 Inscrit le : 23/08/2008 Messages : 228
Sujet: Re: Cours #1 : Types et Variables Jeu 4 Sep 2008 - 17:53
Salut ! J'ai imprimer le cours, comme ça je vais pouvoir le lire trankillement dans mon lit, et puis je m'y mettrai..
Citation :
J'ai trop de question par rapport au numéro 3.
L'exo 3 a l'air dur, on dirait...
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: Cours #1 : Types et Variables Jeu 4 Sep 2008 - 18:35
Pourtant il est vraiment simple, c'est juste que certains apprentis ne semble pas comprendre le sens de ce que je demande.
jebbou
Doyen
Age : 46 Inscrit le : 20/08/2008 Messages : 2485
Sujet: Re: Cours #1 : Types et Variables Jeu 4 Sep 2008 - 18:53
Je pense que c'est exactement ca
Tu pourrais peut-etre donner un ou deux exemples, et dire "Donnez-moi l'opération l'inverse". Ca permettrait à l'apprentit de voir la différence, tout en se cassant la tête un minimum
Rai The One
Noble Lv.8
Age : 38 Inscrit le : 23/08/2008 Messages : 228
Sujet: Re: Cours #1 : Types et Variables Ven 5 Sep 2008 - 3:02
MirainoHikari a écrit:
Pourtant il est vraiment simple, c'est juste que certains apprentis ne semble pas comprendre le sens de ce que je demande.
Aprés avoir un peu potassé le truc... Le plus dure pour moi à été de trouver une équation complexe (qui utilise ( ) + - * / ) pour montrer la priorité des opérations. D'ailleurs, je suis pas sûr d'en avoir trouver une... Mais j'ai bien les boites de dialogues avec les données requises, alors... Mais bon, aprés peut-être que je me complais dans l'erreur, lol !
MirainoHikari
Ex-Admin-Script
Age : 42 Inscrit le : 26/05/2008 Messages : 2360
Sujet: Re: Cours #1 : Types et Variables Ven 5 Sep 2008 - 14:28
Pour l'équation complexe, c'est pas trop compliqué. Ça peut être quelque chose du genre :
(10 - 5) / 2 + 3 * 2 + 0.2 => normalement, le résultat affiché avec cette équation devrait être 8.7
Vous pouvez prendre cette équation si vous manquer d'imagination. Le but n'est pas de faire une équation, mais d'en afficher le résultat sous différente forme et de voir ce qui arrive avec une conversion de float à int.
Pour le numéro 3, je ne peux pas donner beaucoup plus d'indice là sans donner la réponse. Mais supposons que le résultat de cette équation se trouve dans la variable resultat, bien je veux que vous affichier resultat.to_f et resultat.to_i dans le même print avec du texte (ce qui oblige une conversion supplémentaire en .to_s .
Je vais donner un exemple qui n'a pas rapport avec l'exercices pour vous montrer. Prenons le code suivant :
Code:
exemple = "J'ai 10 pommes. J'en mange 2."
Supposons que je demande d'en extraire les valeur pour afficher le résultat (ceci fera partie du cours 4, mais je vous le montre ici à titre d'exemple de ce que je recherche). Je ne vous demande pas de comprendre l'extraction, seulement comment convertir une valeur 2 fois.
Pour le faire en une seule fois (comme je le demande pour le #3), je devrais écrire :
Code:
print exemple + " Il m'en reste donc " + ((exemple.to_s[5,2]).to_i) - (exemple.to_s[27,1]).to_i)).to_s + "."
Vous voyez? Je converti une partie de ma chaîne en entier, je fais ma soustraction et je la reconvertie en string. Comme je vous dis, oublier la syntaxe de l'extraction, mais concentrez vous sur la conversion. Ce qui est demander pour le #3, c'est d'afficher le résultat du #1 en float et en entier dans du texte, ce qui nécessite une double conversion. (Pour ajouter à l'ironie de la chose, c'est probablement la seule fois du cours que vous aurez à faire ça de cette façon, car vous allez voir une manière alternative de faire les choses dans les cours suivants. Mais c'est pour comprendre ce qui se passe derrière par la suite que je vous le fait faire comme ça.)
Rai The One
Noble Lv.8
Age : 38 Inscrit le : 23/08/2008 Messages : 228
Sujet: Re: Cours #1 : Types et Variables Sam 6 Sep 2008 - 12:30
Citation :
Pour l'équation complexe, c'est pas trop compliqué. Ça peut être quelque chose du genre :
(10 - 5) / 2 + 3 * 2 + 0.2
Au départ, j'étais parti sur bien plus dur, hahaha !!
Cé pour ça que j'y arrivais pas, mais je me suis que du moment que tout s'affiche correctement, le reste m'est secondaire...
Cé vrai que le #3 était plus dur, mais ce qui m'a aidé c'est ça :
Spoiler:
Citation :
N'oubliez pas que les parenthèses servent à isoler des données...
Je comprenais pas le sens de cette phrase, au début... Et kan ce fut enfin le cas, je trouvai alors la réponse...
je t'ai envoyé mon code Hikari : J'attend ta correction..
édit : je peux passer au #2 maintenant ou j'attend ton accord ??
akakin
Corsaire Lv.19
Age : 30 Inscrit le : 20/08/2008 Messages : 2555
Sujet: Re: Cours #1 : Types et Variables Lun 8 Sep 2008 - 16:38
Et bah j'ai réussit tout les exercices sauf le 3.
A chaque fois il me dit une érreur ,je corrige tout naturellement ,mais sa ne fonctionne toujours pas.
Vincent Valentine
Templier Lv.15
Age : 33 Inscrit le : 19/07/2008 Messages : 1317
Sujet: Re: Cours #1 : Types et Variables Lun 15 Juin 2009 - 15:14
Yao
Bon, moi j'ai pas compris pourquoi convertir, et c'est quoi ces thermes ? (Bains thermaux --")
float
integer
string
ASCII
Mici.
Gothor
Chevalier Lv.17
Age : 31 Inscrit le : 27/04/2008 Messages : 1835
Sujet: Re: Cours #1 : Types et Variables Lun 15 Juin 2009 - 15:26
Tout cela est expliqué dans le tuto (sauf ASCII).
float correspond à une variable contenant un nombre décimal.
integer correspond à une variable contenant un nombre entier.
string correspond à une variable contenant une chaîne de caractère (donc du texte).
Enfin, pour ce qui est de l'ASCII, c'est juste un code en hexadécimal où chaque nombre correspond à un symbole informatique comme suit:
Tu vois peu souvent ce code (enfin moi en tout cas j'en vois vraiment peu ^^'), mais il arrive qu'une page web en contienne. Imagine que tu enregistres une page html et que tu l'intitules "Page Web", alors l'espace sera remplacé dans la barre d'adresse de ton navigateur par un "%20", 20 correspond à la valeur hexadécimal de l'espace selon le tableau des caractères ASCII... La seule chose étrange c'est le % qu'il y a devant le 20 Oo étant donné que le % indique normalement un nombre binaire et non un nombre hexadécimal qui devrait en réalité être annoncé par un $...
Voilà, d'autres questions? ^^'
Vincent Valentine
Templier Lv.15
Age : 33 Inscrit le : 19/07/2008 Messages : 1317
Sujet: Re: Cours #1 : Types et Variables Lun 15 Juin 2009 - 15:31
begin
panier = 20 manger = 2 print "J'avais " + panier.to_s + " pommes. J'en ai mangé " + manger.to_s +. Il m'en reste " +(panier-manger).to_s +" . "
end
J'ai écris ça.
En fait je crois si j'ai compris j'ai commencé en string, puis pour indiquer le nombre de pommes dans le panier j'ai converti (ou pas) en float, puis c'est resté en string (ou pas), en fait il faut convertir à chaque fois qu'on veut mettre un nombre ou autre chose ?
Mais ça marche pas ><"
J'ai pas compris à quoi servait le +
Sans le +
begin
panier = 20 manger = 2 print "J'avais "panier. to_s " pommes. j'en ai mangé "manger. to_s", donc il m'en reste "(panier-manger). to_s2"."
end
Marche toujours pas
Code:
begin
pomme = 2
print " J'aime manger des pommes. D'ailleurs j'en ai " + pomme.to_s + " . "
end
Là ça marche !!
Bon maintenant voyons le calcul avec les parenthèses qui marche pas.
Je comprends pas les parenthèses ! Je dois convertir en string pour afficher un ) ou bien convertir en float pour afficher un chiffre ? Là je comprends pas.