Une introduction à Ruby

a marqué ce sujet comme résolu.

Les modifications :

  • Rajout du chapitre « Les hash » (pas encore terminé).
  • rajout du chapitre « Retour sur les variables » (pas encore terminé) mais le plan est présent.
  • Modification de l'annexe.

À venir :

  • Modification du chapitre « Introduction » avec la modification de l'extrait « Qu'est-ce que Ruby » et le rajout d'un extrait qui traite de sucre syntaxique avec les syntaxes +=, -=, *=, /= et %=.
  • Fin des chapitres « Les hash » et « Retour sur les variables »
  • Fin de l'annexe
  • Chapitre sur la documentation en annexe

La première partie sera bientôt complète. Tous les chapitres sont présents, il faut juste terminer les deux nouveaux. Je suis un peu moins sur l'annexe sur l'écriture dans un fichier mais j'y travaille.

+0 -0

La première phrase de la partie sur les Hash :

Nous venons de terminer le chapitre sur le tableau. Il est maintenant temps de faire un chapitre sur les tableaux.

Et

Oui, nous venons de faire le chapitre sur les tableaux. Dans ce chapitre, nous allons aborder un autre type de tableaux, les tableaux associatifs aussi appelés hash ou encore hachage.

Ici, plutôt que de parler d'un autre type de tableau, je parlerais d'un autre type de conteneur.

Ensuite, j'ai beaucoup de mal sur votre partie Qu'est-ce qu'un hachage. Un hash, c'est le résultat d'une fonction de hachage, genre md5, sha1 ou autre. Ici, vous parlez de HashMap, qui est un conteneur associatif, dont la clé est le résultat d'un fonction de hashage. C'est complétement différent.

Contrairement aux tableaux, les hachages ne peuvent pas être déclarés sans utiliser les accolades, elles sont obligatoires.

Qu'est ce que ça veut dire ? C'est possible d'instancier un Hash sans accolade :

1
Hash.new 
+0 -0

La première phrase de la partie sur les Hash :

Nous venons de terminer le chapitre sur le tableau. Il est maintenant temps de faire un chapitre sur les tableaux.

Et

Oui, nous venons de faire le chapitre sur les tableaux. Dans ce chapitre, nous allons aborder un autre type de tableaux, les tableaux associatifs aussi appelés hash ou encore hachage.

Ici, plutôt que de parler d'un autre type de tableau, je parlerais d'un autre type de conteneur.

Ok, il nous faut alors introduire la notion de conteneur dans le chapitre sur les tableaux (dans « Qu'est-ce qu'un tableau ».

Ensuite, j'ai beaucoup de mal sur votre partie Qu'est-ce qu'un hachage. Un hash, c'est le résultat d'une fonction de hachage, genre md5, sha1 ou autre. Ici, vous parlez de HashMap, qui est un conteneur associatif, dont la clé est le résultat d'un fonction de hashage. C'est complétement différent.

Très bien, on fera en sorte de réécrire cette partie plus clairement (mais on ne parlera pas de fonctions de hachage). C'est pour ça qu'on parlait juste de tableaux associatifs sans entrer dans les détails.

Contrairement aux tableaux, les hachages ne peuvent pas être déclarés sans utiliser les accolades, elles sont obligatoires.

Qu'est ce que ça veut dire ? C'est possible d'instancier un Hash sans accolade :

1
Hash.new 

Le lecteur n'a pas encore vu new à ce moment (et on n'en parle pas encore). Mais la phrase reste quand même fausse. On la changera en « On ne peut pas déclarer un Hash en écrivant par exemple hachage = cle => valeur, les accolades sont obligatoires ».

Merci pour ton retour. :) As-tu lu le début du chapitre « Retour sur les variables » ? Il a été compliqué à écrire alors les retours nous seront très bénéfiques.

+0 -0

Oui je l'ai lu, et je pense que j'aurais plutôt mis cette partie en annexe. A ce stade du tutoriel, le lecteur ne se demandera pas si ses objets sont passés par valeur ou par référence. Même si ça reste des détails important a connaître, je ne pense pas qu'ils soit indispensable dans l'immédiat.

Après avoir parlé des tableaux et Hash, un petit tour du module Enumerable ne serait pas de trop a mon avis. Genre faire le tour de quelques methode comme find, include?, inject etc …

Salut à tous, voici les modifications assez légères :

  • l'annexe sur l'écriture dans un fichier a été modifiée (merci à quark67 pour son aide) ;
  • le chapitre 8 a été complété et n'attend plus que vos remarques ;
  • quelques fautes d'orthographes ont été corrigées.

La partie II avance également, plus lentement, mais sûrement. Le but est de finir la partie I afin de l'envoyer en validation.

L'introduction sera sûrement retravaillée en prenant en compte le tutoriel d'introduction à la programmation.

+0 -0

Salut ! J'aime beaucoup ce tuto, il m'apprend pas mal de choses !

Mais j'ai une question pour l'exercice 2 du chapitre 2 : La correction dit que pour échanger les variables il faut ce code :

1
2
3
4
5
6
7
8
9
print "Entrez x : "
x = gets.chomp.to_i
print "Entrez y : "
y = gets.chomp.to_i

tmp = x
x = y
y = tmp
print "L'échange a été effectué : x vaut #{x} et y vaut #{y}"

Moi j'ai réussit avec ce code :

1
2
3
4
5
6
7
8
print "Entrez x : "
    x = gets.chomp.to_i
print "Entrez y : "
    y = gets.chomp.to_i
x << y
y << x

puts "L'échange a été éffectué : x vaut maintenant #{x} et y vaut maintenant #{y}"

C'est quand même bon ?

Merci d'avance ! :)

+0 -0

Si tu regardes la consigne de l'ennoncé, tu dois obtenir un résulat équivalent :

1
2
3
Entrez x : 23
Entrez y : 12
L'échange a été effectué : x vaut 12 et y vaut 23 

Avec ton code, le résultat devrait plus ressembler à ceci (est-ce bien ça ?):

1
2
3
Entrez x : 23
Entrez y : 12
L'échange a été effectué : x vaut 23 et y vaut 12

Ce qui n'est donc pas bon.

Si mes souvenirs sont bons, << permet de concaténer deux chaînes de caractères, il n'a donc rien à faire ici.

+0 -0

À noter que sur les entiers << est l'opérateur pour un décalage de bit.

EDIT : Par exemple, si a = 6, alors a << 1 = 12 car l'écriture binaire de 6 est 0000 0110 donc en décalant les bits d'un rang vers la gauche on obtient 0000 1100 c'est à dire 8 + 4 et donc 12.

+0 -0

Bonjour les agrumes !

La bêta de votre tutoriel « Une introduction à Ruby » a été mise à jour et coule sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.

Je pense à envoyer la première partie en validation après les dernières corrections.

+0 -0

Aucun prérequis n’est nécessaire pour suivre ce tutoriel.

Je sais que je fais mon pinailleur, mais ce n’est pas le cas. :)

Dès le premier chapitre, vous considérez comme acquises un certain nombre de notions comme :

  • savoir que, quand vous dites d’utiliser telle commande sous Linux / OS X, ça veut dire utiliser une console, et savoir le faire ;
  • les opérations mathématiques élémentaires ;
  • l’existence de nombre non entiers (programme de CM1) et de nombres négatifs (programme de 5e).

En bref, vous ne pourriez pas prétendre à une ceinture blanche. ^^ Ce n’est évidemment pas un problème en soi, mais il faudrait mettre en prérequis a minima les maths élémentaires et la maîtrise basique de son système (qui, ici, va au-delà de ce qui est de toute manière indispensable pour venir sur ZdS).

+1 -0

Je sais que je fais mon pinailleur, mais ce n’est pas le cas. :)

Pinailleur, arrêtes de pinailler !

Dès le premier chapitre, vous considérez comme acquises un certain nombre de notions comme :

  • savoir que, quand vous dites d’utiliser telle commande sous Linux / OS X, ça veut dire utiliser une console, et savoir le faire ;
  • les opérations mathématiques élémentaires ;
  • l’existence de nombre non entiers (programme de CM1) et de nombres négatifs (programme de 5e). En bref, vous ne pourriez pas prétendre à une ceinture blanche. ^^ Ce n’est évidemment pas un problème en soi, mais il faudrait mettre en prérequis a minima les maths élémentaires et la maîtrise basique de son système (qui, ici, va au-delà de ce qui est de toute manière indispensable pour venir sur ZdS).

Je vais rajouter tout ça dans les prérequis. Mais, je ne suis pas trop convaincu pour l’utilisation de la console, puisqu’on explique comment l’ouvrir et que tout ce qu’on demande de savoir faire, c’est taper « irb ». Non ?

+0 -0

Dans la partie sur l’installation, on a :

Installation sous Linux

Ruby est déjà installé sur certaines distributions. Pour savoir s'il est déjà installé, nous pouvons utiliser la commande ruby. Si elle ne renvoie pas d'erreur, alors Ruby est installé (Notons également la commande ruby -v qui renvoie le numéro de version).

Et pareil pour OS X. Ces deux passages viennent avant celui qui explique comment ouvrir une invite de commande. :)

+0 -0

Bonjour les agrumes !

La bêta de votre tutoriel « Une introduction à Ruby » a été mise à jour et coule sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.

EDIT : j’ai mis à jour les prérequis et la partie sur l’installation. Maintenant, il y a une petite explication sur comment utiliser la ligne de commande.

+1 -0

Bonjour les agrumes !

La bêta de votre tutoriel « Une introduction à Ruby » a été mise à jour et coule sa pulpe à l'adresse suivante :

Merci d'avance pour vos commentaires.

