Vidéo: Tutoriel HTML5 Complet Pour Débutants - Créer un blog en HTML 2025
Dans Ruby, vous pouvez créer un rectangle à l'écran en utilisant l'art ASCII. Si vous deviez dessiner un rectangle sur un papier rempli d'un motif, que feriez-vous? D'abord, vous pouvez dessiner le contour du rectangle, et vous pouvez ensuite colorier à l'intérieur.
Mais pour votre programme en Ruby, vous devrez dessiner la forme du haut vers le bas, une ligne à la fois. Comment décririez-vous comment faire cela? Comme ça:
-
Dessinez le haut du rectangle à l'aide du motif extérieur (ou bord) de la première ligne.
-
Pour chacune des lignes qui composent les côtés et l'intérieur du rectangle, tracez le bord gauche, tout le milieu, puis le bord droit.
Répétez cette étape jusqu'à ce que vous ayez besoin de dessiner le bas du rectangle.
-
Dessinez le bas du rectangle exactement comme vous avez dessiné le bord supérieur.
Ceci est un algorithme pour dessiner des rectangles ligne par ligne de haut en bas.
Un algorithme est juste une séquence d'étapes que vous suivez pour accomplir une tâche ou un calcul. Dans ce cas, vous avez écrit la séquence pour dessiner un rectangle en balayant de haut en bas, ligne par ligne.
La version Ruby de votre algorithme ressemble beaucoup à la version anglaise:
-
Configurez deux variables qui facilitent la visualisation de ce qui se passe. Vous utiliserez le choix de l'utilisateur pour la taille de la forme comme la hauteur et la largeur de la figure que vous allez dessiner:
height = shape_size width = shape_size
-
Vous dessinerez le rectangle ligne par ligne, donc configurez une boucle qui répètera votre code pour chaque ligne (donc, cela signifie que vous avez besoin de votre code de dessin pour courir hauteur fois):
1. jusqu'à (hauteur) do | rangée | # Le code de dessin va ici
Les boucles sont un moyen puissant de répéter le code un certain nombre de fois (ou même un nombre infini de fois)! Ruby a plusieurs façons de programmer une boucle. La méthode ascendante est un moyen facile de compter d'un nombre de départ à un nombre final. Pour le rectangle, vous voulez compter à partir de 1 pour la première ligne et terminer le comptage lorsque vous atteignez le nombre représenté par la hauteur.
-
Maintenant, pour que l'algorithme fonctionne, vous devez vérifier quelle ligne vous voulez que le programme imprime. Vous avez trois cas: la première rangée, les rangées du milieu et la dernière rangée. Ajoutez dans le cas de la première ligne au milieu de votre boucle:
si row == 1 met outside_letter * width end
Si la variable row est égale à un, le programme utilisera puts pour imprimer votre choix pour la lettre extérieure un nombre de fois égal à la largeur.
Vous utilisez if si vous voulez voir si une condition est vraie ou fausse.Le symbole == dans Ruby pose la question: "La chose sur le côté gauche est-elle égale à la chose du côté droit du symbole ==? "Si c'est le cas, alors Ruby exécutera les lignes de code jusqu'à une autre condition ou un mot-clé de fin.
-
Ensuite, ajoutez une vérification pour voir s'il s'agit de la dernière rangée. Le mot-clé elsif démarre un autre test de condition et vous le placez juste avant le mot-clé end précédent. Ce n'est pas une faute d'orthographe, d'ailleurs. Ruby a juste une drôle de façon de dire "else if"! Le tout ressemblera à ceci:
si row == 1 met outside_letter * largeur elsif row == height met outside_letter * width end
-
Enfin, vous devez gérer l'affichage de toutes les lignes au milieu, donc ajouter une dernière condition en utilisant le mot clé else de Ruby. Ce code va juste avant le mot-clé end. Voici le bloc entier de Ruby:
si row == 1 met outside_letter * largeur elsif row == height met outside_letter * largeur else middle = lettre_intérieure * (largeur - 2) met "# {lettre_externe} # {milieu} # { lettre_externe} "end
Le casse-tête semble compliqué. Que fait-il? Eh bien, selon votre algorithme, il faut dessiner les bords gauche et droit et tout au milieu.
La variable du milieu calcule la chaîne qui représente le centre du rectangle. Si vous en supprimez un pour le caractère de bord gauche et un pour le caractère de bord droit, la largeur finale du milieu correspond à la largeur complète moins deux caractères.
La dernière instruction puts utilise le traitement de chaîne pour créer la ligne combinée.
-
Exécutez votre programme et voyez si vous avez des erreurs. Avez-vous quelque chose comme ce qui est montré ici? Si vous voyez une erreur indiquant que la comparaison de Fixnum avec String a échoué, cela signifie que Ruby a eu du mal à utiliser la valeur dans shape_size comme un nombre.
Ruby ne sait pas comment utiliser les chaînes pour les nombres.Pourquoi est-ce un problème si vous avez tapé un chiffre? Eh bien, obtient des lectures dans votre entrée, mais il lit tous les caractères que vous tapez comme une chaîne. Vous devez aider Ruby à convertir la chaîne en nombre.
-
Modifiez les deux lignes où vous définissez les variables height et width pour utiliser la méthode to_i, ce qui signifie convertir le contenu de cette variable en un entier (nombre):
height = shape_size. to_i width = shape_size. to_i
Réexécutez votre code. Succès!
Est-ce le rectangle le plus excitant du monde?
