Avec des exercices corrigés en langage Ruby, vous pratiquerez divers concepts du langage Ruby. Vous commencerez par des exercices du langage Ruby de base à des exercices plus avancés. La solution est fournie pour chaque exercice. Vous devez essayer de résoudre chaque problème par vous-même avant de vérifier la solution. Si vous avez des questions concernant chaque problème, nous vous encourageons à les poster sur notre forum.
Utiliser l’éditeur Ruby pour résoudre les exercices : (Cliquez sur l’onglet input si vous souhaitez entrer des valeurs, cliquez sur Run pour exécuter votre programme, le résultat sera affichée sur l’onglet output).
Exercice 1:
Créez une fonction qui prend un tableau d’éléments et retourne le premier et dernier élément comme un nouveau tableau.
# Déclare une méthode appelée "getFirstLast"
# qui reçoit un tableau "tab" en paramètre.
# La méthode retourne le premier et le dernier élément du tableau.
def getFirstLast(tab)
# Récupère le premier élément avec "first"
# et le dernier élément avec "last".
# Les deux valeurs sont retournées sous forme de tableau.
[tab.first, tab.last]
end
Exercice 2:
Créez une fonction qui compte le nombre de syllabes d’un mot. Chaque syllabe est séparée par un tiret -.
# Déclare une méthode appelée "nbrOfSlab"
# qui reçoit une chaîne de caractères "syllable" en paramètre.
# La méthode retourne le nombre de syllabes.
def nbrOfSlab(syllable)
# Compte le nombre de tirets "-" présents dans la chaîne.
# Puis ajoute 1 pour obtenir le nombre de parties/syllabes.
syllable.count('-') + 1
end
Exercice 3:
Créez une fonction qui prend un entier et renvoie la factorielle de cet entier. C’est-à-dire, l’entier multiplié par tous les entiers inférieurs positifs.
# Déclare une méthode appelée "factoriel"
# qui reçoit un entier "int" en paramètre.
# La méthode retourne la factorielle de ce nombre.
def factoriel(int)
# Crée une plage de nombres allant de 1 jusqu'à "int".
# "inject(:*)" multiplie tous les nombres de la plage entre eux.
# Exemple : 1 × 2 × 3 × 4 × 5 = 120.
(1..int).inject(:*)
end
Exercice 4:
Créez une fonction qui prend une chaîne et renvoie le nombre de voyelles qu’elle contient.
# Déclare une méthode appelée "countVoyel"
# qui reçoit une chaîne de caractères "str" en paramètre.
# La méthode retourne le nombre de voyelles présentes dans la chaîne.
def countVoyel(str)
# Compte le nombre de caractères appartenant à l'ensemble
# "aeiou" dans la chaîne "str".
# Les voyelles recherchées sont : a, e, i, o et u.
str.count("aeiou")
end
Exercice 5:
Créez une fonction qui ne renvoie que des chaînes avec des caractères uniques.
# Déclare une méthode appelée "uniqueChar"
# qui reçoit un tableau de chaînes de caractères "tab".
# La méthode retourne uniquement les mots
# dont tous les caractères sont uniques.
def uniqueChar(tab)
# Parcourt chaque élément du tableau avec "select".
# "i" représente le mot actuellement analysé.
tab.select do |i|
# "chars" transforme le mot en tableau de caractères.
# "uniq" supprime les caractères en double.
#
# Compare le tableau de caractères uniques
# avec le tableau original.
# S'ils sont identiques, aucun caractère n'est répété.
i.chars.uniq == i.chars
end
end
Exercice 6:
Vous avez un tableau de nombre, transformez ce tableau en miroir.
# Déclare une méthode appelée "miroir"
# qui reçoit un tableau "tab" en paramètre.
# La méthode retourne un tableau formant un effet miroir
# en ajoutant les éléments inversés sans répéter le dernier élément.
def miroir(tab)
# Concatène le tableau original avec
# les éléments du tableau, du premier jusqu'à l'avant-dernier,
# placés dans l'ordre inverse.
#
# "tab[0..-2]" sélectionne tous les éléments
# sauf le dernier.
# "reverse" inverse leur ordre.
# "+" concatène les deux tableaux.
tab + tab[0..-2].reverse
end
Exercice 7:
Créez une fonction qui prend deux chaînes comme arguments et renvoie le nombre de fois où la première chaîne (le caractère unique) est trouvée dans la deuxième chaîne.
# Déclare une méthode appelée "countChar"
# qui reçoit deux chaînes de caractères "str1" et "str2".
# La méthode retourne le nombre d'occurrences du caractère
# ou des caractères de "str1" dans "str2".
def countChar(str1, str2)
# Compte le nombre de caractères de "str2"
# qui correspondent aux caractères présents dans "str1".
str2.count(str1)
end
Exercice 8:
Écrivez une fonction qui renvoie TRUE si un nombre est un palindrome.
# Déclare une méthode appelée "checkPalindrome"
# qui reçoit un nombre "nbr" en paramètre.
# La méthode vérifie si le nombre est un palindrome.
def checkPalindrome(nbr)
# Convertit le nombre en chaîne de caractères avec "to_s".
# "reverse" inverse l'ordre des caractères.
# Compare ensuite le nombre original avec sa version inversée.
#
# Si les deux chaînes sont identiques, le nombre est un palindrome
# et la méthode retourne true. Sinon, elle retourne false.
nbr.to_s == nbr.to_s.reverse
end
Exercice 9:
Créez une fonction qui prend un nombre (de 1 à 12) et renvoie son nom de mois correspondant sous forme de chaîne. Par exemple, si on vous donne 4 en entrée, votre fonction devrait retourner Avril, car Avril est le 4ème mois.
# Déclare une méthode appelée "nomDuMois"
# qui reçoit un nombre "n" représentant le numéro du mois.
# La méthode retourne le nom du mois correspondant.
def nomDuMois(n)
# Crée un Hash qui associe chaque numéro de mois
# à son nom en français.
mois = {
1 => 'Janvier',
2 => 'Février',
3 => 'Mars',
4 => 'Avril',
5 => 'Mai',
6 => 'Juin',
7 => 'Juillet',
8 => 'Août',
9 => 'Septembre',
10 => 'Octobre',
11 => 'Novembre',
12 => 'Décembre'
}
# Récupère dans le Hash le nom correspondant au numéro "n".
# Si "n" n'existe pas entre 1 et 12, Ruby retourne nil.
mois[n]
end