Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
ALGORITHMIQUE et
STRUCTURES DE DONNEES 1
2008-2009
e
@
Département : Technologies de l’Informatique
u
n f i
q
o rm a t
I
Manuel de L’Etudiant
Enseignant : Belhassen GUETTAT
- Page : 1/104 -
Matière : Algorithmique et Structures de Données 1
Coefficient : 03
Crédit : 03
Objectifs Généraux
Objectif Général 0 :
Acquérir les connaissances préalables à l’algorithmique.
OS 1 : Comprendre les notions d’information et de système d’information.
OS 2 : Distinguer entre système d’information et système informatique.
OS 3 : Expliquer les différentes catégories de logiciels.
OS 4 : Comprendre le cycle de vie d’un logiciel.
Objectif Général 1 :
Avoir des compétences théoriques et techniques pour pouvoir appliquer les concepts
de la programmation structurée sur des problèmes simples.
OS 1 : Identifier les trois (3) parties d’un algorithme.
OS 2 : Comprendre les structures de données simples.
OS 3 : Maîtriser les actions simples.
OS 4 : Savoir utiliser un schéma conditionnel.
OS 5 : Résoudre un problème faisant appel à une boucle.
Objectif Général 2 :
Avoir des compétences théoriques et techniques pour pouvoir appliquer les concepts
de la programmation structurée sur des problèmes nécessitant le recours à des
structures de données avancées.
OS 1 : Comprendre les types construits.
- Page : 2/104 -
OS 2 : Comprendre le type tableau.
OS 3 : Appliquer le type tableau pour réaliser certains traitements.
OS 4 : Comprendre le type matrice.
OS 5 : Appliquer le type matrice sur certains problèmes.
OS 6 : Distinguer le type tableau de caractères du type chaîne de caractères.
OS 7 : Appliquer le type chaîne pour résoudre certains problèmes.
Objectif Général 3 :
Avoir des compétences théoriques et techniques pour pouvoir appliquer les concepts
de la programmation procédurale sur des problèmes complexes.
OS 1 : Comprendre le concept de la programmation procédurale.
OS 2 : Savoir décomposer un problème complexe en des sous problèmes simples.
OS 3 : Maîtriser l’utilisation des fonctions pour un problème donné.
OS 4 : Maîtriser l’utilisation des procédures pour un problème donné.
OS 5 : Appliquer les concepts de la programmation procédurale sur un problème
complexe.
OS 6 : S’initier au concept de la récursivité.
Objectif Général 4 :
Acquérir les compétences nécessaires pour présenter des solutions algorithmiques
basées sur les structures enregistrement et fichier.
OS 1 : Comprendre le type Enregistrement.
OS 2 : Comprendre le type Fichier.
OS 3 : Appliquer les types enregistrement et fichier pour réaliser des traitements sur des
données stockées.
Objectif Général 5 :
Comprendre les algorithmes de Tri.
OS 1 : Comprendre les algorithmes de tri (3).
OS 2 : Exécuter à la main les 3 algorithmes précédents.
OS 3 : Comparer ces algorithmes en terme de performance.
- Page : 3/104 -
LES PREALABLES A L’ALGORITHMIQUE – L’Essentiel du Cours –
Objectif Général 0 :
Acquérir les connaissances préalables à l’algorithmique.
Objectifs Spécifiques :
OS 1 : Comprendre les notions d’information et de système d’information.
OS 2 : Distinguer entre système d’information et système informatique.
OS 3 : Expliquer les différentes catégories de logiciels.
OS 4 : Comprendre le cycle de vie d’un logiciel.
Rappel du Cours :
RECOMMANDATIONS :
REGLES D’APPLICATION :
DEFINITIONS :
Information : Renseignement sur un sujet bien déterminé.
Donnée : Information qui n’a pas de sens.
Qualité d’une information : Rapidité d’obtention, Fiabilité et Diffusabilité.
- Page : 4/104 -
Système d’information : Ensemble d’informations, de moyens, d’outils, de
procédures, de méthodes, de techniques, de règles, de normes et de documents
permettant de gérer et de manipuler les informations.
Système informatique : Ensemble de moyens matériel et logiciels permettant de
satisfaire les besoins informatiques des utilisateurs.
Catégories de systèmes d’information : Manuel, Mécanisé et Informatisé.
Classification des systèmes d’information : EDP, MIS, DSS et ES.
Logiciel : Ensemble de programmes destinés à faciliter l’exécution des tâches
courantes des utilisateurs dans un domaine donné ; par exemple un logiciel de
facturation ou de comptabilité.
Progiciel : Logiciel standard ; par exemple Microsoft Word, Autocad, Microsoft
Access, etc.
Logiciel Libre : Logiciel qui n’a pas de propriétaire ; en l’achetant on aura tous les
droits (changement de contenu, duplication, etc.). Comme exemple, on peut citer
Linux, Kylix et MySql.
Progiciel de Gestion Intégrée (ERP) : Progiciel qui couvre toutes les
fonctionnalités informatiques d’une organisation. Il est destiné aux grandes
entreprises.
Cycle de vie d’un logiciel : Ce sont les différentes étapes par lesquelles un projet
d’informatisation doit suivre pour aboutir à un logiciel de qualité. Il existe
plusieurs modèles représentant un cycle de vie : Cascade, V, Spirale, etc.
Selon le modèle en cascade, les étapes sont : Spécifications, Analyse, Conception,
Codage, Tests et Mise en exploitation.
L’algorithme fait partie de la conception logique de la solution.
Un algorithme est le résultat d’une démarche logique permettant la résolution
d’un problème donné.
L’Algorithmique est la logique utilisée pour écrire des algorithmes. On dit
également Algorithmie.
On distingue différents types de problèmes : Structurés, Semi-Structurés et Non-
Structurés.
En Algorithmique, on ne traitera que des problèmes structurés : des problèmes
dont on connaît à l’avance une solution mathématique.
Un Algorithme est constitué de trois parties : Identification, Déclaration et
Actions.
- Identification : la partie dans laquelle on attribue un nom à l’algorithme ; ce
nom doit respecter les règles de l’identificateur.
- Déclaration : Dans cette partie, on déclare tous les objets impliqués dans la
partie Actions ; dans l’ordre, on mentionnera les Constantes, les Types, les
Variables et les Sous-programmes.
- Actions : Dans cette partie, sont décrites dans un ordre logique et
séquentiellement toutes les opérations à faire pour obtenir le résultat
souhaité.
- Page : 5/104 -
LA PARTIE DECLARATION :
LA PARTIE ACTIONS :
- Page : 6/104 -
LES PREALABLES A L’ALGORITHMIQUE – Exercices Proposés –
Partie 2
Partie 3
26- Pour chaque identificateur proposé, répondez par Valide ou Non Valide.
Nom de variable Réponse Nom de variable Réponse
prod_a Valide c123
$total new bal
moyenne sum.of
9ab6 grade1
_c3 réponse
Newbal 1234
27- Dans un algorithme, on distingue différents types d’actions ; lequel ne doit pas y
figurer ?
Actions simples.
Structures de contrôle.
Structures de données.
Aucune de ces réponses.
28- Parmi les verbes suivants, lequel n’est pas un verbe de lecture ?
Saisir.
- Page : 10/104 -
Ecouter.
Donner.
Fournir.
29- Parmi les verbes suivants, lequel est un verbe d’écriture ?
Entrer.
Enregistrer.
Numériser.
Introduire.
30- Parmi les affectations suivantes, laquelle n’est pas correcte ?
a (b ou c) non(d).
a a*b
a Non(b)
Aucune des ces réponses.
31- Pour chaque expression proposée, donnez le résultat correspondant ?
N° Expression Résultat produit
01 3*4/6+6
02 2 * 3 / 12 * 8 / 4
03 10 * ( 1 + 7 * 3 )
04 ( 20 - 2 ) / ( 6 + 3 )
05 10 + 15 % 2 + 4 * 3
06 10 + 17 % 3 + 4
07 (10 + 15 % 2 + 4.3)+( ( 20 - 2 ) / ( 6 + 3 ))
32- Quelle est la différence entre donnée et structure de données ?
Donnée :……………………..…………………………………………………….…
Structure de données : ……………………………………………………….….…
……………………………………………………………………………...…………
33- Énumérez les types simples ?
Type 1 : ……….……………………………………………………………………
Type 2 : …………………………………………………………………………….
Type 3 : …………………………………………………………………………….
Type 4 : …………………………………………………………………………….
34- Donnez les tables de vérité des propositions suivantes ?
(A et B) ou (non B)
(non A) et (non B)
(A et B) et (non A)
non (A et (non B))
Pour chacune de ces propositions, trouvez une autre proposition plus simple (c'est à
dire avec moins d'opérateurs) équivalente. Rappel: deux propositions sont équivalentes
si elles ont la même valeur de vérité dans tous les cas possibles.
- Page : 11/104 -
Autre
Proposition
35- Pour chacun des tableaux proposés, on vous demande d’évaluer le contenu des
variables I, J et S en fonction de l’avancement de l’exécution des différentes actions.
Action I J S
I <- 5
I <- 2
I<- I+4
J<- I+1
J <- J-1
S <- I + J*2
S <- S -J
Action I J S
I <- 3
J <- 2
I<- -1+4
J<- I+1
I <- J-1
J <- I + J*2
S <- S -J
- Page : 12/104 -
LES ALGORITHMES DE BASE – l’Essentiel du Cours –
Objectif Général 1 :
Avoir des compétences théoriques et techniques pour pouvoir appliquer les concepts de
la programmation structurée sur des problèmes simples.
Objectifs Spécifiques :
OS 1 : Identifier les trois (3) parties d’un algorithme.
OS 2 : Comprendre les structures de données simples.
OS 3 : Maîtriser les actions simples.
OS 4 : Savoir utiliser un schéma conditionnel.
OS 5 : Résoudre un problème faisant appel à une boucle.
Rappel du Cours :
LA PARTIE DECLARATION :
Une variable est un emplacement mémoire capable de prendre plusieurs valeurs
lors de l’exécution d’un programme, mais à un instant donné de l’exécution, elle
ne peut contenir qu’une et une seule valeur.
Une variable est caractérisée par son nom, son type, et son contenu.
Une constante est une variable dont le contenu reste inchangé tout au long de
l’exécution d’un programme.
Un type est l’ensemble de valeurs que peut prendre une variable. Dans cette
rubrique, on ne déclare que les types composés ; les types simples seront indiqués
au moment de la déclaration des variables.
Les sous-programmes sont répartis en deux catégories : les fonctions et les
procédures.
LA PARTIE ACTIONS :
Les actions doivent être finies, séquentielles et ordonnées.
On distingue différentes structures représentant les actions : structures linéaires
(actions simples), structures conditionnelles (SI), structures de choix (SELON) et
les structures répétitives (Répéter, Tant que et Pour).
LES TYPES SIMPLES :
Ils sont au nombre quatre : Entier, Réel, Caractère et Booléen (Logique).
Opérations sur les types simples :
Type : Entier Type : Réel Type : Caractère Type : Booléen
Addition : + Addition : + Suivant : Suiv ET
Soustraction : - Soustraction : - Précédant : Prec OU
Multiplication : * Multiplication : * CHR(n) NON
Division entière : Div Division : / ORD(ch)
Reste de la Division : MOD
- Page : 13/104 -
LES ACTIONS SIMPLES : STRUCTURES LINEAIRES
- Page : 14/104 -
SINON <Traitement2>
FINSI
Répéter
<Traitement>
- Page : 15/104 -
Jusqu’à (<Cond_Arrêt_Atteinte>)
Dans le schéma Pour, nomvar est appelé Compteur ; il doit être de type Entier.
Dans le schéma Pour, l’incrémentation du compteur est automatique en fonction
de la valeur du Pas.
Déroulement de l’exécution de la boucle Pour :
- Etape 1 : Exécuter le traitement de la boucle.
- Page : 16/104 -
- Étape 2 : Incrémenter nomvar en fonction de la valeur du Pas (nomvar
nomvar + P).
- Étape 3 : Tester si nomvar est toujours dans l’intervalle ou non
Si Oui Alors Aller à Etape 1
Sinon Aller à Etape 4
- Etape 4 : Sortir de la boucle et continuer le traitement après Fin Pour.
Avec le schéma Pour, le traitement s’exécute (Vf – Vi + 1) fois.
L’Application de l’un de ces trois schémas dépend de la nature de l’énoncé ; par
exemple, si on connaît à l’avance le nombre d’itérations à faire, on peut opter
pour le schéma Pour.
- Page : 17/104 -
LES ALGORITHMES DE BASE – Exercices Proposés –
Exercice 1
Déterminez et corrigez les erreurs se trouvant dans les algorithmes suivants:
1er Algorithme
Algorithme Initial Anomalies Algorithme Corrigé
Algorithme calcul_aire Algorithme
largeur ← 15 ……………………………
aire ← largeur * longueur ……………………………
Fin Début
……………………..…….
………………………..….
……………………..…….
Fin
2 Algorithme
éme
Exercice 2
Écrivez un algorithme qui met la valeur 16 dans la variable num1 et la valeur 18 dans la
variable num2, ensuite il calcule et affiche leur total et leur moyenne. Pouvez-vous
proposer une solution plus optimale ?
Exercice 3
Écrivez un algorithme qui convertit une température en degré Fahrenheit en une
température degré Celsius, sachant que la température en degré Fahrenheit est égale à
41. Temp_Cel = 5 / 9 * (Temp_Far - 32)
Algorithme Temperat Algorithme Temperat (*Amélioré*)
Variable Variable
………………….……………………………… ………………….………………………………
…………………………………………………. ………………………………………………….
Début Début
…………………………………………………. ………………………………………………….
…………………………………………………. ………………………………………………….
…………………………………………………. ………………………………………………….
………………………………………………….
Fin
………………………………………………….
………………………………………………….
Fin
Exercice 4
Écrivez un algorithme qui calcule et affiche l'intérêt fixe d'un prêt dont la valeur est
égale à 7000 DT et le taux est de 12.5%. Intérêt = Prêt * Taux.
Exercice 5
Écrivez un algorithme permettant de lire le salaire brut, les primes et les indemnités, et
les taxes puis afficher le salaire net.
Salaire net = salaire brut + primes + indemnités – taxes.
Algorithme Sal_Net Algorithme Sal_Net (*Optimal*)
Variable Variable
…………………………….…………………… ………………….………………………………
…………………………………………………. ………………………………………………….
Début Début
…………………………………………………. ………………………………………………….
…………………………………………………. ………………………………………………….
…………………………………………………. ………………………………………………….
…………………………………………………. ………………………………………………….
…………………………………………………. ………………………………………………….
Fin Fin
Exercice 6
Écrivez un algorithme qui affiche le nombre de centaines, de dizaines et d’unités d’un
entier N (composé de trois chiffres), saisi à partir du clavier.
Algorithme Decomp_N Algorithme Decomp_N (*Optimal*)
- Page : 20/104 -
Variable Variable
………………….……………………………… …………………………….……………………
…………………………………………………. ………………………………………………….
Début Début
…………………………………………………. ………………………………………………….
…………………………………………………. ………………………………………………….
…………………………………………………. ………………………………………………….
…………………………………………………. ………………………………………………….
…………………………………………………. ………………………………………………….
…………………………………………………. ………………………………………………….
…………………………………………………. ………………………………………………….
………………………………………………….
Fin
………………………………………………….
Fin
Exercice 7
On considère l’algorithme suivant constitué de trois structures conditionnelles à un seul
choix.
Algorithme abc
Variable a, b, c, temp : entier
Début
Écrire ("a=") lire (a) Écrire ("b=") lire (b) Écrire ("c=") lire (c)
si b > a alors
temp ← a
a←b I
b ← temp
finsi
si c > a alors
temp ← a
a←c II
c ← temp
finsi
- Page : 21/104 -
si c > b alors
temp ← b
b←c III
c ← temp
finsi
Écrire (a,b,c)
Fin
Exercice 8
Soient les instructions suivantes:
Si a < b Alors
c ← b + 10
Sinon
c ← a +25
FinSi
- Page : 22/104 -
Donnez pour chaque valeur du couple a et b la valeur contenue dans c après
l'exécution de ces instructions.
a b c
4 20
5 5
17 6
Exercice 9
Écrivez un algorithme qui vérifie si l’entier saisi à partir du clavier est pair ou impair.
Algorithme Pair_Imp Commentaires devant chaque ligne
Variable
……………………………………….. ……………………………………………
….
Début
…………………………………………………
. ……………………………………………
………………………………………………… ….
. ……………………………………………
………………………………………………… ….
. ……………………………………………
………………………………………………… ….
. ……………………………………………
………………………………………………… ….
. ……………………………………………
………………………………………………… ….
. ……………………………………………
………………………………………………… ….
.. ……………………………………………
Fin ….
Exercice 10
Écrivez un algorithme qui lit un réel et affiche sa valeur absolue.
Algorithme Val_Abs Commentaires devant chaque ligne
Variable
- Page : 23/104 -
……………………….……………………….. ……………………………………………
Début ….
…………………………………………………
……………………………………………
.
….
…………………………………………………
……………………………………………
.
….
…………………………………………………
……………………………………………
.
….
…………………………………………………
……………………………………………
.
….
…………………………………………………
……………………………………………
.
….
…………………………………………………
……………………………………………
..
….
Fin
Exercice 11
Écrivez un algorithme qui lit un caractère et affiche si c'est une lettre de l'alphabet.
Algorithme Alphabet Commentaires devant chaque ligne
Type
Alphab = ……………………………………………
Variable
….
……………………..…………………………..
Début ……………………………………………
………………………………………………… ….
.
………………………………………………… ……………………………………………
. ….
………………………………………………… ……………………………………………
- Page : 24/104 -
. ….
………………………………………………… ……………………………………………
. ….
………………………………………………… ……………………………………………
. ….
………………………………………………… ……………………………………………
.. ….
Fin ……………………………………………
….
……………………………………………
….
Exercice 12
Écrivez un algorithme qui lit les paramètres d'une équation de premier degré ax+b=0
et affiche sa solution.
Algorithme Equat1 Suite de l’algorithme Equat1
Variable
……………………………..………………….. ………………………………………………
Début
.
…………………………………………………
………………………………………………
.
.
…………………………………………………
………………………………………………
.
.
…………………………………………………
………………………………………………
.
.
…………………………………………………
………………………………………………
.
.
…………………………………………………
. ………………………………………………
.
…………………………………………………
. Fin
Exercice 13
Écrivez un algorithme permettant de lire la valeur de la température de l'eau et
d'afficher son état :
- Page : 25/104 -
• Glace : t ≤ 0
• Eau : 0 < t ≤ 100
• Vapeur : 100 < t ≤ 1500
• Plasma : 1500 < t
- Page : 26/104 -
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
Fin …………………………………………………..
Fin
Exercice 15
Cet algorithme doit permettre de calculer un salaire net à partir d’un salaire brut et
de certains renseignements concernant la situation de l'utilisateur. L’utilisateur devra
saisir au clavier :
• Son salaire brut [montant réel]
• Sa situation :
• a-t-il des frères et/ou des soeurs (o/n) [caractère]
• est-il boursier (o/n) [caractère]. Aucun contrôle de validité de la saisie des
entrées ne sera effectué. Le taux d’imposition est déterminé à partir d’un taux de
base, ici 10%, et de critères sociaux et familiaux. Le salaire net sera affiché à l’écran
[montant réel].
• Impôt de base = 0.1
• Si la personne n’a ni frère ni soeur : impôt + 0.05
• Si la personne est boursière : impôt - 0.05
Le salaire net [montant réel] est le produit du taux d’imposition (1-impôt) et du salaire
brut.
Algorithme Salaire Algorithme Salaire (* Autre solution*)
Variable
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
…………………………………………………..
Début …………………………………………………..
…………………………………………………..
Début
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
Fin
…………………………………………………..
Fin
- Page : 27/104 -
Exercice 16
Écrivez un algorithme qui permet de saisir un numéro de couleur de l'arc-en-ciel et
d'afficher la couleur correspondante.
1- rouge Solution
2- orangé
3- jaune
4- vert
5- bleu
6- indigo
7- violet
Exercice 17
17.1. Écrivez un algorithme permettant de répéter l'affichage de la question voulez-
vous continuez? Jusqu'à ce que la réponse soit la lettre ‘o ‘pour oui ou la lettre ‘n’
pour non.
Algorithme Afficher Algorithme Afficher (* avec Tant que *)
Début Début
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
- Page : 28/104 -
Fin Fin
17.2. Réécrivez l'algorithme précédant de telle façon qu'il s'exécute de la façon
suivante:
voulez-vous continuez?
y
o/n svp
1
o/n svp
o
vous avez dit oui.
Début Début
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
Fin Fin
Exercice 18
Écrivez un algorithme qui lit un entier à partir du clavier et affiche son carré ; il
s'arrête lorsqu’on entre la valeur 0.
Algorithme Aff_ent Algorithme Aff_ent(* avec Tant que *)
Début Début
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
- Page : 29/104 -
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
Fin Fin
Exercice 19
Soit l'algorithme suivant:
Algorithme aff_5nbr
Variable
i : entier
val : réel
Début
val ← 1 i1
Répéter
val ← (val + 1) * 2
écrire (val)
ii+1
Jusqu’à (i=>5)
Fin
Exercice 20
Écrivez un algorithme qui lit 10 valeurs réelles et qui détermine la moyenne des
valeurs strictement positives et la moyenne des valeurs strictement négatives.
Algorithme Aff_10nbr Algorithme Aff_10nbr (* avec Répéter *)
- Page : 30/104 -
…………………………………………………. …………………………………………………..
Début Début
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
Fin Fin
Exercice 21
Écrivez un algorithme qui lit un entier et affiche les 5 entiers suivants.
Algorithme Aff_5suiv Algorithme Aff_5suiv (* avec Pour *)
Début Début
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
Fin Fin
Exercice 22
Écrivez un algorithme qui lit un réel x et un entier positif p et affiche x puissance p.
Algorithme Aff_puiss Algorithme Aff_puiss (* avec Tant que *)
Début Début
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
- Page : 31/104 -
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
Fin Fin
Exercice 23
Écrivez un algorithme qui lit un entier n positif et affiche sa factorielle n!=n-1! * n et
0!=1.
Début Début
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
Fin Fin
Exercice 24
Écrivez l'algorithme qui permet de calculer le PGCD de deux nombres entiers x et y.
Début Début
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
- Page : 32/104 -
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
Fin Fin
Exercice 25
Écrivez un algorithme qui détermine si un entier N est parfait ou non. Un entier est
dit parfait s'il est égal à la somme de ses diviseurs stricts (Exemple: 6=3+2+1).
Début Début
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
Fin Fin
Exercice 26
Écrivez un algorithme Menu qui propose à l’utilisateur de saisir deux nombres et de
choisir dans un menu parmi 4 opérations à réaliser dessus : 1. addition, 2.
soustraction, 3. multiplication, 4. division. Attention à signaler une tentative de
division par zéro !
Algorithme Menu …………………………………………………..
…………………………………………………..
Variable ……………………………………….
………………………………………………….. …………………………………………………..
Début …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
- Page : 33/104 -
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. Fin
Exercice 27 :
Dans une entreprise, la convention collective applicable pour le personnel précise :
- Si les employés ont moins d’un an d’ancienneté, ils ont droit à deux jours et
demi de congé par mois de présence même pour le premier mois quel que soit
le jour de leur entrée dans l’entreprise.
- Si leur ancienneté est supérieure ou égale à un an, ils ont droit à 30 jours (soit
cinq semaines) de congé.
- Une bonification de 2 jours est accordée aux cadres qui sont âgés de 35 ans et
plus et qui ont plus de 3 ans d’ancienneté.
- Si les cadres ont 40 ans et plus et 5 ans et plus d’ancienneté, cette bonification
est portée à 4 jours.
Écrivez un algorithme affichant pour un employé donné son droit au congé (Vous
devez préalablement élaborer l’arbre de décision de ce problème).
Exercice 28 :
Vous vous rendez dans une agence de voyages dans le but de réserver une place
d’avion pour vos prochaines vacances. Le principe de réservation est le suivant :
- Si le voyageur demande une place en première classe, « non fumeur », et
qu’une place est disponible pour le vol qu’il désire, on lui délivre un billet ;
sinon une place « fumeur » lui est proposée.
- Si le voyageur accepte, le billet est délivré ; sinon on lui propose une place en
classe économique, d’abord en « non fumeur », puis en « fumeur ». S’il n’y a
aucune place dans le vol, le voyageur est inscrit sur une liste d’attente.
- Si le voyageur demande une place en classe économique, avec priorité « non
fumeur », et qu’une place est disponible, un billet lui est délivré, sinon on lui
propose une place en première classe, toujours en respectant la priorité « non
fumeur », et de même, en cas de non satisfaction de la demande, le voyageur
est inscrit sur une liste d’attente.
28.1. Présentez le problème sous forme de table de décision.
28.2. Donnez l’algorithme de réservation de la place et de l’émission du billet.
Exercice 29 :
Le document ci-dessous, présente les résultats, par classe des étudiants de l’ISET
de Radès.
ISET de Radès Année Univ. : _________
Département : Informatique Semestre N° : ____
Classe : _________
- Page : 34/104 -
Nom & Prénoms Notes Obtenues Moyenne
Moyenne/Matière
Écart type
Moyenne la plus forte : __________
Moyenne la plus faible : __________
- Page : 35/104 -
LES ALGORITHMES A BASE DE TABLEAUX – L’Essentiel du Cours –
Objectif Général 2 :
Avoir des compétences théoriques et techniques pour pouvoir appliquer les concepts
de la programmation structurée sur des problèmes nécessitant le recours à des
structures de données avancées : Tableaux, Chaînes, etc.
Objectifs Spécifiques :
OS 1 : Comprendre les types construits : Ensembles, Intervalles et Types Enumérés.
OS 2 : Comprendre le type Tableau.
OS 3 : Appliquer le type tableau pour réaliser certains traitements.
OS 4 : Comprendre le type Matrice
OS 5 : Appliquer le type Matrice sur certains problèmes.
OS 6 : Distinguer le type tableau de caractères du type chaîne de caractères.
OS 7 : Appliquer le type Chaîne pour la résolution de certains problèmes.
Rappel du Cours :
LE TYPE ENUMERE
On définit en extension toutes les valeurs que peuvent prendre les variables de ce
type. Les valeurs doivent être ordonnées. Elles sont en nombre fini.
Représentation Algorithmique
TYPE NomTypeEnuméré = (Val1, Val2, Val3, ….., ValN)
VARIABLE NomVar : NomTypeEnuméré
Exemple :
Type
Jour = (lundi, mardi, mercredi, jeudi, vendredi, samedi, dimanche)
Variable j1, j2 : jour ;
- Page : 36/104 -
On peut écrire :
j1 mardi
j2 dimanche
Remarques :
(i) Les opérateurs relationnels (<, ≤ , >, ≥ , =, ≠ ) s’appliquent sur les
différentes valeurs de ce type.
Exemple :
lundi < mardi < mercredi < jeudi < vendredi < samedi < dimanche.
(ii) étant donné que les valeurs d’un type énuméré sont ordonnés, on peut
appliquer les fonctions successeur et prédécesseur.
Exemple : successeur (lundi) donne mardi et prédécesseur (mardi) donne lundi.
(iii) l’utilisation d’un tel type assure davantage de cohérence aux données
introduites. En effet, dans cette exemple on ne peut pas rencontrer une
journée appelée « Pluie » : elle n’appartient pas au type Jour.
LE TYPE INTERVALLE
Un type intervalle est un ensemble de valeurs ordonnés construits à partir des types
simples et caractérisé par sa valeur minimale et sa valeur maximale.
- Page : 37/104 -
Type Nomtableau = Tableau[borne_inf .. borne_sup] de type_élément
Variable Nomvar : Nomtableau
Indice : entier
Exemple : on veut déclarer un tableau de moyennes
Type Tab_Moy = Tableau[1..20] de réel
Variable T : Tab_Moy
I : entier (* indice du tableau T *)
En mémoire, on va avoir une variable T comportant 30 cases et dans chacune on
placera une moyenne qui est de type réel.
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20
T 10.5 08.2 09.7 11.0 10.5 13.6
Le premier élément de T contient la valeur 10.5 ; on note T(1) 10.5
Le deuxième élément de T contient la valeur 08.2 ; on note T(2) 08.2
D’une manière générale, le Ième élément de T est noté T(I) et contient une valeur de
type réel. T(I) désigne également le contenu de la Ième case du tableau T.
Remarques :
(i) L’indice du tableau doit être obligatoirement de type entier.
(ii) Il serait préférable que cet indice soit initialisé à la valeur 1.
(iii) Un tableau, s’il est rempli, ne doit pas faire l’objet d’une lecture
supplémentaire sauf s’il s’agit d’une opération de mise à jour où on doit
modifier le contenu des éléments du tableau.
(iv) La taille du tableau doit être connu à l’avance.
Opérations de bas
Initialiser un Tableau
Algorithme Ini_Tab
Constante N = Val
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt
I : entier
Début
Pour I allant de 1 à N faire
T(I) 0
Fin Pour
Fin
Remplir un Tableau
Algorithme Remp_Tab
Constante N = Val
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt
I : entier
Début
Pour I allant de 1 à N faire
Lire(T(I))
Fin Pour
Fin
- Page : 38/104 -
Remarque : Lire(T(I)) consiste à entrer une valeur à partir du clavier et la mémoriser
dans la Ième case du tableau T.
- Page : 39/104 -
- soit faire une recherche séquentielle,
- soit faire une recherche plus optimisée dite recherche dichotomique et dans ce
cas, il y a des précautions et des actions préalables à faire.
Recherche Séquentielle
Algorithme Rech_Seq
Constante N = 20
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt
I : entier
X : entier (* X est l’élément à chercher dans le tableau *)
Trouve : Booléen (* cette variable va nous permettre de sortir dès qu’on trouve
X *)
Début
Lire(X)
I1
Trouve Faux
Tant que (I<=N) et (Trouve = Faux) Faire
Si (T(I) <> X) Alors I I + 1
Sinon Trouve Vrai
Fin Si
Fin Tant que
Si (Trouve = Vrai) Alors Ecrire(X, ‘appartient à T’)
Sinon Ecrire (X,’ne se trouve pas dans T’)
Fin Si
Fin
Recherche Dichotomique
Pour appliquer la recherche dichotomique, il faut que le tableau T soit Rempli et
Trié.
Il s’agit d’une recherche qui consiste à réduire le temps de recherche d’un élément X
dans un tableau T qui doit être obligatoirement trié.
On commence par comparer X avec le contenu de l’élément du milieu : si X est
inférieur à cette valeur alors on va continuer la recherche dans la partie gauche du
tableau T avec modification de la borne supérieure, sinon on continuera la recherche
dans partie droite du tableau avec modification de la valeur de la borne inférieure.
On s’arrêtera quand X serait égale à la valeur du milieu ou quand on dépasse les
bornes du tableau.
Algorithme Dichoto
Constante N=Val1 M= Val2
Type TabEnt = Tableau [1..N] de Entier
Variable T : TabEnt
I,inf,sup,mil : entier
X : entier (* X est l’élément à chercher dans le tableau *)
Début
Lire(X)
infN
supM
- Page : 40/104 -
Répéter
mil (inf+sup) div 2
Si X < T(mil) Alors sup mil – 1
Sinon inf mil +1
Fin Si
Jusqu’à (X=T(mil)) ou (inf > sup)
Fin
Application : Palindrome
- Page : 41/104 -
T2(I) T1(N-I+1)
Fin Pour
I1
Egal Vrai
Tant que (I<=N) et (Egal=Vrai) Faire
Si (T1(I) <> T2(I)) Alors Egal Faux
Sinon I I + 1
Fin Si
Fin Tant que
Si (Egal=Vrai) Alors Ecrire (‘Le Mot est un Palindrome’)
Sinon Ecrire (‘Le Mot n’’est pas un Palindrome’)
Fin Si
Fin
- Page : 42/104 -
4 5 7 2 -3 -1 1 2 7
T devient trié
Définition
Une matrice est une structure de données permettant d’organiser un nombre fini
d’informations de même type en lignes et en colonnes.
Représentation Algorithmique
Constante
Nbr_Lig = Val1 (* Nombre de Lignes *)
Nbr_Col = Val2 (* Nombre de Colonnes *)
Type
Matrice = Tableau [1..Nbr_Lig, 1..Nbr_Col] de Type_Elément_Matrice
Variable
M : Matrice
I, J : Entier (* I étant l’indice des lignes et J celui des colonnes *)
Remarques
(i) Le Type_Elément_Matrice peut être simple ou structuré.
(ii) L’accès à un élément de la matrice ne peut se faire qu’avec deux indices :
un élément est identifié par son numéro de ligne et son numéro de
colonne.
(iii) Si M est la matrice, M(I,J) désigne l’élément de M situé à la Ième Ligne et à
la Jème Colonne.
- Page : 43/104 -
Parcourir une matrice
Par exemple, on veut afficher tous les éléments de la matrice dont la valeur est > à 10.
Pour I allant de 1 à Nbr_Lig Faire
Pour J allant de 1 à Nbr_Col Faire
Si (M(I,J) >= 10) Alors Ecrire(M(I,J)) Fin Si
Fin Pour
Fin Pour
- Page : 44/104 -
Les Chaînes de Caractères
Définition
Une chaîne de caractères est une structure de données permettant de regrouper une
suite finie de caractères dans une même variable pour pouvoir l’exploiter dans sa
totalité.
Remarque
Une chaîne de caractères peut être exploitée en tant que variable chaîne, dans ce cas
on manipule des variables chaînes : on peut lire un mot en un seul coup (Lire(nom)),
ou bien en tant que tableau de caractères : parcourir la chaîne caractère par caractère
(compter le nombre d’apparition de la lettre ‘A’ dans un nom).
Représentation Algorithmique
Remarque
Taille_Maxi désigne la taille maximale que peut avoir une chaîne de caractères ; il
doit être strictement positif.
Exemple
Type Nom = Chaine[20]
Variable Nom1, Nom2 : Nom
On a déclaré une chaîne Nom qui est de taille maximale 20 et deux variables Nom1 et
Nom2.
Remarque
Dans certains langages de programmation et lors de la déclaration d’une chaîne de
caractères, on peut ne pas indiquer la taille maximale. En fait, c’est le langage qui s’en
occupe et affectera automatiquement la taille maximale qu’il puisse supporter. En
Pascal, cette taille est de 255.
- Page : 45/104 -
Lecture d’une chaîne
Affichage
Initialisation
La fonction LONG
- Page : 46/104 -
Cette fonction lorsqu’elle est appliquée à une chaîne de caractères, retourne sa taille
réelle et non pas la taille maximale. Algorithmiquement, elle est notée
LONG(nom_chaine).
Exemple
CH : chaine
X : entier
-------------------------------
CH ‘ISET de Radès’
X LONG(CH)
Écrire (LONG(CH))
------------------------------
Dans la variable X, on va trouver la valeur 13.
Remarque
La longueur d’une chaîne étant un entier, on ne peut pas le mettre isolé dans un
algorithme ; on doit l’affecter à une variable de type entier ou on doit le mettre dans
une primitive d’écriture.
La fonction CONCAT
Cette fonction permet de concaténer plusieurs chaînes non nécessairement de même
taille, en une seule. Algorithmiquement, elle est notée CONCAT(CH1,CH2,…,CHN)
où les CHI sont des chaînes.
Exemple
Nom : Chaîne
Prenom : Chaîne
Etudiant : Chaîne
-----------------------------------------------------
Etudiant CONCAT(Nom, Prenom)
Écrire (CONCAT(Nom, Prenom))
------------------------------------------------------
Dans la variable Etudiant, on va trouver une chaîne contenant le nom et le prénom
ensemble.
Remarque
La concaténation de plusieurs chaîne est une chaîne, on ne peut pas la mettre isolée
dans un algorithme ; on doit l’affecter à une variable de type Chaîne ou on doit la
mettre dans une primitive d’écriture.
La fonction POS
La fonction POS retourne la position à partir de laquelle une sous-chaîne apparaisse
dans une chaîne. Dans le cas où cette sous-chaîne n’existe pas, elle retourne la valeur
zéro.
Algorithmiquement, cette fonction est notée POS et le résultat est un entier.
X POS(nom_chaîne, nom_sous_chaîne)
- Page : 47/104 -
X prendre pour valeur, la position à partir de laquelle la sous_chaîne apparaîsse dans
la chaîne.
Exemple
Remarque
La position étant un entier, on ne peut pas la mettre isolée dans un algorithme ; on
doit l’affecter à une variable de type entier ou on doit la mettre dans une primitive
d’écriture.
Exemple
CH ‘Iset’
CH MAJ(CH) dans ce cas CH prendra la valeur ‘ISET’
CH MIN(CH), on aura dans CH la valeur ‘iset’.
La fonction SUBSTR
Il s’agit d’extraire une sous-chaîne de taille p à partir d’une position dans une chaîne.
Algorithmiquement, elle est notée sous-chaîne. Pour faciliter son utilisation, on va
utiliser la convention du langage Pascal qui est SUBSTR. Cette fonction retourne une
chaîne de caractères.
CH1 SUBSTR(CH, pos, p)
Où
Exemple
CH ‘ISET de Radès’
CH1 SUBSTR(CH,7,4) dans CH1 on va trouver la sous-chaîne ‘e Ra’.
Application : Palindrome
On va reprendre l’exercice du palindrome en utilisant les chaînes de caractères.
- Page : 48/104 -
Solution
Algorithme Palindr
Type mot = chaine
Variable CH1,CH2 : Chaine
Début
Lire(CH1) (* lecture du mot en un seul coup *)
Pour I allant de 1 à LONG(CH1) Faire
CH2(I)CH1(LONG(CH)-I+1)
Fin Pour
(* exploitation du mot caractère par caractère *)
Si (CH1=CH2) Alors Ecrire (CH1, ‘est un Palindrome’)
Sinon Ecrire (CH1, ‘n’’est pas un palindrome’)
Fin Si
Fin
- Page : 49/104 -
LES ALGORITHMES A BASE DE TABLEAUX – Exercices Proposés –
Exercice 1
Écrivez un algorithme dans lequel vous déclarez une variable de type tableau d'entiers dans laquelle
vous mettez les diviseurs de 12 qui sont 12, 6, 4, 3, 2, 1.
Algorithme Div12
……………………………………………… ………………………………………………
….. …..
……………………………………………… ………………………………………………
….. …..
……………………………………………… ………………………………………………
….. …..
……………………………………………… ………………………………………………
….. …..
……………………………………………… ………………………………………………
….. …..
……………………………………………… ………………………………………………
….. …..
……………………………………………… ………………………………………………
….. …..
……………………………………………… ………………………………………………
….. …..
……………………………………………… ………………………………………………
….. …..
……………………………………………… ………………………………………………
….. …..
Exercice 2
Écrivez un algorithme qui met 10 notes dans un tableau, puis affiche leur somme, leur moyenne,
leur maximum et leur minimum.
- Page : 50/104 -
Algorithme Dix_Notes
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
Exercice 3
On dispose d’un tableau d’entiers T on veut afficher le nombre d’éléments positifs et le nombre
d’éléments négatifs contenus dans le tableau.
Algorithme Aff_Tab
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
- Page : 51/104 -
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
.
Exercice 4
Écrivez un algorithme qui affiche la première, la dernière et le nombre d’apparitions d’un entier
dans un tableau de 15 entiers.
Algorithme Apparit
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
Exercice 5
Écrivez un algorithme qui fait le tri dans l’ordre décroissant d’un tableau de 15 entiers.
Algorithme Tri_Decr
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
- Page : 52/104 -
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
………………………………………………….
.
Exercice 6
Écrivez un algorithme qui met dans une matrice la table d'addition de 1 à 9.
Algorithme Tab_Add
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
- Page : 53/104 -
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
Exercice 7
Écrivez un algorithme qui affiche le vecteur de la diagonale d’une matrice saisie à partir du clavier.
Par exemple :
5 6 2 Affichage :V(5,10,105)
36 10 32
100 144 105
Algorithme Diag_Mat
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
- Page : 54/104 -
Exercice 8
Écrivez un algorithme qui cherche le maximum, le minimum et un entier (lut à partir du clavier)
dans une matrice.
Algorithme Rech_Min_Max
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
Exercice 9
Écrivez un algorithme qui permet de lire pour 10 étudiants leur notes en programmation,
électronique et anglais et d'afficher pour chaque étudiant sa moyenne et la moyenne de la classe
pour chaque matière.
Algorithme Aff_Moy
………………………………………………….
- Page : 55/104 -
…………………………………………………. .
. ………………………………………………….
…………………………………………………. .
. ………………………………………………….
…………………………………………………. .
. ………………………………………………….
…………………………………………………. .
. ………………………………………………….
…………………………………………………. .
. ………………………………………………….
…………………………………………………. .
. ………………………………………………….
…………………………………………………. .
. ………………………………………………….
…………………………………………………. .
. ………………………………………………….
…………………………………………………. .
. ………………………………………………….
…………………………………………………. .
. ………………………………………………….
…………………………………………………. .
. ………………………………………………….
…………………………………………………. .
.
Exercice 10
Écrivez un algorithme dans lequel vous déclarez une variable Voyelle de type tableau de caractères
dans laquelle vous allez placer toutes les voyelles de l'alphabet: a, e, i, o, u, y.
Algorithme Plac_Voy
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
- Page : 56/104 -
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
Exercice 11
Écrivez un algorithme qui lit la classe d'un étudiant et affiche « vous êtes de ma classe » ou « vous
n'appartenez pas à ma classe »
Algorithme Ma_Class
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
- Page : 57/104 -
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
Exercice 12
Écrivez un algorithme qui lit un nom et affiche la 1ère lettre seulement en majuscule et le reste en
minuscule.
Algorithme Aff_Nom
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
- Page : 58/104 -
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
Exercice 13
Écrivez un algorithme qui lit le nom et le prénom en même temps à partir du clavier et met le nom
dans une variable et le prénom dans une autre.
Algorithme Nom_Pren
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
- Page : 59/104 -
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
Exercice 14
Écrivez un algorithme qui lit une chaîne de caractères et affiche le pourcentage des lettres voyelles.
Algorithme Pourc_Voy
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
- Page : 60/104 -
. .
Exercice 15
Écrivez un algorithme qui permet de lire une chaîne de caractères et d'afficher si elle est palindrome
ou non. Une chaîne est dite palindrome, si elle se lit de gauche à droite de la même façon qu’elle se
lise de droite à gauche (exemples : AZIZA, LAVAL, etc.).
Algorithme Palindr
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
………………………………………………….
.
Exercice 16
- Page : 61/104 -
Écrivez un algorithme qui lit deux chaînes de caractères et qui affiche les caractères qui sont
communs.
Algorithme Car_Comm
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
.
.
Exercice 17
Écrivez un algorithme qui saisie une phrase et qui affiche le nombre de mots contenus dans cette
phrase.
Algorithme Mot_Phras
- Page : 62/104 -
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
.
.
Exercice 18
Écrivez un algorithme qui affiche l’occurrence de chaque caractère d’une chaîne saisie à partir du
clavier.
Par exemple : pour AZIZA, on doit avoir :
- L’occurrence de ’A’ est : 2
- L’occurrence de ’Z’ est : 2
- L’occurrence de ’I’ est :1
Algorithme Occ_Chain
- Page : 63/104 -
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
.
.
Exercice 19
- Page : 64/104 -
On vous demande d’afficher le message initial et le message codé. En outre, on vous
demande de compter le nombre de lettres dans le message codé et d’en extraire une
sous-chaîne alphabétique.
Algorithme Mess_Code
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
. .
…………………………………………………. ………………………………………………….
.
- Page : 65/104 -
.
………………………………………………….
.
………………………………………………….
.
Exercice 20
- Page : 66/104 -
- Page : 67/104 -
LA PROGRAMMATION PROCEDURALE – L’Essentiel du Cours –
Objectif Général 3 :
Avoir des compétences théoriques et techniques pour pouvoir appliquer les concepts
de la programmation procédurale sur des problèmes complexes.
Objectifs Spécifiques :
OS 1 : Comprendre le concept de la programmation procédurale.
OS 2 : Savoir décomposer un problème complexe en des sous problèmes simples.
OS 3 : Maîtriser l’utilisation des fonctions pour un problème donné.
OS 4 : Maîtriser l’utilisation des procédures pour un problème donné.
OS 5 : Appliquer les concepts de la programmation procédurale sur un problème
complexe.
OS 6 : S’initier au concept de la récursivité.
Rappel du Cours :
LES FONCTIONS
Définition :
Une fonction est sous-programme contenant un certain nombre d’instructions,
qui retourne un résultat unique affecté à son nom. On peut dire autrement :
Une fonction est un sous programme qui retourne obligatoirement une valeur.
Cette dernière sera stockée dans une variable qui porte le même nom que la fonction.
Remarques
(i) une fonction retourne un résultat unique implique qu’une fonction
possède obligatoirement un type.
(ii) dans une fonction, on trouve des instructions qui produisent le résultat ; ce
dernier doit être affecté en fin de traitement au nom de la fonction.
1
Ensemble d’outils, de méthodes, de procédures, permettant la production de logiciels de qualité.
- Page : 68/104 -
Représentation algorithmique
Algorithme nomalgo
Constante ………..
Type ………………
Début (*fonction*)
<partie instructions>
nomfonct Résultat
(* le résultat généré par les instructions doit être affecté au nom de la fonction *)
Fin (*fin fonction*)
Début (* nomalgo *)
<instructions et appel de la fonction>
Fin (* nomalgo *)
Remarques :
(i) param1, param2, …, paramN sont appelés paramètres : ce sont des variables
qui permettent à la fonction de communiquer avec l’extérieur.
(ii) Ces paramètres déclarés lors de la définition de la fonction sont appelés
paramètres formels.
(iii) On peut trouver certaines fonctions sans paramètres ; on déclarera alors la
fonction de la manière suivante : Fonction nomfonct() : typefonction.
(iv) Les paramètres de la fonction ne doivent jamais être lus à l’intérieur de la
fonction sans que l’énoncé le précise.
Exemple 1
Écrire une fonction qui retourne la valeur absolue d’un entier N.
Solution
Fin
Exemple 2
Écrire une fonction qui retourne la moyenne de deux réels x et y.
- Page : 69/104 -
Solution
Appel de la fonction
Or, Moyenne(a,b) est un réel et on n’a jamais vu dans un programme un réel qui se
promène tout seul !!.
Il faut donc soit mettre ce réel dans une variable de même type en faisant une
affectation, soit afficher ce réel à l’aide de la primitive d’écriture.
En fait, l’appel d’une fonction est une expression, dont la valeur est le résultat
retourné par cette fonction ; son appel doit alors se faire soit dans une affectation soit
dans une écriture.
Écrire (nomfonct(var1,var2,…..,varN)
Remarques
(i) Nomvar et nomfonct doivent avoir le même type.
(ii) On doit avoir autant de paramètres formels (param1, param2, …, paramN)
que de paramètres utilisés par le programme appelant (var1, var2,….,
varN).
(iii) Les paramètres utilisés dans le programme appelant sont appelés
paramètres effectifs.
(iv) L’ordre des paramètres formels doit être respecté lors de l’appel : les varI
doivent correspondre aux paramI.
Si on revient à l’exemple moyenne, on doit le corriger comme suit :
Algorithme Calcul (* programme appelant *)
Variable a,b : réel
- Page : 70/104 -
Début
Moyenne (x+y)/2
Fin
Remarques :
(i) Le programme qui appelle une fonction ou une procédure s’appelle
programme appelant.
(ii) Le programme (fonction ou procédure) qui est appelé par un programme
appelant est dit programme appelé.
Solution
LES PROCEDURES
Définition
Une procédure est un sous-programme qui peut produire zéro ou plusieurs
résultats.
Représentation algorithmique
Algorithme nomalgo
Constante ………..
Type ………………
Début (* nomalgo *)
<Instructions et appel de la procédure>
Fin (* nomalgo *)
- Page : 71/104 -
Remarques :
(i) param1, param2, …, paramN sont appelés paramètres : ce sont des variables
qui permettent à la procédure de communiquer avec l’extérieur.
(ii) Ces paramètres déclarés lors de la définition de la procédure sont appelés
paramètres formels.
(iii) On peut trouver certaines procédures sans paramètres ; on déclarera alors
la fonction de la manière suivante : Procédure nomproc().
(v) Les paramètres de la procédure ne doivent jamais être lus à l’intérieur de la
procédure sans que l’énoncé ne l’indique.
Exemple
Écrire une procédure permettant d’afficher la somme de deux entiers.
Solution
Appel de la procédure
A la différence d’une fonction, une procédure est appelée par son nom et ses
paramètres effectifs, dans le programme appelant.
Exemple
Algorithme affiche
Variable x,y : entier
Procédure aff_somme(a :entier, b :entier)
Variable S : entier
Début (*proc*)
Sa+b
Écrire(S)
Fin (*proc*)
Début (*algo*)
Écrire(‘donnez un entier x : ‘)
Lire(x)
Écrire(‘donnez un entier y : ‘)
Lire(y)
(* appel de la procédure aff_somme *)
- Page : 72/104 -
aff_somme(x,y)
Finalgo
Remarques
(i) On doit avoir autant de paramètres formels (param1, param2, …, paramN)
que de paramètres utilisés par le programme appelant (var1, var2,….,
varN).
(ii) Les paramètres utilisés dans le programme appelant sont appelés
paramètres effectifs.
(iii) L’ordre des paramètres formels doit être respecté lors de l’appel : les varI
doivent correspondre aux paramI.
Procédure message()
Variable mess : chaine
Début
Lire(mess)
Écrire(mess)
Fin
Problématique
On considère l’algorithme suivant :
Algorithme afficher
Variable x, y : entier
Procédure affich_ab (a :entier, b :entier)
Variable c : entier
Début
a a – 1
bb–1
ca+b
Écrire(c)
Début (*afficher*)
Lire(x)
Lire(y)
affich_ab(x,y)
Écrire(x)
Écrire(y)
Fin
Fin
En appelant la procédure affich_ab(x,y), on va se poser automatiquement la question
suivante : les valeurs de x et de y vont elles changer après l’exécution de cette
procédure ?
- Page : 73/104 -
La réponse est oui et non, selon le comportement des paramètres lors de l’appel. Ce
comportement doit être indiqué préalablement lors de la définition de la procédure
et plus exactement lors de la déclaration des paramètres.
Dans ce cas, un paramètre n’est plus caractérisé par son nom et son type mais en plus
son comportement.
Ce comportement est dit en terme de sous-programmes, le mode de passage du
paramètre.
On distingue trois modes de passage :
- Un mode de passage de type donnée ou par valeur qu’on note DON.
- Un mode de passage de type résultat ou par référence qu’on note RES.
- Un mode de passage de type donné et résultat qu’on note DONRES.
On dit qu’un paramètre est fourni en donnée s’il est fourni par le programme
appelant, sa valeur reste inchangée après l’exécution du sous-programme appelé.
On dit qu’un paramètre est fourni en résultat, s’il est retourné par la procédure appelée ;
l’exécution de la procédure appelée calcule une valeur qui sera affectée à ce paramètre, en
fin du traitement.
- Page : 74/104 -
Le mode de passage de type DONRES
On dit qu’un paramètre est fourni en donnée et résultat, s’il est fourni par le
programme appelant et modifié par la procédure appelée.
Application
Il s’agit de lire l’algorithme suivant et de dire à chaque appel de procédure, s’il est
possible ou non ; dans les deux cas de réponse justifier.
Algorithme appelant
Variable a, b, c : réel
Procédure Test1 (DON p1 :réel)
Contenu de la procédure Test1 supposé connu
Solution
- Page : 75/104 -
Appel Justification
Test1(33.0) 33 étant une constante donc fourni par le programme
appelant cet appel est donc Correct.
Test1(a) a étant fourni par le programme appelant (a=45); cet appel
est donc Correct.
Test1(35.0*a-2.0) L’expression (35*a-2) est fourni par le programme appelant;
cet appel est donc Correct.
Test1(b) b n’étant pas fourni par le programme appelant; cet appel est
donc Incorrect.
Test2(a) a peut être modifié par le programme appelé; cet appel est
donc Correct.
Test2(b) b peut être modifié par le programme appelé; cet appel est
donc Correct.
Test2(a*4.0) (a*4.0) ne peut pas être modifié par le programme appelé : ce
n’est pas un nom de variable ; cet appel est donc Incorrect.
Test2(35.0) 35 étant une constante, elle ne peut pas être modifiée ; cet
appel est donc Incorrect.
Test3(a) a est fourni par le programme appelant et peut être modifié
par le programme appelé; cet appel est donc Correct.
Test3( c ) C n’est pas fourni par le programme appelant et peut être
modifié par le programme appelé; cet appel est donc
Incorrect.
Test3(45.0) 45 est fourni par le programme appelant et ne peut pas être
modifié par le programme appelé (c’est une constante); cet
appel est donc Incorrect.
Test3(a*2.0) (a*2) est fourni par le programme appelant et ne peut pas
être modifié par le programme appelé(c’est une expression);
cet appel est donc Incorrect.
INITIATION A LA RECURSIVITE
Définition
Un programme est dit récursif si lors de son exécution, il fait appel à lui même.
Autrement dit, un objet est dit récursif s’il fait référence à lui même dans sa propre
définition.
Exemples
- Page : 76/104 -
Sinon
Si (x > y) Alors PGCD(x-y,y)
Sinon PGCD(x,y-x) ]
Remarque :
Un schéma récursif est toujours caractérisé par une condition d’arrêt.
Le Factoriel
Empilement Dépilement
Factoriel(5) 5*Factoriel(4) 120
Factoriel(4) 4*Factoriel(3) 24
Factoriel(3) 3*Factoriel(2) 6
Factoriel(2) 2*Factoriel(1) 2
Factoriel(1) 1*Factoriel(0) 1
Factoriel(0) 1
Remarques :
(i) Comme on le constate, le résultat n’est pas séquentiel : pour y arriver on
était obligé d’empiler jusqu’à atteindre la condition d’arrêt (n=0 alors le
factoriel est égal à 1). C’est à ce moment qu’on a commencé à remonter et
constituer des résultats intermédiaires jusqu’à trouver le résultat final
(n !=120).
(ii) On parle d’une exécution en Forward pour arriver à la condition d’arrêt
puis en Backward pour trouver le résultat final.
Le PGCD
- Page : 77/104 -
LA PROGRAMMATION PROCEDURALE – Exercices Proposés –
Exercice 1
Écrivez une procédure som_prod qui calcule la somme et le produit de deux réels.
Procédure Procédure
som_prod(…………………………………...) som_prod(…………………………………...
(* en utilisant deux paramètres *) ……………………………………………….)
(* en utilisant quatre paramètres *)
Variable …………………………………….. Variable ……………………………………..
……………………………………………….. ………………………………………………..
Début Début
……………………………………………….. ………………………………………………..
……………………………………………….. ………………………………………………..
……………………………………………….. ………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
Fin Fin
Exercice 2
2.1. En utilisant som_prod de l’exercice 1, Exécutez l’algorithme suivant en
remplissant le tableau proposé ?
Algorithme p_essai
Variable z, u, x, p : réel z n x p
Début z0
z 0. u5.2
u 5.2 x-3
x -3. som_prod(u,x,z,p)
som_prod(u,x,z,p) écrire (u,x,z,p)
écrire (u,x,z,p) som_prod(p,z,u,x)
som_prod(p,z,u,x) écrire (u,x,z,p)
écrire (u,x,z,p)
Fin
2.2. Que se passe-t-il si on exécute som_prod(p,z,u,x) avant som_prod(u,x,z,p) ?
…………………………………………………………………………………………………
…………………………………………………………………………………………………
…………………………………………………………………………………………………
- Page : 78/104 -
Exercice 3
3.1. Écrivez une procédure permut2, qui permute le contenu de deux variables réelles.
Procédure Procédure
Permut2 (……………………………………...) Permut2(…………………………………...
……………………………………………….)
(* en utilisant deux paramètres *) (* en utilisant trois paramètres *)
Variable ……………………………………..
Variable …………………………………….. ………………………………………………..
……………………………………………….. Début
Début ………………………………………………..
………………………………………………..
………………………………………………..
………………………………………………..
………………………………………………..
………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
Fin
Fin
3.3. Écrivez un algorithme qui lit deux valeurs réelles au clavier et les affiche puis
permute ces deux réels et réaffiche les deux valeurs.
- Page : 79/104 -
Exercice 4
On suppose donnée une procédure Son qui génère un son de fréquence f ; elle se présente
comme suit : Procédure son (DON f: entier)
Écrivez un algorithme qui permet de simuler le fonctionnement d'un instrument de musique
: l'appui sur les touches A, Z, E, R, T, Y, U, I devant produire un son correspondant à l'une
des notes musicales Do, Ré, Mi, Fa, Sol, La, Si, Do les fréquences correspondants aux notes
sont: 500, 561, 630, 667, 749, 841, 944 et 1000. L'algorithme s'arrête si l'utilisateur appui sur
une autre touche.
Algorithme Musique
Variable …………………………………….. ………………………………………………..
………………………………………………..
………………………………………………..
Procédure Son (…………………………….)
Début ………………………………………………..
…………………………………………………..
Supposée donnée
…………………………………………………..
…………………………………………………..
Fin (*fin de la procédure*) …………………………………………………..
Début (* algorithme Musique *) …………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
…………………………………………………..
Fin
Exercice 5
Écrivez une procédure décomposer, qui à partir d’une somme d’argent donnée,
donne le nombre minimal de pièces de 20 DT, 10 DT, 5 DT, 1 DT et 0.5 DT qui la
compose.
Procédure décomposer
(…………………………………………….….) ………………………………………………..
Variable
………………………………………………..
………………………………………………..
………………………………………………..
………………………………………………..
…………………………………………………..
Début
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. Fin
- Page : 80/104 -
Exercice 6
Écrivez une procédure Tri_Trois, qui prend en entrée trois entiers et qui les retourne
triés par ordre croissant.
Procédure Tri_Trois
(…………………………………………….….) ………………………………………………..
Variable
………………………………………………..
………………………………………………..
………………………………………………..
………………………………………………..
…………………………………………………..
Début
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. …………………………………………………..
………………………………………………….. Fin
Exercice 7
Créez une fonction qui calcule le carré d'un nombre réel.
Exercice 8
Créez une fonction min2 qui donne le minimum de deux réels en utilisant la formule
suivante : Min(x,y)=(x+y-|x-y|)/2. Utilisez la fonction valeur_absolue déjà définie en cours.
Exercice 9
Écrivez une fonction min3 qui retourne le minimum de 3 réels en utilisant la formule
suivante: Min(x,y,z)=Min(Min(x,y),z). Utilisez la fonction min2.
Exercice 10
Écrivez un algorithme qui lit 3 réels au clavier et qui affiche le minimum, utiliser la
fonction min3.
Exercice 11
Créez la fonction factorielle : 0!=1, n!=nx(n-1)x….x1
Exercice 12
Créez une fonction qui calcule le cardinal (n, p). Utilisez la fonction factorielle.
Exercice 13
Écrivez une fonction qui retourne le PGCD de 3 entiers strictement positifs, en
utilisant la formule suivante: PGCD(a,b,c)=PGCD(PGCD(a,b),c).
- Page : 81/104 -
Exercice 14
Écrivez une fonction récursive qui permet de calculer xn avec x>0. et n un entier
positif.
Exercice 15
Soit la suite Un définie comme suit :
U0=1 et 1
Un Un 1
U n 1 Écrivez une fonction récursive qui permet de calculer
Un.
Exercice 16
Soit la suite Fibonacci définie comme suit :
Un=Un-1 + Un-2, U0=0 et U1=1
Écrivez une fonction récursive qui calcule les termes de la suite de Fibonacci.
Exercice 17
Écrivez une fonction récursive qui calcule la somme des éléments d'un tableau de
réels de borne inf et de borne sup.
Exercice 18
Écrivez une fonction récursive qui calcule la factorielle d'un nombre n : n! = n (n-1)!
0! = 1
Exercice 19
Écrivez une fonction récursive qui calcule le cardinal de (n, p). C pn C pn 11 C pn 1
Exercice 20
Écrivez une fonction récursive qui cherche un élément x dans un tableau trié de réels de
borne inf et de borne sup. Utilisez la recherche dichotomique.
- Page : 82/104 -
LES TRAITEMENTS SUR LES FICHIERS – L’Essentiel du Cours –
Objectif Général 4 :
Acquérir les compétences nécessaires pour présenter des solutions algorithmiques
basées sur les structures enregistrement et fichier.
Objectifs Spécifiques :
OS 1 : Comprendre le type Enregistrement.
OS 2 : Comprendre le type Fichier.
OS 3 : Appliquer les types enregistrement et fichier pour réaliser des
traitements sur des données stockées.
Rappel du Cours :
DEFINITION
Le type Enregistrement est une structure de données permettant de regrouper un
ensemble de données de types différents sous une même variable.
Remarques
(i) Un enregistrement est composé d’une ou plusieurs variables non
nécessairement de même type, appelées Champs ou Rubriques.
(ii) Le type Enregistrement est dit également le type Structure.
REPRESENTATION ALGORITHMIQUE
Un type enregistrement doit être déclaré dans la partie réservée aux types, selon la
syntaxe suivante :
TYPE
Nom_type = ENREGISTREMENT
Nom_rubrique1 : type_rubrique1
Nom_rubrique2 : type_rubrique2
Nom_rubrique3 : type_rubrique3
………….
………….
Nom_rubriqueN : type_rubriqueN
FinEnregistrement
VARIABLE
Nom_variable : Nom_type
Remarque :
Si certaines rubriques ont le même type, on peut les déclarer ensemble en les
séparant par des virgules et en mentionnant une seule fois le type.
- Page : 83/104 -
Exemple 1 : déclaration de l’enregistrement étudiant.
TYPE
Étudiant = ENREGISTREMENT
Nom : Chaîne (20)
Prénom (30)
CIN : entier
Age : entier
FinEnregistrement
VARIABLE
E : Étudiant
TYPE
Complexe = ENREGISTREMEN
Préel : réel
Pimaginaire : réel
FinEnregistrement
VARIABLE
C : Complexe
Lecture
a-) Totale : Lire(E) cette primitive va lire en un seul coup et à partir du clavier les
différentes rubriques de l’enregistrement Etudiant.
La saisie s’effectuera comme suit : Ben Mohamed Mohamed 123456 35.
On remarque qu’une telle saisie n’est pas très appréciée ; par contre pour certains
problèmes on peut l’utiliser : lire un enregistrement et le stocker dans une autre
variable.
- Page : 84/104 -
b-) Partielle : la lecture se fait rubrique par rubrique. On l’utilise généralement pour
une saisie conviviale à l’écran. Dans notre exemple, la saisie de l’enregistrement
Etudiant se fera alors :
Nom_variable = E
Nom_rubrique = Nom ou Prénom ou CIN ou Age
Ecriture
a-) Totale : Ecrire(E) est une primitive qui affiche les valeurs des différentes rubriques
d’une manière assemblée ; elle peut être utilisée si jamais on veut écrire dans un
fichier (voir chapitre suivant).
b-) Partielle : l’écriture se fait rubrique par rubrique ; elle est conseillée s’il s’agit d’un
dialogue entre l’utilisateur et le programme. Dans notre exemple, on peut afficher
l’enregistrement étudiant après l’avoir saisi, rubrique par rubrique selon la syntaxe
suivante :
Ecrire (Nom_variable.Nom_rubrique)
Nom_variable = E
Nom_rubrique = Nom ou Prénom ou CIN ou Age
Affectation
a-) Totale : il s’agit dans ce cas d’affecter les valeurs prises par les rubriques dans une
autre variable qui doit avoir obligatoirement le même type que Nom_variable.
Dans notre exemple, on suppose que E et E1 sont de variables de type Étudiant, et
dans ce cas on peut effectuer une affectation totale, bien sûr si le contexte de
l’exercice le demande : E1 E ; on aura alors,
Nom_variable.Nom_rubrique = Nom_variable1.Nom_rubrique
Dans notre exemple, supposons que l’on souhaite copier un enregistrement dans une
autre variable ; on aura alors :
Sachant que E et E1 sont de variables de type Étudiant ; on peut écrire :
- Page : 85/104 -
E1.Nom E.Nom
E1.Prénom E.Prénom
E1.CIN E.CIN
E1.Age E.Age
Ce qui donne
NOTION DE GENERATEUR
Quand on affecte des valeurs aux rubriques d’un enregistrement, on dit qu’on a
obtenu un Générateur.
- Page : 86/104 -
CONSTANTE
N = 200
TYPE
Tab_Salarié = Tableau[1..N] de Salarié
Salarié = ENREGISTREMENT
Matricule : entier
Nom, Prénom : chaine
Date_naissane : chaine
État_civil : (marié, célibataire)
Catégorie : (permanent, occasionnel)
Salaire_base : réel
Indemnités : réel
Nom_conjoint, Prénom_conjoint : chaine
Nombre_enfant : entier
Coût_horaire : réel
Nombre_heures : réel
Service_militaire : Booléen
FinEnregistrement
Matric Nom Préno Datn Eciv. Cat. SBas Indem NomC PrénC Nenf Chor Nbh SM
1 123 Ali Med 1164 M P 500 250 Med Alia 1 -- -- --
2 456 Med Sobhi 1155 C O -- -- -- -- -- 3.200 70 Oui
3
200
- Page : 87/104 -
DEFINITION
REPRESENTATION ALGORITHMIQUE
TYPE
Nom_type = ENREGISTREMENT
Nom_rubrique1 : type_rubrique1
Nom_rubrique2 : type_rubrique2
Nom_rubrique3 : type_rubrique3
……………..
……………..
Nom_rubrique_variable : type_rubrique_variable
SELON (type_rubrique_variable) FAIRE
Val1_type_rubrique_variable :
Nom_rubrique_v1 : type_rubrique_v1
Nom_rubrique_v2 : type_rubrique_v2
Nom_rubrique_v3 : type_rubrique_v3
Val2_type_rubrique_variable :
Nom_rubrique_v1 : type_rubrique_v1
Nom_rubrique_v2 : type_rubrique_v2
Nom_rubrique_v3 : type_rubrique_v3
………
………
FINSELON
FINENREGISTREMENT
- Page : 88/104 -
SELON (Cat) FAIRE
Permanent : Salaire_base : réel
Indemnités : réel
Occasionnel : Coût_horaire : réel
Nombre_heures : réel
FINSELON
FINENREGISTREMENT
Représentation des deux générateurs
Avant :
G1(123,’Ali’,’Med’,’1164’,Marié,Permanent,’Med’,’Alia’,1, ,500 ,250)
G2(456,’Med’,’Sobhi’,’1155’,Célibataire,Occasionnel, , , , , ,3.200,70,Oui)
G1(123,’Ali’,’Med’,’1164’,Marié,Permanent,’Med’,’Alia’,1,500,250)
G2(456,’Med’,’Sobhi’,’1155’,Célibataire,Occasionnel,3.200,70,Oui)
Remarques
(i) On voit maintenant que les deux générateurs ne comportent plus de cases
vides et par conséquent plus de trous en mémoire.
(ii) On voit également clair que les deux générateurs G1 et G2 sont de tailles
variables.
(iii) Dans un enregistrement variable, on doit tout d’abord déclarer la partie
fixe puis on définit la partie variable.
(iv) Attention, il ne faut pas confondre entre le SELON vu dans le chapitre
Structures Conditionnelles et le SELON vu dans ce chapitre : le premier
concerne des instructions ; quant au deuxième il concerne des variables.
C’est une erreur fréquente de la part des étudiants !?
TYPE
Salarié = ENREGISTREMENT
Matricule : entier
Nom, Prénom : chaine
Date_naissane : chaine
Catégorie : Cat
État_civil : Situation
SELON (Situation) FAIRE
Marié : Nom_conjoint, Prénom_conjoint : chaine
Nombre_enfant : entier
Célibataire : Service_militaire : Booléen
- Page : 89/104 -
FINSELON
SELON (Cat) FAIRE
Permanent : Salaire_base : réel
Indemnités : réel
Occasionnel : Coût_horaire : réel
Nombre_heures : réel
FINSELON
FINENREGISTREMENT
VARIABLE
S : Salarié
G1(123,’Ali’,’Med’,’1164’,Marié,Permanent,’Med’,’Alia’,1,500,250)
G2(456,’Med’,’Sobhi’,’1155’,Célibataire,Occasionnel,3.200,70,Oui)
S.Matricule 123
S.Nom ‘Ali’
S.Prénom ‘Med’
S.Date_naissane ‘1164’
S.Etat_civil Marié
S.Catégorie Permanent
S.Nom_conjoint ‘Med’
S.Prénom_conjoint ‘Alia’
S.Nombre_enfant 1
S.Salaire_base 500
S.Indemnités 250
S.Matricule 456
S.Nom ‘Med’
S.Prénom ‘Sobhi’
S.Date_naissane ‘1155’
S.Etat_civil Célibataire
S.Catégorie Occasionnel
S.Service_militaire Oui
S.Coût_horaire 3.200
S.Nombre_heures 70
NOTIONS DE FICHIER
- Page : 90/104 -
On dit également qu’un fichier est un ensemble d’enregistrements.
Exemples
Les mémoires secondaires tels que le disque dur, la disquette, la bande magnétique,
etc., ne sont pas coûteux, possèdent de grandes capacités de stockage et sont non
volatiles.
L’acheminement des informations dans des fichiers existants sur ces supports se fait
à l’aide de primitives incluses dans le système d’exploitation et plus exactement dans
la couche qui est responsable de la gestion des fichier ; elle s’appelle SGF ou encore le
Système de Gestion de Fichiers. Les principales fonctions d’un tel système sont :
l’ajout d’un élément dans un fichier, la suppression d’un élément, la mise à jour d’un
élément et la recherche d’un élément dans un fichier.
Problématique :
Pour accéder à un enregistrement, il faut avant tout voir le type d’organisation, puis
voir est ce que le type d’accès désiré est permis dans une telle organisation ou non !
Par exemple, si on dispose d’une bande magnétique (l’équivalent d’une K7), il est
facile de deviner que l’organisation est séquentielle. Pour atteindre le nième
enregistrement, on doit obligatoirement parcourir les (n-1) enregistrements
précédents et il n’y a pas d’autres solutions (imaginer que vous voulez écouter la 3 ème
chanson d’une K7, obligatoirement vous devez défiler les 2 chansons précédentes).
- Page : 91/104 -
Maintenant, si le support est un disque magnétique, son organisation n’est pas
uniquement séquentielle mais elle peut être indexée : pour atteindre le nième
enregistrement, on peut soit parcourir les (n-1) enregistrement précédents ou si on a
une référence, on l’introduit et on accède directement à l’enregistrement y afférent
(prenons l’exemple d’un disque musical, on peut accéder directement à la chanson
préférée ou écouter séquentiellement les chansons jusqu’à ce que votre chanson
préférée se manifeste).
Organisation Séquentielle :
a-) Définition
Ouverture d’un fichier : avant tout traitement sur les fichiers, il faut
ouvrir les fichiers y afférents.
- Page : 92/104 -
si NON (EOF) pour indiquer si la fin de fichier n’est pas atteinte alors on
va exécuter tel traitement. Cette variable va obligatoirement avec le nom
du fichier : EOF (nom_fichier)
(iii) Dans certains langages, après l’ouverture d’un fichier, il faut l’initialiser :
en Pascal c’est la primitive RESET (nom_fichier).
Organisation Indexée
a-) Définition
Remarques :
- Page : 93/104 -
LES TRAITEMENTS SUR LES FICHIERS – Exercices Proposés –
Exercice 1
Déclarez un type enregistrement Agenda contenant les informations suivantes:
Nom
Prénom
Téléphone
Poste de travail
Exercice 2
Déclarez une structure enregistrement Point contenant les informations suivantes:
Abscisse
Ordonnée
Et déclarez un tableau de 10 points.
Exercice 3
Écrivez un algorithme qui permet de saisir l'état civil d'une personne ayant les
informations suivantes:
Nom
Année de naissance
Ville
Exercice 4
Déclarez une variable P ayant les informations suivantes:
Nom
Prénom
Date de naissance:
Jour
Mois
Année
Matricule
Exercice 5
Proposez une structure permettant de saisir les notes de certaines matières pour un
étudiant, sachant qu'une matière a une note inférieure à 20 et un coefficient entier.
Exercice 6
On souhaite enregistrer les notes des étudiants pour 6 matières pour une classe de 27
étudiants dans un tableau. Puis on désire afficher la moyenne de chacun avec son
nom et son prénom. Construisez un algorithme permettant d'effectuer ces
traitements ?
- Page : 94/104 -
Exercice 7
Écrivez une procédure permettant d'afficher les informations concernant les voitures
Matricule
Modèle
Couleur
Puissance
Date d'acquisition (jour, mois, année)
Date fin visite (jour, mois, année)
Ces informations sont enregistrées dans un tableau de taille n.
Exercice 8
Écrivez une procédure permettant de créer à partir d'un tableau de borne inf et de
borne sup, contenant les informations concernant les étudiants de l'ISET de Radès
(NCE, Nom, Prénom, Année naissance, Classe) un tableau de taille n contenant les
étudiants de l'informatique.
Exercice 9
Soient 2 tableaux de taille n1 et n2 contenant la liste des produits de deux ateliers
appartenant à une même entreprise. Ces tableaux contiennent les informations
suivantes:
Référence pièce
Catégorie
Libellé
Quantité en stock
Ces deux tableaux sont triés selon Référence pièce dans l'ordre croissant.
Écrivez une procédure permettant de fusionner ces deux tableaux en un tableau trié
selon Référence pièce dans l'ordre croissant.
Exercice 10
Écrivez un algorithme qui permet de saisir des enregistrements Dessin contenant les
informations suivantes :
Abscisse
Ordonnée
Forme (cercle, carré, rectangle)
Rayon
Côté
Largeur
Longueur
Déclarez 3 variables de ce type et leur affecter un cercle de centre o(5.3,3.2) et de
rayon 2.1, un rectangle de centre (2.,5.) et de largeur 7.1 et de longueur 15.2.
Exercice 11
Soit un fichier f_etudiant contenant les informations suivantes:
NCE
Nom
- Page : 95/104 -
Prénom
Ville
Code ville
Année de naissance
Année de bac
Nature du bac
Année 1er inscription
Classe
Écrivez un algorithme permettant de lister le contenu du fichier f_etudiant.
Exercice 12
Écrivez un algorithme qui affiche les étudiants de Tunis à partir du fichier f_etudiant
Exercice 13
Écrivez un algorithme qui permet de saisir des étudiants à partir du clavier et de les
enregistrer dans le fichier f_etudiant.
Exercice 14
Écrivez une fonction qui retourne le nombre d'enregistrements dans le fichier
f_etudiant.
Exercice 15
Créez à partir du fichier étudiant un fichier finfo12 (ou finfo13) contenant
respectivement les étudiants des classes Info11 respectivement Info12.
Exercice 16
Soit fcompagence1 et fcompagence2 deux fichiers contenant les comptes des clients
de l'agence 1 et de l'agence 2 ayant les informations suivantes:
Num compte
Nom client
Type client (morale ou physique)
Etat (débiteur ou créditeur)
Solde
Date de création (jour, mois, année)
Ces fichiers sont triés par num compte et sont non volumineux ; écrivez un
algorithme permettant de fusionner les deux fichiers en un nouveau fichier fcompte
(trié par num compte).
Exercice 17
Écrivez un algorithme qui permet d'éclater un fichier f_etudiant en 2 fichiers:
Fichier EtudRades
Fichier EtudCharguia
Sachant que le fichier f_etudiant contient les informations suivantes:
NCE
Nom
Prénom
- Page : 96/104 -
Date de naissance (jour, mois, année)
Classe
Département (AC, Gestion, TJ, GM, GE, GC, Info)
Le fichier EtudCharguia contiendra les étudiants des départements AC et TJ et le
fichier EtudRades le reste.
Exercice 18
Écrivez une procédure permettant d'afficher un enregistrement Personnel en lui
fournissant la matricule de l'employé. Sachant que le fichier personnel contient les
informations suivantes:
Matricule
Nom
Prénom
Date de naissance (jour, mois, année)
Ville
Situation familiale (célibataire, marié, veuf, divorcé)
Nombre d'enfants (marié)
Prénomc (marié)
Nombre enfants à charge (divorcé ou veuf)
Exercice 19
On dispose de trois fichiers contenant des informations concernant des personnes.
Fichier 1 : "age.dat" contient le nom et l'âge
(nom : chaîne, age : entier)
Fichier 2 : "coordonnees.dat" contient le nom, le prénom et l'adresse
(nom, prenom, adresse : chaîne)
Fichier 3 : "secu.dat" contient le nom et le numéro de sécurité sociale
(nom : chaîne, secu : entier)
On considère que chacun des trois fichiers possède un enregistrement sur chacune
des personnes.
On se propose de créer un seul fichier regroupant les informations des trois autres
fichiers.
1-) Écrivez une fonction Rech_Age qui renvoie l'âge d'une personne à partir de son
nom.
2-) Écrivez une procédure Rech_Pren_Adr qui recherche le prénom et l'adresse d'une
personne donnée.
3-) A l'aide de Rech_Age et Rech_Pren_Adr, écrivez le programme principal qui
fusionne toutes les informations des trois fichiers en un seul : "personne.dat" .
Exercice 20
Je désire gérer ma cave de boissons. Une bouteille de boisson est caractérisée par :
son nom, son type (gazeuse, alcoolisée, minérale)
son année (1800.. 2005), sa note (0.. 20)
1-) Définissez le type Boisson.
2-) Écrivez une procédure Cree_Cave(nom-du-fichier), qui créé le fichier nom-du-fichier
et enregistre dans celui-ci l'ensemble des boissons constituant la cave.
- Page : 97/104 -
LES ALGORITHMES DE TRI – L’Essentiel du Cours –
Objectif Général 5 :
Comprendre les algorithmes de tri.
Objectifs Spécifiques :
OS 1 : Tri par Sélection
OS 2 : Tri par Insertion
OS 3 : Tri à Bulles
OS 4 : Comparer ces algorithmes en terme de performance.
Rappel du Cours :
INTRODUCTION
On a vu dans le chapitre « Le Type Tableau » un seul algorithme de Tri et on a alors
définit qu’est ce qu’une action de tri.
On rappelle qu’une opération de tri consiste à ordonner une suite de valeurs
mémorisées selon un critère bien déterminé qu’on appelle clé et suivant une relation
d’ordre (croissant ou décroissant).
Il existe deux types de tris :
- Le Tri Interne : il s’effectue sur des données présentes en mémoire centrale, en
général dans des tableaux.
- Le Tri Externe : il s’effectue sur des données stockées en mémoires secondaire,
en général dans des fichiers.
Dans ce qui suit, on va s’intéresser aux tris internes et on va évoquer trois techniques
de tri qui sont :
- Tri par Sélection
- Tri par Insertion
- Tri à Bulles
Principe
Le principe consiste à sélectionner l’élément dont la valeur est la plus basse
(minimum), puis échanger la valeur de cet élément avec le premier élément du
tableau. Le traitement doit se poursuivre en cherchant le minimum parmi ceux qui
restent : à partir du deuxième élément du tableau, puis faire l’échange avec le
deuxième élément jusqu’à atteindre T[n-1] et T[n].
Algorithme
Algorithme Tri_Sélection
Constante
- Page : 98/104 -
n : entier
Type
Tab_Entier = Tableau[1..n] de Entier
Variable
Min, ind, temp, i : entier
T : Tab_Entier
Début
Pour i allant de 1 à (n-1) Faire
min ind
Pour i allant de (ind+1) à n Faire
Si (T(i) < T(min)) Alors min i FinSi
FinPour
Temp T(ind)
T(ind) T(min)
T(min) temp
FinPour
Fin
Principe
Algorithme
Algorithme Tri_Insertion
Constante n : entier
Type Tab_Entier = Tableau[1..n] de Entier
Variable i, j, aux : entier
T : Tab_Entier
Début
Pour i allant de 2 à n Faire
aux T(i) j (i-1)
Tant que ( j > 0 ) et ( T(j) > aux ) Faire
T(j+1) T(j)
J j-1
Fin Tant que
T(j+1) aux
Fin pour
Fin
- Page : 99/104 -
TRI A BULLES
Principe
Cette technique de tri consiste à balayer tout le tableau en comparant les
éléments adjacents et en les échangeant s’ils ne sont pas dans le bon ordre. Un seul
passage ne déplacera un élément donné que d’une position, mais en répétant le
processus jusqu’à ce qu’aucun échange ne soit nécessaire.
Algorithme
Algorithme Tri_Bulles
Constante n : entier
Type Tab_Entier = Tableau[1..n] de Entier
Variable Permute : Booléen
i, temp : entier
T : Tab_Entier
Début
Répéter
permute faux
Pour i allant de 2 à n Faire
Si (T(I-1) > T(i)) Alors
Permute vrai
Temp T(i-1)
T(i-1) T(i)
T(i) temp
FinSi
FinPour
Jusqu’à (Non(permute))
Fin
- Le Tri par Insertion : le nombre de boucles interne est estimé à n(n-1)/2. Cette
technique est intéressante pour des tableaux ayant été déjà triés mais auxquels
on a rajouté de nouveaux éléments en fin du tableau.
- Page : 100/104 -
LES ALGORITHMES DE TRI – Exercices Proposés –
Exercice 1
Écrivez un algorithme qui permet de saisir un nombre quelconque de valeurs, et qui
les range au fur et à mesure dans un tableau. Une fois la saisie terminée, il doit dire si
les éléments du tableau sont tous consécutifs ou non.
Par exemple, si le tableau est :
12 13 14 15 16 17 18
9 10 11 15 16 17 18
Exercice 2
Écrivez un algorithme qui trie un tableau dans l’ordre décroissant. Vous écrirez bien
entendu deux versions de cet algorithme, l'une employant le tri par insertion, l'autre
le tri à bulles.
Exercice 3
Écrivez un algorithme qui inverse l’ordre des éléments d’un tableau dont on suppose
qu'il a été préalablement saisi (« les premiers seront les derniers… »)
Exercice 4
Écrivez un algorithme qui permet à l’utilisateur de supprimer une valeur d’un
tableau préalablement saisi. L’utilisateur donnera l’indice de la valeur qu’il souhaite
supprimer. Attention, il ne s’agit pas de remettre une valeur à zéro, mais bel et bien
de la supprimer du tableau lui-même ! Si le tableau de départ était :
12 8 4 45 64 9 2
12 8 4 45 9 2
Exercice 5
Écrivez l'algorithme qui recherche un mot saisi au clavier dans un dictionnaire. Le
dictionnaire est supposé être codé dans un tableau préalablement rempli et trié.
- Page : 101/104 -
LES ALGORITHMES DE TRI – Corrigé –
Exercice 1
Algorithme Tab_Cons
Constante N=7
Type Tab_Ent=Tableau[1..N] de Entier
Variable T : Tab_Ent
I : Entier
X : Booléen
Début
Écrire ("Entrez les valeurs :")
Pour I← 1 à N Faire
Lire (T(I))
Fin Pour
XVrai
Pour I ← 1 à N – 1 Faire
Si T(I) <> T(I – 1) + 1 Alors
X ← Faux
Fin Si
Fin Pour
Si X Alors Écrire ("Les nombres sont consécutifs")
Sinon
Écrire ("Les nombres ne sont pas consécutifs")
Fin Si
Fin
Exercice 2
(* Tri Insertion *)
Début
Pour i ← 1à N – 1 Faire
posmaxi I
Pour J ← I + 1 à N – 1 Faire
Si (t(J) > t(posmaxi)) Alors
posmaxi ← j
Fin si
Fin Pour
temp ← t(posmaxi)
t(posmaxi) ← t(I)
t(I) ← temp
Fin Pour
Fin
- Page : 102/104 -
(* Tri à Bulles *)
Début
Yapermut ← Vrai
Tant que Yapermut Faire
Yapermut ← Faux
Pour i ← 1 à N – 1 Faire
Si t(i) < t(i + 1) Alors
temp ← t(i)
t(i) ← t(i + 1)
t(i + 1) ← temp
Yapermut ← Vrai
Fin si
Fin Pour
Fin Tant que
Fin
Exercice 3
On suppose que n est le nombre d’éléments du tableau préalablement saisi
Début
Pour i ← 1 à N/2 Faire
Temp ← T(i)
T(i) ← T(N-i)
T(N-i) ← Temp
Fin Pour
Fin
Exercice 4
Début
Écrire ("Rang de la valeur à supprimer ?")
Lire (S)
Pour i ← S à N-2
T(i) ← T(i+1)
Fin Pour
Fin
Exercice 5
- Page : 103/104 -
Sup ← N - 1
Inf ← 0
Fini ← Faux
Tant Que Non Fini
Comp désigne l'indice de l'élément à comparer. En bonne rigueur, il faudra veiller à
ce que Comp soit bien un nombre entier, ce qui pourra s'effectuer de différentes
manières selon les langages.
Comp ← (Sup + Inf)/2
Si le mot se situe avant le point de comparaison, alors la borne supérieure change, la
borne inférieure ne bouge pas.
Si Mot < Dico(Comp) Alors
Sup ← Comp - 1
(* Sinon, c'est l'inverse *)
Sinon
Inf ← Comp + 1
Fin Si
Fini ← Mot = Dico(Comp) ou Sup < Inf
Fin Tant Que
Si Mot = Dico(Comp) Alors
Écrire ("le mot existe")
Sinon
Écrire ("Il n'’existe pas")
Fin si
Fin
- Page : 104/104 -