Algorithmique et SD II République Tunisienne Ministère de l’Enseignement Supérieur

Page 1/22
République Tunisienne
République TunisienneRépublique Tunisienne
République Tunisienne
Ministère de l’Enseignement Supérieur
Université de Sfax
Éléments de corrigé des TDs
Algorithmique et SD II
par
Mohamed MKAOUAR
Année universitaire : 2013-2014
TD Algorithmique et Structures de Données II ISAAS, 2013/2014
Page 2/22
Les éléments de correction présentés dans ce Document constituent la juste première version
d’un Livre que je compte écrire sur l’Algorithmique et les Structures de Données.
Les étudiant(e)s de la 1
ère
Année Licence Appliquée en Informatique de Gestion, de l’ISAAS,
sont invités à bien comprendre ces corrections travers des tournages à la main) et de
respecter ses limites ; ils seront évalués conformément à ce qui est écrit dans ce Document.
Mohamed MKAOUAR
Page 3/22
Institut Supérieur d’Administration des
Affaires de Sfax
Module : Algorithmique et Structures de Données II
Auditoire : 1
ère
Année LAIG, parcours AA et parcours ES
Année-Universitaire : 2013-2014
par Mohamed MKAOUAR
TD N° 1
Sous-programmes : Procédures et Fonctions
Exercice 1
On souhaite disposer d’un sous-programme, intitulé Somme_N_Carrés, permettant de
calculer la somme des N premiers carrés (1
2
+ 2
2
+ 3
2
+ … + N
2
).
Comment peut-on traiter la variable N : Il est possible de saisir N dans un programme
principal, puis de la communiquer comme paramètre en entrée au sous-programme demandé.
Quel est le type approprié de ce sous-programme : Il est possible de définir une fonction qui
accepte, en entrée, la valeur N et retourne une valeur correspondant à la somme demandée.
Arrêter la signature du sous-programme demandé : Somme_N_Carrés(E N : Entier) : Entier
Écrire l’algorithme du programme principal assurant l’appel à ce sous-programme ainsi que
l’algorithme de ce sous-programme lui-même.
Algorithme Ex1
Variable N : Entier
Fonction Somme_N_Carrés(E N : Entier) : Entier
Début
Répéter
Écrire (‘Donnez une valeur N différente de 0, pour calculer les N premiers carrés : ’)
Lire(N)
Jusqu’à (N > 0)
Ecrire (‘La Somme des ’, N, ‘ premiers carrés est : ’, Somme_N_Carrés(N))
Fin
Fonction Somme_N_Carrés(E N : Entier) : Entier
Variables i, S : Entier
Début
S 0
pour i de 1 à N faire
S S + (i × i)
fin faire
retourner(S)
Fin
TD Algorithmique et Structures de Données II ISAAS, 2013/2014
Page 4/22
Exercice 2
On souhaite définir un programme qui : (i) assure la saisie de deux variables entières, (ii)
affiche ces deux variables par une procédure Afficher (A, B), (iii) assure la permutation des
valeurs de ces deux variables par une procédure Permuter (A, B), (iv) affiche de nouveau ces
deux variables, par la procédure Afficher (A, B), pour s’assurer de la permutation.
Que doit-être le mode de passage des paramètres pour les deux procédures :
Afficher (A, B) : On utilise ici deux paramètres en Entrée ; on communique deux
variables pour afficher leur valeur. Avec le langage C, ce mode est assuré par la
communication des valeurs (passage par valeur).
Permuter (A, B) : Pour que la permutation soit visible dans le programme principal, on
utilise ici deux paramètres en Entrée/Sortie. Avec le langage C, ce mode est assuré par la
communication des adresses (passage par adresse).
Algorithme Ex2
Variables A, B : Entier
Procédure Afficher (E A, B : Entier)
Procédure Permuter (E/S A, B : Entier)
Début
Écrire (‘Saisir deux valeurs entières pour deux variables A et B : ’)
Lire(A, B)
Afficher (A, B)
Permuter (A, B)
Afficher (A, B)
Fin
Procédure Afficher (E A, B : Entier)
Début
Écrire (‘La valeur de A est : ’, A)
Écrire (‘La valeur de B est : ’, B)
Fin
Procédure Permuter (E/S A, B : Entier)
Variable C : Entier
Début
C A
A B
B C
Fin
Exercice 3
Reprendre l’exemple de l’exercice précédent pour écrire un algorithme d’un programme
principal ainsi que des deux procédures Afficher et Permuter, tout en utilisant deux
variables globales.
TD Algorithmique et Structures de Données II ISAAS, 2013/2014
Page 5/22
Avec l’utilisation de variables globales, ce n’est pas nécessaire de définir et utiliser des
paramètres pour les deux procédures ; une variable globale est manipulée librement et de la
même manière aussi bien par le programme principal que pour tout sous-programme de ce
programme principal. Toutefois, cette solution reste limitée quant à la réutilisabilité des sous-
programmes ; les sous-programmes définis ne peuvent pas être librement utilisables par
d’autres programmes.
Exercice 4
Écrire un sous-programme permettant de calculer une puissance A
B
. Proposez une solution
avec une fonction et une autre avec une procédure.
Exemple : 5
4
= 5 × 5 × 5 × 5 = 625.
Exercice 5
On souhaite définir un algorithme qui manipule un tableau d’une manière modulaire, en
utilisant des sous-programmes. Le programme principal de cet algorithme se limite à clarer
un tableau T de taille 50, et de saisir une valeur N (1 N 50) qui précise le nombre
d’éléments que l’on veut manipuler. Puis, il fait appel aux sous-programmes suivants :
Saisie : qui permet de remplir le tableau T par N réels différents de 0. Tout élément de T
ne peut apparaître que trois fois au maximum.
Décalage : qui permet de supprimer les répétions par un décalage à gauche, et de
remplacer toute valeur supprimée par 0.
Tri : qui permet de trier le tableau T après la suppression des répétitions.
Affichage : qui permet d’afficher le tableau T après le Tri.
Quel est le problème majeur de ce programme : Le problème majeur se situe au niveau de la
déclaration d’un tableau de 50 éléments (50 @dresses mémoires sont réservées) ; Si N = 3, 47
@dresses mémoires sont réservées sans être exploitées. Aussi, les @adresses des éléments
supprimés doivent normalement être libérés.
Comment peut-on optimiser les traitements de Tri et d’Affichage en agissant sur la variable
N : Après la suppression des répétitions, on doit changer le nombre N d’éléments manipulés ;
plusieurs solutions sont possibles.
Exercice 6
Proposer des sous-programmes à votre choix pour montrer les intérêts des sous-programmes,
à savoir la factorisation, la réutilisation, la lisibilité et la structuration.
1 / 22 100%

Algorithmique et SD II République Tunisienne Ministère de l’Enseignement Supérieur

La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !