examples/advanced/03_data_structures.cat
# Exemple 8 : Structures de données et itérables
print("⇒ Range : Génération de séquences")
# Range simple de 0 à n-1
print("range(5):")
for i in range(5) {
print(" ", i)
}
# Range avec début et fin
print("\nrange(10, 15):")
for i in range(10, 15) {
print(" ", i)
}
# Range avec pas
print("\nrange(0, 20, 3):")
for i in range(0, 20, 3) {
print(" ", i)
}
# Range décroissant
print("\nrange(10, 0, -1):")
for i in range(10, 0, -1) {
print(" ", i)
}
# Range avec pas négatif
print("\nrange(20, 10, -2):")
for i in range(20, 10, -2) {
print(" ", i)
}
print("\n⇒ Calculs sur des séquences")
# Somme des nombres de 1 à 10
somme = 0
for i in range(1, 11) {
somme = somme + i
}
print("Somme de 1 à 10:", somme)
# Produit des nombres de 1 à 5
produit = 1
for i in range(1, 6) {
produit = produit * i
}
print("Produit de 1 à 5 (5!):", produit)
# Compter les nombres pairs de 1 à 20
compteur_pairs = 0
for i in range(1, 21) {
if i % 2 == 0 {
compteur_pairs = compteur_pairs + 1
}
}
print("Nombre de pairs de 1 à 20:", compteur_pairs)
print("\n⇒ Filtrage avec conditions")
# Afficher seulement les multiples de 3
print("Multiples de 3 entre 1 et 30:")
for i in range(1, 31) {
if i % 3 == 0 {
print(" ", i)
}
}
# Afficher les nombres premiers simples (< 30)
print("\nNombres premiers < 30:")
for n in range(2, 30) {
est_premier = True
# Vérifier si divisible par un nombre de 2 à n-1
diviseur = 2
while diviseur < n and est_premier {
if n % diviseur == 0 {
est_premier = False
}
diviseur = diviseur + 1
}
if est_premier {
print(" ", n)
}
}
print("\n⇒ Accumulation de valeurs")
# Créer une somme cumulative
print("Sommes cumulatives de 1 à 10:")
cumul = 0
for i in range(1, 11) {
cumul = cumul + i
print(" Somme jusqu'à", i, ":", cumul)
}
# Puissances de 2
print("\nPuissances de 2 (2^0 à 2^10):")
for i in range(11) {
puissance = 2 ** i
print(" 2^", i, "=", puissance)
}
print("\n⇒ Tables de multiplication")
# Table de multiplication de 7
print("Table de 7:")
for i in range(1, 11) {
resultat = 7 * i
print(" 7 x", i, "=", resultat)
}
print("\n⇒ Patterns avec range")
# Suite arithmétique
print("Suite arithmétique (début=5, raison=3):")
debut = 5
raison = 3
for i in range(10) {
terme = debut + i * raison
print(" u", i, "=", terme)
}
# Suite géométrique
print("\nSuite géométrique (début=1, raison=2):")
debut_g = 1
raison_g = 2
for i in range(10) {
terme_g = debut_g * (raison_g ** i)
print(" v", i, "=", terme_g)
}
print("\n⇒ Statistiques simples")
# Générer des valeurs et calculer des statistiques
somme_stats = 0
count = 0
minimum = 999999
maximum = -999999
for i in range(1, 21) {
# Utiliser une formule pour générer des "données"
valeur = i * i % 17 + 5
somme_stats = somme_stats + valeur
count = count + 1
if valeur < minimum {
minimum = valeur
}
if valeur > maximum {
maximum = valeur
}
}
moyenne = somme_stats / count
print("Statistiques sur 20 valeurs:")
print(" Somme:", somme_stats)
print(" Moyenne:", moyenne)
print(" Minimum:", minimum)
print(" Maximum:", maximum)
print(" Étendue:", maximum - minimum)
print("\n⇒ Patterns imbriqués")
# Table de multiplication complète
print("Table de multiplication 1-5:")
for i in range(1, 6) {
ligne = ""
for j in range(1, 6) {
produit_ij = i * j
print(" ", i, "x", j, "=", produit_ij)
}
}
print("\n⇒ Triangle de nombres")
# Afficher un triangle de nombres
print("Triangle de nombres:")
for ligne in range(1, 6) {
print("Ligne", ligne, ":")
for col in range(1, ligne + 1) {
print(" ", col)
}
}
print("\n⇒ Compteurs et accumulateurs")
# Compter les occurrences de chiffres
compteur_0 = 0
compteur_1 = 0
compteur_2 = 0
compteur_3 = 0
compteur_4 = 0
for i in range(100) {
chiffre = i % 5
match chiffre {
0 => { compteur_0 = compteur_0 + 1 }
1 => { compteur_1 = compteur_1 + 1 }
2 => { compteur_2 = compteur_2 + 1 }
3 => { compteur_3 = compteur_3 + 1 }
4 => { compteur_4 = compteur_4 + 1 }
_ => { print("Erreur inattendue") }
}
}
print("Fréquences des restes (modulo 5) de 0 à 99:")
print(" 0:", compteur_0)
print(" 1:", compteur_1)
print(" 2:", compteur_2)
print(" 3:", compteur_3)
print(" 4:", compteur_4)
print("\n⇒ Exemple pratique : PGCD")
# Calculer le PGCD de deux nombres (algorithme d'Euclide)
pgcd = (a, b) => {
while b != 0 {
temp = b
b = a % b
a = temp
}
a
}
print("PGCD(48, 18) =", pgcd(48, 18))
print("PGCD(100, 35) =", pgcd(100, 35))
print("PGCD(17, 19) =", pgcd(17, 19))
print("\n⇒ Exemple pratique : Somme des diviseurs")
# Calculer la somme des diviseurs propres d'un nombre
print("Somme des diviseurs propres:")
for n in range(6, 30, 6) {
somme_diviseurs = 0
for i in range(1, n) {
if n % i == 0 {
somme_diviseurs = somme_diviseurs + i
}
}
print(" ", n, ":", somme_diviseurs)
}
print("\n⇒ Application de fonctions")
# Appliquer des transformations
print("Carrés de 1 à 5:")
for i in range(1, 6) {
carre = i * i
print(" ", i, "² =", carre)
}
print("\nCubes de 1 à 5:")
for i in range(1, 6) {
cube = i * i * i
print(" ", i, "³ =", cube)
}
print("\nInverses de 1 à 5:")
for i in range(1, 6) {
inverse = 1.0 / i
print(" 1/", i, "=", inverse)
}