Professional Documents
Culture Documents
Cahier Exercice - Algo - 2022-2023 - Actualisé
Cahier Exercice - Algo - 2022-2023 - Actualisé
---------------------
MINISTERE DE LA PLANIFICATION DU
DEVELOPPEMENT ET DE LA COOPERATION
Cahier d’exercices
INITIATION A L’ALGORITHMIQUE
IAI-TOGO
PLAN DES EXERCICES
I. LES OBJETS
IAI-TOGO
Chapitre 1 : STRUCTURES DE DONNEES FONDAMENTALES
EXERCICE 1
Considérons les fonctions suivantes :
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’’.
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.
LONGUEUR (‘‘BIENHEUREUSE’’) = ??
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 ?
EXERCICE 3
……
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
……
EXERCICE 4
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.
EXERCICE 5
EXERCICE 6
Ecrire l’algorithme qui demande un nombre à l’utilisateur, puis calcule et affiche le carré de ce
nombre.
EXERCICE 7
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.
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.
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.
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.
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 :
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.
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.
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.
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.
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é.
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.
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.
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.
EXERCICE 8
Vous avez à votre disposition les déclarations suivantes (que vous n’avez pas à réécrire) :
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
4 8 7 9 1 5 4 6
Tableau 2 :
Tableau à constituer:
11 14 12 11 2 8 11 10
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.
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.
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.
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
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.
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
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.
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
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 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 :