Exercices Corrigés En Algorithme – Fonctions et Procédures
La meilleure façon d’apprendre quelque chose est de pratiquer des exercices. Nous avons préparer ces exercices corrigés pour les personnes (débutantes ou intermédiaires) qui sont familières avec les algorithmes. Nous espérons que ces exercices vous aideront à améliorer vos compétences sur les fonctions et les procédures en algorithmique ainsi que les fonctions récursives.
Vous pouvez lire notre tutoriel sur les algorithmes avant de résoudre les exercices suivants.
1. Écrire une procédure qui affiche le message « Hello, World! ».
Procédure afficherHello()
Début
// Affiche le message "Hello, World!" à l'écran
Ecrire("Hello, World!")
FinProcédure
2. Écrire une procédure qui affiche la chaine de caractère passé en paramètre.
Procédure afficherMsg(str:chaine de caractères)
Début
// Affiche le message contenu dans la variable str
Ecrire(str)
FinProcédure
3. Écrire une fonction qui permet de calculer et retourner la somme de deux nombres n1 et n2 passés en paramètres.
Fonction somme(n1:entier, n2:entier)
Début
// Additionne n1 et n2 puis retourne le résultat
retourner n1 + n2
FinFonction
4. Écrire une fonction qui permet de calculer la valeur absolue d’un nombre donné.
Fonction nbrAbsolue(N : réel): réel
Début
Si(N > 0) alors // Vérifie si le nombre est positif
retourner N // Retourne directement N s'il est positif
Sinon
retourner -N // Retourne l'opposé de N s'il est négatif
FinFonction
5. Écrire une procédure qui permet d’afficher la table de multiplication d’un nombre N.
Procedure getMultiplication(N: entier)
Variables i: entier
Début
// Parcourt les multiplicateurs de 1 à 10
Pour i de 1 à 10 faire
// Calcule et affiche N multiplié par i
Ecrire(N," x ",i," = ",N*i)
FinPour
Fin
6. Écrire une procédure qui affiche si le nombre passé en paramètre est pair ou impair.
Exemple de sortie:
3 est impair. 2 est pair.
Procédure checkNbr(N:entier)
Début
// Vérifie si le reste de la division de N par 2 est égal à 0
Si(N mod 2 = 0) alors
Ecrire(N," est impair.") // Affiche que N est impair
Sinon
Ecrire(N," est pair.") // Affiche que N est pair
FinSi
FinProcédure
7. Écrire une procédure qui prend deux nombres, calcule la somme et la multiplication de ces deux nombres et affiche si le résultat est négatifs ou positifs.
Procédure testSigne(n1,n2: réel)
Variables sum, mult: réels
Début
Lire(n1, n2) // Lit les 2 nombres saisis par l'utilisateur
sum ← n1 + n2 // Calcule la somme des deux nombres
mult ← n1 * n2 // Calcule le produit des deux nombres
Si(sum ≥ 0) Alors // Vérifie si la somme est positive ou nulle
Ecrire("Somme positive") // Affiche que la somme est positive
Sinon
Ecrire("Somme négative") // Affiche que la somme est négative
FinSi
// Vérifie si le produit est positif ou nul
Si(mult ≥ 0) Alors
// Affiche que le produit est positif
Ecrire("Multiplication positif")
Sinon
// Affiche que le produit est négatif
Ecrire("Multiplication négatif")
FinSi
FinProcédure
8. Écrire une fonction récursive qui affiche les entiers de 0 à 20. Cette fonction reçoit un seul paramètre.
Procédure afficherNbrs(n: entier)
Début
Ecrire(20 - n) // Calcule et affiche 20 - n
Si (n > 0) alors // Vérifie si n est supérieur à 0
n ← n + 1 // Incrémente n de 1
afficherNbrs(n) //Rappelle la procédure avec la nouvelle valeur de n
FinSi
FinProcédure
9. Écrire une fonction qui retourne le nombre de caractères dans une chaîne de caractères passée en paramètre.
Exemple de sortie:
Entrez une chaîne de caractères: Hello Le nombre de caractères est: 5
Fonction strSize(str[]: tableau de caractères): entier
Variables size: entier
size ← 0 // Initialise le compteur à 0
// Parcourt le tableau jusqu'au caractère de fin '\0'
Tant que(str[size] ≠ '\0') faire
// Incrémente le compteur pour chaque caractère trouvé
size ← size + 1
FinTantque
retourner size // Retourne le nombre de caractères de la chaîne
FinFonction
10. Écrire une procédure qui initialise un tableau. Cette procédure prend un tableau d’entier, sa taille et la valeur à insérer.
Procédure initialiser(T[]: tableau d❛entier, taille:entier, val:entier)
Variables i :entier;
Début
// Parcourt toutes les positions du tableau
Pour i de 1 jusqu❛à taille faire
// Affecte la valeur val à la position i du tableau
T[i] = val
finPour
fin
finProcédure
11. Écrire une fonction qui trouve le nombre de fois un caractère se trouve dans une chaîne de caractères. La fonction prend en paramètre le caractère à trouver et la chaîne de caractères.
Fonction countChar(string[]:tableau de caractères, c:caractère): entier
Début
Variables nbrChar,i:entiers
nbrChar ← 0 // Initialise le compteur de caractères à 0
i ← 0 // Commence le parcours de la chaîne à la première position
// Parcourt la chaîne jusqu'au caractère de fin '\0'
Tantque (string[i] ≠ '\0') faire
// Vérifie si le caractère actuel correspond au caractère recherché
Si (string[i] = c)
// Incrémente le compteur lorsqu'une correspondance est trouvée
nbrChar ← nbrChar + 1
FinSi
// Passe au caractère suivant de la chaîne
i ← i + 1
FinTantque
// Retourne le nombre total d'occurrences trouvées
retourner nbrChar
Fin
12. Écrire une fonction qui permet de calculer le PGCD(Plus Grand Commun Diviseur) de deux nombres.
Fonction calculerPGCD(n1,n2:entier):entier
Début
// Répète les calculs tant que les 2 nombres sont différents de 0
Tantque(n1 * n2 ≠ 0) Faire
// Vérifie quel nombre est le plus grand
Si(n1 > n2) Alors
// Soustrait n2 de n1 pour réduire le plus grand nombre
n1 ← n1 - n2
Sinon
// Soustrait n1 de n2 pour réduire le plus grand nombre
n2 ← n2 - n1
FinSi
FinTantque
// Vérifie si n1 est devenu égal à 0
Si(n1 = 0) alors
retourner n2 // Le PGCD est alors contenu dans n2
Sinon
retourner n1 // Sinon, le PGCD est contenu dans n1
FinSi
Fin
🚀 Boostez votre productivité avec les meilleurs outils Web → Essayez-les
13. Écrire une procédure qui permet d’afficher si un nombre est premier ou non.
Procédure nbrPremier(N:entier)
Variables flag:booleen
compteur:entier
Début
flag ← Vrai // Suppose au départ que N est un nombre premier
compteur ← 2 // Commence la recherche d'un diviseur à partir de 2
// Continue tant qu'on n'a pas trouvé de diviseur
// et que compteur ne dépasse pas N/2
Tantque(compteur ≤ N/2 et flag = Vrai) Faire
// Vérifie si N est divisible par compteur
Si(N mod compteur = 0) Alors
// Un diviseur a été trouvé : N n'est pas premier
flag ← Faux
Sinon
// Passe au diviseur suivant
compteur ← compteur + 1
FinSi
FinTantque
// Vérifie si aucun diviseur n'a été trouvé
Si(flag = Vrai) Alors
// Affiche que N est un nombre premier
Ecrire(N, " est premier")
Sinon
// Affiche que N n'est pas un nombre premier
Ecrire(N, " n'est pas premier")
FinSi
Fin
14. Écrire une fonction récursive qui calcule le factorielle d’un nombre passé en paramétre.
Fonction fact(N: entier):entier
Début
// Vérifie si N est un cas de base du factoriel
Si (N=0 ou N=1) alors
retourner 1 // 0! et 1! sont égaux à 1
Sinon
// Appelle la fonction avec N-1 puis multiplie par N
retourner fact(n-1) * n
FinSi
Fin
15. Écrire une procédure qui prend deux nombre N1 et N2 et affiche toutes les valeurs paires entre N1 et N2 si N1 < N2.
Procédure NbrPaires(N1,N2:entiers)
Début
// Vérifie que N1 est bien inférieur à N2
Si(N1 >= N2) Alors
// Affiche un message d'erreur si la condition n'est pas respectée
Ecrire("Erreur: N1 doit étre inférieur à N2!")
Sinon
// Parcourt tous les nombres compris entre N1 et N2
Tantque(N1 < N2) Faire
// Vérifie si N1 est divisible par 2
Si(N1 mod 2 = 0) Alors
// Affiche N1 s'il est pair
Ecrire(N1)
FinSi
N1 ← N1 + 1 // Passe au nombre suivant
FinTantque
FinSi
Fin
16. Écrire une fonction récursive qui calcule la série de Fibonacci d'un nombre passé en paramétre.

Fonction Fibonacci(N: entier): entier
Début
// Vérifie si N correspond à l'un des deux cas de base
Si(N=0 ou N=1) alors
// Les deux premiers termes de cette définition valent 1
Retourner 1
Sinon
// Appelle récursivement la fonction pour calculer les
// 2 termes précédents puis additionne leurs résultats
Retourner Fibonacci(N-2) + Fibonacci(N-1)
FinSi
FinFonction
17. Écrire une fonction récursive qui affiche les entiers de N1 à N2. Où N1 et N2 sont passés en paramètres.
Procédure nbrCompris(N1:entier, N2:entier)
Début
Ecrire(N1) // Affiche la valeur actuelle de N1
Si(N1 < N2) alors // Vérifie si N1 est encore inférieur à N2
// Incrémente N1 de 1
N1 ← N1 + 1
// Rappelle la procédure avec la nouvelle valeur de N1
nbrCompris(N1,N2)
FinSi
FinProcédure
18. Écrire une fonction récursive qui affiche les entiers de 0 à 20. Cette fonction reçoit un seul paramètre.
Procédure afficherNbrs(n: entier)
Début
Ecrire(20 - n) // Calcule et affiche 20 - n
Si (n > 0) alors // Vérifie si n est supérieur à 0
n ← n + 1 // Incrémente n de 1
afficherNbrs(n) //Rappelle la procédure avec la nouvelle valeur de n
FinSi
FinProcédure
19. Écrire une fonction récursive qui calculer b puissance e.
Exemple: Dans le cas de 23
- 2 est le nombre de base
- 3 est l'exposant
- Et la puissance est égale à 2*2*2
Fonction pow(b:réel, e:entier): réel
Début
// Vérifie si l'exposant est égal à 0
Si(e = 0) alors
// Toute valeur élevée à la puissance 0 vaut 1
retourner 1
Sinon
// Calcule récursivement la puissance
retourner pow(b, e-1) * b
FinSi
FinFonction
20. Écrire une fonction récursive qui prend N et calcule la somme suivante 1+2+3+...+N.
Fonction sum(N: entier): entier
Début
Si(N=0) alors // Vérifie si N a atteint le cas de base
retourner 0 // La somme jusqu'à 0 est égale à 0
Sinon
// Calcule récursivement la somme jusqu'à N-1, puis ajoute N
retourner sum(N-1) + N
FinSi
FinFonction
21. Écrire une fonction récursive qui permet de calculer le PGCD(Plus Grand Commun Diviseur) de deux nombres.
Fonction PGCD(n1:entier,n2:entier): entier
Début
// Vérifie si le deuxième nombre est égal à 0
Si(n2 = 0) alors
retourner n1 // Si n2 = 0, le PGCD est n1
FinSi
// Appelle récursivement la fonction avec n2
// et le reste de la division de n1 par n2
retourner PGCD(n2, n1 mod n2)
FinFonction
22. Écrire une procédure qui lit un tableau d'entiers dont la dernière valeur = -1 et affiche le nombre d’entiers pairs et leur pourcentage par rapport au nombre d’entiers donnés.
Procédure NombresPairs
Variables i,count,NbrPairs: entiers
p : reel
Début
// Initialise le compteur du nombre total de valeurs saisies
count ← 0
// Initialise le compteur du nombre de valeurs paires
NbrPairs ← 0
Répéter
// Lit un nombre saisi par l'utilisateur
Lire(i)
// Incrémente le nombre total de valeurs saisies
count ← count + 1
// Vérifie si le nombre est pair
Si (i mod 2 = 0) alors
// Incrémente le compteur si le nombre est pair
NbrPairs ← NbrPairs + 1
FinSi
//Arrête la saisie lorsqu'un nombre égal à -1 est rencontré
Jusqu’à(i = -1)
// Calcule le pourcentage de nombres pairs
p ← NbrPairs * 100/count
// Affiche le nombre de valeurs paires et leur pourcentage
Ecrire("Nbr de valeurs paires =",NbrPairs,"| pourcentage =",p)
Fin
23. Écrire une fonction qui calcule le prix TTC, cette fonction reçoit deux paramètres "prixHT" et "tva".
Fonction calculerTTC(ht,tva:réel): réel
Variables ttc:réel
Début
// Calcule le montant TTC en ajoutant la TVA au montant HT
ttc ← ht * (1 + tva / 100)
// Retourne le montant TTC calculé
retourner ttc
FinFonction
24. Écrire une fonction récursive qui affiche les éléments d'une matrice donnée.
Procédure echoMatrice(matrice[2][3]:tableau d'entiers,ligne,col:entier)
Début
// Vérifie qu❛il reste encore des lignes à parcourir
Si(ligne < 2) alors
// Vérifie qu❛il reste encore des colonnes à parcourir
Si(col < 3) alors
//Affiche l❛élément situé à la ligne & colonne actuelles
Ecrire(matrice[ligne][col])
// Appelle récursivement la procédure pour passer à
// la colonne suivante
echoMatrice(matrice,ligne,col+1)
Sinon
// Lorsque toutes les colonnes sont parcourues,
// passe à la ligne suivante et recommence à la colonne 0
echoMatrice(matrice,ligne+1,0)
FinSi
FinSi
FinProcédure
🚀 Boostez votre productivité avec les meilleurs outils Web → Essayez-les





















