Somme des entiers : \(S = 1 + 2 + 3 + ... + n = \frac{n(n+1)}{2}\).
- Déclaration des variables
- Saisie du nombre n
- Initialisation de la variable accumulateur
- Boucle Pour pour parcourir les entiers de 1 à n
- Affectation cumulative dans la variable somme
Variables n, i, somme : entiers
Début
Afficher("Entrez la valeur de n : ")
Lire(n)
somme ← 0 // Initialisation de l'accumulateur
Pour i de 1 à n Faire
somme ← somme + i // Accumulation
FinPour
Afficher("La somme des ", n, " premiers entiers est : ", somme)
Fin
Variables déclarées : n, i, somme (tous de type entier)
n : nombre dont on veut la somme
i : compteur de la boucle
somme : accumulateur des valeurs
somme ← 0 (initialisation indispensable pour l'accumulateur)
Pour i de 1 à n : i prend successivement les valeurs 1, 2, ..., n
somme ← somme + i : chaque valeur de i est ajoutée à somme
i=1: somme=0+1=1
i=2: somme=1+2=3
i=3: somme=3+3=6
i=4: somme=6+4=10
i=5: somme=10+5=15
L'algorithme utilise une boucle Pour pour accumuler les entiers de 1 à n dans une variable somme.
• Initialisation : L'accumulateur doit être initialisé à 0
• Affectation : somme ← somme + i ajoute i à la valeur actuelle de somme
• Boucle Pour : Itération sur un intervalle fixe
L'initialisation de l'accumulateur est cruciale pour le bon fonctionnement
La boucle Pour est idéale pour les itérations sur un nombre fixe de fois
Factorielle : \(n! = 1 \times 2 \times 3 \times ... \times n\), avec \(0! = 1\).
Variables n, i, fact : entiers
Début
Afficher("Entrez la valeur de n : ")
Lire(n)
fact ← 1 // Initialisation de l'accumulateur multiplicatif
i ← 1 // Initialisation du compteur
TantQue i <= n Faire
fact ← fact * i // Multiplication cumulative
i ← i + 1 // Incrémentation du compteur
FinTantQue
Afficher("La factorielle de ", n, " est : ", fact)
Fin
Variables : n (entrée), i (compteur), fact (accumulateur)
fact ← 1 (initialisation à 1 pour la multiplication)
i ← 1 (initialisation du compteur)
Condition : i ≤ n (continuer tant que i n'a pas dépassé n)
Instruction : fact ← fact * i (multiplication cumulative)
Incrémentation : i ← i + 1 (avancement du compteur)
i=1: fact=1*1=1, i=2
i=2: fact=1*2=2, i=3
i=3: fact=2*3=6, i=4
i=4: fact=6*4=24, i=5
i=5: condition i≤4 fausse, sortie de la boucle
Pour i de 1 à n Faire
fact ← fact * i
FinPour
L'algorithme utilise une boucle TantQue pour multiplier cumulativement les entiers de 1 à n.
• Initialisation : L'accumulateur multiplicatif est initialisé à 1
• Boucle TantQue : Nécessite une condition et une modification de variable
• Invariant : fact contient le produit des entiers de 1 à i-1
Le compteur doit être incrémenté dans la boucle pour éviter une boucle infinie
Pour l'accumulation multiplicative, initialiser à 1 (élément neutre)
Nombre premier : Nombre supérieur à 1 qui n'est divisible que par 1 et lui-même.
Variables n, i, estPremier : entiers
Début
Afficher("Entrez un nombre : ")
Lire(n)
Si n <= 1 Alors
Afficher(n, " n'est pas premier")
Sinon
estPremier ← 1 // Supposé premier
i ← 2 // Premier diviseur potentiel
TantQue (i <= racine_carree(n)) ET (estPremier = 1) Faire
Si n MOD i = 0 Alors
estPremier ← 0 // Trouvé un diviseur
Sinon
i ← i + 1
FinSi
FinTantQue
Si estPremier = 1 Alors
Afficher(n, " est premier")
Sinon
Afficher(n, " n'est pas premier")
FinSi
FinSi
Fin
Si n ≤ 1 : n n'est pas premier
estPremier ← 1 (variable booléenne simulée)
i ← 2 (premier diviseur à tester)
On teste jusqu'à √n car si n a un diviseur > √n, il en a un < √n
Condition de continuation : (i ≤ √n) ET (estPremier = 1)
Si n MOD i = 0 : i divise n, donc n n'est pas premier
On met estPremier ← 0 pour sortir de la boucle
i=2: 17 MOD 2 ≠ 0, i=3
i=3: 17 MOD 3 ≠ 0, i=4
i=4: 4 > √17 ≈ 4.12, condition fausse, sortie de boucle
estPremier = 1, donc 17 est premier
L'algorithme utilise une boucle TantQue pour tester la divisibilité par des entiers jusqu'à la racine carrée.
• Optimisation : Tester jusqu'à √n suffit pour la primalité
• Booléen simulé : Variable entière pour représenter un état
• Sortie anticipée : Arrêter dès qu'un diviseur est trouvé
Tester jusqu'à la racine carrée réduit considérablement le nombre d'opérations
Sortir de la boucle dès qu'un diviseur est trouvé optimise l'algorithme
Inversion de tableau : Permuter les éléments pour inverser l'ordre.
Variables tab[5], temp : entiers
Variables i, j : entiers
Début
// Initialisation du tableau
Pour i de 0 à 4 Faire
Afficher("Entrez l'élément ", i, " : ")
Lire(tab[i])
FinPour
// Affichage avant inversion
Afficher("Tableau avant inversion : ")
Pour i de 0 à 4 Faire
Afficher(tab[i], " ")
FinPour
// Inversion du tableau
i ← 0
j ← 4 // Dernier indice
TantQue i < j Faire
temp ← tab[i] // Échange des éléments
tab[i] ← tab[j]
tab[j] ← temp
i ← i + 1 // Avancement des indices
j ← j - 1
FinTantQue
// Affichage après inversion
Afficher("Tableau après inversion : ")
Pour i de 0 à 4 Faire
Afficher(tab[i], " ")
FinPour
Fin
Boucle Pour pour remplir le tableau de 5 éléments
i ← 0 (premier indice)
j ← 4 (dernier indice)
TantQue i < j : continuer tant que les indices ne se sont pas rencontrés
Échange des éléments tab[i] et tab[j] avec variable temporaire
i ← i + 1 et j ← j - 1 pour avancer les positions
Tableau initial : [2, 5, 8, 1, 9]
i=0, j=4: échange 2↔9 → [9, 5, 8, 1, 2]
i=1, j=3: échange 5↔1 → [9, 1, 8, 5, 2]
i=2, j=2: condition i Résultat : [9, 1, 8, 5, 2]
L'algorithme utilise une boucle TantQue pour échanger les éléments symétriques du tableau.
• Échange : Utilisation d'une variable temporaire pour permuter
• Indices opposés : i croissant, j décroissant
• Condition d'arrêt : i < j empêche les doubles échanges
La condition i < j évite d'échanger deux fois le même couple
Un seul passage suffit pour inverser complètement le tableau
Maximum : Plus grande valeur d'un ensemble de données.
Variables tab[8], max, indice_max : entiers
Variables i : entiers
Début
// Initialisation du tableau
Pour i de 0 à 7 Faire
Afficher("Entrez l'élément ", i, " : ")
Lire(tab[i])
FinPour
// Initialisation du maximum
max ← tab[0] // Premier élément comme référence
indice_max ← 0 // Indice du maximum
// Recherche du maximum
Pour i de 1 à 7 Faire // Commencer à 1
Si tab[i] > max Alors
max ← tab[i] // Mise à jour du maximum
indice_max ← i // Mise à jour de l'indice
FinSi
FinPour
// Affichage du résultat
Afficher("Le maximum est : ", max)
Afficher("Son indice est : ", indice_max)
Fin
max ← tab[0] (premier élément comme valeur de référence)
indice_max ← 0 (indice de la valeur de référence)
Boucle Pour de i = 1 à 7 (commencer à 1 car 0 est déjà pris)
Si tab[i] > max : on a trouvé un nouveau maximum
On met à jour max et indice_max
Tableau : [3, 7, 2, 9, 1, 5, 8, 4]
i=1: 7>3 → max=7, indice_max=1
i=2: 2<7 → pas de changement
i=3: 9>7 → max=9, indice_max=3
i=4: 1<9 → pas de changement
i=5: 5<9 → pas de changement
i=6: 8<9 → pas de changement
i=7: 4<9 → pas de changement
Résultat : max=9, indice_max=3
// Si la taille est variable
Si taille > 0 Alors
max ← tab[0]
Pour i de 1 à taille-1 Faire
Si tab[i] > max Alors
max ← tab[i]
FinSi
FinPour
Sinon
Afficher("Tableau vide")
FinSi
L'algorithme utilise une boucle Pour pour comparer chaque élément au maximum actuel.
• Initialisation : Prendre le premier élément comme référence
• Comparaison : Mettre à jour les variables quand un élément plus grand est trouvé
• Parcours : Commencer à l'indice 1 après l'initialisation
Prendre le premier élément comme référence assure que max est toujours dans le tableau
On parcourt seulement les éléments restants après l'initialisation
- Analyse du problème : Identifier les données et le résultat attendu
- Choix des variables : Déterminer les variables nécessaires
- Choix des structures : Sélectionner les boucles appropriées
- Implémentation : Écrire l'algorithme pas à pas
- Validation : Vérifier avec des exemples concrets
- Les variables doivent être déclarées avant utilisation
- Les accumulateurs doivent être initialisés (0 pour addition, 1 pour multiplication)
- Les boucles TantQue doivent avoir une condition qui évolue
- Les boucles Pour sont idéales pour les itérations fixes
- Les variables de contrôle doivent être modifiées dans les boucles