You are on page 1of 22

PRESIDENCE DE LA REPUBLIQUE

---------------------
MINISTERE DE LA PLANIFICATION DU
DEVELOPPEMENT ET DE LA COOPERATION

Institut Africain d’Informatique


Etablissement Inter-Etats d’Enseignement Supérieur
Représentation du Togo (IAI-TOGO)
07 BP 12456 Lomé 07 Tél. : (+228) 22.20.47.00
E-mail : iaitogo@iai-togo.com Site Web: www.iai-togo.tg

Cahier d’exercices
INITIATION A L’ALGORITHMIQUE

Année académique 2022-2023

IAI-TOGO
PLAN DES EXERCICES

Chapitre 1 : STRUCTURES DE DONNEES FONDAMENTALES

I. LES OBJETS

II. LES VARIABLES

IV. LES FICHIERS

Chapitre 2 : COMPOSANTES ELEMENTAIRES DES ALGORITHMES

I. LES STRUCTURES CONDITIONNELLES

II. TABLE DE DECISION

Chapitre 3 : PRINCIPES ALGORITHMIQUES DE TRI DE TABLEAUX

I. TABLEAU A UNE DIMENSION

II. TABLEAU A DEUX DIMENSIONS

Chapitre 4 : PROCEDURES ET FONCTIONS

IAI-TOGO
Chapitre 1 : STRUCTURES DE DONNEES FONDAMENTALES

I. LES OBJETS : entiers, chaîne de caractères

EXERCICE 1
Considérons les fonctions suivantes :

SSCHAINE (« chaîne », « pos », « nombre caractères »)


Extrait dans la chaîne de caractères « chaîne » à partir de la position « pos » de « nombre
caractères ») caractères.

LONGUEUR (« chaîne »)
Donne le nombre de caractères de la chaîne de caractères « chaîne ».
Exemple : LONGUEUR(‘‘Bonjour’’) => 7.

CONCATENATION (+)
« chaîne1 » + « chaîne2 » ajoute la chaîne 2 à la fin de la chaîne1.
Exemple : ‘‘BON’’ + ‘‘JOUR’’ => ‘‘BONJOUR’’.

RANG (« chaîne1 », « chaîne2 », « pos »)


Recherche dans la chaîne de caractères « chaîne1 » la sous chaîne « chaîne2 » à partir de la
position « pos ». Si « chaîne2 » est trouvée la fonction donne en résultat la position de
« chaîne2 » sinon 0.

CODE (« caractère »)
Donne la valeur numérique correspondant au caractère (code ASCII).
Exemple : CODE (‘A’) => 65.

CAR (« nombre »)
Donne le caractère équivalent au « nombre ».
Exemple : CAR (65) => ‘A’.

CVCHAINE (« nombre »)
Transforme la variable ou constante « nombre » de type numérique en variable ou constante
de type chaîne de caractères.

CVNOMBRE (« caractère »)
Transforme la variable ou constante « caractère » contenant une valeur numérique en une
variable ou constante de type numérique.

Effectuons les opérations suivantes :


SSCHAINE (‘‘INFORMATIQUE’’, 2 , 3) = ??

‘‘BONJOUR ’’ + ‘‘LES AMIS’’ = ??

LONGUEUR (‘‘BIENHEUREUSE’’) = ??

IAI-TOGO Page 1 sur 22


RANG (‘‘PROVIDENCE’’, ‘‘VIDE’’, 4) = ??

RANG (‘‘PROVIDENCE’’, ‘‘VIDE’’, 6 ) = ??

CODE (‘A’) = ??

CAR (CODE (‘A’)) = ??

CVCHAINE (8) = ??

CVNOMBRE (‘8’) = ??

EXERCICE 2
Quelles seront les valeurs des variables A, B et C après exécution des instructions suivantes ?

VAR A, B, C : entier VAR A, B, C: entier


DEBUT DEBUT
A←5 A←3
B←3 B ← 10
C←A+B C←A+B
A←2 B←A+B
C←B–A A←C
FIN FIN

EXERCICE 3

Trace d’un programme


Voici un algorithme (qui ne fait rien de très utile, mais ce n’est pas l’objet, ici) :

……
Tanque A<B ou A<C
SI A*2 < C ALORS
B← B – 2
A← A + 2
SINON
A← B
FINSI
C← C – 1
FinTanque
……

IAI-TOGO Page 2 sur 22


Donner la valeur des variables après exécution de la séquence algorithmique si, au départ, ces variables sont
initialisées à :
a) A = 2, B =5, C = 3
b) A = -1, B = 4, C = 6

EXERCICE 4

Avant Opérations Après

Zmémoire 0 Zmémoire Zmémoire + 30

Zmémoire Maths Zmémoire ‘‘Histo’’ + ‘‘Géo’’

Zmémoire Windev Zmémoire ‘‘Mathe’’ + ‘‘matiques’’

Zmémoire EXCEL Zmémoire ‘‘Logiciel’’ + Zmémoire

IAI-TOGO Page 3 sur 22


II. LES VARIABLES

EXERCICE 1
Vous avez à ranger les valeurs 25423587, 9588880124 + 2321214 et 00024 respectivement dans les
variables A, B et C. Définissez la taille mémoire de ces 3 variables.

EXERCICE 2
Soient les variables suivantes : MEM1 de type entier de 4 octets ; MEM2 de type entier de 3 octets ;
MEM3 de type chaîne de caractères de 5 octets et MEM4 de type entier de 5 octets.
Effectuez les opérations suivantes en présentant les zones mémoires en octets :

MEM1 ← 50305
MEM2 ← 503
MEM3 ← ‘‘MELODIE’’
MEM4 ← MEM1 + MEM2

EXERCICE 3

Parmi ces opérations d’affectation (considérées indépendamment les unes des autres), lesquelles
provoqueront des erreurs et pourquoi ?
VAR A, B, C : entier
D : caractère
DEBUT
A ← Sin(A)
B ← Sin(A+B*C)
B ← Sin(A) + Sin(D)
C ← Sin(A/B)
C ← Cos(Sin(A)
FIN

EXERCICE 4
Recherche d’erreurs
Voici un programme qui permet de saisir 365 températures et affiche la moyenne des températures
négatives.
4 erreurs se sont glissées…
Pour chaque erreur, vous préciserez le numéro de la ligne et vous réécrirez la ligne complète, corrigée.

IAI-TOGO Page 4 sur 22


1 programme froid
2 temp, totalneg : réel
3 nbneg, k : entier
4 debut
5 nbneg ← 0
6 totalneg ← 0
7 pour k de 1 à 365
8 afficher "entrer la température du jour n°", i, " : "
9 saisir temp
10 si temp < 0 alors
11 nbneg ← nbneg + 1
12 totalneg ← temp
13 finsi
14 finpour
15 si nbneg = 0 alors
16 afficher "moyenne des valeurs négatives = ", nbneg/totalneg
17 finsi
18 fin

EXERCICE 5

Ecrire un algorithme qui permute la valeur de deux variables. Exemple : Si a = 2 et b = 5, l’algorithme


donnera a = 5 et b = 2.

EXERCICE 6
Ecrire l’algorithme qui demande un nombre à l’utilisateur, puis calcule et affiche le carré de ce
nombre.

EXERCICE 7

Ecrire l’algorithme permettant de calculer la circonférence et la surface d’un cercle. Vous


déterminerez les variables à saisir.

EXERCICE 8

Ecrire l’algorithme qui lit le prix HT (hors taxe) d’un article, le nombre d’articles et le taux de TVA
(taxe sur valeur ajoutée), et qui fournit le prix total TTC (tout taxe compris) correspondant. Faire en
sorte que des libellés apparaissent clairement.

IAI-TOGO Page 5 sur 22


III. LES FICHIERS

EXERCICE 1
Soit un ordinateur qui travaille en mono programmation et dont la mémoire centrale a une capacité
de 128 K (1K = 1024 octets).
Supposons que 36 K de la mémoire centrale soient occupés par les programmes résidents du système
d’exploitation et qu’un programme occupe 76 K de la mémoire centrale quand il s’exécute et que le
fichier qu’il utilise contient 6000 enregistrements de 300 caractères.

1. Calculer la taille de la mémoire centrale en octet.


2. Calculer la taille du fichier.
3. Déterminer en octets la taille de la mémoire centrale disponible par le buffer d’E/S du fichier.
4. Déterminer le facteur de blocage maximum qui peut être choisi.
5. Combien de caractères occupera le buffer ?

EXERCICE 2
Pour des raisons du recensement électoral, la Commission Electorale Nationale Indépendante
(C.E.N.I.) se propose d’éclater le fichier électoral en deux fichiers séquentiels, un pour les électeurs
de sexe masculin et un autre pour les électeurs de sexe féminin.

1. Proposer la description du fichier électeur.


2. Ecrire l’algorithme correspondant sous forme d’organigramme et en langage structuré.

EXERCICE 3
Le service CYBER de l’ONG Jeunesse Pionnière Rurale (JPR) se propose de créer un fichier sur
disque de ses abonnés. Chaque abonné possède un numéro qui l’identifie de façon unique, un nom et
prénom, sa date de naissance, son lieu de naissance, sa profession et son adresse.
Ecrire l’algorithme correspondant.

IAI-TOGO Page 6 sur 22


Chapitre 2 : COMPOSANTES ELEMENTAIRES DES
ALGORITHMES

I. LES STRUCTURES CONDITIONNELLES

EXERCICE 1
Ecrire l’algorithme permettant de calculer et d’afficher le montant de l’impôt d’un employé si son
salaire imposable est supérieur ou égale à 35.000 FCFA. La TCS (Taxe complémentaire sur salaire)
est égale à 125 FCFA si le salaire n’est pas imposable. La valeur de l’impôt est égale à 7% du salaire
imposable.

EXERCICE 2
Ecrire l’algorithme qui récupère deux nombres saisis au clavier et affiche le plus grand des deux.

EXERCICE 3

Ecrire un algorithme qui demande deux nombres à l’utilisateur et l’informe ensuite si leur produit est
négatif ou positif (on laisse de côté le cas où le produit est nul).
NB : Ne pas calculer le produit des deux nombres.

EXERCICE 4

Une compagnie d’assurance calcule le montant de la prime pour un véhicule à partir d’une BASE
égale à 1.000.000 FCFA, et suivant des conditions suivantes :

Risque : Tierce Collision Prime = Base


Tout risque Prime = Base x 1,5

Puissance : 2 à 5 CV Coefficient de 1,00


6 à 8 CV Coefficient de 1,20
9 CV et plus Coefficient de 1,40

Utilisation : Promenade Coefficient de 0,90


Trajet Coefficient de 1,10
Affaire Coefficient de 1,25
Ecrire l’algorithme de calcul des primes d’assurance en langage structuré et sous forme
d’organigramme.

EXERCICE 5
Dans un club de sport, suivant l’âge d’un adhérent, ce dernier est classé dans une catégorie précise.
Ceux qui n’ont pas atteint les 8 ans sont des poussins, ceux qui ont 14 ans et plus sont des cadets, les
autres sont des benjamins.

IAI-TOGO Page 7 sur 22


Ecrire l’algorithme qui permet de saisir un âge et, en fonction de cet âge, affiche la catégorie
correspondante.

EXERCICE 6
A partir de la saisie du prix unitaire d’un produit et de la quantité commandée, afficher le prix à payer
en détaillant le port et la remise sachant que :
Le port est gratuit si le prix des produits est inférieur à 50.000 FCFA. Dans le cas contraire
le port est de 2% du prix des produits.

La remise est de 5% si le prix des produits est supérieur à 20.000 FCFA et inférieur à
100.000 FCFA et de 10% au-delà.

EXERCICE 7

Ecrire un algorithme qui demande l’âge d’un enfant à l’utilisateur et l’informe ensuite de la catégorie
de l’enfant :
”Poussin” de 6 à 7 ans ;
”Pupille” de 8 à 9 ans ;
”Minime” de 10 à 11 ans ;
”Cadet” après 12 ans ;

EXERCICE 8

L’entreprise BON PRIX accorde actuellement des remises en fonction de la catégorie du client. Le
Directeur souhaite encourager les commandes importantes et envisage de modifier ce système en
accordant des remises en fonction du montant de la commande.

On envisage les conditions suivantes :


Si la commande est supérieure ou égale à 1000 000 FCFA : taux de remise de 7 %
Si la commande est comprise entre 500 000 FCFA et 1 000 000 FCFA : taux de remise de 5 %
Si la commande est comprise entre 50 000 FCFA et 500 000 FCFA : taux de remise de 2 %
Si la commande est inférieure à 50 000 FCFA : il n’y a pas de remise

Travail à faire
Ecrire l’algorithme qui permet de calculer la remise et le montant hors taxes d’une commande, en
langage structuré et sous forme d’organigramme.

EXERCICE 9

Ecrire l’algorithme qui à partir d’un menu affiché à l’écran, effectue la somme ou le produit ou la
moyenne de 3 nombres. Nous appelons menu l’association d’un séquentiel aux différents choix
proposés par un programme.

IAI-TOGO Page 8 sur 22


EXERCICE 10
Ecrire un algorithme qui demande un nombre de départ, qui calcule et qui affiche la somme des entiers
jusqu’à ce nombre. Par exemple, si l’on entre 5, le programme doit calculer : 1 + 2 + 3 + 4 + 5 = 15.

EXERCICE 11
Ecrire un algorithme qui demande un nombre, et qui calcule sa factorielle.
NB : la factorielle de 8, notée 8 ! vaut 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8.

EXERCICE 12

Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la réponse
convienne. Dans le cas où le nombre est supérieure à 20, on fera apparaitre un message : « Plus
petit ! » et inversement, « Plus grand ! » si le nombre est inférieur à 10.

EXERCICE 13
Ecrire l’algorithme qui permet de saisir un entier strictement positif (on ne vous demande pas de contrôler la
saisie) et d’afficher sa factorielle.
Comment obtenir la factorielle d’un entier ? En multipliant cet entier avec tous les entiers positifs qui le
précèdent.
Par exemple :
• la factorielle de 5 c’est 5* 4 * * 2 * 1 = 120
• la factorielle de 8 c’est 8*7*6**4**2*1 = 40320

EXERCICE 14
Ecrire l’algorithme qui permet de saisir une phrase au rythme d’un caractère à la fois et qui, au final, affiche
le nombre de voyelles contenues dans la phrase. La phrase ne contient qu’un seul point final qui d’ailleurs
marquera la fin de la saisie. Les voyelles sont : a, e, i, o, u.

EXERCICE 15
Ecrire l’algorithme qui permet de saisir des notes pour afficher, au final, la moyenne ainsi que la note la plus
basse et la note la plus haute.
Pour chaque note saisie, il faudra contrôler qu’elle se situe bien entre 0 et 20. Dans le cas contraire, la saisie
sera redemandée. Entre chaque saisie, on posera la question à l’utilisateur : « Voulez-vous continuer ? (O/N)
», et on arrêtera la saisie lorsque l’utilisateur aura répondu « N ». Là encore, il faudra contrôler la saisie. Si
l’utilisateur saisit un autre caractère que « O » ou « N », il faudra recommencer la saisie de la réponse.

IAI-TOGO Page 9 sur 22


II. TABLE DE DECISION

EXERCICE 1
Un gestionnaire de stock voudrait répondre à des commandes qui arrivent à son niveau. Les règles de
gestion suivantes sont appliquées dans la gestion de stock de sa société.

Première condition : si la quantité à livrer est inférieure ou égale à la quantité en stock, la


commande est livrée.
Deuxième condition : si la quantité en stock déduite de la quantité à livrer est inférieure ou
égale au seuil minimum, le réapprovisionnement est ordonné.

Ecrire l’algorithme correspondant à partir d’une table de décision élaborée à cet effet.

EXERCICE 2

Un étudiant doit, pour valider une UV (unité de valeur), subir deux évaluations (devoir et partiel). La
moyenne à une UV est calculée en prenant 40% des notes de devoir et 60% des notes d’examen.
L’étudiant réussit s’il obtient une moyenne générale supérieure ou égale à 10 et qu’il n’ait obtenu
aucune note inférieure ou égale à 7 dans aucune des UV.
A partir d’une table de décision, écrire l’algorithme permettant d’afficher la décision finale (on se
limitera à deux UV).

EXERCICE 3
Soit l’exemple de l’occupation de la journée de Nicolas ; si Jacques et André viennent chez Nicolas,
ils iront dehors en cas de beau temps et resteront dedans à jouer aux cartes s’il pleut. Si André ne
vient pas, Nicolas jouera aux échecs, de même, s’il se trouve seul avec son ami André. Si Nicolas se
trouve tout seul et qu’il pleut, il en profitera pour lire un livre. Si Nicolas est seul et qu’il fait beau
temps, il ira se promener en forêt.
Elaborer la table de décision correspondant.

IAI-TOGO Page 10 sur 22


Chapitre 3 : PRINCIPES ALGORITHMIQUES DE TRI DE
TABLEAUX

I. TABLEAU A UNE DIMENSION

EXERCICE 1
Soit un tableau T de n entiers, donner la valeur du plus grand élément de T ainsi que l’indice de la
première occurrence de ce maximum.

Méthode : l’idée est d’initialiser MAXIMUM avec la valeur du premier élément de T puis de le
comparer successivement avec chaque élément en affectant la valeur de ce dernier à MAXIMUM
lorsqu’il est plus grand.

EXERCICE 2
Il vous est demandé d’écrire un algorithme qui permet :
De ranger les moyennes de 40 étudiants dans un vecteur appelé Tabmoy ;
De déterminer la moyenne la plus élevée ainsi que son indice ;
De déterminer la moyenne la plus faible ainsi que son indice ;
De calculer et d’afficher la somme des moyennes ainsi que la moyenne générale de la classe,
De faire le tri croissant du vecteur.

Chaque étape est indépendante.

EXERCICE 3
Soit un vecteur contenant le nombre de livres des UV (unité de valeur) enseignées à l’IAI-Togo, triées
par ordre alphabétique. Le vecteur contient 53 cases au total. Le responsable de la bibliothèque
voudrait ajouter une nouvelle UV. Ecrire l’algorithme correspondant.

EXERCICE 4
Ecrire un algorithme permettant, à l’utilisateur de saisir les notes d’une classe. Le programme, une
fois la saisie terminée, renvoie le nombre de ces notes supérieures à la moyenne de la classe.

EXERCICE 5
Ecrire un algorithme qui affiche uniquement les valeurs strictement positives contenues dans un
tableau d’entiers de 20 cases déjà complètement rempli (t_val[1..20] : entier).

EXERCICE 6
Ecrire un algorithme qui permet de supprimer un élément d’un tableau.

IAI-TOGO Page 11 sur 22


EXERCICE 7
Ecrire un algorithme qui permet de trier par ordre croissant les éléments d’un tableau.

EXERCICE 8
Vous avez à votre disposition les déclarations suivantes (que vous n’avez pas à réécrire) :

partition[1..500] : entier // contient une succession de notes représentant une

partition taille : entier // nombre de lignes effectivement remplies dans partition

note[1..7] : chaine // contient les noms des notes de musique (1 : Do, 2 : Ré…)

Le vecteur partition va contenir les numéros des notes jouées d’une partition de musique. Chaque
numéro correspond à une note dans le vecteur note (donc, pour trouver le nom correspondant au
numéro, il faut aller le chercher dans le vecteur note).

Ecrire un algorithme qui permet d’afficher, pour chaque note existante, sa fréquence d’apparition
dans la partition. Il faut donc compter le nombre d’apparition de chacune des 7 notes existantes.
Attention, Il faudra afficher le nom de la note (et non son numéro) suivi de la fréquence d’apparition.
Par exemple :
Do : 23
Ré : 12

EXERCICE 9
Ecrivez un algorithme permettant à l’utilisateur de saisir un nombre quelconque de valeurs, qui
devront être stockées dans un tableau. L’utilisateur doit donc commencer par entrer le nombre de
valeurs qu’il compte saisir. Il effectuera ensuite cette saisie. Enfin, une fois la saisie terminée, le
programme affichera le nombre de valeurs négatives et le nombre de valeurs positives.

EXERCICE 10
Ecrivez un algorithme calculant la somme des valeurs d’un tableau (on suppose que le tableau a été
préalablement saisi).

EXERCICE 11

Ecrivez un algorithme constituant un tableau, à partir de deux tableaux de même longueur


préalablement saisis. Le nouveau tableau sera la somme des éléments des deux tableaux de départ.
Tableau 1 :

4 8 7 9 1 5 4 6

Tableau 2 :

IAI-TOGO Page 12 sur 22


7 6 5 2 1 3 7 4

Tableau à constituer:

11 14 12 11 2 8 11 10

IAI-TOGO Page 13 sur 22


II. TABLEAU A DEUX DIMENSIONS

EXERCICE 1
Lors de vos activités, votre patron vous propose de lui concevoir un tableau comportant des montants
relatifs aux différents travaux effectués par des entrepreneurs sur une période se rapportant aux six
premiers mois de l’année.

A cet effet, il est intéressé par les moyennes des montants par entrepreneur afin de pouvoir établir un
budget en conséquence. Il est en relation d’affaires avec 110 entrepreneurs. Dans la perspective d’une
future informatisation des activités de sa société, le patron vous demande de lui concevoir un
algorithme traduisant ce traitement. (Les entrepreneurs occupent les lignes tandis que les mois les
colonnes.)

EXERCICE 2
Écrire un algorithme « filtre_pair » qui parcourt un tableau [4,4] de nombres et qui remplace les
nombres impairs du tableau par 0. Par exemple, [1, -2, -3, 4, 6, 7, -5] donnera [0, -2,
0, 4, 6, 0, 0] .

On fera saisir les nombres du tableau, puis afficher les éléments du tableau obtenu.

EXERCICE 3
Soit la phrase de Molière, (Le bourgeois gentilhomme) « Belle Marquise vos beaux yeux d ’amour
me font rêver ».
Trouver les différentes façons d’écrire cette phrase.
Exemples
« Belle Marquise d’amour vos beaux yeux me font rêver »
« Belle Marquise rêver vos beaux yeux d’amour me font »
………
………
Méthodologie : Vous découpez la phrase en cinq groupes
Belle Marquise | vos beaux yeux | d’amour | me font | rêver.
Chaque groupe constitue un des éléments du tableau à une dimension. Puis vous « permutez
virtuellement » ces éléments. La permutation virtuelle consiste lors de l’affichage à adresser
différemment les éléments du tableau à l’aide de leurs indices respectifs. Vous devez utiliser des
boucles imbriquées.
L’exemple suivant, dont vous pouvez vous inspirez, effectue toutes les permutations de trois lettres.
Toutefois, il manque dans cet exemple une instruction qu’on vous de demande de déterminer.

IAI-TOGO Page 14 sur 22


ALGO Solution
Var t3 : tableau de chaîne
k , j, m : entier
Début

t [1] : = ‘‘A’’
t [2] : = ‘‘B ’’
t [3] : = ‘‘ C’’
Pour k de 1 à 3
Pour j de 1 à 3
Si (j <> k) alors
Pour m de 1 à 3
/* Instruction nécessaire à rajouter */
Afficher t[ k ], t[ j ], t[ m ]
Fin Pour
Fin si
Fin pour
Fin pour
Fin

EXERCICE 4
Un carré magique est un carré rempli de nombres qui, lorsque l’on en fait la somme sur chaque ligne,
colonne ou diagonale, donne le même résultat. Pour simplifier le travail nous ne considérerions ici
que des carrés d’ordre impair. Ecrire un programme qui teste si un carré est magique.

Exemple de carré d’ordre 3 : 816


357
492

EXERCICE 5
Soit un tableau T à deux dimensions (12, 8) préalablement rempli de valeurs numériques. Écrire un
algorithme qui recherche la plus grande valeur au sein de ce tableau

EXERCICE 6
Écrivez un algorithme remplissant un tableau de 6 sur 13, avec des zéros.

IAI-TOGO Page 15 sur 22


Chapitre 4 : PROCEDURES ET FONCTIONS

EXERCICE 1
Ecrire une fonction ou procédure qui calcule la partie entière d’un nombre positif.

EXERCICE 2
Trace d’un programme appelant un module :
fonction calcul (E a:entier, E/S b:entier): entier

c : entier
debut
b ← 3 * b
a ← a div 2
c ← a - b
retourner (a + b + c)
fin

programme serarien
a, b, c : entier
debut
a ← 2
b ← calcul (3, a)
c ← calcul (b, a)
afficher a, b, c
fin

Donner l’état des variables a, b et c du programme serarien en fin d’exécution de ce programme.


Vous préciserez l’état intermédiaire des variables après chaque ligne d’exécution du programme
serarien. Inutile cependant de détailler l’évolution des variables dans la fonction.

EXERCICE 3
Odyssée Voyages affrète un avion de 150 places pour le transport des passagers. C’est la période des
grandes vacances où les demandes de réservation sont très fortes.

1- Vous êtes informaticien à Odyssée Voyages et on vous demande d'analyser le problème en


représentant l'appareil par un vecteur de dimension 150, permettant la réservation et
l'annulation des places, ainsi que la consultation du nombre et des numéros de places
disponibles.

IAI-TOGO Page 16 sur 22


2- Ecrire l'algorithme. L'utilisation des procédures est fortement recommandée.

EXERCICE 4
Voici une procédure et un algorithme qui exploite cette procédure :
//--- permet de contrôler si un nombre est pair –
procedure pair (E a:entier, S b:booleen)
debut
b ← vrai
si a mod 2 <> 0 alors
b ← faux
finsi
fin

//--- séquence permettant de forcer la saisie d’un nombre pair --


...
repeter
saisir nb
pair (nb, estpair)
jusqu’à estpair
...

a) Préciser le nom et le type des variables qu’il faudra déclarer en local du programme principal (donc
de l’algorithme).
b) Transformer la procédure en fonction de façon la plus optimisée possible.
c) Réécrire le plus simplement possible l’algorithme pour qu’il marche avec votre fonction.

EXERCICE 5
Soit un tableau Tab_Parcelle comportant X lignes et Y colonnes. Les X correspondent aux quatre (4)
trimestres de l’année et les Y correspondent aux 152 parcelles d’une zone. Le tableau contient les
cotisations des quatre (4) trimestres de chaque parcelle.

Travail à faire
1. Ecrire un algorithme permettant de parcourir tout le tableau, de faire la somme de toutes les
cotisations et d’afficher à la fin du traitement la somme totale calculée ainsi que le montant le
plus élevé des cotisations.

2. Ecrire une fonction permettant de vérifier dans le tableau si oui ou non une cotisation a été
versée pour une parcelle de rang I d’un trimestre de rang J.

IAI-TOGO Page 17 sur 22


EXERCICE 6
Ecrire la fonction qui reçoit 2 paramètres entiers (un nombre entier positif et un chiffre) et qui doit
retourner la fréquence d’apparition de ce chiffre dans le nombre.
Par exemple, si la fonction reçoit 3832 et le chiffre 3, elle retournera 2 car le chiffre 3 apparaît 2 fois
dans le nombre 3832.
On part du principe que les informations reçues en paramètre sont obligatoirement correctes (le
nombre est bien un entier positif, et le 2e paramètre est bien un chiffre, donc entre 0 et 9). Vous
n’avez donc pas de contrôle à faire.
Rappelez-vous que vous avez à votre disposition les opérateurs div et mod :
• a div b donne le résultat de la division entière de a par b (exemple : 15 div 6 donne 2) ;
• a mod b donne le reste de la division entière de a par b (exemple : 15 mod 6 donne 3).

EXERCICE 7
La justification d’une ligne représente l’affichage de la ligne en supprimant les espaces en fin de
ligne. Cette suppression est compensée par un ajout d’espaces entre les mots de façon à équilibrer
l’espacement entre les mots de la ligne. Dans tous les cas, la ligne doit commencer et finir par un
caractère autre qu’un espace.
Un vecteur Ligne de 80 cases (chaque case contenant un seul caractère) est rempli de caractères
alphabétiques et d’espaces (un seul espace pour séparer chaque mot). Le vecteur contient ainsi une
phrase : il commence obligatoirement par un mot (donc un caractère en première case), et n’est pas
forcément entièrement rempli. La variable nbCarac contient le nombre de cases remplies dans Ligne
(sachant que la dernière case remplie contient aussi obligatoirement un caractère, donc la fin d’un
mot).
Exemple de contenu de Ligne (sur 20 cases pour simplifier l’exemple) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
J E F A I S U N A L G O
nbCarac = 15
Ecrire l’algorithme qui affiche le contenu de Ligne mais en mode justifié (sur 80 positions).
Exemple d’affichage justifié correspondant (toujours sur 20 cases pour simplifier l’exemple) :
J E F A I S U N A L G O
On prendra pour hypothèse que l’ordre algorithmique « affiche » permet d’afficher une information
sans faire de retour à la ligne. Donc si vous écrivez par exemple :

Affiche ‘A’
Affiche ‘ ‘
Affiche ‘B’
Vous obtiendrez comme résultat à l’écran (sur la même ligne) :
A B

IAI-TOGO Page 18 sur 22


EXERCICE D’APPLICATION
Dans l’algorithme de tri de trois nombres, nous pouvons utiliser la notion d’action nommée chaque
fois que l’on effectue des permutations. Nous décomposons alors l’algorithme en quatre modules.
ALGO ordonne_trois_ nombres
VAR globales v1, v2, v3, Tampon : réel
DEBUT
Afficher ‘‘ entrer le 1er nombre : ’’
Saisir v1
Afficher ‘‘ entrer le 2ème nombre : ’’
Saisir v2
Afficher ‘‘ entrer le 3ème nombre :’’
Saisir v3
Si v1 > v2 alors
Permute1 /* Appel de procédures*/
Fin si
Si v3 < v2 alors
Si v3 < v1 alors
Permute2 /* Appel de procédures*/
Sinon
Permute3 /* Appel de procédures*/
Fin si
Fin si
Afficher ‘‘ voici les nombres dans l’ordre croissant : ’’, v1, v2, v3
FIN

Procédure permute1 /* déclaration de procédure (v1v2) */


Début
Tampon := v1
V1 := v2
V2 := Tampon
Fin

Procédure permute2 /* déclaration de procédure (v1v3_v3v2) */


Début
Tampon := v1
V1 := v3
V3 := v2
V2 := Tampon
Fin
Procédure permute3 /* déclaration de procédure (v2v3) */
Début
Tampon := v2
V2 := v3
V3 := Tampon
Fin

IAI-TOGO Page 19 sur 22


Remarques
Pour indiquer que les variables de la partie principale de l’algorithme sont utilisables dans les actions
nommées, elles sont précédées dans la partie déclarative du mot « globale ». Les variables sont
globales dans la mesure où elles sont utilisables dans l’ensemble des parties constitutives de
l’algorithme.

Le découpage en actions nommées nous permet de réduire la taille de l’algorithme initial, voir même
d’en simplifier l’écriture en repoussant aux niveaux des actions nommées les problèmes liés aux
permutations. Voilà déjà un premier avantage des actions nommées, caractéristiques de la
programmation structurée : décomposer (ou diviser) pour mieux régner !
Mais il ne s’agit que d’un avantage mineur, par rapport à ce que l’on peut attendre des actions
nommées. Observons attentivement les trois actions nommées :

L’action permute1 permet de permuter v1 et v2


L’action permute2 permet de permuter v1 et v3, v2 et v3
L’action permute3 permet de permuter v2 et v3

L’action commune à chacune de ces actions nommées est la permutation de deux nombres. Imaginons
une action nommée générique à laquelle il suffit de communiquer les variables à permuter et qui
retourne après traitement les variables permutées. Ce concept est nommé action paramétrée ou
procédure paramétrée. Notre problème se résume alors à l’algorithme suivant :

Algo ordonne_ trois_ nombres Procédure permute (a , b : réel)


Var v1, v2, v3: réel Var Tampon: entier
Début Début
Afficher ‘‘ entrer le 1er nombre :’’ Tampon := a
Saisir v1 a := b
Afficher ‘‘ entrer le 2 nombre : ’’
ème b := Tampon
Fin
Saisir v2
Afficher ‘‘ entrer le 3ème nombre : ’’
Saisir v3
Si v1 > v2 alors
Permute (v1 , v2)
Fin si
Si v3 < v2 alors
Si v3 < v1 alors
Permute (v1, v3)
Fin si
Permute (v2, v3)
Fin si
Afficher ‘‘ voici les nombres dans l’ordre croissant : ’’, v1, v2, v3
Fin

IAI-TOGO Page 20 sur 22

You might also like