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
    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
    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
    retourner n1 + n2
FinFonction

Quelle est la différence entre procédure et fonction? Une procédure est une routine qui peut accepter des arguments mais ne retourne aucune valeur. Une fonction est une routine qui peut accepter des arguments et retourne une ou plusieurs valeurs.

 
 

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
    retourner N
 Sinon 
    retourner -N
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
  Pour i de 1 à 10 faire
    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
    Si(N mod 2 = 0) alors
       Ecrire(N," est impair.")
    Sinon
       Ecrire(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)
  sum ← n1 + n2
  mult ← n1 * n2
  Si(sum ≥ 0) Alors
    Ecrire("Somme positive")
  Sinon
    Ecrire("Somme négative")
  FinSi
  Si(mult ≥ 0) Alors
    Ecrire("Multiplication positif")
  Sinon
    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)
   Si (n > 0) alors 
      n ← n + 1     
      afficherNbrs(n)
   FinSi 
FinProcédure

Une fonction récursive est une fonction qui s’appelle elle-même au cours de son exécution.

 
 

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              
  Tant que(str[size] ≠ '\0') faire
    size ← size + 1                 
  FinTantque                              
  retourner size
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 
    Pour i de 1 jusqu❛à taille faire 
      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       
  i ← 0
  Tantque (string[i] ≠ '\0') faire
    Si (string[i] = c)   
      nbrChar ← nbrChar + 1
      i ← i + 1
    FinSi
  FinTantque
  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
   Tantque(n1 * n2 ≠ 0) Faire
     Si(n1 > n2) Alors
        n1 ← n1 - n2
     Sinon
        n2 ← n2 - n1
     FinSi
   FinTantque
   
   Si(n1 = 0) alors
     retourner n2
   Sinon
     retourner n1
   FinSi
Fin 
 
 

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
  compteur ← 2
  Tantque(compteur ≤ N/2 et flag = Vrai) Faire
    Si(N mod compteur = 0) Alors
      flag ← Faux
    Sinon
      compteur ← compteur + 1
    FinSi
  FinTantque
  Si(flag = Vrai) Alors
    Ecrire(N, " est premier")
  Sinon
    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
    Si (N=0 ou N=1) alors
       retourner 1
    Sinon   
	   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
  Si(N1 >= N2) Alors
      Ecrire("Erreur: N1 doit étre inférieur à N2!")
  Sinon
    Tantque(N1 < N2) Faire
       Si(N1 mod 2 = 0) Alors
          Ecrire(N1)
       FinSi
          N1 ← N1 + 1
    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 
     Si(N=0 ou N=1) alors 
        Retourner 1
     Sinon
        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)
  Si(N1 < N2) alors 
    N1 ← N1 + 1       
    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)
   Si (n > 0) alors 
      n ← n + 1     
      afficherNbrs(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, n:entier): réel
Début 
    Si(e = 0) alors    
	   retourner 1
    Sinon
	   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
      retourner 0
   Sinon 
      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               
    Si(n2 = 0) alors 
       retourner n1 
    FinSi 
    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
    count ← 0
    NbrPairs ← 0
    Répéter
       Lire(i)
       count ← count + 1
       Si (i mod 2 = 0) alors
          NbrPairs ← NbrPairs + 1
       FinSi
    Jusqu’à(i = -1)
    p ← NbrPairs * 100/count
    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
    ttc ← ht * (1 + tva / 100)
    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 
    Si(ligne < 2) alors
        Si(col < 3) alors 
            Ecrire(matrice[ligne][col])
            echoMatrice(matrice,ligne,col+1)
        Sinon 
            echoMatrice(matrice,ligne+1,0)
        FinSi 
    FinSi 
FinProcédure
 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *