0% ont trouvé ce document utile (0 vote)
37 vues53 pages

ASDTDNabil Benneji

Ce document présente un support de travaux dirigés pour le cours d'Algorithmique et Structures de Données I à l'Institut Supérieur des Etudes Technologiques du Kef. Il comprend des exercices sur des thèmes tels que l'introduction à l'algorithmique, les instructions simples, les structures conditionnelles et itératives, avec des objectifs pédagogiques clairs pour chaque section. Les exercices incluent l'évaluation d'expressions arithmétiques et logiques, la rédaction d'algorithmes et la résolution de problèmes pratiques.

Transféré par

Malek Khadrani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
37 vues53 pages

ASDTDNabil Benneji

Ce document présente un support de travaux dirigés pour le cours d'Algorithmique et Structures de Données I à l'Institut Supérieur des Etudes Technologiques du Kef. Il comprend des exercices sur des thèmes tels que l'introduction à l'algorithmique, les instructions simples, les structures conditionnelles et itératives, avec des objectifs pédagogiques clairs pour chaque section. Les exercices incluent l'évaluation d'expressions arithmétiques et logiques, la rédaction d'algorithmes et la résolution de problèmes pratiques.

Transféré par

Malek Khadrani
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOC, PDF, TXT ou lisez en ligne sur Scribd

République Tunisienne

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique


Direction Régionale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Support des Travaux Dirigés

Algorithmique et Structures de données I

Département : Technologies de l'Informatique


Filière : Technologies de l’Informatique
Option : Tronc Commun
Niveau : Première année
Préparé par : Nabil AOUADI & Hamed BENNEJI

Année Universitaire : 2016-2O17


Introduction
Dans le cadre du cours Algorithmique et Structures de Données I, des travaux
dirigés sont développés et sont répartis de sorte qu’à la fin de chaque chapitre
(cités ci-après), une série d’exercices d’application sont corrigés.
 Introduction à l’algorithmique
 Instructions Simples
 Structures Conditionnelles
 Structures Itératives
 Les chaînes de caractères
 Les Tableaux
 Procédure et Fonction
 Enregistrement et Fichier
Enoncé des Travaux Dirigés TD N°1 : Introduction à l’algorithmique

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Enoncé des Travaux Dirigés N°1
Introduction à
l’algorithmique
OBJECTIFS :
 Rappeler les notions de base de l’algorithmique
 Maitriser l’évaluation des expressions logiques ou arithmétiques

Durée : 1 heure
Exercice 1 : Expression Arithmétique
Evaluer les expressions suivantes :
a) pour A = 2, B = 4 et C = 5 : A * (B + C), A + B * C, A * B / C + A
b) 6 + 2 * 5 DIV 3
4.5 + RAC (8/2)
6 + 4 * 7 – 2 * (8 MOD 3 + 5)
(ABS (1.1 – 5.4))**2
Exercice 2 : Expression logique
Pour chacun des cas suivants, évaluer les expressions logiques en a), b), c) et d)
1) pour (a, b, c, d) = (-1, 3, 2, 7)
2) pour (a, b, c, d) = (1, 3, 2, 7)
3) pour (a, b, c, d) = (3, 11, 7, 2)
a) (a < b) ET (c > d)
b) NON ((a < b) ET (c > d)))
c) (a > b) OU (c 􀂏 a)
d) (a + b < c) OU (a + d > c)
Exercice 3 :
a) quel est l'ordre de priorité des différents opérateurs de l'expression suivante :
(( 3 * a) – x^2) –(((c- d)/(a/b).d)
b) évaluer l'expression suivante :
5 + 2 * 6 – 4 + (8 + 2 ^ 3 ) / (2 – 4 + 5*2)
c) écrire le formule suivante sous forme d'une expression arithmétique:

3
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°1 : Introduction à l’algorithmique

(3 - xy)2 – 'ac
-------------------
2x – z
Exercice 4 :
Sachant que a = 4 , b=5 , c=-1 et d =0 , évaluer les expressions logiques suivantes :
a) ( a et b ) et (c >= d)
b) Non( a < b) ou ( c #b)
c) Non(a#b^2) ou(a*b < d)

4
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°2 : les Instructions Simples

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Enoncé des Travaux Dirigés N°2
Instructions
Simples
OBJECTIFS :
 Rappeler les instructions simples
 Comprendre la résolution du problème sous forme d’un algorithme en se
basant sur les instructions simples

Durée : 2 heures
Exercice 1 :
Donner toutes les raisons pour lesquelles l'algorithme suivant est incorrect
1. Algoritme Incorrect
2. X,y :entier
3. Z : réel
4. Debut
5. Zx^2
6; Yx
7. X*2  3 + x
8. Y  5y + 3
[Link]
Exercice 2 :
Ecrire un algorithme qui calcule et affiche la résistance d'un composant électrique en utilisant
la loi d'ohm : U = R * I avec U : tension en V , I : intensité en A , R : résistance en oméga
Exercice 3 :
Ecrire un algorithme qui saisit deux entiers M et N et affiche le résultat des opérateurs
(+, -, *, DIV et MOD) sur ces deux entiers.
Exercice 4 :
Ecrire un algorithme qui saisit une date au clavier sous la forme : Jour, Mois et Année et
l’affiche sous la forme Jour/Mois/Année.
Exemple : 23/9/2005
Exercice 5 :
Ecrire un algorithme qui pour un caractère saisi au clavier, affiche le caractère et son
équivalent entier

5
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°2 : les Instructions Simples

Exercice 6 :
Ecrire un algorithme qui permute et affiche les valeurs de trois variables réelles A, B et C
saisies au clavier comme suit :
AB, BC, CA
Exemple :
A = 12.5 A = 6.5
B = 10.5 B = 12.5
C = 6.5 C = 10.5
Exercice 7 :
Ecrire un algorithme qui calcule la somme de quatre réels saisis au clavier :
a) en utilisant 5 variables
b) en utilisant 2 variables
Exercice 8 :
Ecrire un algorithme qui permet de convertir et d’afficher en octets, kilo octets, méga
octets et giga octets un nombre donné en bits.
Exercice 9 :
Ecrire un algorithme qui à partir d’un prix unitaire et d’un nombre d’articles entrés au
clavier, calcule le prix-Ht, le montant de la TVA et le prix [Link] taux de la TVA est de
18%.
L’affichage doit se présenter comme suit :
Prix unitaire :
Nombres d’articles :
Prix HT :
Montant TVA :
-------------------------------------------------------
Prix TTC :
Exercice 10 :
Ecrire un algorithme qui pour un rayon donné calcule et affiche :
- Le périmètre d’un cercle :: 2 * pi* rayon
- La surface d’un cercle : pi * (rayon)2
- Le volume d’une sphère : 4/3 * pi * (rayon)3

6
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°3 : Structures Conditionnelles

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Enoncé des Travaux Dirigés N°3
Structures
Conditionnelles
OBJECTIFS :
 Rappeler les structures conditionnelles
 Savoir le choix de la structure adéquate parmi les structures
conditionnelles pour un tel problème

Durée : 2 heures et demie

Exercice 1 :
Ecrire un algorithme permettant de résoudre dans R une équation du second degré de la forme
: ax2 + bx + C = 0
Exercice 2 :
Ecrire un algorithme permettant de simuler une calculatrice à 4 opérations (+, - , * et /).
Utiliser "selon" pour le choix de l'opération à effectuer.
Exercice 3 :
Ecrire un algorithme qui lit un caractère au clavier puis afficher s'il s'agit d'une lettre
minuscule, d'une lettre majuscule, d'un chiffre ou d'un caractère spécial. .
Exercice 4 :
Une année est bissextile (contient 366 jours) si elle est multiple de 4, sauf les années de début
siècle (qui se terminent par 00) qui ne sont bissextiles que si elles sont divisibles par 400.
Exemples :
 1080 et 1996 sont bissextiles car elles sont divisibles par 4.
 2000 est une année bissextile car elle est divisible par 400
 2100 et 3000 ne sont pas bissextiles car elles ne sont pas divisibles par 400.
Ecrire un algorithme qui permet de déterminer si un entier positif donné correspond à une
année bissextile ou non.
Exercice 5 :
Soit la suite d’instructions suivante :
Si (a>b) alors Trouve_vrai

7
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°3 : Structures Conditionnelles

Sinon Trouve_faux Fin si


Remplacer cette suite d’instructions par une seule instruction ? (Réécrire cette suite
d’instructions sansutiliser aucune structure conditionnelle).
Exercice 06:
Les frais d’envoi d’un colis postal à l’intérieur du pays sont calculés comme suit :
2.500 dinars si le colis pèse 2 Kilogrammes ou moins.
1.250 dinars à chaque Kilogramme ou partie de Kilogramme en plus.
Ecrire un algorithme intitulé COLIS, qui permet de saisir le poids d’un colis et calculer et
afficher les frais d’envoi.
Exercice 7 :
Les tarifs de la compagnie aérienne "Omega Air Lines" dépendent du produit utilisé et de la
superficie couverte, et sont fixés comme suit :
Catégorie n°1 : Traitement des mauvaises herbes, 15 Dinars l’hectare ;
Catégorie n°2 : Traitement des sauterelles, 30 Dinars l’hectare ;
Catégorie n°3 : Traitement des vers, 45 Dinars l’hectare ;
Catégorie n°4 : Traitement combiné, 80 Dinars l’hectare.
Pour un traitement de plus de 1000 hectares, le fermier reçoit une réduction de 5% du prix
total. De
plus, si le montant de la facture dépasse 35000 Dinars, une remise de 10% est accordée. Si les
deux réductions s’appliquent on calcule d’abord la réduction.
Écrire un algorithme qui fournit le prix à payer ; les données d’entrée sont :
- Le numéro de la catégorie de traitement,
- Le nombre d’hectares à traiter.
Exercice 8 :
On donne deux temps successifs sous forme hh1, mm1, ss1 et hh2, mm2, ss2 qui
représentent les heures, minutes et secondes. Les heures sont comptées de 0 à 23. On suppose
à priori que la durée entre ces deux temps est inférieure à 24 heures.
Travail demandé : Ecrire un algorithme qui permet de lire deux temps sous la forme
indiquée sous dessus, puis calculer et afficher cette durée sous forme hh:mm:ss
Explication : On se propose de transformer ces deux temps en secondes, calculer la durée d
entre ces deux, et enfin transformer cette durée sous forme hh:mm:ss.
Exemples:
hh1=13, mm1=34, ss1=56 _ T1=48896 Secondes
hh2=15, mm2=19, ss2=38 _ T2=55178 Secondes _d=6282 Secondes

8
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°3 : Structures Conditionnelles

_d=01h : 44mn: 42s


hh1=22, mm1=52, ss1=27 _ T1=4053 secondes
hh2=01, mm2=11, ss2=12 _ T2=4272 secondes _d=8325 Secondes
_d= 02h : 18mn :45s
NB: (hh1 :mm1 :ss1) et (hh2 :mm2 :ss2) sont deux temps successifs
Exercice n°9:
Une compagnie d’assurance calcule le montant à payer par un abonné selon le barème suivant
:L’abonné paye
_ Un montant de base BASE évaluée à 100 dinars. (Constante)
_ Une prime de risque PRR :
PRR=BASE Si le type de risque est ‘’C’’ (Tierce Collision)
PRR=BASE*1.5 Si le type de risque est ‘’R’’ (Tout Risque)
Le type de risque est désigné par TR
_ Une prime PRP en fonction de la puissance de la voiture :
Puissance : 4 à 5 chevaux PRP=PRR*1.2
Puissance : 6 à 8 chevaux PRP=PRR*1.4
Puissance : 9 chevaux et plus PRP=PRR*1.6
La puissance est désignée par P
_ Une prime PU selon l’utilisation de la voiture
PU=PRP*0.90 Si le type d’utilisation est Promenade (‘’P’’)
PU=PRP*1.10 Si le type d’utilisation est Trajet (‘’T’’)
PU=PRP*1.25 Si le type d’utilisation est Affaire (‘’A’’)
Le type d’utilisation est désigné par TU
Ecrire un algorithme intitulé ASSURANCE qui permet de lire le type de risque (TR), la
puissance (P) et le type d’utilisation (TU) puis calcule et affiche le montant payer par un
abonné.
Exercice 10 :
Écrire un algorithme intitulé lendemain permettant de lire une date (dat) sous forme jjmmaaaa
et d’afficher la date de lendemain sous la forme jj/mm/aaaa.
Exemple :
Date date lendemain
20112003 à 21/11/2003
30112003 à 01/12/2003
31122003 à 01/01/2004

9
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°3 : Structures Conditionnelles

28022003 à 01/03/2003
28022004 à 29/02/2004
29022004 à 01/03/2004
NB : la date fournie est supposée contrôlée (aucune erreur)

10
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°4 : Structures Itératives

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Enoncé des Travaux Dirigés N°4
Structures Itératives
OBJECTIFS :
 Rappeler les structures itératives
 Savoir le choix de la structure adéquate parmi les structures itératives
pour un tel problème

Durée : 2 heures et demie

Exercice 1 :
Ecrire un algorithme permettant de :
- Lire un nombre fini de notes comprises entre 0 et 20
- Afficher la meilleure note, la mauvaise note et la moyenne de toutes les notes
Exercice 2 :
Calculer ab avec a réel et b par multiplications successives
Exercice 3 :
Ecrire un algorithme .qui lit un entier positif et vérifie si ce nombre est premier ou non.
Exercice 4 :
Ecrire un algorithme qui détermine toutes les nombres premiers inférieurs à une valeur
donnée
Exercice 5 :
Ecrire un algorithme qui lit deux entiers positifs A et B puis calcule et affiche leur PGCD en
utilisant la méthode suivante :
 si A = B; PGCD (A, B) = A
 Si A > B ; PGCD (A, B) = PGCD (A – B, B)
 Si B > A ; PGCD (A, B) = PGCD (A, B – A)
PGCD(18,45) = PGCD(18,27)=PGCD(18,9)=PGCD(9,9)=9
Exercice 6 :
Ecrire un algorithme qui calcule le PPCM (Plus Petit Commun Multiple) de deux entiers
positifs A et B en utilisant la méthode suivante :

11
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°4 : Structures Itératives

 permuter, si nécessaire, les données de façon à ranger dans A le plus grand de deux
entiers
 chercher le plus petit multiple de A qui est aussi multiple de B
Exercice 7 :
Ecrire un algorithme qui calcule et affiche les 10 premiers termes de la suite de Fibonacci.
La suite de Fibonacci est définie par :
 F0 = 1
 F1 = 1
 Fn = Fn-2 + Fn-1 pour n > 1
Exercice 8 :
Ecrire un algorithme qui calcule la somme harmonique s = 1/i; n est un entier positif lu à
partir du clavier.
Exemple : pour n = 3, s=1 + 1/2 + 1/3 = 1.83
Exercice 9 : nombre cubique
Parmi tous les entiers supérieurs à 1, seuls 4 peuvent être représentés par la somme de cubes
de leurs chiffres. A titre d'exemple : 153 = 13 + 53 + 33 est un nombre cubique.
Ecrire un algorithme permettant de déterminer les 3 autres. Les 4 nombres sont compris
entre 150 et 410.
Exercice 10 : nombre parfait
Un nombre parfait est un nombre présentant la particularité d'être égal à la somme de tous ses
diviseurs, excepté lui-même. Le premier nombre parfait est 6 = 3 + 2 + 1
Ecrire un algorithme qui affiche tous les nombres parfaits inférieurs à 1000
Exercice 11 :
Ecrire un algorithme qui simule le jeu suivant :
 à tour de rôle, l'ordinateur et le joueur choisissent un nombre qui ne peut prendre que 3
valeurs : 0, 1 ou 2. l'instruction n  Random(3) réalise le choix de l'ordinateur
 si la différence entre les nombres choisis vaut :
o 2, le joueur qui a proposé le plus grand nombre gagne un point
o 1, le joueur qui a proposé le plus petit nombre gagne un point
o 0, aucun point n'est marqué
 Le jeu termine quand l'un des joueurs totalise 10 points.

12
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°5 : Les chaînes de caractères

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Enoncé des Travaux Dirigés N°5
Les chaînes de
caractères
OBJECTIFS :
 Rappeler la manipulation des variables de type chaine de caractère
 Maitriser les fonctions qui manipulent les chaines de caractères

Durée : 2 heures

Exercice 1 :
Ecrire un algorithme qui lit une chaîne de caractère puis affiche son inverse. Par exemple : si
une chaîne est "algo", l'algorithme doit afficher "ogla"
Exercice 2 :
Ecrire un algorithme qui lit une chaîne de caractère et renvoie son équivalent en majuscule
Exercice 3 :
Ecrire un algorithme qui permet de compter le nombre de mots dans une phrase. La phrase
commence obligatoirement par une lettre et les mots sont séparés par des espaces.
Exercice 4 :
Ecrire un algorithme qui détermine et affiche le mot le plus long dans une phrase donnée
Exercice 5 :
Ecrire un algorithme qui lit un mot et une lettre(chaîne de caractère formée uniquement de
lettres) puis affiche le nombre d'apparition de la lettre dans le mot.
Exercice 6 :
Ecrire un algorithme qui lit un entier positif puis affiche son équivalent en binaire (base 2). Par exemple : (23)10 = (10111) 2

13
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°6 : Les Tableaux

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Enoncé des Travaux Dirigés N°6
Les Tableaux
OBJECTIFS :
 Rappeler la manipulation des variables de type tableau
 Construire des algorithmes qui traitent les tableaux

Durée : 2 heures et demie


Exercice 1 :
Ecrire un algorithme qui remplit un tableau T d'ordre n de type entier, lit un entier x, calcule
et affiche le nombre d'apparitions de x dans le tableau T.
Exercice 2 :
Ecrire un algorithme qui remplit un tableau T d'ordre n de type entier, éclate le tableau T en
deux tableaux :
 TP qui contiendra les éléments positifs de T
 TN qui Contiendra les éléments négatifs de T
Exemple :
T 5 -2 0 -6 8
TP 5 0 8
TN -2 0 -6
Exercice 3 :
Un instituteur cherche à vérifier si ses élèves ont appris à réciter l'alphabet lettre par lettre
dans l'ordre. Pour ceci, il vous demande de lui développer l'algorithme d'un programme
permettant d'évaluer chaque élève de la façon suivante :
 le programme demande à chaque élève de remplir un tableau nommé réponse par les
lettres de l'alphabet dans l'ordre.
 Ensuite, le programme examine ce tableau élément par élément
o Si la lettre est dans sa place, il l'accepte
o Sinon, il la remplace par lettre adéquate et incrémente le nombre de fautes
 Enfin, le programme affiche le nombre total de fautes
Exercice 4 :

14
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°6 : Les Tableaux

Ecrire un algorithme qui remplit deux vecteurs U et V représentés par deux tableaux de type
entier d'ordre n, calcule et affiche le produit scalaire.
Le produit scalaire de deux vecteurs : U = (x1, x2,…….., xn ) et V = (y1, y2,…….., Yn ) est défini
par : U.V = x1 * y1 + x2 * y2 + ... + xn * yn = ∑xi *yi
Exercice 5 :
Ecrire un algorithme qui remplit un vecteur U représentés par un tableau de type entier
d'ordre n, calcule et affiche la norme de vecteur U. La norme d'un vecteur U = (x1, x2,…….., xn )
est définie par : ||U|| = sqrt( x1^2 + ….. xn^2)
Exercice 6 :
Ecrire un algorithme qui permet de remplir un tableau Fib par les 10 premiers termes de la
suite de Fibonacci. La suite de Fibonacci est définie par :
 F0 = 1
 F1 = 1
 Fn = Fn-2 + Fn-1 pour n > 1
Exercice 7 :
Ecrire un algorithme permettant de trouver tous les nombres premiers inférieures à 400 et qui
utilise la méthode suivante :
 Créer un tableau T pouvant contenir 400 entiers.
 Initialiser chaque élément du tableau à son indice c'est-à-dire
T[1]=1;T[2]=2;..;T[400]=4000
 Remplacer tous les multiples de 2 par 0 sauf 2
 Chercher le prochain élément différent de 0 dans le tableau c'est-à-dire T[3] et
remplacer tous les multiples de 3 par 0 sauf 3
 Continuer ce processus jusqu'à avoir T[i] >= 20 ( 20 étant la racine carrée de 400)
 Afficher tous les éléments non nuls de T
Exercice 8 :
Soit un vecteur U1 de composantes x1,x2,..,xN non nulles et un vecteur L de même Longueur
dont les composantes sont 0 ou 1.
Ecrire un algorithme qui remplit le vecteur U1 et fait la compression de U1 par L. Le résultat
est un vecteur U2 dont les composants sont, dans l'ordre, celles de U1 pour lesquelles la
composante de L vaut 1. Par exemple :
Exemple :
U1 5 -2 7 -6 8
L 0 1 1 0 1

15
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°6 : Les Tableaux

U2 -2 7 8 0 0
Exercice 9 :
Soit un tableau T de n éléments, déterminer la longueur de la première plus longue séquence
de nombres rangés par ordre croissant et l'indice de son premier élément.
Exercice 10 :
Ecrire un algorithme qui permet de fusionner deux tableaux triés A et B contenant
respectivement n et m éléments. Le résultat est un tableau trié C à (n+m) éléments
Exercice 11 :
Ecrire un algorithme qui remplit un tableau A de n nombres triés par ordre croissant, lire un
réel R et l'insère dans sa bonne position. Le résultat sera un deuxième tableau de la longueur
(n+1) et qui est également trié par ordre croissant
Exercice 12 :
Créer un tableau à deux dimensions qui contiendra les n première lignes du triangle de
Pascal.. chaque élément du triangle de pascal est obtenu par la formule :
T[L,C] = T[L-1, C-1] + T[L-1,C]

16
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°7 : Procédure et Fonction

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structure de Données I
Auditoire : TI1 Enoncé des Travaux Dirigés N°7
Procédure et Fonction
OBJECTIFS :
 Rappeler la programmation procédurale
 Maitriser la manipulation d’une fonction ou d’une procédure

Durée : 3 heures
Exercice 1 : Procédure
a) Ecrire une procédure PERMUT qui permet d’échanger les valeurs de deux entiers a et b
b) Ecrire une procédure LectureMat qui permet de remplir une matrice
c) Ecrire une procédure MinMax qui détermine le minimum et le maximum de deux entiers
d) Ecrire une procédure OCCUR qui détermine l’occurrence d’un caractère x dans une
chaîne de caractère CH
e) on appelle bigramme une suite de deux lettres. Ecrire une procédure qui calcule le nombre
d’occurrence d’un bigramme dans une chaîne de caractère. Peut – on transformer cette
procédure en fonction ? si oui, écrire cette fonction
Exercice 2 : Fonction
a) Développer une fonction qui cherche le PGCD de deux entiers a et b en utilisant
l’algorithme d’Euclide :L’algorithme d’Euclide consiste à répéter plusieurs fois le
traitement : PGCD(a,b) = PGCD(b,a mod b) jusqu’à PGCD(x,0) , le PGCD est alors x
b) Ecrire une fonction qui calcule le nombre d’occurrence de la chaîne ch2 dans la chaîne ch1
c) Ecrire une fonction Triangle qui permet de vérifier si les 3 nombres a,b,c peuvent être les
mesures des cotés d’un triangle rectangle . D’après le théorème de Pythagore,, si a,b,c
sont les mesures des cotés d’un triangle rectangle alors a2 = b2 + c2 ou b2 = c2 + a2 ou c2 =
b2 + a2
Exercice 3 : chaîne de caractère
a) Ecrire un procédure qui lit une chaîne de caractère puis affiche son inverse
b) Ecrire une procédure qui lit une chaîne de caractère et renvoie son équivalent en
majuscules
c) Ecrire une fonction qui retourne le nombre de mots dans une phrase donnée

17
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°7 : Procédure et Fonction

d) Ecrire une procédure qui affiche le mot le plus long dans une phrase donnée
e) Ecrire une procédure qui lit un entier positif et affiche son équivalent en binaire
f) Ecrire une fonction qui retourne le nombre d’une lettre dans une phrase donnée

18
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°8 : Enregistrement et Fichier

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Enoncé des Travaux Dirigés N°8
Enregistrement et
Fichier
OBJECTIFS :
 Rappeler le type enregistrement et Fichier
 Maitriser la manipulation d’enregistrement et du fichier pour un tel
problème

Durée : 2 heures et demie


Exercice 1 : Nombre Complexe
Ecrire un algorithme qui lit deux nombres complexes C1 et C2 et qui affiche leur somme et
leur produit
Exercice 2 :
a) Créer un tableau TabEmp qui contiendra les informations sur les 50 employés d'une
entreprise (matricule, nom , salaire , etat_civil), le remplit puis afficher le nombre
d'employés ont le salaire est compris entre 500 et 700
b) Ecrire un algorithme permettant :
- créer et remplir un fichier "FP" qui contient les informations sur le personnel d'une
entreprise (matricule, nom, prénom, grade, salaire)
- afficher la liste des employés de cette entreprise dont le salaire est compris entre 500 et
700 D
Exercice 3 :
Ecrire une procédure permettant de recherche un employé dans le fichier "FP" de l'exercice
précédent à partir de son matricule ;
- si l'employé, l'algorithme affiche son nom, son prénom, et son grade.
- Sinon il affiche de message " ce matricule ne figure pas dans le fichier … "

19
Nabil AOUADI & Hamed BENNEJI
Enoncé des Travaux Dirigés TD N°8 : Enregistrement et Fichier

Exercice 4 :
Ecrire un algorithme permettant :
- créer et remplir un fichier "fnotes" qui contients les notes de 30 étudiants
- copier les notes dans un tableau Tnote
- Trier le tableau Tnote dans l'ordre croissant
- Ccpier les notes triées du tableau vers le fichier FNotes.

20
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés TD N°1 : Introduction à l’algorithmique

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Corrigé des Travaux Dirigés N°1
Introduction à
l’algorithmique
Exercice 1 :
a) pour A = 2, B = 4 et C = 5 :
A * (B + C)  2*(4+5)2*9  18
A + B * C  2+4*5  2+20  22
A * B / C + A  2*4/5 + 2  8/5 + 2  1.6 + 2  3.6
b) 6 + 2 * 5 DIV 3  6 + 10 div 3  6 +3  9
4.5 + RAC (8/2)  4.5 + rac(4)  4.5 + 2  6;5
6 + 4 * 7 – 2 * (8 MOD 3 + 5) 6+4*7-2*(2+5) 6+4*7 -2*7 6+28 -2*76+28-14 34-14 20
(ABS (1.1 – 5.4))*2  (abs(-4.3))*2  4.3*2 8.6
Exercice 2 :
1) pour (a, b, c, d) = (-1, 3, 2, 7)
a) (-1 < 3) ET (2 > 7) (vrai) et(faux )  faux
b) NON ((-1 < 3) ET (2 > 7))  non(vrai et faux) -> non(faux)  vrai
c) (-1 > 3) OU (2<> 7) faux ou vrai  vrai
d) (a + b < c) OU (a + d > c)  (-1+3 < 2) ou (-1 + 7 > 2)  (2<2)ou (6>2)  faux ou vrai  vrai
2) pour (a, b, c, d) = (1, 3, 2, 7) : même travail que 1)
a) (a < b) ET (c > d)
b) NON ((a < b) ET (c > d)))
c) (a > b) OU (c <> a)
d) (a + b < c) OU (a + d > c)
3) pour (a, b, c, d) = (3, 11, 7, 2) même travail que 1)
a) (a < b) ET (c > d)
b) NON ((a < b) ET (c > d)))
c) (a > b) OU (c <> a)
d) (a + b < c) OU (a + d > c)
Exercice 3 :
a)
Principe: pour déterminer l'ordre de priorité des différents opérateurs de l'expression arithmétique, il faut savoir
l'ordre de priorité des opérateurs arithmétiques : - , () , ^ , * et / , + et –
( ( 3 * a ) – x ^ 2 ) – ( ( ( c - d ) / ( a / b ) /. d )
1 3 2 8 4 6 5 7
b)
Principe: pour détermier la valeur de l'expression il faut déterminer l'ordre de priorité des différents opérateurs
de l'expression arithmétique, pour cela il faut savoir l'ordre de priorité des opérateurs arithmétiques : - , () , ^ ,
* et / , + et –
5 + 2 * 6 – 4 + ( 8 + 2 ^ 3 ) / ( 2 – 4 + 5 *2 )=
5 + 2 * 6 – 4 + ( 8 + 8 ) / ( 2 – 4 + 5 *2 )=
5 + 2 * 6 – 4 + 16 / ( 2 – 4 + 5 * 2 ) =
5 + 2 * 6 – 4 + 16 / ( 2 – 4 + 10 ) =
5 + 2 * 6 – 4 + 16 / ( -2 + 10 ) =
5 + 2 * 6 – 4 + 16 / 8 =

21
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés TD N°1 : Introduction à l’algorithmique

5 + 12 – 4 + 16 / 8 =
5 + 12 – 4 + 2 =
17 – 4 + 2 =
13 + 2 = 15
c)
((3-x*y)^2 – 4 * a * c)/ (2*x-z)
Exercice 4 :
a) faux
b) vrai
c) faux

22
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°2 Instructions Simples

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Corrigé des Travaux Dirigés N°2
Instructions
Simples
Exercice 1 :
1. Algoritme Incorrect
2. X,y :entier
3. Z : réel
4. Debut
5. Zx°2
6; Yx
7. X*2  3 + x
8. Y  5y + 3
[Link]
Cet algorithme est incorrect pour plusieurs raisons :
 Ligne 1 : le mot algorithme s'écrit avec un "h"
 Ligne 2 : la déclaration des variables commence par le mot "variables
 Ligne 5 : la valeur de x est indéterminée
 Ligne 6 : Incompatibilité de type : un réel affecté à une variable de type entier
 Ligne 7: le membre gauche d'une affectation doit etre une variable
 Ligne 8 : il faut écrire 5*y et non 5y
Exercice 2 :
Analyse du problème
Données du problème : U , I : deux réels
Résultats Recherchés : R : réel
Comment faire ? lire les données , R =U/I , Afficher le résultat
Solution
Algorithme Resistance
Variables U,R,U : réel
Début
Ecrire("Donner la valeur de l'intensité"") Lire(I)
Ecrire("Donner la valeur de tension"") Lire(U)
RU/I (* on suppose que i est différent de zéro*)
Ecrire ("la resistance = ", R , "en ohms")
Fin
Exercice 3 :
Analyse du problème
1. Données du problème : M,N : deux entiers
2. Résultats Recherchés : Résultats des opérateurs
3. Comment faire ? lire les données , Afficher le résultat
Algorithme
Algorithme Opérateurs
Variables M,N : entier
Début
Ecrire("Donner les deux entiers ") Lire(M,N)
Ecrire (m, "+ ", n , "=" , m+n)
Ecrire (m, "- ", n , "=" , m-n)

23
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°2 Instructions Simples

Ecrire (m, "* ", n , "=" , m*n)


Ecrire (m, "div ", n , "=" , m div n)
Ecrire (m, "mod ", n , "=" , m mod n)
Fin
Exercice 4 :
Analyse du problème
1. Données du problème : jour: jour de la date de type entier
mois : mois de la date de type entier
a nnée : année de la date de type entier
2. Résultats Recherchés : Date : date sous forme jj/mm/aaaa
3. Comment faire ? lire les données
Afficher le résultat : jour:/mois/année
Algorithme
Algorithme date
Variables jour,mois,année : entier
Début
Ecrire("Donner le numéro du jour") Lire(jour)
Ecrire("Donner le numéro du mois") Lire(mos)
Ecrire("Donner le numéro de l'année") Lire(année)
Ecrire (jour,"/", mois,"/", année)
Fin
Exercice 5 :
Analyse du problème
1. Données du problème : c : un caractère
2. Résultats Recherchés : Code : code ascii de type entier
3. Comment faire ?
lire les données
code  asc(c)
Afficher le résultat
Algorithme :
Algorithme ascii
Variables c : caractère
Code :entier
Début
Ecrire("Donner un caractère") Lire(c)
Code  asc(c)
Ecrire(" le code ascii du caractère " , c , "est" , code)
Fin
Exercice 6 :
Analyse du problème
1. Données du problème
A,b,c : trois variables de type réel
2. Résultats Recherchés
A,b,c : trois variables permutées circulaire
3. Comment faire ?
lire les données
xc cb ba ax
Afficher le résultat
Algorithme
Algorithme PermuationCirculaire
Variables x,a,b,c : réel
Début
Ecrire("Donner les trois variables ") lire(a,b,c)
xc cb ba ax
ecrire (les nouvelles valeurs sont : ", a,b,c)
Fin

24
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°2 Instructions Simples

Exercice 7 :
a) en utilisant 5 variables
Analyse du problème
1. Données du problème : A,b,c,d : quatre variable de type réel
2. Résultats Recherchés : S : somme de type réel
3. Comment faire ?
lire les données
sa+b+c+d
Afficher le résultat
Algorithme
Algorithme somme 5
Variables a,b,c,d,s : réel
Début
Ecrire("Donner quatre variables réelles")
Lire(a,b,c;d)
Sa+b+c+d
Ecrire (" la somme est .", s )
Fin
b) en utilisant 2 variables
Analyse du problème
1. Données du problème : A : une variable de type réel
2. Résultats Recherchés : S : somme de type réel
3. Comment faire ?
lire la donnée s  a lire la donnée s  s + a lire la donnée ss+a lire la donnée ss+a
Afficher le résultat
Algorithme
Algorithme somme 2
Variables a,s : réel
Début
Ecrire("Donner une variables réelle") Lire(a) Sa
Ecrire("Donner une variables réelle") Lire(a) S  a + s
Ecrire("Donner une variables réelle") Lire(a) Sa +s
Ecrire("Donner une variables réelle") Lire(a) S  a + s
Ecrire (" la somme est .", s )
Fin
Exercice 8 :
Analyse du problème
1. Données du problème : Nb: nombre de bits de type entier
2. Résultats Recherchés : No : nombre en octet de type entier
NMo: nombre en méga octet de type entier
NGo : nombre en giga octet de type entier
3. Comment faire ? : lire les données
No  Nb div 8
NMo  NO div 1024
NGo  NMO div 1024
Afficher le résultat
Algorithme
Algorithme Conversion
Variables Nb, NO, NMO, NGO : entier
Début
Ecrire("Donner un nombre en bits") Lire(NB)
No  Nb div 8
NMo  NO div 1024
NGo  NMO div 1024
Ecrire (" le nombre en Octets est :", NO)
Ecrire (" le nombre en méga Octets est :", NMO)
Ecrire (" le nombre en GIGA Octets est :", NGO)
Fin

25
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°2 Instructions Simples

Exercice 9 :
Analyse du problème
1. Données du problème : PU: prix unitaire de type réel
NA : nombre d'articles de type entier
2. Résultats Recherchés : PHT :prix hors taxe de type réel
Mtva : montant de tva de type réel
PTTC: prix taux taxe
3. Comment faire ? : lire les données
PHT  PU * NA
MTVA  pht * 0.18
PTTC  pht + mtva
Afficher le résultat
Algorithme :
Algorithme Prix
Variables PU,mTVA, PTTC :réel
NA : entier
Début
Ecrire("Prix Unitaire: ") Lire(PU)
Ecrire("Nombre d'articles: ") Lire(NA)
PHT  PU * NA
Ecrire ("Prix HT :", PHT)
MTVA  pht * 0.18
Ecrire ("Montant TVA : ", MTVA)
Ecrire ("-------------------------------------------------")
PTTC  pht + mtva
Ecrire("Prix TTC :", PTTC)
Fin
Exercice 10 :
Analyse du problème
1. Données du problème
R : rayon de type réel
Pi : constante = 3.14
2. Résultats Recherchés
P : périmètre d'un cercle de type réel
S : surface d'un cercle
V : volume d'une sphère
3. Comment faire ?
lire les données p  2*pi *R
S pi * r * r V  4/3 * pi * r*r*r
Afficher le résultat
Algorithme
Algorithme rayon
Constantes pi =3.14
Variables R,S,P,V:réel
Début
Ecrire("Donner le rayon ") Lire(r)
p  2*pi *R
S pi * r * r
V  4/3 * pi * r*r*r
Ecrire ("le périmètre d'un cercle est : ", p)
Ecrire ("la surface d'un cercle est : ", s)
Ecrire ("le volume d'une sphère est : ", v)
Fin

26
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°3 Structures Conditionnelles

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Corrigé des Travaux Dirigés N°3
Enseignant : Hamed BENNEJI Structures
A.U : 2010/2011 Conditionnelles
Exercice 1 :
Analyse du problème
1. Données du problème : a : premier coefficient de type réel non nul
b : deuxième coefficient de type réel non nul
c : troisième coefficient de type réel non nul
2. Résultats Recherchés : x : racine de la solution
3. Comment faire ? : lire les données
calculer delta : Delta = carré(b) - 4*a*c
Tester Delta :
si Delta < 0 alors pas de racine
Si Delta = 0 alors x = (-b)/(2*a)
Si Delta > 0 alors x1 = (-b – rac(delta))/(2*a)
x2 = (-b + rac(delta))/(2*a)
afficher le résultat
Algorithme Equation
Variables Delta, x, a , b, c : réel
Début
Ecrire("Donner les trois coefficients non nuls")
Lire(a,b,c)
Delta  carré(b) - 4*a*c
Si Delta > 0 alors x (-b – rac(delta))/(2*a)
ecrire ("la première racine est :", x)
x (-b + rac(delta))/(2*a)
ecrire ("la deuxième racine est :", x)
sinon
si Delata = 0 alors x  (-b)/(2*a)
ecrire ("la racine double est :", x)
sinon
écrire("pas de racine")
Fsi
Fsi
Fin
Exercice 2 :
Analyse du problème
1. Données du problème
a : premier opérande de type réel
b : deuxième opérande de type réel
op : opérateur de type caractère
2. Résultats Recherchés
s : somme de l'opération
3. Comment faire ?
lire les données
selon op faire
"+" : s  a + b

27
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°3 Structures Conditionnelles

"-" : s  a - b
"*": s  a * b
"/" : s  a / b
Afficher le résultat
Algorithme calculatrice
Variables s,a , b : réel
op : caractère
Début
Ecrire("Donner les deux opérandes") Lire(a,b)
Ecrire("Donner l'opérateur") Lire(op)
selon op faire
"+" : s  a + b
"-" : s  a - b
"*": s  a * b
"/" : s  a / b
Fselon
Ecrire (a, op , b , "=" , s)
Fin
Exercice 3 :
Analyse du problème : 1ere methode
1. Données du problème : C : un caractère
2. Résultats Recherchés : Type de caractère : chiffre, lettre majuscule, lettre minuscule, caractère spécial
3. Comment faire ? : lire les données
1ere methode
selon c faire
"A" .. "Z" : lettre majuscule
"a".."z" : lettre minuscule
"0".."9" : chiffre
Sinon : caractère spécial
2 eme methode
selon asc(c) faire
65 .. 90 : lettre majuscule
97..122 : lettre minuscule
48..57 : chiffre
Sinon : caractère spécial

Asc("A") = 65 , Asc("a") = 65, Asc("0") = 48


Algorithme typecaractère
Variables c : caractère
Début
Ecrire("Donner un caractère ") Lire( c)
selon c faire
"A" .. "Z" : écrire(c, " est une lettre majuscule")
"a".."z" : écrire (c,' est une lettre minuscule ")
"0".."9" : écrire(c,"est un chiffre")
Sinon : écrire(c, "est un caractère spécial")
fin selon
Fin
Algorithme typecaractère
Variables c : caractère
Début
Ecrire("Donner un caractère ") Lire( c)
selon asc(c) faire
65 .. 90 : écrire(c, " est une lettre majuscule")
97..122 : écrire (c,' est une lettre minuscule ")
48..57 : écrire(c,"est un chiffre")
Sinon : écrire(c, "est un caractère spécial")
finselon
Fin

28
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°3 Structures Conditionnelles

Exercice 4 :
Analyse du problème
1. Données du problème
a : année de type entier
2. Résultats Recherchés
Bissextile ou non
3. Comment faire ?
lire les données
a est une année bissextile ssi : a est divisible par 4 et n'est pas divisible par 100 ou a est divisible par 400
Algorithme bissextile
Variables a : entier
Début
Ecrire("Donner une année") Lire( a )
Si ( a mod 4 = 0 et a mod 100 <> 0) ou ( a mod 400 = 0 alors
Ecrire (a, "est une année bissextile ")
Sinon
Ecrire (a, "n'est pas une année bissextile ")
Fsi
Fin

Exercice 5 :
Si (a>b) alors Trouve  vrai
Sinon Trouve faux Fin si --------- trouve  ( a >b)
Exercice 6 :
Analyse du problème
1. Données du problème
poids : poids d'un colis de type réel
2. Résultats Recherchés
Frais : frais d'envoi d'un colis de type réel
3. Comment faire ?
lire les données
si poids <= 2 alors frais  2.5
sinon frais  poids * 1.25
Afficher le résultat
Algorithme Colis
Variables poids, frais : : réel
Début
Ecrire("Donner le poids d'un colis") Lire(poids)
si poids <= 2 alors frais  2.5
sinon frais  poids * 1.25
Fsi
Ecrire ("le frais d'envoi d'un colis qui pèse :" , poids , " est : " , frais)
Fin
Exercice 7 :
Analyse du problème
1. Données du problème : nhec : nombre de hectare de type réel
ncat : numéro de catégorie de type entier
2. Résultats Recherchés : Prix : prix à payer de type réel
3. Comment faire ? : lire les données
selon ncat faire
1 : prix  15 * nhec
2 : prix  30 * nhec
3 : prix  45 * nhec
4 : prix  80 * nhec
Reduction  0
Si nhec > 1000 alors
reduction  reduction + prix * 0.05

29
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°3 Structures Conditionnelles

Si prix > 35000 alors


reduction  reduction + prix * 0.1
prix  prix - reduction
Afficher le résultat
Algorithme Omega
Variables ncat : entier nhec : réel
Début
Ecrire("Donner ") Lire()
selon ncat faire
1 : prix  15 * nhec
2 : prix  30 * nhec
3 : prix  45 * nhec
4 : prix  80 * nhec
Fselon
Reduction  0
Si nhec > 1000 alors
reduction  reduction + prix * 0.05
Fsi
Si prix > 35000 alors
reduction  reduction + prix * 0.1
Fsi
prix  prix - reduction
écrire("le prix à payer est : ", prix )
Fin
Exercice 8 :
Analyse du problème
1. Données du problème : hh1 : heure de temps 1 de type entier
mm1 : minute de temps 1 de type entier
ss1 : seconde de temps 1 de type entier
hh2 : heure de temps 2 de type entier
mm2 : minute de temps 2 de type entier
ss2 : seconde de temps 2 de type entier
2. Résultats Recherchés : hh : heure de la durée de type entier
mm : minute de la durée de type entier
ss : seconde de la durée de type entier
3. Comment faire ?
lire les données
TS1  ss1 + mm1*60 + hh1*60*60
Ts2  ss2 + mm2*60 + hh2*60*60
Ts  ts2 – Ts1
Hh  ts div 3600
Mm  ts mod 3600 div 60
Ss  ts mod 3600 mod 60
Afficher le résultat
Algorithme durée
Variables
Hh1,hh2,hh,mm1,mm2,Mm,ss1,ss2,SS : entier
Ts1,TS2,TS . entier
Début
Ecrire("Donner le premier temps") Lire(hh1,mm1,ss1)
Ecrire("Donner le deuxième temps") Lire(hh1,mm1,ss1)
TS1  ss1 + mm1*60 + hh1*60*60
Ts2  ss2 + mm2*60 + hh2*60*60
Ts  ts2 – Ts1
Hh  ts div 3600
Mm  ts mod 3600 div 60
Ss  ts mod 3600 mod 60
Si hh >0 alors écrire(hh, "h:", mm, "mn:", ss , "s")
Sinon

30
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°3 Structures Conditionnelles

Si mm> 0 alors écrire( mm, "mn:", ss , "s")


Sinon écrire( ss , "s")
Fsi
Fsi
Fin
Exercice 9 :
Analyse du problème
1. Données du problème Base :montant de base : constante = 100
Tr : type de risque de type caractère
P : puissance de type entier non nul
TU : type d'utilisation de type caractère
2. Résultats Recherchés : MP : Montant à payer de type réel
3. Comment faire ? : lire les données
selon TR faire
"c" : PRR BASE
"R" : PRRBASE*1.5
Sinon ;: Pr  0
Selon P faire :
1..3 : PRp  0
4.. 5 : PRPPRR*1.2
6 à 8 PRpPRR*1.4
Sinon PRPPRR*1.6
Selon TU faire
"P" : PUPRP*0.90
"T" : PUPRP*1.10
"A": PUPRP*1.25
Sinon PU  0
MP  Base + PU + PRR + PU
Afficher le résultat
Algorithme Assurance
Variables TR,TU : caractère
P: entier
PRR,PRP,MP,PU : réel
Début
Ecrire("Donner le type de risque") Lire(TR)
Ecrire("Donner le type d'utilisation") Lire(TU)
Ecrire("Donner la puissance") Lire(P)
selon TR faire
"c" : PRR BASE
"R" : PRRBASE*1.5
Sinon prr  0
Fselon
Selon P faire :
1..3 : PRp  0
4.. 5 : PRPPRR*1.2
6 à 8 PRpPRR*1.4
Sinon PRPPRR*1.6
Fselon
Selon TU faire
"P" : PUPRP*0.90
"T" : PUPRP*1.10
"A": PUPRP*1.25
Sinon PU  0
Fselon
MP  Base + PU + PRR + PU
Ecrire("le montant à payer est :" , MP
Fin
Exercice 10:

31
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°3 Structures Conditionnelles

Algorithme Lendemain
Var j, m, a : entier
Debut
Ecrore (« donner le numéro du jour »)
lire(j)
Écrire (« donner le numéro du mois »)
Lire(m)
Écrire (« donner le numéro du mois »)
Lire(m)
Si j = 30 alors
Si m =4 ou m = 6 ou m = 9 ou m = 11 alors
J1
M m+1
Sinon
J1
Fsi
Sinon
Si j = 31 alors
Si m =1 ou m = 3 ou m = 5 ou m = 7 ou m = 8 ou m = 10 alors
J1
M m+1
Sinon
J1
M  1
A  a +&
Fsi
Sinon
Si j=28 alors
Si m = 2 et a mod 4 = 0 et a mod 400 = 0 alors
Jj+1

Sinon
J 1
M  m +1
fsi
Sinon
Si j =29 alors
Si m = 2 alors
J
fsi
Sinon
Jj+1
Fsi
fsi
Fsi
Fsi
Ecrire «(« le lendemain est : » , j , « / » , m, « / » , a)
Fin

32
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°4 Structures Itératives

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Corrigé des Travaux Dirigés N°4
Enseignant : Hamed BENNEJI Structures Itératives
A.U : 2010/2011

Exercice 1 :
Algorithme :
Algorithme Notes
Var n, i : entier
Note, min, max, s : réel
Debut
Ecrire ("entrer le nombre de notes : ")
Répéter
Lire(n)
Jusqu’à n > 0
S0
Max  0
Min  20
Pour i de 1 à n faire
Répéter
Ecrire ("entrer une note comprise entre 0 et 20 : ")
lire(note)
jusqu’à note >= 0 et note <=20
S  note + s
Si note > Max alors
Max  note
Fsi
Si note < mi alors
Min  note
Fsi
fpour
Ecrire("meilleure note = " , max)
Ecrire ("mauvaise note =", min)
Ecrire ("moyenne des notes =",s/n)
Fin
Exercice 2 :
Algorithme :
Algorithme Puissance
Var c, a : réel
B : entier
Debut
Ecrire ("entrer la valeur de a:") lire(a)
Ecrire ("entrer la valeur de b :") lire(b)
C1
Pour i de 1 à abs(b) faire
Ss*a
Fpour
Si b <0 alors

33
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°4 Structures Itératives

C1/c
Fsi
Ecrire(a, "à la de puissance " , b , "=" , c)
Fin
Exercice 3 :
Algorithme :
Algorithme Premier
Var a, i, nbdiv ! entier
Debut
Ecrire ("entrer un entier positif :")
R&p&ter
lire (a)
jusqu’à a > 0
Nbdiv  0
I1
Tantque i <= n faire
Si n mod i =0 alors
Nbdiv  nbdiv + 1
Fsi
Ii+1
Ftq
Si nbdiv <= 2 alors
Ecrire(n, " est un nombre premier ")
Sinon
Ecrire (n, "n'est pas un nombre premier")
Fsi
Fin
Exercice 4 :
Algorithme :
Algorithme Premiers
Var n, i, j, nbdiv : entier
Debut
Ecrire ("entrer un entier positif :") lire (n
Pour i de 1 à n - 1 faire
Nbdiv  0
Pour j de 1 à i faire
Si i mod ij=0 alors
Nbdiv  nbdiv + 1
Fsi
Fpour
Si nbdiv <= 2 alors
Ecrire(i)
Fsi
Fpour
Fin
Exercice 5 :
Algorithme :
Algorithme PGCD
Var a,b : entier
Debut
Ecrire("enter la valeur de a : ") lire'a)
Ecrire("entrer la valeur de b : ") lire (b)
Répéter
Si a > b alors
Aa–b
Fsi
Si b > a alors

34
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°4 Structures Itératives

Bb–a
Fsi
Jusqu'à a = b
Ecrire("PGCD :" , a)
Fin
Exercice 6 :
Algorithme :
Algorithme PPCM
Var a, b , x, i : entier
Debut
Ecrire ("entrer la valeur de a : " ) lire(a)
Ecrire ("entrer la valeur de b ") lire(b)
Si a < b alors
Xa
Ab
Bx
Fsi
I1
Tantque ( (i*a) mod b) <> 0 faire
Ii+1
FtQ
Ecrire ("PPCM = ", i *a)
Fin
Exercice 7 :
Algorithme :
Algorithme Fibo
Var F0 , F1 , F , I : entier
Debut
F0  1
Ecrire ("F0 = " , F0)
F1  1
Ecrire ("F1 = " , F1)
Pour i de 2 à 9 faire
Ecrire ("F0 = " , F0)
F1  1
Ecrire ("F1 = " , F1)
Pour i de 2 à 9 faire
F = F0 ° F1
Ecrire ( "F" , i , "=", f)
F0  F0
F1  F
Fpour
Fin
Exercice 8 :
Algorithme :
Algorithme Somme
Var n , I : entier
S : réel
Debut
Ecrire ("entrer la valeur de n ") lire(n)
S0
Pour i de 1 à n faire
S  S + 1/i
Fpour
Ecrire ("s=", s)
Fin
Exercice 9 : nombre cubique

35
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°4 Structures Itératives

Algorithme :
Algorithme Cubique
Var i, centaine, dizaine, unite : entier
Debut
Pour i de 150 à 410 faire
Centaine  i div 100
Dizaine  ( i mod 100) div 10
Unite  i mod 10
Si ( centaine ^ 3 + dizaine ^ 3 + Unité ^ 3 ) = i alors
Ecrire ("i , " est un nombre cubique")
Fsi
Fpour
Fin
Remarques : les nombres cubiques sont : 153, 370, 371, 407
Exercice 10 : nombre parfit
Algorithme :
Algorithme Parfaits
Var i, n , s, j: entier
Debut
Pour i de 1 à 1000
S0
Pour j de 1 à i div 2 faire
Si (i mod j ) = 0 alors
SS+j
Fsi
Fpour
Si s = i alors
Ecrire("i , " est un nombre parfait ")
Fsi
Fpour
Fin
Exercice 11 : Simulation d'un jeu
Algorithme :
Algorithme Jeu
Var nbj, nbord , totj, totord : entier
Debut
Totj  0
Totord  0
Tantque totj < 10 et totord < 10 faire
Nbord  random(3)
Ecrire ("entrer une note (0/1/2)" ) lire (nbj)
Si abs(nbord – nbj) = 2 alors
totord  totord + 1
Sinon
Totj  totj + 1
Fsi
Si abs(nbord – nbj) = 1 alors
Si nbord < nbj alors
totord  totord + 1
Sinon
Totj  totj + 1
Fsi
Fsi
Ftq
Ecrire ("total ordinateur " , totord)
Ecrire ("
Fin

36
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés TD N°5 : Les chaînes de caractères

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Corrigé des Travaux Dirigés N°5
Les chaînes de
caractères
Exercice 1 :
Données : - Ch : chaîne de caractère
Résultats : - InvCh : inberse de la chaîne ch
Comment faire ? : - lire la chaîne ch
- i : 1 .. Long(ch ) : invch  ch[i] + invch
- afficher l'inverse de la chaîne ch
Algorithme :
Algorithme Inversion
Var ch,invch :chaîne
I,l:entier
Debut
Lire(ch)
L  long(ch)
Invch  ""
Pour i de 1 à L faire
Invch  ch[i] + invch
Fpour
Ecrire("L'inverse de la chaîne " , ch , "est " , invch)
Fin
Exercice 2 :
Données : - ch : chaîne de caractère
Résultats : - MajCh : chaîne Ch en majuscd
Comment faire ? : - lire la chaîne ch
- i.1..long(ch) : MajCH  MajiCH + Majus(ch[i])
- afficher la chaîne MajCh
Algorithme :
Algorithme Ucase
Var ch , MAjCH :chaîne
I, L : entier
Debut
Lire(ch)
Majch  ""
L  long(ch)
Pour de i de 1 à L faire
Fpour
Errire ("l'équivalent de chaîne " , ch , " en majuscule est :" , MajCH)
Fin
Exercice 3 :
Données : - ph : phrase de type chaîne
Résultats : - nbmot : nombre de mots dans la phrase : type entier
Comment faire ? : - lire la phrase
- compter le nombre des espaces

37
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés TD N°5 : Les chaînes de caractères

- afficherle nombre de mots


Algorithme :
Algorithme Mot
Var ph:chaîne
Nbmot : entier
I,L : entier
Debut
Lire(ph)
Nbmot  0
L  long(ch)
Pour i de 1 à L faire
Si ph[i] = " " alors
Nbmot  nbmot + 1
Fsi
Fpour
Si nbmot <> 0 alors
Nbmot  nbmot +1
Fsi
Ecrire ( "le nombre de mots dans la phrase est : " , nbmot)
Fin
Exercice 4 :
Algorithme :
Algorithme plus_long_moy
Var ph, mot,motpluslong : chaîne
I,j,l:entier
Debut
Lire (ph)
L  long(ph)
Motpluslong  ""
I1
Tantque i <= L faire
Mot  ""
J1
Tantque j <= l et ph[i} <> " " faire
Mot  mot + ph[i]
Jj+1
Ftque
Si long(mot) > long(motpluslong) alors
Motpluslong  mot
Fsi
Ii+1
Ftque
Ecrire(" le mot le plus long dans " , ph , " est : " , motpluslong)
Fin
Exercice 5 :
Données : - mot : mot de type chaîne
- C : caractère
Résultats : - occur : nombre d'occurrence du caractère C dans le mot
Comment faire ? : - lire
-
-
Algorithme :
Algorithme fréquence
Var mot : chaîne
C : caractère
L , occcur: entier
Debut
Lire(mot)

38
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés TD N°5 : Les chaînes de caractères

Lire (C)
L  long(mot)
Occur  0
Pour i de 1 à L faire
Si mot[i= C alors
Occur  occur °1
Fsi]
Fpour
Ecrire( " le nombre d'occurrence du caractère : " , C , "dans " , mot , " est égal " , occur)
Fin
Exercice 6 :
Algorithme :
Algorithme Conversion_Decimal_Binaire
Var Dec, x , reste : entier
Bin , restech : Chaine
Debut
Lire (dec)
X dec
Bin  ""
Tantque x <> 0 alors
Reste  x mod 2
Convch(reste , rrestch)
Bin  ch + decbin
X  x div 2
Ftque
Ecrire("le nombre binaire équivalent à " , dec , "est" , bin
Fin

39
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés TD N°6 : Les Tableaux

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Corrigé des Travaux Dirigés N°6
Les Tableaux
Exercice 1 :
Données : - T : Tableau
- x : entier
Résultats : - nb : nombre d'occurrence de x dans le tableau T
Comment faire ? : - remplir le tableau T
- lire le entier x
- calcul l'occurrence de x dans T
Algorithme :
Algorithme occurrence
Const N = 20
Type tab : tableau[1..N] d'entier
Var
T ;Tab
X,i:entier
Debut
Lire (x)
Nb 0
Pour i de 1 à N faire
Lire (T[i])
Si T[i] = x alores
Nb  nb +1
Fsi
Fpour
Ecrire (" le nombre d'occurrence de ", x , "est :" , nb)
Fin
Exercice 2 :
Algorithme :
Algorithme occurrence
Const N = 20
Type tab : tableau[1..N] d'entier
Var
T,TP,TN ;Tab
NbN,NbP, I : entier
Debut
Lire (x)
NbN 0
NbP  0
Pour i de 1 à N faire
Lire (T[i])
Si T[i] >= 0 alores
NbP  nbP +1
TP[NbP]  T[I]
Sinon
NbN nbN +1
TP[NbN]  T[I]
Sinon

40
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés TD N°6 : Les Tableaux

Fsi
Fpour
Ecrire ( "les entiers positifs sont ")
Pour i de 1 à NbP faire
Lre(TP[i])
Fpour
Ecrire ("les entiers négatifs sont " )
Pour i de 1 à NbNfaire
Lre(TP[i])
Fpour
Fin
Exercice 3 :
Données : - Réponse : tableau de 26 lettre
Résultats : - NbFaute : entier
- Réponse : tableau de 26 lettre en ordre alphabétique
Comment faire ? : - remplir la réponse proposée par l'élève
- corriger la réponse en calculant le nombre de fautes
Algorithme :
Algorithme Alphabet
Const N= 26
Type Tab=tableau[1..N]
Var Réponse : Tab
Nbfaute,i : entier
Debut
Pour i de 1 à N faire
Lire[réponse[i])
Fpour
Nbfaute  0
Pour i de 1 à n faire
Si réponse[i] <> car ( i + 64) alors
Nbfaute  nbfaute + 1
Réponse[I]  car(i + 64)
fsi
Fpour
Ecrire ( " le nombre fautes est égale à ", nbfaute)
Fin
Exercice 4 :
Algorithme :
Algorithme ProduitScalaire
Const N = 20
Type Tab : tableau[1..N] d'entier
Var U,V : Tab
Ps, i : entier
Debut
Pour i de 1 à N faire
Lire[u[i])
Fpour
Pour i de 1 à N faire
Lire ( V[i])
Fpour
Ps  0
Pour i de 1 à N faire
Ps  ps + U[i] * V[i]
Fpour
Ecrire ( " le produit de scalaire est : " , ps)
Fin
Exercice 5 :

41
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés TD N°6 : Les Tableaux

Données : - U : Tableau
Résultats : - Norme : norme de vecteur u
Comment faire ? : - lire le vecteurs U
- calculer la norme de U -
Algorithme :
Algorithme Norme
Const N = 20
Type Tab : tableau[1..N] d'entier
Var U : Tab
Norme, i : entier
Debut
Pour i de 1 à N faire
Lire[u[i])
Fpour
Norme  0
Pour i de 1 à N faire
Norme  Normee + U[i] * U[i]
Fpour
Ecrire ( " la norme est : " , racine(nrrme))
Fin
Exercice 6 :
Données : - Fib : Tableau de Fiboacci
Résultats : - Fib : tableau de Fiboacci
Comment faire ? : - Fib[O]  1
- Fib[1]  1
- i : 2 ..9 :Fib[i]  Fib[i-2] + Fib[i-1]
Algorithme :
Algorithme Fiboacci
Const n = 9
Type tab = tableau [0..9] d'enier
Var Fib : tab
I:enter
Debut
Fib[O]  1
Fib[1]  1
Pour I de 2 à n faire :
Fib[i]  Fib[i-2] + Fib[i-1]
Fpour
Pour I de 0 à n faire
Ecrire (" le terme numero ", i ," de fibonacci est :" , Fib[i])
Fpour
Fin
Exercice 7 :
DAlgorithme :
Algorithme Premiers
Const n = 400
Type tab = Tableau [1..N] d'entier
Var Prem : tab
I,j:entier
Debut
Pour i de 1 à N faire
Prem[i]  i
Fpour
Pour i de 1à 20 faire
Si prem[I] <> 0 alors
Pour j de i+1 à n faire
Si prem[j] mod prem|i] = 0 alors
Prem[j]  0

42
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés TD N°6 : Les Tableaux

Fsi
Fpour
Fsi
Fpour
Ecrire ("les nobres premiers sont : ")
Pour i de 1 à n faire
Si prem[i] <> 0 alors
Ecrire (prem[i])
fsi
Fpour
Fin
Exercice 8 :
Données : - U1 : tableau
- L : tableau
Résultats : - U2 : tableau
Comment faire ? : - remplir le tableau U1
- remplir le tableau L
- Compresser U 1
Algorithme :
Algorithme Compression
Const n=20
Type tab=tableau [1..N] d'entier
Var U1, U2, L :: Tab
I,j:entier
Debut
Pour i de 1 à N faire
Lire (U1[i])
Fpour
Pour i de 1 à N faire
Lire (L[i])
Fpour
J1
Pour i de 1 à N faire
Si L[i] =1 alors
U2[j]  U1[i}
JJ+1
Fsi
Fpour
Pour i de J +1 à n faire
U2[j]  0
Fpour
Fin
Exercice 9 :
Données : - T : tableau de longueur n de type entier
Résultats : - indice : l'indice de la plus long monotonie
_ Lpl : la longueur de la plus longue monotonie
Comment faire ? : - remplir le tableau T
- recherche de la plus longue monotonie
-
Algorithme :
Algorithme Monotonie
Const n = 1100
Type Tab=tableau[1..N] d'entier
Var T : Tab
Indice,lpl, i, j, L :entier
Debut
Pour i de 1 à N faire
Lire[T{i])

43
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés TD N°6 : Les Tableaux

Fpour
I1
Indice  1
Lpl  1
Tantque i <=n faire
J  i +1
Tantque j <= n et T[j] >= T[j+1] faire
J  J +1
FTq
LJ–I
Si L > lpl alors
Indice  i
Lpl  L
Fsi
Ftq
Ecrire ("l'indice de la plus longue monotonie est : ", indice)
Ecrire ("la longueur de la plus longue monotonie est : " , lpl)
Fin
Exercice 10 :
Données : - A : un tableau trié
- B : un tableau trié
Résultats : - C : un tableau trié : la fusion de deux tableaux A et B
Comment faire ? : - remplir le tableau A
- remplir le tableau B
- remplir le tableau C
Algorithme :
Algorithme Fusion
Const n = 20
Type Tab =tableau [1 .. N] d'entier
Var A,B,C : TAB
I,j,k : entier
Debut
Pour i de 1 à N faire
Lire (A[i])
Fpour
Pour i de 1 à N faire
Lire (B[i])
Fpour
I1
J1
K1
Tantque i <=n et j <= n fairre
Si A[i] <= B[j] alors
C[k]  A[i]
Kk+1
Ii+1
Fsi
Si A[i] >= B[j] alors
C[k]  B[i]
Kk+1
Jj+1
Fsi
Ftq
Tqntaue I \=n fqire
C[k]  A[i]
Ii+1
KK+1
Ftque
Tqntaue I \=n fqire

44
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés TD N°6 : Les Tableaux

C[k]  A[i]
Ii+1
KK+1
Ftque

Fin
Exercice 11 :
Algorithme :
Algorithme insertion
Const N =20
Var A : tableau [ 1..N] d'entier
B : tableau [1..N+1] dentier
I,j,x:entier
Debut
Pour i de 1 à N faire
Lire(A[i])
Fpour
Lire(x)
I1
Tantque i <= n et A[i] <= x faire
B[i]  A[i]
Ii+1
Ftq
B[i]  x
Jj+1
Tantque j <= n faire
B[j]  A[i]
I  i+ 1
Jj+1
Fpour
Fin
Exercice 12 :
Algorithme Pascal
Const n = 50
Type Mat = Tableau[1..n, 1..N] d'entier
Var i , j : entier
A : MAt
Debut
Pour i de 1 à N faire
Pour j de 1 à n faire
A[i,j]  0
Fpour
Fpour
Pour i de 1 à N faire
A[i,1]  1
Pour j de 1 à n faire
A[i,j]  A[i-1, j-1] + A[i-1, j]
Fpour
fpour
Fin

45
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°7 Fonction et Procédure

République Tunisienne
Ministère de l’enseignement supérieur, de la recherche scientifique et de la technologie
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département : Technologies de l'Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Corrigé des Travaux Dirigés N°7
Fonction et Procédure
Exercice 1 : Procédure
a)
Mots clés : Procédure – Echanger – deux entiers
Données : un entier a – un entier b,
Résultats : un entier a – un entier b
Principe : l’échange de deux entiers a et b nécessite un auxiliaire qui prend la valeur a et la valeur prend la
valeur de b et la valeur b prend la valeur d’auxiliaire.
Algorithme :
Procédure PERMUT (var a,b :entier)
Var tampon : entier
Debut
Tampon  a ab btampon
Fin
b)
Données : une matrice T de type entier d’ordre n
Résultats : une matrice T remplie par des entiers saisis par l’utilisateur
Principe : l’élément d’une matrice d’indice i et j est rempli par l’opération de lecture
Algorithme :
Procédure LectureMat (var T : tableau [1..n,1..n] d’entier)
Var i,j : entier
Debut
Pour i de 1 à n faire
Pour j de 1 à n faire
Lire(T[i,J])
Fpour
Fpour
Fin
c)
Données : un entier a - un entier b Résultats : un entier Max – un entier Min Principe : le minimum de deux
entiers
Algorithme
d)
Données : un caractère x - une chaîne de caractère ch
Résultats : un entier n
Principe : itérer i de 1 , si l’élément x est égaler au caractère à l’ndice i, on incrémente n jusqu'à i est égal à
long(ch)
Algorithme :
Procédure OCCUR (x :caractère, ch : chaîne ; var n :entier)
Var L,i : entier
Debut
L  long(ch)
N0
Pour i de 1 à L faire
Si ch[i] = x alors N  n +1 Fsi
Fsi
Fin

46
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°7 Fonction et Procédure

e)
Données : un caractère a – un caractère b – une chaîne de caractère ch
Résultats : un entier n indiquant occurrence du bigramme dans la chaîne
Principe : itérer i de 1 , si l’élément a est égaler au caractère à l’indice i et l’élément b est égaler au caractère à
l’indice i+1, on incrémente n jusqu'à i est égal à long(ch)-1
Algorithme
Procédure OCCUR (a,b : :caractère, ch : chaîne ; var n :entier)
Var L,i : entier
Debut
L  long(ch)-1
N0
Pour i de 1 à L faire
Si ch[i] = a et ch[i+1] =b alors
N  n +1
Fsi
Fsi
Fin
Puisque on a un seul paramètre résultat, on peut transformer cette procédure en une fonction
Fonction OCCUR (a,b : :caractère, ch : chaîne ) : entier
Var L,i : entier
Debut
L  long(ch)-1
OCCUR  0
Pour i de 1 à L faire
Si ch[i] = a et ch[i+1] =b alors
OCCUR  OCCUR +1
Fsi
Fsi
Fin

Exercice 2 : Fonction
a)
Données : un entier - un entier b
Résultats : un entier indiquant le pgcd de deux entiers a et b
Principe : répéter plusieurs fois le traitement : PGCD(a,b) = PGCD(b,a mod b) jusqu’à PGCD(x,0) , le PGCD
est alors x
Algorithme :
Fonction PGCD (a,b :entier ) : entier
Var x,y : entier
Debut
X a Y b
Répéter
A b B  a mod b
Jusqu'à b =0
Fin

b)
Données : une chaîne ch1 - une chaîne ch 2 Résultats : un entier indiquant l’occurrence de la chaîne ch2
Principe : si long(ch2) > 1 alors occurrence vaut 0, sinon : itérer i de 1 , si la sous chaîne d’indice i et de
longueur ch2 a est égaler à la chaîne ch2, on incrémente n jusqu'à i est égal à long(ch1) – long(ch2)
Algorithme :
Fonction OCCUR (ch1,ch2 ch : chaîne ) : entier
Var L1,i : entier
Debut
Si long(ch2) > long(ch1) alors Occur  O Sinon
L1  long(ch1) - long(ch2)
OCCUR  0
Pour i de 1 à L1 faire
Si copie(ch1,i,long(ch2) = ch2 alors OCCUR  OCCUR +1 Fsi

47
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°7 Fonction et Procédure

Fsi
Fsi
Fin

c)
Données : un entier a – un entier b – un entier c
Résultats : une valeur booléenne indiquant si les 3 nombres a,b,c peuvent être les mesures des cotés d’un
triangle rectangle
Principe : si a,b,c sont les mesures des cotés d’un triangle rectangle alors a2 = b2 + c2 ou b2 = c2 + a2 ou c2 = b2 +
a2
Algoritme :
Fonction triangle (a,b,c :entier) :booléen
Var x,y,z : entier
Debut
Tringle  vrai
X  a*a y  b*b z  c*c
Si x <> y+z ou y <> x+z ou z <> x+y alors
Triangle  faux
Fsi
Fin

Exercice 3 : chaîne de caractère


a) Mots clés : procédure – lire – chaîne de caractère – afficher son inverse
Données : une chaîne de caractère non lue
Résultats : chaîne de caractère lue – affichage son inverse
Principe : lire ch , itérer i de 1 , le caractère i devient le caractère L-i+1 jusqu'à i est égal à long(ch)
Algorithme :
Procédure inverse( var ch, inv : chaîne)
Var L ,i: entier
Debut
Lire(ch) L  long(ch) inv " "
Pour i de 1 à L faire
Inv ch[i] + inv
Fsi
Ecrire (" l’inverse de la chaîne est , ", inv)
Fin

b)
Données : une chaîne de caractère ch non lue
Résultats : une chaîne de caractère ch lue – chaîne de caractère en majuscule
Principe : itérer i de 1 , mettre le caractère d’indice i en majuscule jusqu'à i est égal à long(ch)
Algorithme :
Procédure majus( var ch, maj : chaîne)
Var L ,i: entier
Debut
Lire(ch) L  long(ch) maj " "
Pour i de 1 à L faire
Inv  maj +ch[i]
Fsi
Ecrire ("a chaîne est en majuscule est : ", maj)
Fin
c)
Données : une chaîne de caractère ch
Résultats : un entier indiquant le nombre de mots
Principe : une phrase est composé par plusieurs mots espacés par des espaces ; le nombre de mots est égale au
nombre des espaces +1 supposant que la phrase ne contient pas des espaces au début et à la fin et pas des espaces
répétitives.
Algorithme
Fonction nbmot (ch : chaîne ) :entier
Var L : entier

48
Nabil AOUADI & Hamed BENNEJI
Corrigé des Travaux Dirigés n°7 Fonction et Procédure

Debut
L  long(ch) nbmot  0
Pour i de 1 à L faire
Si ch[i] = « » alors nbmot  nbmot +1 Fsi
Fsi
Fin

d)
Données : une chaîne de caractère
Résultats : le mot le plus long
Principe : comparaison entre les mots successives sachant que le mot départ est vide
Algorithme :
Procédur
Procédure motpluslong (ch : chaîne ; var mot : chaine)
Var L, I : entire temp : chaine
Debut
L  long(ch) Mot = " "
Tantque i <=L faire
Temp = " "
Tantque ch[i]<> " " faire
Temp = temps + ch[I] I =1+1
FTq
Si long(temp) > long(mot) alors
Mot = temp
Fsi
I = I+1
Ftq
Fin
e)
Données : un entier décimal dec
Résultats : un entier binaire bin
Principe : itérer i de dec , bin = bin + (dec mod 2 * d, d =d*10, dec = dec div 2 jusqu'à i <> 0
Algorithme
Procédure DecBin (;var dec, bin :entier)
Var d, i : entier
Debut
Lire(dec) Bin  0 d1
tantque dec <> 0 faire
bin  bin + d*(dec mod 2)
d  d*10
dec  dec div 2
FTq
Fin

f)
Données : une chaîne de caractère ch
Résultats : un entier indiquant le nombre de lettre
Principe : une lettre est un caractère dont le code ascii est compris entre 65 et 90 ou entre 97 et 122
Algorithme :
Fonction OCCUR (ch : chaîne ) :entier
Var L : entier
Debut
L  long(ch) OCCUR  0
Pour i de 1 à L faire
Si (ascii(ch[i]) >=65 et ascii(ch[i]) <=65 ) ou (ascii(ch[i]) >=65 et ascii(ch[i]) <=65 ) alors
OCCUR  OCCUR +1
Fsi
Fpour
Fin

49
Nabil AOUADI & Hamed BENNEJI
Corrigé d’examen final Janvier 2010

République Tunisienne
Ministère de l’enseignement supérieur et de la recherche scientifique
Direction Générale des Etudes Technologiques
Institut Supérieur des Etudes Technologiques du Kef

Département Technologies de l’Informatique


Matière : Algorithmique et Structures de Données I
Auditoire : TI1 Corrigé des Travaux Dirigés N°8
Enregistrement et
Fichier
Exercice 1 : Nombre Complexe
Analyse du problème :
Données : C1,C2 : nombre complexe
Résultat : S,P : nombre complexe
Comment Faire ?
Un nombre complexé est définie par deux parties : partie réelle (RE) et imaginaire (Im)
Re(s) = re(c1) + re(c2)
Im(S) =im(c1) + im(c2)
Re(P) =re(c1) * re(c1) – im(c1) * im(c2)
Im(P) = re(c1) *im(c2) * re(c2)*im(c1)
Solution
Algorithme complex
Type
Complexe = enreg(
Re: réel
Img : rée )
Fenreg
Var
C1, C2, S, P : complexe
Debut
Ecrire ("partie réelle du 1er nombre) lire ([Link])
Ecrire ("partie imaginaire du 1er nombre) lire ([Link])
Ecrire ("partie réelle du 2ème nombre) lire ([Link])
Ecrire ("partie imaginaire du 2ème nombre) lire ([Link])
[Link]  [Link] + [Link]
S;img  [Link] , [Link]
Ecrire ( "somme =" ,S;re, "+" , [Link] , "I")
P;re  [Link] * [Link] - [Link] * [Link]
P,img  [Link] * [Link] + [Link] * [Link]
Ecrire ( "produit =" ,S;re, "+" , [Link] , "I")
fin
Exercice 2 :
c)
Analyse du problème :
Données : TabEmp : Tableau d’employé : matricule, nom, salaire, etat_civil
N =50
Résultats : nbemp : entier ( salaire > 500 et < 700)
Principe : - remplir tabemp
- calcul nbemp
- afficher nbemp
Solution :
Algorithme Personnel

50
Nabil AOUADI & Hamed BENNEJI
Corrigé d’examen final Janvier 2010

Const n = 50
Type
Employé = enreg(
Matricule : entierr
Nom : chaîne
Sal : réel
Etat_civil : caractère
)fenreg
Tab = tableau[1..n] de employé
Var
tabemp
i, nb : entier
procédure remplir(var T : tab)
debut
pour i de 1à n faire
ecrire ("matricule de l'emploté") lire (T[i].employé)
ecrire ("nom de l'employé : ") lire(T[i].nom)
ecrire ('salaire de l'employé ") lire(T[i].sal)
ecrire ("etat civil de l'employé " ) lire(T[i].etat_civil)
fpour
fin
fonction compter(T:tab) : entier
debut
compter  0
pour i de 1 à n faire
si T[i];sal >=500 et T[i].sal <= alors
compter  compter+ 1
Fsi
fpour
Debut
Remplir(tabemp)
Nb  compter(tabemp)
Ecrire (nb, " employés touchent entre 500 et 700D")
fin
d) :
Analyse du problème :
Données : FP : Fichier d’employé : matricule, nom,prénom, grade, salaire
Résultats : liste des employés : entier ( salaire > 500 et < 700)
Principe : - remplir FP
- afficher liste
Solution :
Algorithme personnel
Types
Employé =enreg(
Matricule : entier
Nom : chaîne
Prénom : chaîne
Grade :caractère
Sal : réel
) fenreg
Fpers = fichier de employé
Var fp : fpers
Emp : employé
Procédure création ( var f : fpers)
Debut
Ouvrir (f , E)
Ecrire ( "matricule : ") lire ([Link])
Tantque ([Link] <> 0 afaire
Ecrire (" nom : ") lire ([Link])

51
Nabil AOUADI & Hamed BENNEJI
Corrigé d’examen final Janvier 2010

Ecrire("prénom : ") lire([Link]énom)


Ecrire("grade : ") lire([Link])
Ecrire("salaire : ") lire([Link])
Lire([Link])
Ecrire ("matricule : ") lire([Link])
Ftq
Fermer(f)
Fin
Procédure consultation (f : fpers)
Debut
Lire( F, L)
Lire ([Link])
Tantque Non(FDF(F)) faire
Si [Link] >= 500 et [Link] <= 700 alors
Ecrire( [Link], [Link], [Link])
Fsi
Lire([Link])
Fintq
Fermer(f)
Fin
Debut
Création(fp)
Consultation(fp)
Fin
Exercice 3 :
Analyse du problème :
Données : FP : Fichier d’employé : matricule, nom,prénom, grade, salaire
X : entier representant le matricule de l’employé
Résultats : message
Principe : - test x existe ou non
- afficher le message selon le test
Test = vrai , « nom, prenon, grade »
Test = faux :, « ce matricule ne figure pas dans le fichier »
Solution :
Procédure recherché(fp : fpers ; x :entier)
Var emp : employé
Début
Ouvrir(fp,l)
Lire([Link])
Trouve  ([Link] = n)
Tantque trouve = faux et non (fdf(fp) ) faire
Lire ( [Link])
Trouve  ([Link] = n)
Fin
Si fdf(fp) alors
Ecrire ("ce matricule ne figure pas dans le fichier ")
Sinon
Ecrire([Link] , [Link], [Link]énon, [Link])
Fsi
Fin
Exercice 4 : tri du fichier FNOTES
Analyse du problème :
Données : Fnotes : Fichier de réel
Tnote : tableau de réel
N = 30
Résultats : Fnote : fichier contenant les notes non triées,
Principe : - remplir fnotes
Copie de

52
Nabil AOUADI & Hamed BENNEJI
Corrigé d’examen final Janvier 2010

Tri
copie
Solution :
Algorithme Notes
Var fnotes : fichier de réel
Tnotes : tableau[1..30] de réel
X, note : réel
Echange : booléen
I : entier
Debut
(* création du fichier fnotes *)
Ouvrir(fnotes, E)
Pour i de 1 à 30 faire
Ecrire'("entrer une note") lire(note)
Ecrire(fnotes, note)
Fpour
Fermer(fnotes)
(* copie le fichier fnotes dans le tableau tnotes *)
Ouvrir(fnotes, L)
Pour i de 1 à 30 faire
Lire(fnotes, note)
Tnote[i]  note
Fpour
Fermer(fnotes)
(* tri du tableau tnote *)
Répéter
Echange  faux
Pour i de 1 à 29 faire
si tnotes[i] > tnotes[i +1] alors
x  tnotes[i]
tnotes[i}  tnotes[i+1]
tnotes[i+1]  x
echange  vrai
fsi
Fpour
Jusqu'à echange = faux
(* copier du tableau tnotes dans le fichier fnotes *)
Ouvrir(fnotes , e)
Pour i de 1 à n faire
Ecrire(fnotees, tnote[i])
Fpour
Fermer(fnotes)
Fin

53
Nabil AOUADI & Hamed BENNEJI

Vous aimerez peut-être aussi