diff --git a/README.md b/README.md index aa3ba570..37377210 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ Ukrainian translation by [_Andrii Palchik_](https://github.com/andriipalchik) Macedonian translation by [_Violeta Pavleska_](https://github.com/violeta-p) Chinese translation by [_Ye Junzhe_](https://github.com/McF4r) & [_Bitfox_](https://github.com/bitfoxtop) & [_Heng Li_](https://github.com/iheng) Turkish translation by [_Ali Rıza Şahin_](https://github.com/ARS-coding) +French translation by [_Olivier Lacan_](https://github.com/olivierlacan) & [_Idris TAKERBOUST_](https://github.com/idrista) Suggestions to improve translations are welcome. If you submit a pull request updating a translation please @@ -77,7 +78,7 @@ for more background information on how and why this website was created. ## The MIT License -Copyright (C) 2014-2019 Ivo Herweijer +Copyright (C) 2014-2024 Ivo Herweijer Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/app/try_ruby.rb b/app/try_ruby.rb index f4e39e75..fcfa70be 100644 --- a/app/try_ruby.rb +++ b/app/try_ruby.rb @@ -124,6 +124,8 @@ def get_language language = 'de' when 'tr' language = 'tr' + when 'fr' + language = 'fr' else language = 'en' end diff --git a/collector.rb b/collector.rb index 564cb617..8902ed98 100644 --- a/collector.rb +++ b/collector.rb @@ -158,6 +158,7 @@ def initialize(app, options_hash={}, &block) Collector.new('translations/zh/try_ruby_*.md', 'source/try_ruby_zh.json').collect Collector.new('translations/de/try_ruby_*.md', 'source/try_ruby_de.json').collect Collector.new('translations/tr/try_ruby_*.md', 'source/try_ruby_tr.json').collect + Collector.new('translations/fr/try_ruby_*.md', 'source/try_ruby_fr.json').collect # TODO: add any new translations here true diff --git a/source/about.html.markdown b/source/about.html.markdown index 7971078f..478a0aa3 100644 --- a/source/about.html.markdown +++ b/source/about.html.markdown @@ -52,6 +52,8 @@ Ukrainian translation by _Andrii Palchik_ Macedonian translation by _Violeta Pavleska_ Chinese translation by _Ye Junzhe_ & _Heng Li_ & _Bitfox_ Turkish translation by _Ali Rıza Şahin_ +French translation by _Olivier Lacan_ & _Idris TAKERBOUST_ + ### Privacy diff --git a/source/articles/2015-01-01-try-ruby-version-4.html.markdown b/source/articles/2015-01-01-try-ruby-version-4.html.markdown index 07c8df95..14bda143 100644 --- a/source/articles/2015-01-01-try-ruby-version-4.html.markdown +++ b/source/articles/2015-01-01-try-ruby-version-4.html.markdown @@ -38,7 +38,7 @@ I had to make some alterations to the TryRuby lesson content. Also updated some - Removed mousehole stuff - Improved the feedback given to the user based on the program's output a bit - Added support for lesson content in multiple languages. The Spanish, Brazilian Portuguese, - Japanese, Russian, Ukrainian, Macedonian and Dutch translations are available. + Japanese, Russian, Ukrainian, Macedonian, Dutch, Turkish and French translations are available. __If YOU would like to add a translation to TryRuby you are most welcome !__ - Added explanation of if/else statements - Changed the subject of the "Class" tutorials from building a blog (so last decade) to making an diff --git a/source/layouts/_navbar.html.erb b/source/layouts/_navbar.html.erb index ddd3f404..53fb16ce 100644 --- a/source/layouts/_navbar.html.erb +++ b/source/layouts/_navbar.html.erb @@ -139,6 +139,13 @@ > Türkçe + diff --git a/translations/fr/README.md b/translations/fr/README.md new file mode 100644 index 00000000..01688464 --- /dev/null +++ b/translations/fr/README.md @@ -0,0 +1,21 @@ +## Copyright (C) +Try Ruby version 4 French translation, 2018, _Olivier Lacan_, 2024, _Idris TAKERBOUST_ + +## The MIT License +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/translations/fr/try_ruby_10.md b/translations/fr/try_ruby_10.md new file mode 100644 index 00000000..46f7ad65 --- /dev/null +++ b/translations/fr/try_ruby_10.md @@ -0,0 +1,23 @@ +--- +lang: FR +title: 30 minutes de libre ? Essaie Ruby ! +answer: +class: stretcher chapmark +ok: +error: +--- + +Ruby est un language de programmation originaire du Japon qui a +révolutionné le développement logiciel. + +La beauté de Ruby réside dans son équilibre entre simplicité et puissance. + +Tu peux saisir du code Ruby dans l'éditeur et utiliser les boutons suivants pour naviguer : + +- __Run__ → Executer le code dans l'éditeur +- __Copy__ → Copier le code d'exemple dans l'éditeur +- __Next__ → Basculer à la leçon suivante +- __Back__ → Revenir à la leçon précédente + +
Clique sur Next pour commencer à apprendre.
+ diff --git a/translations/fr/try_ruby_100.md b/translations/fr/try_ruby_100.md new file mode 100644 index 00000000..447be28a --- /dev/null +++ b/translations/fr/try_ruby_100.md @@ -0,0 +1,18 @@ +--- +lang: FR +title: Stop, t'es barge ! +answer: ^\d{1,}$ +ok: Seuls les strings peuvent être inversés +error: +--- + +On ne peut pas inverser le nombre quarante. J'imagine que tu +pourrais tenir ton moniteur en face d'un mirroir, mais inverser un +nombre n'est pas franchement très logique. + +Ruby a lancé un message d'erreur. Ruby t'explique qu'il n'y a pas de +méthode pour inverser des nombres. + +Tu pourrais peut-être transformer ce nombre en string pour commencer : + + 40.to_s.reverse diff --git a/translations/fr/try_ruby_110.md b/translations/fr/try_ruby_110.md new file mode 100644 index 00000000..32f5f6d7 --- /dev/null +++ b/translations/fr/try_ruby_110.md @@ -0,0 +1,24 @@ +--- +lang: FR +title: Les pommes ne sont pas des oranges. +answer: \[\] +ok: Parfait, voilà une liste vide. +error: +--- + +Et les nombres sont différents des strings. + +Bien qu'il soit possible d'utiliser des méthodes sur n'importe quel +objet avec Ruby, certaines méthodes ne fonctionnent qu'avec certains +types de choses. Mais il est toujours possible de passer d'un type à un +autre avec les méthodes "to" to Ruby. + +- __to_s__ convertit les choses en __s__trings (chaîne de caractères) +- __to_i__ convertit les choses en __i__ntegers (nombres entiers) +- __to_a__ convertit les choses en __a__rrays (listes / tableaux) + +__Qu'est-ce qu'un array ?!__ + +C'est une liste. Saisis une paire de crochets : + + [] diff --git a/translations/fr/try_ruby_120.md b/translations/fr/try_ruby_120.md new file mode 100644 index 00000000..8dff828d --- /dev/null +++ b/translations/fr/try_ruby_120.md @@ -0,0 +1,21 @@ +--- +lang: FR +title: Faire la queue +answer: ^\[(\d+)(,\s*\d+){3,}\]$ +ok: Excellent +error: Essaye d'ajouter un quatrième nombre à la liste +--- + +Les listes (arrays) stockent des choses __dans un ordre défini__. + +C'est un peu comme faire la queue pour acheter une baguette. Tu es +derrière quelqu'un et ce sera impensable de les pousser pour passer +devant, non? Et le mec derrière toi, tu gardes un œil sur lui, juste au +cas où ? + +Voilà une liste pour toi. Des numéros de lotterie : + + [12, 47, 35] + +Essaie d'ajouter un nombre à cette liste: saisis une virgule après 35 +suivie d'un nombre. L'espace est facultatif. diff --git a/translations/fr/try_ruby_130.md b/translations/fr/try_ruby_130.md new file mode 100644 index 00000000..859e1daa --- /dev/null +++ b/translations/fr/try_ruby_130.md @@ -0,0 +1,13 @@ +--- +lang: FR +title: Un d'entre eux lève la main +answer: ^47$ +ok: D'accord +error: +--- + +Une liste de numéros de lotterie. Lequel est le plus grand ? + +Essaye: + + [12, 47, 35].max diff --git a/translations/fr/try_ruby_140.md b/translations/fr/try_ruby_140.md new file mode 100644 index 00000000..148aab45 --- /dev/null +++ b/translations/fr/try_ruby_140.md @@ -0,0 +1,14 @@ +--- +lang: FR +title: Ranger une liste proprement +answer: ^\[(\d+)(,\s*\d+){2,}\]$ +ok: Sauvegardé ! +error: +--- + +Bien, bien. Cela dit c'est ennuyant d'avoir à retaper cette liste chaque +fois que tu en as besoin, non ? + +Sauvegardons nos numéros dans un ticket comme ça : + + ticket = [12, 47, 35] diff --git a/translations/fr/try_ruby_150.md b/translations/fr/try_ruby_150.md new file mode 100644 index 00000000..2ab986f9 --- /dev/null +++ b/translations/fr/try_ruby_150.md @@ -0,0 +1,12 @@ +--- +lang: FR +title: Maintenant entre ticket +answer: \[(\d+(, )?){2,}\] +load: ticket = [12, 47, 35] +ok: Réstoré! +error: +--- + +Maintenant, saisi: + + ticket diff --git a/translations/fr/try_ruby_160.md b/translations/fr/try_ruby_160.md new file mode 100644 index 00000000..b90af4b4 --- /dev/null +++ b/translations/fr/try_ruby_160.md @@ -0,0 +1,27 @@ +--- +lang: FR +title: Sauvegardé, rangé proprement +answer: \[12, 35, 47\] +load: ticket = [12, 47, 35] +ok: Tu as organisé la liste en ordre +error: +--- + +Tu as gardé tes numéro de lotto en les rangeant dans une __variable__ +nommée ticket. Mais n'importe quel autre nom, comme _lalistedejimmy_, +aurait aussi fait l'affaire. + +Comme tu découvriras, la programmation c'est surtout jongler avec des +variables. + +Mettons les numéros de lotto dans l'ordre. + +Utilise: + + ticket.sort! + +Tu avais une liste. Tu as organisé la liste dans l'ordre. La variable +ticket a maintenant changé Est-ce que tu as remarqué que la méthode +_sort!_ a un gros point d'exclamation à la fin ? Souvent les méthodes +Ruby crient comme ça lorsqu'elle modifient une variable pour de bon. +C'est rien de grave, juste une ponctuation. diff --git a/translations/fr/try_ruby_170.md b/translations/fr/try_ruby_170.md new file mode 100644 index 00000000..38d62934 --- /dev/null +++ b/translations/fr/try_ruby_170.md @@ -0,0 +1,37 @@ +--- +lang: FR +title: Élementaire +answer: ^(12|35|47)$ +load: ticket = [12, 47, 35] +ok: D'accord +error: Presque +--- + +Donc nous avons stocké nos numéros de loterie dans la variable ticket. +Comment faire pour les retrouver ? + +On a déjà vu qu'il est possible d'obtenir le numéro le plus élevé avec __max__. +On peut également obtenir le premier (__first__) ou le dernier (__last__) +élement de la liste. +Mais que faire si on a besoin d'un élement specifique de la liste? + +### [ ] +Ruby utilise des crochets droits [ ] pour viser un élement. +Les crochets droits sont très commun dans Ruby. +Ce sont comme des lunettes de visée pour aligner une cible. Exactement. +Ces crochets signifient, "Je cherche ____". Prêt, vises. + +Recupèrons tous nos numéros de lotto : + + puts ticket[0] + puts ticket[1] + puts ticket[2] + +Pourquoi utiliser [0], [1], [2] ? + +Et pourquoi pas [1], [2] and [3] ? Est-ce que c'est une éspèce de truc Zen japonais ? +Non, nous autre les amis des ordinateurs on préfère juste commencer à compter à +partir de zéro. C'est pas juste un truc dans Ruby, ça s'appelle _l'indexation à +base zéro_ et c'est utilisé dans la plupart des languages de programmation. + +> Un petit rappel : tu peux utiliser le bouton __Copy__ pour recopier l'exemple de code dans l'éditeur. diff --git a/translations/fr/try_ruby_180.md b/translations/fr/try_ruby_180.md new file mode 100644 index 00000000..7818e7da --- /dev/null +++ b/translations/fr/try_ruby_180.md @@ -0,0 +1,34 @@ +--- +lang: FR +title: Le résumé #2 est arrivé +answer: \w+ +class: stretcher chapmark +load: poem = "My toast has flown from my hand\nAnd my toast has gone to the moon.\nBut when I saw it on television,\nPlanting our flag on Halley's comet,\nMore still did I want to eat it.\n" +ok: Est-ce que ça rime? +error: +--- + +Jettons un œil à ce qui s'est passé pendant ta deuxième minute: + +### Erreurs +Si tu essayes d'inverser un nombre ou de faire des choses bizarres, Ruby +te dira ce qui ne va pas. + +### Listes +Les arrays sont des listes pour stocker des choses dans un ordre +spécifique. On sait égaelement comment créer un array et récuperer des +élement dans un array. + +### Variables +Les variables sauvegardent une chose et lui donne un nom. Tu as utilisé +le signe égal pour ça. Par example: ticket = [14, 37, 18]. + +### 2/8 +En tout il y a huit sections. Tu as fini deux-huitièmes du chemin! C'est +pas si compliqué, non? Et il y a plein de bonnes choses à suivre. + +Changeons de direction pour un instant. J'ai mis un petit bout de poésie +pour toi dans une certaine variable. +Jette un œil. Saisi: + + puts poem diff --git a/translations/fr/try_ruby_190.md b/translations/fr/try_ruby_190.md new file mode 100644 index 00000000..346ae874 --- /dev/null +++ b/translations/fr/try_ruby_190.md @@ -0,0 +1,17 @@ +--- +lang: FR +title: Malheuresement, la poésie de biscotte c'est pas ton truc +answer: (toast){0} +load: prev +ok: Excellent +error: Ça sent toujours la biscotte pour moi +--- + +Eh, c'est pas grave. T'es pas obligé d'aimer ça. Laisses toi aller et +améliore mon poème. Au lieu d'une biscotte, tu peux essayer un melon +pourquoi pas. Essaie de voir ce nouveau poème: + + poem.gsub("toast", "honeydew") + +La méthode __gsub__ est un raccourci pour *sub*stitution *g*lobale. +Elle remplace toutes les instances du mot "toast" avec "honeydew". diff --git a/translations/fr/try_ruby_20.md b/translations/fr/try_ruby_20.md new file mode 100644 index 00000000..9f76a9cf --- /dev/null +++ b/translations/fr/try_ruby_20.md @@ -0,0 +1,19 @@ +--- +lang: FR +title: Utilisation de l'éditeur +answer: ^\d{1,}$ +ok: Super ! Tu as fais un peu de maths. As-tu vu le résultat ? +error: Entre 2 + 6 dans l'éditeur +--- + +L'éditeur est l'endroit où tu tapes ton code Ruby, appuie sur le bouton __Run__ +et regarde le s'exécuter ! + +Par exemple, essaie d'écrire des calculs. comme : + + 2 + 6 + +La sortie de ton programme devrait s'afficher dans la fenêtre du bas. +Il devrait également y avoir une ligne qui te dit comment tu t'en sors. + +> Autrement, tu peux appuyer sur le bouton __Copy__ pour copier le code d'exemple dans l'éditeur. diff --git a/translations/fr/try_ruby_200.md b/translations/fr/try_ruby_200.md new file mode 100644 index 00000000..b14917b4 --- /dev/null +++ b/translations/fr/try_ruby_200.md @@ -0,0 +1,12 @@ +--- +lang: FR +title: Prêt, Viser +answer: dnah ym morf nwolf sah tsaot yM +load: prev +ok: C'est plutôt logique. L'entièrement du poème a été inversé. +error: +--- + +Petite question : que se passe-t-il lorsque nous inversons entièrement "poem" (__poème__) ? + + poem.reverse diff --git a/translations/fr/try_ruby_210.md b/translations/fr/try_ruby_210.md new file mode 100644 index 00000000..8d749c5b --- /dev/null +++ b/translations/fr/try_ruby_210.md @@ -0,0 +1,17 @@ +--- +lang: FR +title: Surplus d'inversion +answer: ^\["More still did (.+) +load: prev +ok: Oui, c'est presque ce que nous voulons +error: +--- + +Tout le poème a donc été tourné à l'envers, lettre par lettre. Je voulais uniquement inverser les lignes. +Mettre la dernière ligne en première et la première ligne en dernière. + +Inversé, mais pas __autant__ inversé. + +Voici comment: + + poem.lines.reverse diff --git a/translations/fr/try_ruby_220.md b/translations/fr/try_ruby_220.md new file mode 100644 index 00000000..397d76c0 --- /dev/null +++ b/translations/fr/try_ruby_220.md @@ -0,0 +1,21 @@ +--- +lang: FR +title: Enchaînements de méthode en série +answer: My toast has flown from my hand +load: prev +ok: Bon travail, mon ami !
La méthode 'join' prend un liste (array) de chaîne de caractères (string) pour les a rassemblées en une seule string (chaîne de caractères). +error: +--- + +Alors, qu'as-tu vu ? Qu'est-ce qui s'est passé là ? Tu as tapé __poem.lines.reverse__ et qu'est-ce qui s'est passé ? + +Deux choses se sont produites. Tu as transformé le poème (__poem__) en une liste (__array__) en utilisant la méthode __lines__. +Lines décide de la manière dont la chaîne de caractères (__string__) est découpée et la convertit en un tableau (__array__). + +Ensuite, tu as inversé (__reverse__) cette liste. Tu as pris chaque ligne et tu les as inversées. C'est tout. + +Pour finir on à utilisé une autre méthode : + + puts poem.lines.reverse.join + +Combiner des méthodes de cette manière s'appelle _l'enchaînement de méthodes (method chaining)_. \ No newline at end of file diff --git a/translations/fr/try_ruby_230.md b/translations/fr/try_ruby_230.md new file mode 100644 index 00000000..68fb4f70 --- /dev/null +++ b/translations/fr/try_ruby_230.md @@ -0,0 +1,28 @@ +--- +lang: FR +title: De tous les résumés, #3 est là +answer: \{\} +class: stretcher chapmark +load: prev +ok: Tu as créé un hash vide ! +error: +--- + +### Exclamations +Les méthodes peuvent avoir des points d'exclamation (et aussi des points d'interrogation) dans leur nom. Ils sont juste là pour mieux expliquer quelle est leur fonction. Pas de problème. + +### Manipulation de string +Recherche et modification de string + +### Enchaînement +L'enchaînement des méthodes vous permet de faire beaucoup plus de choses. Divisez un poème, inversez-le, réassemblez-le : +__poem.lines.reverse.join__ + +À ce stade, vous pouvez vouloir bricoler un peu plus avec le poème. Une liste complète de toutes les méthodes de la classe String se trouve ici. + +N'hésitez pas à essayer quelques-unes, comme : poem.downcase ou poem.swapcase + +## Prêt ? +Quand tu te sens prêt à passer à autre chose, tape : + + livres = {} \ No newline at end of file diff --git a/translations/fr/try_ruby_240.md b/translations/fr/try_ruby_240.md new file mode 100644 index 00000000..bbc8cb29 --- /dev/null +++ b/translations/fr/try_ruby_240.md @@ -0,0 +1,27 @@ +--- +lang: FR +title: La page blanche du livre +answer: ^(splendide|assez_bon|moyen|decu|catastrophique)$ +load: livres = {} +ok: Oui, c'est une nouvelle critique +error: Utilise l'un de ces mots splendide, assez_bon, moyen, decu, catastrophique.
N'oublie pas le deux-points (:). +--- + +Tu as créé un __hash__ vide. Un hash est comme un tableau, sauf que chaque élément a un nom. + +Nous allons mettre quelques critiques de livres dans notre nouveau hash. Voici notre système de notation : + +- :splendide → un chef-d'œuvre +- :assez_bon → apprécié, sûr, oui +- :moyen → ni bon, ni mauvais +- :decu → assez mauvais +- :catastrophique → un désastre fumant + +Pour noter un livre, mets le titre entre crochets et mets la note après le signe égal. Par exemple : + + livres["Harry Potter"] = :splendide + +> À ce stade, je pense qu'il est juste de te dire que toutes les leçons de TryRuby sont indépendantes les unes des autres. +> Donc, si tu deviens fou à taper des critiques de livres ici, tu ne pourras les utiliser que dans cette leçon. +> Si tu veux utiliser tes critiques dans la prochaine leçon, tu devrais les copier/coller. +> Ne t'inquiète pas trop à ce sujet, chaque leçon a plein de trucs prédéfinis pour que tu puisses jouer avec. \ No newline at end of file diff --git a/translations/fr/try_ruby_250.md b/translations/fr/try_ruby_250.md new file mode 100644 index 00000000..cbeafcde --- /dev/null +++ b/translations/fr/try_ruby_250.md @@ -0,0 +1,27 @@ +--- +lang: FR +title: Encore plus de critiques +answer: [3-9] +load: livres = {"Harry Potter" => :splendide} +ok: See, the length method works on strings, arrays and hashes. +error: +--- + +Continuons, remplis des critiques. Et si tu veux voir toute la liste, il te suffit de taper : __puts livres__ + +Encore une fois, les notations sont : :splendide, :assez_bon, :moyen, :decu, :catastrophique + +Ces notations ne sont pas des strings. Lorsque tu places un deux-points devant un mot simple, tu obtiens un __symbole__. +Les symboles sont moins coûteux en mémoire que les chaînes de caractères. Si tu utilises un mot encore et encore dans ton programme, +utilise un symbole. Plutôt que d'avoir des milliers de copies de ce mot en mémoire, l'ordinateur ne stockera le symbole qu'une seule fois. + +Plus important encore, un symbole te dit que ce n'est pas juste un mot ordinaire mais qu'il a une signification dans ton programme. + +Ajoute encore 2 critiques de livres, utilise __livres.length__ pour voir combien de critiques il y a dans le hash : + + livres["The deep end"] = :catastrophique + livres["Living colors"] = :moyen + + puts livres + + puts livres.length diff --git a/translations/fr/try_ruby_260.md b/translations/fr/try_ruby_260.md new file mode 100644 index 00000000..b0a5ef74 --- /dev/null +++ b/translations/fr/try_ruby_260.md @@ -0,0 +1,20 @@ +--- +lang: FR +title: Attends, ai-je aimé Harry Potter ? +answer: ^(splendide|assez_bon|moyen|decu|catastrophique)$ +load: livres = {"Harry Potter"=>:splendide, "The deep end"=>:catastrophique, "Living colors"=>:moyen} +ok: J'ai beaucoup aimé +error: +--- + +Une des grandes choses à propos de Ruby est que les noms sont souvent réutilisés, ce qui signifie moins de noms à retenir. + +Tu te souviens comment nous avons récupéré des éléments d'un array en utilisant un nombre : +__puts ticket[1]__. + +Pour un hash, ça fonctionne de la même manière, sauf que nous n'utilisons pas un nombre pour obtenir un élément mais un nom. + +Donc, si tu veux rechercher une de tes anciennes critiques, mets à nouveau le titre entre crochets. Mais ne mets pas le signe égal (=). +Comme ceci : + + puts livres["Harry Potter"] \ No newline at end of file diff --git a/translations/fr/try_ruby_270.md b/translations/fr/try_ruby_270.md new file mode 100644 index 00000000..23a3437f --- /dev/null +++ b/translations/fr/try_ruby_270.md @@ -0,0 +1,19 @@ +--- +lang: FR +title: Les Hashs vont de paires +answer: ^\[".*"\] +load: prev +ok: Tu as trouvé les clés +error: +--- + +Garde à l'esprit que les hashes ne conservent pas les choses dans l'ordre. Ce n'est pas leur rôle. Ils associent simplement +deux choses : une clé (__key__) et une valeur (__value__). + +Dans tes critiques, le titre du livre est la clé et la notation est la valeur. + +Si tu veux simplement voir les titres de tous les livres que tu as critiqués : + + livres.keys + +Tu peux aussi essayer cela avec .values au lieu de .keys. \ No newline at end of file diff --git a/translations/fr/try_ruby_280.md b/translations/fr/try_ruby_280.md new file mode 100644 index 00000000..b04e33ec --- /dev/null +++ b/translations/fr/try_ruby_280.md @@ -0,0 +1,26 @@ +--- +lang: FR +title: Es-tu sévère ? +answer: :moyen +load: livres = {"Harry Potter"=>:splendide, "The deep end"=>:catastrophique, "Living colors"=>:moyen} +ok: Génial, wow ! Tu as fait une feuille de notation de tes évaluations +error: +--- + +Alors, tu donnes des critiques sévères et injustes ? Gardons une trace avec un nouveau hash __notations__ : + +Desormais, nous allons compter tes critiques. Reste avec moi. Écris : + + notations = Hash.new {0} + + livres.values.each { |note| + notations[note] += 1 + } + + puts notations + +La trait droite dans le code est le caractère pipe (|), probablement situé juste au-dessus de la touche 'T' OU 'Y' d'un clavier Windows Français. + +Le _+= 1_ signifie : augmenter la valeur de 1. + +Ne t'inquiète pas si tu ne comprends pas tout ce qui se passe ici. Tout sera expliqué plus tard. \ No newline at end of file diff --git a/translations/fr/try_ruby_290.md b/translations/fr/try_ruby_290.md new file mode 100644 index 00000000..cf4c45ce --- /dev/null +++ b/translations/fr/try_ruby_290.md @@ -0,0 +1,15 @@ +--- +lang: FR +title: Un décompte +answer: \w+ +ok: Houra! +error: +--- + +Une des choses étonnantes que nous venons d'utiliser est un bloc (__block__). Nous allons explorer cela plus en détail dans cette leçon et celle à venir. Mais, en gros, un bloc est un morceau de code Ruby entouré d'accolades '{' '}'. + +Essayons un autre bloc : + + 3.times { print "Hip! " } + +Les blocs sont toujours attachés à des méthodes. Comme la méthode __times__, qui prend le bloc et exécute le code à plusieurs reprises. (Dans notre exemple : trois fois.) \ No newline at end of file diff --git a/translations/fr/try_ruby_30.md b/translations/fr/try_ruby_30.md new file mode 100644 index 00000000..5defc8bf --- /dev/null +++ b/translations/fr/try_ruby_30.md @@ -0,0 +1,13 @@ +--- +lang: FR +title: Nombres et Mathématiques +answer: ^[0-9\.,-]{1,}$ +ok: Parfait +error: +--- + +Ruby reconnaît les nombres et les symboles mathématiques. Tu peux essayer d'autres opérations mathématiques comme : + + 4 * 10 + 5 - 12 + 30 / 4 \ No newline at end of file diff --git a/translations/fr/try_ruby_300.md b/translations/fr/try_ruby_300.md new file mode 100644 index 00000000..c0256ca3 --- /dev/null +++ b/translations/fr/try_ruby_300.md @@ -0,0 +1,21 @@ +--- +lang: FR +title: Tu as le 'time' ? +answer: ^[0-9]$ +ok: Tu es parfaitement synchronisé ! +error: Lance le bloc de 0 à 9 fois +--- + +Comme nous l'avons vu dans le premier exemple avec un bloc (lors du décompte des notations), nous pouvons passer une valeur au bloc. Les valeurs qui sont __passées__ sont déterminées par la méthode qui exécute le bloc. + +Les valeurs qui sont __reçues__ par le bloc sont placées dans la variable entre les deux symboles pipe au début du bloc : | + +Essayons ça avec ce bloc : + + 5.times { |time| + puts time + } + +Ici, la méthode __.times__ envoie une valeur à la variable __|time|__. Mais note que la variable time est uniquement connue à l'intérieur du bloc. + +> As-tu remarqué que tu peux répartir le code sur plusieurs lignes ? Cela rend la lecture un peu plus facile. \ No newline at end of file diff --git a/translations/fr/try_ruby_310.md b/translations/fr/try_ruby_310.md new file mode 100644 index 00000000..5fd6882b --- /dev/null +++ b/translations/fr/try_ruby_310.md @@ -0,0 +1,23 @@ +--- +lang: FR +title: Nous arrivons au resumé #4 +answer: +class: stretcher chapmark +ok: +error: +--- + +Cette dernière leçon était un peu plus longue. Tu as probablement utilisé environ trois minutes pour apprendre sur : + +### Hashes +Le petit dictionnaire avec les pages en boucle : __{}__ + +### Symbols +De petits mots de code efficaces avec un deux-points, comme : __:splendide__ + +### Blocks +Des morceaux de code qui peuvent être ajoutés à de nombreuses méthodes de Ruby. Voici le code que tu as utilisé pour construire une feuille de notation : +__livres.values.each { |note| notations[note] += 1 }__ + +### La suite +Dans la prochaine leçon, nous plongerons un peu plus profondément dans les méthodes. \ No newline at end of file diff --git a/translations/fr/try_ruby_320.md b/translations/fr/try_ruby_320.md new file mode 100644 index 00000000..ad982876 --- /dev/null +++ b/translations/fr/try_ruby_320.md @@ -0,0 +1,38 @@ +--- +lang: FR +title: Être ou ne pas être +answer: +load: poem = "My toast has flown from my hand\nAnd my toast has gone to the moon.\nYada yada yada\n" +ok: +error: +--- + +Une autre petite chose que nous n'avons pas vraiment abordée ouvertement : les arguments/paramètres de méthode. +Tu te souviens quand nous avons modifié un peu le poème ? Nous avons utilisé : +__poem.gsub("toast", "honeydew")__ + +La méthode gsub a besoin de 2 arguments, que nous avons passés à gsub en incluant deux strings entre +parenthèses. _Les arguments disent à la méthode exactement quoi faire_. + +### Parenthèses +En fait, la plupart du temps, Ruby n'est pas dérangé si tu ommets les parenthèses. Donc, cela aurait +également fonctionné : +__poem.gsub "toast", "honeydew"__ + +Finalement, nous avons déjà utilisé une autre méthode avec un seul paramètre. Beaucoup de fois en fait, même si ce n'était pas très +évident : + + puts "Hello" + puts("Hello") + +Oui, __puts__ est aussi une méthode. Utiliser puts avec ou sans parenthèses est la même chose pour Ruby, mais la +version sans parenthèses est un peu plus facile à lire. Et cela vous fait gagner du temps de frappe précieux ! + +> Du coup, on peut supposer que la conclusion est que tu peux faire ce que tu veux avec les parenthèses tant que ton +> code est lisible. + +### Être ou ne pas être +Donc, si _to_ est une méthode et _be_ est un argument, nous connaissons maintenant la réponse à cette question ancienne. +C'est vraiment juste une question de préférence si tu veux _to be_ ou _to(be)_. + +As-tu envie de plus de Shakespeare ? Lisons. \ No newline at end of file diff --git a/translations/fr/try_ruby_330.md b/translations/fr/try_ruby_330.md new file mode 100644 index 00000000..fb01d446 --- /dev/null +++ b/translations/fr/try_ruby_330.md @@ -0,0 +1,33 @@ +--- +lang: FR +title: La Mégère apprivoisée +answer: ^tame +ok: Bien bien ! +error: +--- + +Tu sais parfaitement comment utiliser Ruby maintenant. Je veux dire, tu as maîtrisé les bases. +Il te suffit simplement d'apprendre plus de méthodes et d'essayer des blocs plus complexes. + +Mais il y a un côté de Ruby que nous n'avons pas encore abordé. Créer tes propres méthodes. +__Hum !__ Allons-y alors. + +En plus d'utiliser les méthodes intégrées de Ruby (comme puts, sort, times), tu peux définir +tes propres méthodes. Pourquoi est-ce une bonne idée ? Deux raisons : + +### Pour rendre ton programme plus court +Si tu dois faire la même chose à plusieurs endroits de ton code, il est plus facile +de mettre ce code dans une méthode séparée. Ton code sera plus court. + +### Pour rendre ton code plus facile à lire +Suppose que ton programme doit faire beaucoup de choses différentes. +Tu __pourrais__ tout entasser dans un seul long morceau de code. Mais il serait très difficile de +lire et comprendre ce code plus tard. + +Au lieu de cela, tu devrais découper ton code en différentes méthodes et donner à chaque méthode un nom en anglais facile à +comprendre. Tu te remercieras plus tard. + +Alors comment définissons-nous une méthode ? Comme ceci : + + def tame( number_of_shrews ) + end diff --git a/translations/fr/try_ruby_340.md b/translations/fr/try_ruby_340.md new file mode 100644 index 00000000..34366f17 --- /dev/null +++ b/translations/fr/try_ruby_340.md @@ -0,0 +1,24 @@ +--- +lang: FR +title: En Ruby, "Def Leppard" signifie: definir la méthode Leppard +answer: ^tame +ok: Apprivoiser n'est pas ennuyeux +error: +--- + +Eh bien, d'accord, dans ce cas faissons le. Crées ta propre méthode eb commencant par __def__, suivi du nom de la méthode. +Puis une liste d'arguments dont la méthode aura besoin. Ce n'est pas trop effrayant et dangereux ! +Tout ce que nous avons à faire, c'est de la remplir avec du Ruby et de terminer avec __end__. + +Voici le code : + + def tame( number_of_shrews ) + number_of_shrews.times { + puts "Tamed a shrew" + } + end + +> __P.S.__ +> Si tu ne comprends pas le titre de ce chapitre. +> Def Leppard +> est le nom d'un, autrefois célèbre, groupe de rock anglais. diff --git a/translations/fr/try_ruby_350.md b/translations/fr/try_ruby_350.md new file mode 100644 index 00000000..48df5818 --- /dev/null +++ b/translations/fr/try_ruby_350.md @@ -0,0 +1,15 @@ +--- +lang: FR +title: Le fruit mûr de ta création +answer: ^Tamed a shrew +ok: Ça leur apprendra, ces mégères (shrew) +error: +load: def tame(number_of_shrews);number_of_shrews.times{puts "Tamed a shrew"};end; +--- + +Un nouveau méthode est née. Utilisons-la maintenant : + + tame 5 + +> __P.S.__ +> Tamed a shrew = Mégère apprivoisée \ No newline at end of file diff --git a/translations/fr/try_ruby_360.md b/translations/fr/try_ruby_360.md new file mode 100644 index 00000000..c481b288 --- /dev/null +++ b/translations/fr/try_ruby_360.md @@ -0,0 +1,29 @@ +--- +lang: FR +title: Donner et prendre +answer: \d+ +ok: Exactement. Bravo. +error: +--- + +La plupart des méthodes ne veulent pas uniquement quelques paramètres en entrée, mais elles peuvent aussi __donner quelque chose en retour__. +J'ai un peu modifié notre méthode pour qu'elle te retourne (__return__) une valeur. Essaie-la : + + def tame( number_of_shrews ) + number_of_shrews.times { + puts "Tamed a shrew" + } + return number_of_shrews + end + + puts tame(3) + +### Return +Et, puisque tu deviens si avancé et compétent ici, un autre conseil : +tu peux omettre le mot __return__ de la dernière ligne de la méthode. +Ruby retournera automatiquement la dernière valeur qui a été utilisée à l'intérieur de la méthode. + +Donc, nous pouvons changer la dernière ligne en juste : __number\_of\_shrews__. + +Mais puisque la méthode __.times__ renvoie également le _number\_of\_shrews_, nous pouvons +supprimer toute la dernière ligne. En fait, notre méthode originale faisait déjà ce que nous voulions depuis le début ! \ No newline at end of file diff --git a/translations/fr/try_ruby_370.md b/translations/fr/try_ruby_370.md new file mode 100644 index 00000000..74709d5b --- /dev/null +++ b/translations/fr/try_ruby_370.md @@ -0,0 +1,27 @@ +--- +lang: FR +title: Bonjour, Qui est là ? Le résumé #5 fait signe de son chapeau ! +answer: +class: stretcher chapmark +ok: +error: +--- + +Bien joué, bien joué, bien joué, bien joué ! + +Vraiment, vraiment, vraiment, vraiment, vraiiiiiiiiiment ! + +Voici les dernières minutes de ta vie en revue : + +### Méthodes +Les méthodes peuvent être définies avec __def__ et ont un nom. Les méthodes rendent ton programme plus court +et plus facile à lire. + +### Paramètres +Les méthodes peuvent avoir des paramètres. + +### Valeurs de retour +Les méthodes (presque toujours) retournent une valeur. + +## Et Maintenant ? +Être ou ne pas être n'est plus une question pour toi. Es-tu prêt pour un peu plus de Shakespeare ? \ No newline at end of file diff --git a/translations/fr/try_ruby_380.md b/translations/fr/try_ruby_380.md new file mode 100644 index 00000000..1ee0ca79 --- /dev/null +++ b/translations/fr/try_ruby_380.md @@ -0,0 +1,28 @@ +--- +lang: FR +title: Le monde nous appartient +answer: ^\{\"William +ok: Super. mais difficile a lire. +error: +load: def get_shakey; {"William Shakespeare"=>{"1"=>{"title"=>"The Two Gentlemen of Verona", "finished"=>1591},"2"=>{"title"=>"The Taming of the Shrew", "finished"=>1591},"3"=>{"title"=>"Henry VI, Part 2", "finished"=>1591},"4"=>{"title"=>"Henry VI, Part 3", "finished"=>1591},"5"=>{"title"=>"Henry VI, Part 1", "finished"=>1592},"6"=>{"title"=>"Titus Andronicus", "finished"=>1592},"7"=>{"title"=>"Richard III", "finished"=>1593},"8"=>{"title"=>"Edward III", "finished"=>1593},"9"=>{"title"=>"The Comedy of Errors", "finished"=>1594},"10"=>{"title"=>"Love's Labour's Lost", "finished"=>1595},"11"=>{"title"=>"Love's Labour's Won", "finished"=>1596},"12"=>{"title"=>"Richard II", "finished"=>1595},"13"=>{"title"=>"Romeo and Juliet", "finished"=>1595},"14"=>{"title"=>"A Midsummer Night's Dream", "finished"=>1595},"15"=>{"title"=>"King John", "finished"=>1596},"16"=>{"title"=>"The Merchant of Venice", "finished"=>1597},"17"=>{"title"=>"Henry IV, Part 1", "finished"=>1597},"18"=>{"title"=>"The Merry Wives of Windsor", "finished"=>1597},"19"=>{"title"=>"Henry IV, Part 2", "finished"=>1598},"20"=>{"title"=>"Much Ado About Nothing", "finished"=>1599},"21"=>{"title"=>"Henry V", "finished"=>1599},"22"=>{"title"=>"Julius Caesar", "finished"=>1599},"23"=>{"title"=>"As You Like It", "finished"=>1600},"24"=>{"title"=>"Hamlet", "finished"=>1601},"25"=>{"title"=>"Twelfth Night", "finished"=>1601},"26"=>{"title"=>"Troilus and Cressida", "finished"=>1602},"27"=>{"title"=>"Sir Thomas More", "finished"=>1604},"28"=>{"title"=>"Measure for Measure", "finished"=>1604},"29"=>{"title"=>"Othello", "finished"=>1604},"30"=>{"title"=>"All's Well That Ends Well", "finished"=>1605},"31"=>{"title"=>"King Lear", "finished"=>1606},"32"=>{"title"=>"Timon of Athens", "finished"=>1606},"33"=>{"title"=>"Macbeth", "finished"=>1606},"34"=>{"title"=>"Antony and Cleopatra", "finished"=>1606},"35"=>{"title"=>"Pericles, Prince of Tyre", "finished"=>1608},"36"=>{"title"=>"Coriolanus", "finished"=>1608},"37"=>{"title"=>"The Winter's Tale", "finished"=>1611},"38"=>{"title"=>"Cymbeline", "finished"=>1610},"39"=>{"title"=>"The Tempest", "finished"=>1611},"40"=>{"title"=>"Cardenio", "finished"=>1613},"41"=>{"title"=>"Henry VIII", "finished"=>1613},"42"=>{"title"=>"The Two Noble Kinsmen", "finished"=>1614}}}; end; +--- + +Jusqu'à présent, nous avons exécuté des programmes qui n'utilisent que ce que nous avons écris nous-mêmes. +Ce qui est bien, je veux dire que le _Hip, hip houra !_ était épique, mais nous sommes à l'ère d'Internet, donc il est temps d'inclure le reste du monde dans nos efforts de programmation. + +De nombreux, nombreux sites Web sont disponibles où tu peux demander des informations. Par exemple, ce lien te donnera tous les flux d'actualités Google sur Ruby. + +Ton navigateur Web l'affichera probablement très bien pour toi. Si tu regardes le code source (tape : contrôle-U), tu verras une longue chaîne de texte étrangement formatée. Dans l'exemple de Google, c'est au format __rss__. + +### Formats +Il existe de nombreux autres formats, avec des noms étranges, disponibles et utilisés sur le Web, comme : +html, xml et json. Oui, même ce site Web utilise quelques-uns de ces formats. + +J'ai préparé une méthode pour toi qui récupérera une liste des œuvres complètes de William +Shakespeare depuis Internet. +(Ne t'inquiète pas, cela provient en fait du même serveur sur lequel ce site Web fonctionne, donc +nous ne dérangeons personne.) + +Obtiens les données avec : + + get_shakey \ No newline at end of file diff --git a/translations/fr/try_ruby_390.md b/translations/fr/try_ruby_390.md new file mode 100644 index 00000000..74779d54 --- /dev/null +++ b/translations/fr/try_ruby_390.md @@ -0,0 +1,99 @@ +œ--- +lang: FR +title: Noble Kinsmen +answer: ^The Two Noble Kinsmen$ +ok: C'est bien mieux +error: +load: prev +--- + +Okay we now have a list of plays from the internet. The list was in the json format. +Fortunately for us Ruby kindly provides a method to convert json data to a Ruby hash. +The _get\_shakey_ method already did that for us. + +But since the structure of the json data is retained in the hash, it is still a bit difficult to read. +Let us write a method to display the plays nicely. + +If you inspect the list of plays carefully you will see that it has a kind of nested +structure. (This is actually quite common in data you get from the internet.) +Looks like this: + + + +To list the plays we first have to access the top "William Shakespeare" hash element by its name. +Next we have to __iterate__ through each element below it. + +Ruby has a method for iterating. It is called __each__. We have seen it before when +creating our book rating system. + +Everything that method __each__ returns is passed to a block: + + s = get_shakey + + s["William Shakespeare"].each { |key, val| + puts val["title"] + } + + +Bien, maintenant nous avons une liste de pièces de théâtre provenant d'Internet. La liste est au format json. +Heureusement pour nous, Ruby fournit gentiment une méthode pour convertir les données json en un hash Ruby. +La méthode _get\_shakey_ l'a déjà fait pour nous. + +Mais comme la structure des données json est conservée dans le hash, il est encore un peu difficile à lire. +Écrivons une méthode pour afficher tout ça de manière agréable. + +Si tu inspectes attentivement la liste de pièces de théâtre, tu verras qu'elle a une sorte de structure imbriquée. +(C'est en fait assez courant dans les données que tu obtiens d'Internet.) +Ça ressemble à ça : + + + +Pour lister les pièces de théâtre, nous devons d'abord accéder à au premier l'élément du hash "William Shakespeare" par son nom. +Ensuite, nous devons __itérer__ à travers chaque élément suivant. + +Ruby a une méthode pour itérer. Elle s'appelle __each__. Nous l'avons déjà vue lorsque nous avons +créé notre système de notation des livres. + +Tout ce que la méthode __each__ retourne est passé à un bloc : + + s = get_shakey + + s["William Shakespeare"].each { |key, val| + puts val["title"] + } \ No newline at end of file diff --git a/translations/fr/try_ruby_40.md b/translations/fr/try_ruby_40.md new file mode 100644 index 00000000..6b5ef48b --- /dev/null +++ b/translations/fr/try_ruby_40.md @@ -0,0 +1,27 @@ +--- +lang: FR +title: Afficher les choses autrement +answer: ^[0-9\.,-]{1,}$ +ok: Bien affiché +error: +--- + +As-tu remarqué que si tu écris plus d'une formule, tu n'as que la dernière réponse. +Comment ça se fait ? + +> Pour rendre ce site web simple à utiliser, j'ai demandé à Ruby de copier le résultat de ton programme dans la fenêtre de sortie. +> Donc, lorsque tu écris une formule, tu peux voir les résultats. +> __Mais seulement le dernier résultat.__ Et seulement si la sortie est encore vide. + +Du coup si tu as saisi 2 formules ou plus, Ruby n'affiche que le résultat de la dernière formule. + +Bien sûr, tu as le pouvoir de contrôler l'écran ! Il suffit d'écrire __puts__ avant chaque formule +(separé d'un espace). "Puts" signifie : *'Afficher quelque chose à l'écran'*. + +Essaie ça : + + puts 4 * 10 + puts 5 - 12 + puts 30 / 4 + +Maintenant retire les "puts" progressivement et observe ce qui se passe. diff --git a/translations/fr/try_ruby_400.md b/translations/fr/try_ruby_400.md new file mode 100644 index 00000000..0fac1b0e --- /dev/null +++ b/translations/fr/try_ruby_400.md @@ -0,0 +1,35 @@ +--- +lang: FR +title: Tous ensemble désormais +answer: ^4$ +ok: Oui, Shakespeare a écrit 4 pièces en 1591 +error: La réponse pour l'année 1591 devrait être 4 +load: prev +--- + +Maintenant, supposons que nous voulions uniquement connaître les noms et le nombre de pièces écrites par Shakespeare au cours d'une année spécifique. + +Ruby nous permet de sélectionner (__select__) des valeurs à partir d'un hash. La méthode select utilise un bloc pour nous permettre de définir ce que nous voulons sélectionner et retourne ce qu'elle a trouvé. + +Nous pouvons ensuite utiliser les résultats retournés par __select__ dans la méthode __each__ comme précédemment en les ajoutant simplement après le bloc select. C'est un autre exemple de chaînage de méthodes, que nous avons vu précédemment lors de l'inversion d'un poème. + +J'ai préparé la méthode __count\_plays__ pour toi. Essaye de trouver combien de pièces ont été écrites par Shakespeare en l'année __1591__. Essaie ceci : + + def count_plays(year) + s = get_shakey + + s["William Shakespeare"] + .select { |k, v| + v["finished"] == year + }.each { |key, val| + puts val["title"] + }.count + end + + puts count_plays(0) + +As-tu remarqué que j'ai chaîné la méthode count à la fin de la méthode each ? Cela nous donne une valeur de retour pour la méthode __count\_plays__. + +Il y a une autre possibilité pour le chaînage ici. +Regarde cette ligne __s = get\_shakey__. +Tu pourrais retirer la variable __s__ et chaîner get_shakey avec le __["William Shakespeare"].select { |k, v|__ \ No newline at end of file diff --git a/translations/fr/try_ruby_410.md b/translations/fr/try_ruby_410.md new file mode 100644 index 00000000..3e19ba4f --- /dev/null +++ b/translations/fr/try_ruby_410.md @@ -0,0 +1,38 @@ +--- +lang: FR +title: Tout est bien qui finit bien +answer: All's Well That Ends Well +ok: Vrai +error: Utilisez 1605 en deuxième paramètre +load: prev +--- + +Bien, nous avons obtenu des données d'Internet, nous avons sélectionné ce que nous voulions et nous l'avons afficher. +Que reste-t-il à améliorer ? Nous pourrions afficher les résultats un peu plus joliment. Comme ajouter l'année et aligner les titres et les années. + +Cela signifie afficher plusieurs valeurs sur une seule ligne. Ruby a une manière astucieuse de le faire. +C'est comme afficher une chaîne de caractères comme ceci : __puts "Salut, je m'appelle Jimmy"__. +Mais au lieu de la valeur littérale _Jimmy_, nous utilisons la valeur d'une variable. + +Remplacez d'abord _Jimmy_ par __#{}__. Si Ruby voit un symbole de hachage # suivi d'une accolade { +il cherche une variable entre la première accolade et l'accolade fermante suivante }. +Nous pouvons donc utiliser ceci : __"Salut, je m'appelle \#{name}"__. + +Modifions un peu notre code : + + def print_plays(year_from, year_to) + get_shakey["William Shakespeare"] + .select { |k, v| + year_from <= v["finished"] && + year_to >= v["finished"] + }.each { |k, v| + puts "#{v["finished"]} -> #{v["title"]}" + } + end + print_plays(1600, 1605) + +J'ai ajouté __.ljust(30)__ au titre. De cette façon, le titre est justifié à gauche avec une longueur minimale de 30 caractères pour que les années s'alignent joliment. + +Voyez si vous pouvez changer la sortie du programme pour qu'elle affiche les pièces comme ceci : __1600 -> Comme il vous semble__ + +__Tout est bien qui finit bien ?__ Hé, nous n'avons pas encore terminé, mais la fin est proche ! \ No newline at end of file diff --git a/translations/fr/try_ruby_420.md b/translations/fr/try_ruby_420.md new file mode 100644 index 00000000..84452955 --- /dev/null +++ b/translations/fr/try_ruby_420.md @@ -0,0 +1,36 @@ +--- +lang: FR +title: Si seulement je savais comment prendre une décision +answer: +ok: +error: +--- + +Prendre des décisions, dans la vie réelle, peut être un vrai problème. Pas pour nous cependant. +Ruby rend très facile de prendre des décisions. + + if 1 < 2 + puts "C'est vrai : 1 est inférieur à 2" + end + +Le mot clé ici est __if__. If peut être placé avant une méthode ou après une méthode, comme ceci : + + puts "C'est vrai : 1 est inférieur à 2" if 1 < 2 + +__If__ est une méthode qui nécessite un paramètre. Ce paramètre peut être n'importe quelle expression que vous +voulez tester. Le résultat de l'expression doit être soit __true__ soit __false__. +Voici quelques expressions avec leurs résultats : + + 5 <= 10 # => true + 'abc' == 'def' # => false + true # => true + 123456 # => true + 0 # => true + nil # => false + 'xyz'.empty? # => false + 'a' > 5 # => erreur : + # la comparaison entre une chaîne de caractères et + # un nombre a échoué + +L'_expression if_ peut prendre de nombreuses formes. Elle peut comparer des valeurs littérales (1 < 2), +des variables (a < 1) et la valeur de retour d'une méthode ('xyz'.empty?). \ No newline at end of file diff --git a/translations/fr/try_ruby_430.md b/translations/fr/try_ruby_430.md new file mode 100644 index 00000000..9f981b54 --- /dev/null +++ b/translations/fr/try_ruby_430.md @@ -0,0 +1,32 @@ +--- +lang: FR +title: Et maintenant, la surprenante conclusion +answer: n'est pas égal à 100$ +ok: C'est mieux +error: Ce n'est pas possible +--- + +Avez-vous remarqué les 2 signes égaux dans __'abc' == 'def'__ ? + +Ce __==__ signifie __est égal à__. +Le simple signe égal que nous avons vu auparavant signifie __affecter une valeur à une variable__. + +Pour rendre les choses plus confuses : vous pouvez utiliser l'assignation après une méthode if comme ceci : + + a = 0 + + if a = 100 + puts "L'expression est vraie, mais a est maintenant : #{a}" + else + puts "#{a} n'est pas égal à 100" + end + +Changez le = en == et voyez ce qui se passe. + +Je peux vous garantir que vous oublierez régulièrement de taper le deuxième signe égal. Moi aussi, je l'oublie parfois. + +### else +Dans le code ci-dessus, j'ai ajouté une expression else. Cette partie sera exécutée lorsque l'__expression de test if__ s'évalue à faux. + +> Il existe plus de variations sur ce thème if-then-else. Vous pouvez en lire plus +> ici. \ No newline at end of file diff --git a/translations/fr/try_ruby_440.md b/translations/fr/try_ruby_440.md new file mode 100644 index 00000000..5b551cdd --- /dev/null +++ b/translations/fr/try_ruby_440.md @@ -0,0 +1,33 @@ +--- +lang: FR +title: Moi faim +answer: ^Moi pas faim +ok: Oui +error: NON, j'ai pas faim à 10h ! +--- + +Vous avancez à merveille ! C'est simple pour vous, mais rappelez-vous que vous ne connaissiez __absolument rien en Ruby__ il y a seulement quinze minutes ! + +Dernière étape. Mettons tout cela ensemble, d'accord ? Faisons en sorte que tout sonne ensemble comme un très joli ensemble de carillons scintillants sur la plage, sous la magnifique lumière du soleil ! + +Nous allons d'abord définir deux méthodes, puis prendre une décision : + + def faim?(heure_de_la_journée_en_heures) + if heure_de_la_journée_en_heures < 12 + puts "Moi pas faim" + false + else + puts "Moi faim" + true + end + end + + def manger(aliment) + puts "Moi manger #{aliment}\n" + end + + manger 'pomme' if faim?(14) + + manger 'pomme' if faim?(10) + +Voyez si vous pouvez changer la méthode __faim?__ pour afficher __"Moi pas faim"__ et retourner faux __false__ lorsque l'heure est inférieure à 12. \ No newline at end of file diff --git a/translations/fr/try_ruby_450.md b/translations/fr/try_ruby_450.md new file mode 100644 index 00000000..ecd5ee40 --- /dev/null +++ b/translations/fr/try_ruby_450.md @@ -0,0 +1,31 @@ +--- +lang: FR +title: Résumé #6 Autrement dit, tu as parcouru du un long chemin +answer: \{\} +class: stretcher chapmark +ok: Bien, ceci est un hash vide. +error: +--- + +Tu es un prêtre niveau six en Ruby. Je veux dire, quel excellent travail tu as fait. Voyons voir : + +### Données +Tu as chargé des données depuis internet, parcouru une structure de données et sélectionné des valeurs. + +### Itération +Tu as itéré sur tous les éléments d'un hash et tu as chaîné encore plus de méthodes. + +### Affichage agréable +Et si cela ne suffisait pas, tu as formaté et affiché des valeurs d'une manière facile à lire pour le commun des mortels. En fait, __tu as créé un véritable programme !__ + +### IF +Tu as appris à prendre le contrôle de tes programmes avec des instructions __if__ et __else__. + +## Donc +Qu'est-ce qui pourrait bien venir ensuite ? Que pourrais-tu encore avoir à apprendre maintenant ? +Ha, voici la meilleure partie. Tu as parcouru un si long chemin que nous allons maintenant découvrir les classes. +Après seulement deux leçons courtes de plus, tu auras terminé. + +Plus tôt, nous avons créé un hash comme ceci : + + Hash.new \ No newline at end of file diff --git a/translations/fr/try_ruby_460.md b/translations/fr/try_ruby_460.md new file mode 100644 index 00000000..10d5dfbc --- /dev/null +++ b/translations/fr/try_ruby_460.md @@ -0,0 +1,33 @@ +--- +lang: FR +title: Pas une classe d'école, une classe ouvrière +answer: +ok: +error: +--- + +Vois-tu les accolades vides {} c'est un raccourci pour Hash.new. +La méthode new est utilisée pour créer des objets d'une certaine classe. +Pense à "classe" comme la "classe ouvrière" ; un groupe d'élément ayant les mêmes propriétés : mêmes emplois, mêmes maisons, même style vestimentaire. +Quel est l'utilité d'une classe ? + +### BlurbalizerTM +Tu viens juste d'avoir une idée brillante pour une nouvelle application. +Ce sera __LA__ prochaine plateforme de messagerie instantanée. +Tu veux une application où les gens peuvent s'envoyer des messages courts. +Tu appelles ces messages BlurbsTM. Un BlurbTM a une longueur maximale de seulement 40 caractères. +Ajoutons également definir son humeur (__mood__). + +### Par où commencer +Eh bien, tu pourrais stocker tes entrées BlurbsTM dans un fichier json, n'est-ce pas ? +Mais comment garderais-tu une trace du contenu de l'entrée et de l'heure à laquelle elle a été postée ? +Et lorsque tu chargerais le fichier, comment cela apparaîtrait-il en Ruby ? +Serait-ce un Hash ? Ou un Array ? Ou un Array de Arrays ? Ou autre chose ? + +### Classe +Je pense vraiment que tu voudras utiliser une classe. +Tu es déjà familier avec de nombreuses classes : Hash, Array, String. +Créons une nouvelle classe (ne renvoie aucune sortie) : + + class Blurb + end \ No newline at end of file diff --git a/translations/fr/try_ruby_470.md b/translations/fr/try_ruby_470.md new file mode 100644 index 00000000..b79e6bf9 --- /dev/null +++ b/translations/fr/try_ruby_470.md @@ -0,0 +1,20 @@ +--- +lang: FR +title: Les éléments qui font une application +answer: +ok: +error: +--- + +Tu as crées une nouvelle classe BlurbTM. De quoi sont faits les articles de blog ? +Le contenu (__content__), bien sûr. Mais aussi de l'heure à laquelle le BlurbTM a été publié (__time__). Et aussi une humeur (__mood__). + +Bien, tu as la première ligne de la classe, voici la suite : + + class Blurb + attr_accessor :content, :time, :mood + end + +Les noms de classe commencent toujours par une lettre majuscule. + +(Toujours pas de sortie) \ No newline at end of file diff --git a/translations/fr/try_ruby_480.md b/translations/fr/try_ruby_480.md new file mode 100644 index 00000000..590bc1b7 --- /dev/null +++ b/translations/fr/try_ruby_480.md @@ -0,0 +1,26 @@ +--- +lang: FR +title: Les 'accessors' sont les membres pendouillants. +answer: Blurb: +ok: Mon premier Blurb +error: +load: class Blurb;attr_accessor :content,:time,:mood;end +--- + +Super classe, mon ami(e)! Tu as une nouvelle classe BlurbTM. + +Dans la définition de la classe, tu as utilisé une méthode appelée attr\_accessor. +Il existe de nombreuses méthodes d' __attr__ibut comme celle-ci qui permettent d'apporter de petites améliorations. +Ces attributs sont juste des variables attachées à une classe. + +Pensez-y de cette manière. Une classe est comme une personne. +Cette chose en forme d'étoile est un humain. +Et les attributs sont les membres pendouillants, les différentes parties qui composent un corps et +que d'autres personnes peuvent se serrer la main avec. + +### Maintenant +Pour créer un BlurbTM et définir le contenu : + + blurb1 = Blurb.new + puts blurb1 + blurb1.content = "Aujourd'hui, le Mont Blanc a été volé !" diff --git a/translations/fr/try_ruby_490.md b/translations/fr/try_ruby_490.md new file mode 100644 index 00000000..7d10edfe --- /dev/null +++ b/translations/fr/try_ruby_490.md @@ -0,0 +1,15 @@ +--- +lang: FR +title: Un objet, ce petit paquet bien organisé. +answer: Blurb: +ok: Blurb mis à jour +error: +load: prev;blurb1=Blurb.new;blurb1.content="Aujourd'hui, le Mont Blanc a été volé !" +--- + +A toi de jouer, définis le temps et l'humeur du BlurbTM : + + blurb1.time = Time.now + blurb1.mood = :triste + + puts blurb1 \ No newline at end of file diff --git a/translations/fr/try_ruby_50.md b/translations/fr/try_ruby_50.md new file mode 100644 index 00000000..b0b705ba --- /dev/null +++ b/translations/fr/try_ruby_50.md @@ -0,0 +1,13 @@ +--- +lang: FR +title: Dis ton nom +answer: [a-zA-Z]{1,1} +ok: Parfait, tu as formé une chaîne de caractères (string) à partir des lettres de ton nom. +error: +--- + +Bien sûr, les ordinateurs sont pratiques et rapides pour les calculs. Passons à autre chose : Veux-tu voir ton nom à l'envers ? + +Écris d'abord ton prénom entre guillemets comme ceci : + + "Jimmy" diff --git a/translations/fr/try_ruby_500.md b/translations/fr/try_ruby_500.md new file mode 100644 index 00000000..502db5f4 --- /dev/null +++ b/translations/fr/try_ruby_500.md @@ -0,0 +1,30 @@ +--- +lang: FR +title: Accélérons les choses +answer: ^\d{4} +ok: C'est noté +error: +--- + +Super, ton application est géniale. Rendons les choses un peu plus simple pour toi. +Tu ne voudras pas définir le temps de cette façon à chaque fois que tu crées un BlurbTM. + +Tu veux juste saisir le contenu (__content__) et définir l'humeur (__mood__), n'est-ce pas ? + +Ajoutons une méthode __initialize__ à notre classe. Cette méthode est appelée chaque fois qu'un nouveau BlurbTM est créé. +Par la méme occassion, nous pouvons limiter la longueur du contenu du BlurbTM à 40 caractères. + + class Blurb + attr_accessor :content, :time, :mood + + def initialize(mood, content="") + @time = Time.now + @content = content[0..39] + @mood = mood + end + end + + Blurb.new(:triste).time + +(Le paramètre __content=""__ est là pour s'assurer que nous savons que le contenu est une chaîne de caractères, +même si aucun paramètre 'content' n'est definie, il passe par la méthode __initialize__.) \ No newline at end of file diff --git a/translations/fr/try_ruby_510.md b/translations/fr/try_ruby_510.md new file mode 100644 index 00000000..bca6dfc6 --- /dev/null +++ b/translations/fr/try_ruby_510.md @@ -0,0 +1,28 @@ +--- +lang: FR +title: Tu as appris à ton application à rejeter les choses sans valeur. +answer: Blurb: +ok: Blurb ajouté +error: +load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end;blurb1=Blurb.new(:sick,"Today Mount Hood Was Stolen!") +--- + +As-tu remarqué comment à l'intérieur de la classe nous avons utilisé le arobase '@' (@time). + +__À l'extérieur__ de la classe, nous utilisons des 'accessors' : + +> __blurb.time = Time.now__ + +mais __à l'intérieur__, nous utilisons les __variables de l'objet__ : + +> __@time = Time.now__ + +Ce sont exactement la même chose, mais exprimée à deux endroits différents de ton programme. + +### Crée un autre BlurbTM +Lorsqu'un nouveau BlurbTM est créé, la méthode initialize est utilisée pour vérifier s'il y a des +arguments à new. + +Nous avons besoin de deux arguments : + + Blurb2 = Blurb.new :confus, "Je ne peux pas croire que le Mont Blanc a été volé !" \ No newline at end of file diff --git a/translations/fr/try_ruby_520.md b/translations/fr/try_ruby_520.md new file mode 100644 index 00000000..37536770 --- /dev/null +++ b/translations/fr/try_ruby_520.md @@ -0,0 +1,26 @@ +--- +lang: FR +title: Une girafe n'a pas volé le résumé #7 +answer: +class: stretcher chapmark +ok: +error: +load: prev;blurb2=Blurb.new :confus, "Je ne peux pas croire que le Mont Blanc a été volé !" +--- + +Tu en es là. Et en un seul morceau, haha. Nous allons continuer de rendre l'application concrète, mais en attendant, faisons une révision, d'accord ? + +### Classes +En Ruby, tout est en quelque sorte objet. +Les classes expliquent les objets et leur fonctionnement. +Par exemple, vous avez créé quelques objets BlurbTM et ces objets sont détaillés dans la classe Blurb. +En d'autres termes, on les appelle des objets Blurb. +Tu peux utiliser les classes pour modéliser (en quelque sorte) des objets de la vie réelle. + +### Accessors +Les accessors sont des variables attachées à un objet qui peuvent être utilisées à l'extérieur d'objet. +(blurb2.time = Time.now) + +### Variables d'objet +Les variables d'objet sont les mêmes variables que tu utilises pour les accessors, mais à l'intérieur d'un objet. +(@time = Time.now) diff --git a/translations/fr/try_ruby_530.md b/translations/fr/try_ruby_530.md new file mode 100644 index 00000000..f87f18f5 --- /dev/null +++ b/translations/fr/try_ruby_530.md @@ -0,0 +1,46 @@ +--- +lang: FR +title: Ton propre territoire +answer: Blurbalizer: +ok: L'application est créée +error: +load: class Blurb;attr_accessor :content,:time,:mood;def initialize(mood, content="");@time=Time.now;@content=content[0..39];@mood=mood;end;end +--- + +Trés bien, concluons cela. Voici le dernier chapitre de l'histoire épique et PALPITANTE de Try Ruby ! +Maintenant que tu as eu un aperçu de comment tout cela fonctionne, comment vas-tu l'utiliser à la maison +et dans ton quotidien ? +Tu es une personne géniale (l'un de mes favoris), mais tu as encore un peu besoin d'être guidé. + +### Terminons l'application +Nous avons des entrées dans l'application, mais pas d'application à proprement parler. +Pour fonctionner, elle a encore besoin d'un titre, d'un endroit où stocker tous les BlurbsTM et d'une chronologie. + +Devine quoi, nous allons utiliser une autre classe. +Je te donne tout le code pour la nouvelle classe. +__Prends ton temps__ pour l'étudier. Je ne suis pas pressé, je t'attendrai à la prochaine leçon. + + class Blurbalizer + def initialize(title) + @title = title + @blurbs = [] # Un tableau propre et vide + # pour stocker les Blurbs + end + + def add_a_blurb(mood, content) + # Le << signifie ajouter à la fin du tableau + @blurbs << Blurb.new(mood, content) + end + + def show_timeline + puts "Blurbify: #{@title} contient #{@blurbs.count} Blurbs" + + @blurbs.sort_by { |t| + t.time + }.reverse.each { |t| + puts "#{t.content.ljust(40)} #{t.time}" + } + end + end + + myapp = Blurbalizer.new "Le Grand Blurb" \ No newline at end of file diff --git a/translations/fr/try_ruby_540.md b/translations/fr/try_ruby_540.md new file mode 100644 index 00000000..9a0d3db1 --- /dev/null +++ b/translations/fr/try_ruby_540.md @@ -0,0 +1,20 @@ +--- +lang: FR +title: Qu'est-ce que c'est tous ces Blurbs ? +answer: Aujourd'hui +ok: Apportez les blurps +error: +load: prev;class Blurbalizer;attr_reader :title;def initialize(title);@title=title;@blurbs=[];end;def add_a_blurb(mood, content);@blurbs << Blurb.new(mood, content);@blurbs.each {|t| t.time -= 73};end;def show_timeline;puts "Blurbalizer: #{@title} contient #{@blurbs.count} Blurbs\n";@blurbs.sort_by { |t| t.time}.reverse.each { |t| puts "#{t.content.ljust(40)} #{t.time}"};end;end;myapp = Blurbalizer.new "Le Grand Blurb";myapp.add_a_blurb :triste,"Aujourd'hui, le Mont Blanc a été volé !";myapp.add_a_blurb :confus,"Je ne peux pas croire que le Mont Blanc a été volé !";myapp.add_a_blurb :surpris,"Je suis sans voix !";myapp.add_a_blurb :colere,"Il a été volé par une girafe ! !!";myapp.add_a_blurb :degout,"J'ai laissé mon sweat à la montagne !";myapp.add_a_blurb :furieux,"Je ne retournerai jamais sur cette montagne." +--- + +Nous y voilà. Avez-vous compris ce que fait tout ce code dans la classe BlurbalizerTM ? + +> Dans la classe BlurbalizerMC, il y a deux __méthodes__ (add\_a\_blurb et show\_timeline). Tu peux utiliser une méthode en dehors de la classe, tout comme nous l'avons fait avec les accessors. + +Il est temps de commencer à utiliser BlurbalizerTM. J'ai déjà chargé quelques BlurbsTM pour toi, mais n'hésite pas à ajouter les tiens. + +Nous ne créons plus directement des BlurbsTM, mais nous utilisons la __méthode__ add\_a\_blurb de la classe BlurbalizerTM. De cette manière, nous pouvons être sûrs que tous nos BlurbsTM sont stockés dans l'objet myapp. + + myapp.add_a_blurb :humeur, "Ajouter un Blurp ici" + + myapp.show_timeline diff --git a/translations/fr/try_ruby_550.md b/translations/fr/try_ruby_550.md new file mode 100644 index 00000000..2ffc91ed --- /dev/null +++ b/translations/fr/try_ruby_550.md @@ -0,0 +1,65 @@ +--- +lang: FR +title: Tout est dans la combinaison +answer: :- +ok: De l'humeur ! +error: +load: prev +--- + +Il est possible de faire de très belles choses avec les éléments simples de Ruby, en particulier lorsqu'on les combine +pour créer de nouvelles choses. +Ici, nous avons une application composée d'une classe contenant une autre classe. +Et, en fait, Ruby se débrouille très bien +avec ce genre de créature. C'est ce qu'on appelle la programmation orientée objet. + +Nous sommes arrivés au __dernier exercice de programmation__ de TryRuby. Si vous le souhaitez, +vous pouvez ajouter d'autres fonctionnalités à Blurbalizer.TM. + +Peut-être que tu prefères afficher l'humeur sous forme de smiley dans la méthode __show_timeline__. Tu peux ajouter +une méthode _moodify_ dans la classe BlurbTM puis utiliser cette méthode dans la méthode _show\_timeline_ : + + class Blurb + attr_accessor :content, :time, :mood + + def initialize(mood, content="") + @time = Time.now + @content = content[0..39] + @mood = mood + end + + def moodify + if @mood == :triste + return ":-(" + elsif @mood == :content + return ":-)" + # Ajoutez d'autres humeurs ici + end + + # L'humeur par défaut + ":-|" + end + end + + class Blurbalizer + def initialize(title) + @title = title + @blurbs = [] + end + + def add_a_blurb(mood, content) + @blurbs << Blurb.new(mood, content) + end + + def show_timeline + puts "Blurbalizer: #{@title} contient #{@blurbs.count} Blurbs" + + @blurbs.sort_by { |t| + t.time + }.reverse.each { |t| + puts "#{t.content.ljust(40)} #{t.time}" + } + end + end + + myapp.show_timeline \ No newline at end of file diff --git a/translations/fr/try_ruby_560.md b/translations/fr/try_ruby_560.md new file mode 100644 index 00000000..efedbdd8 --- /dev/null +++ b/translations/fr/try_ruby_560.md @@ -0,0 +1,26 @@ +--- +lang: FR +title: Resumé #8, Le Detente-Tu-As-Gérés Récapitulatif +answer: +class: stretcher chapmark +ok: +error: +load: def ruby(f);puts "Rendez-vous sur www.ruby-lang.org pour télécharger Ruby";end;class K;attr_reader :rb;end;mon_premier_programme=K.new +--- + +Cette dernière partie a pris un moment pour se terminer, pour te donner quelques conseils sur la façon dont tu peux utiliser Ruby. + +Si tu as apprécié, tu peux continuer avec le TryRuby Playground ou télécharger et installer Ruby: ruby-lang.org + +Une fois que tu as Ruby installé, tu peux créer un fichier, disons _mon\_premier\_programme.rb_, avec un éditeur de texte, taper du code Ruby, puis l'exécuter en ouvrant une invite de commande et en tapant : + + ruby mon_premier_programme.rb + +Il existe de nombreux outils de développement (gratuits) disponibles qui combinent un éditeur, un explorateur de fichiers et un 'ruby-runner'. + +## Célébration +Tu mérites vraiment un gâteau à deux étages avec un double glaçage et un gars jouant de l'une de ces guitares qui est une double guitare. +Je veux dire, tu as terminé, tu l'as vraiment fait ! Pas de doute là-dessus, tu es vraiment __le génie que tu penses être__ + +## Plus d'infos +Il y a quelques articles sur ce site web. Ils peuvent te donner quelques indications sur où aller à partir de maintenant. \ No newline at end of file diff --git a/translations/fr/try_ruby_60.md b/translations/fr/try_ruby_60.md new file mode 100644 index 00000000..d9f58fb2 --- /dev/null +++ b/translations/fr/try_ruby_60.md @@ -0,0 +1,16 @@ +--- +lang: FR +title: Dis ton nom à l'envers +answer: \w+ +ok: ! iuO +error: +--- + +Une chaîne de caractères (string) est un ensemble de caractères que l'ordinateur peut traiter. Imagine que les lettres sont sur une corde +à linge et que les guillemets sont des pinces à linge tenant les extrémités. Les guillemets marquent le début et la fin. + +Pour inverser ton nom, écris: + + "Jimmy".reverse + +(N'oublie pas le point !) diff --git a/translations/fr/try_ruby_70.md b/translations/fr/try_ruby_70.md new file mode 100644 index 00000000..a8403508 --- /dev/null +++ b/translations/fr/try_ruby_70.md @@ -0,0 +1,13 @@ +--- +lang: FR +title: Compter les lettres +answer: ^\d+$ +ok: Oui. Length est aussi une 'methode' +error: +--- + +Tu as utilisé la __méthode__ reverse (__inverse__) sur ton nom ! En mettant ton nom entre guillemets, tu as créé une chaîne de caractères (string). Pour enfin appelé la méthode reverse qui fonctionne sur des chaînes de caractères (string) pour retourner toutes les lettres à l'envers. + +Maintenant, voyons combien de lettres il y a dans ton nom : + + "Jimmy".length diff --git a/translations/fr/try_ruby_80.md b/translations/fr/try_ruby_80.md new file mode 100644 index 00000000..94858e90 --- /dev/null +++ b/translations/fr/try_ruby_80.md @@ -0,0 +1,17 @@ +--- +lang: FR +title: Répétition +answer: (\w+) +ok: EnchantéEnchantéEnchantéEnchantéEnchanté +error: +--- + +Maintenant, tu te demandes probablement à quoi tout cela peut servir. + +Et bien, je suis sûr que tu as déjà été sur un site web qui a gueulé : __Hé, ton mot de passe est trop court !__ + +Tu as deviné ? certains programmes utilisent la méthode __.length__ (__longueur__) dans leur code. + +Voyons voir, et si essayait de multipler ton nom par 5. + + "Jimmy" * 5 diff --git a/translations/fr/try_ruby_90.md b/translations/fr/try_ruby_90.md new file mode 100644 index 00000000..407db1f9 --- /dev/null +++ b/translations/fr/try_ruby_90.md @@ -0,0 +1,30 @@ +--- +lang: FR +title: Hé, Résumé #1 Déjà +answer: NoMethodError|undefined +class: stretcher chapmark +ok: Nop, ce n'est pas possible d'inverser un nombre. Clique sur 'next'. +error: +--- + +Regardons ce que tu as appris dans la première minute. + +### L'éditeur +Écrire du code dans l'éditeur et cliquer sur "Run" te donne une réponse dans la fenêtre de sortie. +(Presque) tout le code donne une réponse. + +### Nombres et chaîne de caractères +Les nombres et les chaînes de caractères sont des objets mathématiques et textuels de Ruby. + +### Méthodes +Tu as utilisé des méthodes en anglais comme reverse (__inverse__) et length (__longueur__) . Et des méthodes symboliques comme la +méthode de multiplication : \* +__Méthodes signifie action !__ + +C'est l'essence de ton apprentissage. Prendre des choses simples, jouer avec elles et les transformer en +nouvelles choses. Tu te sens déjà à l'aise ? Je te confirme que oui. + +## Okay, +Essayons quelques choses de malaisant. Tente d'inverser un nombre : + + 40.reverse