Je suis parti à la chasses aux coquilles et autre fautes orthotypographiques. Si vous en voyez, n’hésitez pas à le signaler (dans la première partie seulement) puisque le contenu est à peu près fixé et ne risque pas de changer.

+0 -0

Alors, juste dans les titres.

  • Les Bases > Les bases
  • Les Hash > Les hashs
  • Variables et chaines de caractères, Chaines de caractères, Lien avec les chaines de caractères > À moins que tu n’utilises l’orthographe 1990 partout, c’est « chaîne ».
  • La structure if - else, La structure case - when > En bonne typo, soit tu colles le trait d’union (case-when), soit tu utilises une barre oblique, collée aussi (case/when).
  • Qu'est-ce que Ruby ?, Contrôler l'exécution d'une boucle, Principe et schéma d'une fonction > Utiliser des apostrophes typographiques .

Si tu veux quelque chose d’un peu plus poussé, je t’invite à m’ajouter comme auteur, que je puisse travailler directement sur le tuto (ZEP-41, tout ça… :) )

+0 -0

Alors, juste dans les titres.

Je savais bien que j'avais oublié de vérifier quelque chose.

Si tu veux quelque chose d’un peu plus poussé, je t’invite à m’ajouter comme auteur, que je puisse travailler directement sur le tuto.

C'est fait. :) Merci pour ton aide.

+0 -0

Et voilà, c’est terminé. :)

En deux endroits (désolé, j’ai pas noté où), j’ai supprimé ou remplacé une phrase, parce qu’elle répétait presque mot pour mot une autre phrase à quelques lignes de distance, et qu’il n’y avait aucun autre moyen de le corriger.

J’ai remarqué que les codes utilisent majoritairement des noms de variable et de fonction en français sans diacritique, mais en quelques occasions, elles en portent. Est-ce que Ruby autorise les noms de variable en UTF-8 ? Si c’est le cas, il faut reprendre les zones de code, et rajouter les diacritiques nécessaires, sinon, il faut les enlever dans les quelques endroits où il y en a (dans le premier cas, je peux m’en occuper, pour être sûr que vous n’en n’oubliiez pas).

Section « Contrôler l’exécution d’une boucle » : est-il normal que vous n’abordiez pas retry ?

Section « Des tableaux associatifs » et suivantes : 2015, ça fait sacrément vieux, comme âge. ^^

Chapitre « Les hashs » : la troisième phrase de la première correction n’a pas de fin, et je ne parviens pas à deviner ce qui aurait dû s’y trouver.

Section « Les variables globales » : le chapitre finit de manière très abrupte, je ne suis pas sûr de comprendre ce que la dernière phrase veut dire. En outre, arrivé au bout de la section, tu n’as toujours pas expliqué comment faire pour modifier une variable de la fonction d’origine proprement (donc sans variable globale).

Voilà, c’est tout pour moi. Si tu n’as rien à redire à mes corrections, tu peux m’enlever des auteurs. :)

+1 -0

J’ai remarqué que les codes utilisent majoritairement des noms de variable et de fonction en français sans diacritique, mais en quelques occasions, elles en portent. Est-ce que Ruby autorise les noms de variable en UTF-8 ? Si c’est le cas, il faut reprendre les zones de code, et rajouter les diacritiques nécessaires, sinon, il faut les enlever dans les quelques endroits où il y en a (dans le premier cas, je peux m’en occuper, pour être sûr que vous n’en n’oubliiez pas).

Oui, Ruby autorise les noms de variables en UTF-8. Ce serait vraiment parfait si tu pouvais te charger des modifications. :)

Section « Contrôler l’exécution d’une boucle » : est-il normal que vous n’abordiez pas retry ?

Ce sera abordé dans le chapitre sur les exceptions puisque la plupart du temps il est utilisé avec rescue.

Section « Des tableaux associatifs » et suivantes : 2015, ça fait sacrément vieux, comme âge. ^^

Oui, oui, certaines espèces vivent vraiment très longtemps. Il paraît même qu’il y a des loups immortels. :-°

Chapitre « Les hashs » : la troisième phrase de la première correction n’a pas de fin, et je ne parviens pas à deviner ce qui aurait dû s’y trouver.

Oups, je modifie ça dès que possible.

Section « Les variables globales » : le chapitre finit de manière très abrupte, je ne suis pas sûr de comprendre ce que la dernière phrase veut dire. En outre, arrivé au bout de la section, tu n’as toujours pas expliqué comment faire pour modifier une variable de la fonction d’origine proprement (donc sans variable globale).

Il faut rajouter une fin digne de ce nom alors. Dans cette fin, il faudrait juste dire que pour le moment, le meilleur moyen est de faire les fonctions renvoyer des valeurs et d’expliquer que plus tard ce ne sera plus un problème quand on utilisera des objets.

Voilà. Encore merci pour ton aide. :)

+1 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte