Académique Documents
Professionnel Documents
Culture Documents
PROCÉDURES ET FONCTIONS
EXERCICE 1
Écrire une fonction qui compare deux tableaux d’entiers R1 et R2, de taille maximale 50, et renvoie
vrai si R1 et R2 sont identiques et faux sinon. Deux tableaux sont identiques s’ils sont la même
taille et qu’ils contiennent les mêmes valeurs aux mêmes indices.
EXERCICE 2
On dispose de deux tableaux A et B de tailles respectives N et M, triés par ordre croissant. Écrire
une procédure Fusionner qui permet de créer un tableau FUS trié par ordre croissant en fusionnant
les deux tableaux A et B
Indication : Lorsque l’un des deux tableaux A ou B est épuisé, il s’agit t de recopier les éléments
restants de l’autre tableau dans le tableau FUS.
EXERCICE 3
1. Écrire une procédure (ou une fonction) qui permet de créer un tableau d’entier de taille
maximale 100.
2. Écrire une procédure (ou une fonction) qui permet de trier un tableau d’entier de taille
maximale 100 en utilisant la méthode du tri à bulles.
3. Écrire une procédure (ou une fonction) qui permet de supprimer les doublons d’un tableau
d’entiers trié, de taille maximale 100.
4. Écrire une procédure (ou une fonction) qui permet de rechercher si une valeur existe dans un
tableau trié en utilisant la méthode de recherche dichotomique.
5. Écrire une procédure (ou une fonction) qui ajoute une valeur dans un tableau trié sans
doublons tout en le gardant trié sans doublons.
1
6. Écrire une procédure (ou une fonction) qui supprime une valeur dans un tableau trié sans
doublons.
Écrire l’algorithme qui utilise les fonctions ci-dessus pour permettre à un utilisateur de créer un
tableau, de le trier et d’en supprimer les doublons. Puis selon son choix, et autant qu’il veut, vérifier
l’existence d’une valeur dans le tableau, rajouter une valeur au tableau et supprimer une valeur du
tableau.
EXERCICE 4
Écrire une procédure qui permet d’insérer un tableau d’entiers T2 dans un autre tableau d’entiers T1 à
un indice donné I. T1 et T2 contiennent respectivement N1 et N2 éléments.
Exemple
LA RÉCURSIVITÉ
EXERCICE 1
Écrire un algorithme qui permet de calculer la somme de n éléments consécutifs. Cet algorithme utilise
une fonction récursive nommée Addition qui a comme argument en entrée un entier x strictement positif
et elle renvoie la somme des x éléments, sachant que :
EXERCICE 2
Écrire un algorithme qui permet de tester si un entier est multiple d’un autre. Cet algorithme utilise
une fonction récursive : mult qui a comme argument en entrée, deux entiers x et y et elle renvoie
vrai si x et multiple de y et faux sinon, sachant que :
2
EXERCICE 3
Écrire un algorithme qui permet de calculer et d’afficher le PGCD de deux entiers a et b (>=0). Cet
algorithme utilise une fonction récursive : pgcd qui a comme argument en entrée, deux entiers x et y
et elle retourne le pgcd de x et y sachant que :
EXERCICE 4
Écrire une fonction récursive nommée Puissance qui permet de calculer la puissance entière d’un
EXERCICE 5
Écrire une fonction récursive nommée Sym_tab qui permet de tester si un tableau de taille n est
symétrique ou non. Un tableau T est dit symétrique si et seulement si :
Remarque : le type Tab est défini comme suit : Tab = tableau [1..100] d’entier.
EXERCICE 6
Écrire une procédure récursive nommée Tri_bulle_rec qui permet de trier un tableau T de taille n
dans l’ordre décroissant
3
LES LISTES SIMPLEMENT CHAÎNÉES
EXERCICE 1
Définir les types maillon et liste permettant de manipuler une liste de nombres réels.
EXERCICE 2
Écrire la procédure InsertTrié qui permet d’ajouter une valeur réelle val à une liste simplement
chaînée donnée par l’adresse de son premier maillon: premier, tout en la gardant triée dans l’ordre
croissant.
EXERCICE 3
Écrire la procédure AfficheList qui affiche le contenu d’une liste simplement chaînée dans l’ordre
inverse de ses éléments (de la queue vers la tête).
Par exemple, si on considère la liste suivante :
EXERCICE 4
Écrire une fonction récursive qui permet de renvoyer Vrai si un réel val existe dans une liste
simplement chaînée donnée par l’adresse de son premier élément et Faux sinon.
EXERCICE5
Une chaîne de bits b (b = bn-1…b0) de longueur n ≥1 est représentée par une liste chaînée de bits où
la tête représente le bit de poids fort ( bn-1), dont la définition est la suivante :
Type
maillon = Enregistrment
Valeur : entier
Suivant : ^maillon
FinEnregistrment
Liste =maillon
Par exemple le nombre binaire 11010 est représenté par la liste L1.
4
1. Écrire la fonction InsertTete qui permet d’insérer un maillon de valeur val en tête d’une liste
donnée par l’adresse de son premier maillon.
2. Donner les instructions pertmettant de construire la liste L1 de l’exemple (11010).
3. La valeur, notée ValChaine(b) d’une chaîne de bits de longueur n≥1 est le nombre
naturel dont la représentation binaire est cette chaîne. Par exemple :
ValChaine(00001111) = 15 et ValChaine(01010101) = 85
4. Écrire la fonction récursive puissance qui permet pour deux entiers n ≥0 et m≥ 1 de renvoyer
mn.
5. Écrire la fonction récursive LongListe qui renvoie le nombre d’éléments d’une liste donnée
par l’adresse de son premier maillon.
6. Écrire la fonction ValChaine qui accepte une liste donnée par l’adresse de son premier
maillon et renvoie la valeur de la chaîne représentée par cette liste.
7. La distance de Hamming, notée H(c,d) entre deux chaînes de bits c et d de longueur n 1 est
le nombre de positions où les bits correspondants sont différents.
Par exemple :
H(00001111; 01010101)
Écrire la fonction H qui accepte deux listes données par les adresses de leurs premiers maillons
et renvoie la distance de Hamming entre les deux chaînes représentées par ces deux listes.
8. Deux chaînes de bits c et d sont dits adjacents s’ils sont à une distance de Hamming égal à 1.
Écrire la fonction Adjacents qui accepte deux listes données par les adresses de leurs
premiers maillons et renvoie 1 si c et d sont adjacents, 0 sinon.