Vous êtes sur la page 1sur 17

UNIVERSITÉ IBN ZOHR

Faculté des Sciences Juridiques Économiques et Sociales

Informatique
Travaux dirigés
Algorithmique
Mohamed HACHIMI

SCIENCES ÉCONOMIQUES ET GESTION


MASTER

Semestre 3
Table des matières

1 Notion d’algorithme 3

2 Les Tests 6

3 Les Boucles 8

4 Les tableaux 10

5 Procédures et fonctions 12

6 Les structures 14

7 Les fichiers 16

© FSJES-Agadir 2016 • Algorithmique • Master


1 Notion d’algorithme

Objectifs pédagogiques

Exercice 1.1.
Chaque matin, Nabil va à l’école. Malheureusement en sortant du lit il est encore un peu
endormi et ne sais plus très bien ce qui’il doit faire pour se préparer. Peux-tu aider Nabil
à se préparer ? Découpe et colle dans le bon ordre les étiquettes suivantes (Il y a plusieurs
possibilités).

Exercice 1.2.
Indiquer si les noms de variable suivants sont corrects ou pas

Nom variable Correct(O/N) Nom variable Correct(O/N)


note noteMaths
note De Maths noteDeMaths
notedemaths note_maths
1note note1

Exercice 1.3.
On a déclaré trois variables A, B et C. Complétez le tableau suivant par les valeurs des trois
variables après l’exécution de chaque affectation.

Instructions
Variable
A←2 B ← -1 C←B A←C C←5 B←C C ← -3 A ← B
A 2 2
B (vide) -1
C (vide) (vide)

© FSJES-Agadir 2016 • Algorithmique • Master


1 Notion d’algorithme 4

Exercice 1.4.
Quelles seront les valeurs des variables a et b après exécution de chacun des trois algorithmes
suivants ?
Variables a, b : entier Variables a, b : entier Variables a, b : Chaîne
Début Début Début
a←1 a←5 a ← "20"
b←a+3 b←a+4 b ← "16"
a←3 a←a+1 a←a+b
Fin b←a-4 Fin
Fin
Exercice 1.5.
Quelles seront les valeurs des variables a et b après exécution des instructions suivantes ?

Variables a, b : entier
Début
a←3
b←1
a←b
b←a
Fin
1◦ Les deux dernières instructions permettent-elles d’échanger les deux valeurs de a et b ?
2◦ Si l’on inverse les deux dernières instructions, cela change-t-il quelque chose ?
Exercice 1.6.
Écrire un algorithme permettant d’échanger les valeurs de deux variables a et b, et ce quel que
soit leur contenu préalable. Et enfin d’afficher les deux nouvelles valeurs
Exercice 1.7.
Donner la valeur de X après chaque instruction, sachant que A = 1, B = 2, C = 3 et D = 4

Instruction Valeur de la variable X


X ← (C * A) + (D / B)
X ← C * (A + D) / B
X ← (C * A + D) / B
X ← C * (A + D / B)
X←C*A+D/B

Exercice 1.8.
On veut effectuer le calcul suivant : 35-2x(5x3-1+4). Ecris l’une après l’autre, dans l’ordre les
opérations à effectuer.
1ère opération :. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4ère opération :. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2ème opération :. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5ère opération :. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3ème opération :. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

© FSJES-Agadir 2016 • Algorithmique • Master


1 Notion d’algorithme 5

Exercice 1.9.
Expliquer ce que font les deux algorithmes suivants
Algorithme Double Algorithme Moyenne
Variables a, b : entier Variables note1, note2, note3, Moy : entier
Début Début
Ecrire("Saisir a") Ecrire("Saisir trois notes")
lire(a) lire(note1, note2, note3)
b←a*2 Moy ← (note1 + note2 + note3)/3
Ecrire("Le double de a : ", b) Ecrire("La moyenne est égale à ", Moy)
Fin Fin
Exercice 1.10.
Écrire un algorithme qui permet de lire le prix HT d’un article, le nombre d’articles et le taux
de TVA, et qui affiche à la fin le prix total TTC correspondant. Faire en sorte que les libellés
apparaissent clairement.

Exercice 1.11.
Sachant que le taux de TVA est égal à 20 %, écrire un algorithme qui lit le prix HT d’un article
et le nombre d’articles, et qui affiche à la fin le prix total TTC correspondant. Faire en sorte que
les libellés apparaissent clairement.

Exercice 1.12.
Écrire un algorithme qui permet de lire le montant d’un crédit, sa durée (en mois) et le taux
d’intérêt, et qui affiche à la fin la mensualité et le coût du crédit. Faire en sorte que les libellés
apparaissent clairement.

© FSJES-Agadir 2016 • Algorithmique • Master


2 Les Tests

Objectifs pédagogiques

Exercice 2.1.
Ecrire un algorithme qui demande à l’utilisateur de saisir d’abord un nombre réel, et l’informe
ensuite si ce nombre est positif ou négatif.
Dans cet exercice, on suppose que tout nombre qui n’est pas positif est négatif.

Exercice 2.2.
Ecrire un algorithme qui demande à l’utilisateur de saisir l’utilisateur un entier, et l’informe
ensuite si ce nombre est pair ou impair.

Exercice 2.3.
Ecrire un algorithme qui demande à l’utilisateur de saisir deux entiers. Sans calculer le produit
des deux entiers, l’algorithme doit informer l’utilisateur si leur produit est positif ou négatif.
Dans cet exercice, on suppose que tout nombre qui n’est pas positif est négatif.

Exercice 2.4.
Ecrire un algorithme qui demande à l’utilisateur de saisir trois noms et l’informe ensuite s’ils
sont rangés ou non dans l’ordre alphabétique.

Exercice 2.5.
Ecrire un algorithme qui demande à l’utilisateur de saisir d’abord un nombre réel, et l’informe
ensuite si ce nombre est positif, négatif ou nul.
Dans cet exercice, on prend en considération le cas où le nombre vaut zéro.

Exercice 2.6.
On suppose que les moyennes des étudiants sont arrondi au 0,5. Ecrire un algorithme qui
demande à l’utilisateur de saisir la moyenne d’un étudiant, et l’informe ensuite de sa mention :

– Echec : de 0 à 9,5
– Passable : de 10 à 11,5
– Bien : de 12 à 15,5
– Excellent : de 16 à 20

© FSJES-Agadir 2016 • Algorithmique • Master


2 Les Tests 7

Peux-on concevoir autres algorithmes équivalents menant au même résultat ?

Exercice 2.7.
Ecrire un algorithme qui demande à l’utilisateur de saisir une note d’un étudiant, et teste si elle
est comprise entre 0 et 20.

Exercice 2.8.
Une compagnie de distribution d’eau facture 3,40 Dh les trente premiers mètres cubes (m3 ),
5,80 Dh les vingt suivants et 10,20 Dh au-delà.
Ecrire un algorithme qui demande à l’utilisateur de saisir la quantité d’eau consommée (en m3 )
puis affiche la facture correspondante.

Exercice 2.9.
Une grande surface accorde à ses clients, une réduction de 1 % pour les montants d’achat qui
sont supérieurs ou égales à 1 000 Dh.
Ecrire un algorithme qui demande à l’utilisateur de saisir le montant HT puis calcule et affiche
montant TTC en prenant en compte la réduction et un taux de TVA égal à 20 %.

Exercice 2.10.
Ecrire un algorithme qui demande à l’utilisateur d’entrer le mois et l’année, et détermine le
nombre de jours du mois entré par l’utilisateur.

Exercice 2.11.
Ecrire un algorithme permettant de résoudre une équation du second degré à coefficients réels
sous la forme : ax2 + bx + c = 0.

© FSJES-Agadir 2016 • Algorithmique • Master


3 Les Boucles

Objectifs pédagogiques

Exercice 3.1.
Ecrire un algorithme qui pose la question "Voulez vous quitter ? (O/N)" à laquelle l’utilisateur
doit répondre par O (Oui) ou N (Non) jusqu’à ce que la réponse convienne.
Exercice 3.2.
On veut mettre en place un contrôle de saisie pour vérifier que la note d’un étudiant entrée
au clavier est valide. Pour cela, écrire un algorithme qui demande à l’utilisateur un nombre
compris entre 0 et 20 jusqu’à ce que la réponse convienne.
Exercice 3.3.
Ecrire un algorithme qui demande un nombre compris entre 10 et 20, jusqu’à ce que la réponse
convienne. En cas de réponse supérieure à 20, on fera apparaître un message : " Plus petit ! ",
et inversement, " Plus grand ! " si le nombre est inférieur à 10.
Exercice 3.4.
Ecrire un algorithme qui demande à l’utilisateur de saisir un nombre entier de départ, et qui
ensuite affiche les doubles des dix nombres suivants.
Par exemple, si l’utilisateur entre le nombre 12, le programme affichera les nombres de 26 à 44.
Exercice 3.5.
Soit n un entier naturel. Écrire un algorithme permettant de saisir un nombre entier n et de
calculer sa factorielle n!. On rappelle que : 0! = 1 et n! = 1 × 2 × · · · × n
Exercice 3.6.
Ecrire un algorithme qui demande successivement n nombres à l’utilisateur, et qui lui affiche
ensuite la somme et la moyenne de ces nombres.
Exercice 3.7.
Écrire un algorithme qui affiche à l’écran le rectangle d’étoiles ci-dessous. Chaque ligne con-
tient 16 étoiles. Le nombre de lignes est 4.
****************
****************
****************
****************

© FSJES-Agadir 2016 • Algorithmique • Master


3 Les Boucles 9

Exercice 3.8.
Ecrire un algorithme qui affiche à l’écran le triangle d’étoiles suivant :
*
**
***
****
*****
Exercice 3.9.
Ecrire un algorithme qui reçoit un paramètre n et dessine ensuite n lignes formées d’étoiles
comme l’indique la figure ci-dessous pour n = 5 :
*
***
*****
*******
**********
Exercice 3.10.
1
Ecrire un algorithme qui approxime la valeur de au voisinage de 0 a l’aide de la partie
1−x
entière de son développement limité à l’ordre n :
1
= 1 + x + x2 + · · · + xn + o(xn )
1−x
Exercice 3.11.
Soit (un ) la suite numérique définie par u0 = 0 et un+1 = 2un + 3. Soit Sn la somme des n
premiers termes de la suite (un ) définie par :

Sn = u0 + u1 + u2 + · · · + un−1

Écrire un algorithme qui calcul le terme un et la somme Sn .

© FSJES-Agadir 2016 • Algorithmique • Master


4 Les tableaux

Objectifs pédagogiques

Exercice 4.1.
Ecrire une instruction qui permet de déclarer deux tableaux nommés A et B composé chacun
d’eux de 23 éléments de type entier.

Exercice 4.2.
Ecrire un algorithme qui déclare et remplisse un tableau, nommé Note, de 10 valeurs réelles en
les mettant toutes à zéro.
Exercice 4.3.
On veux faire quelques statistiques sur les notes d’une classe composée de 100 étudiants au
maximum. En utilisant les tableaux, écrire un algorithme qui permet de saisir une liste de n
notes et d’afficher leur moyenne et le nombre des notes supérieures ou égales à 10.

Exercice 4.4.
Cet exercice est du même type que l’exercice précédent. Il s’agit d’écrire un algorithme qui
permet de saisir une liste de n notes et d’afficher le minimum et le maximum de ces notes.

Exercice 4.5.
Que produit l’algorithme suivant ?
Variable Nbres Tableau[1 .. 5] de Entier
i : Entier
Debut
Pour i de 1 a 10
Nbres[i] ← i * i
FinPour
Pour i de 1 a 10
Ecrire(Nbres[i])
FinPour
Fin
Peut-on simplifier cet algorithme avec le même résultat ?

© FSJES-Agadir 2016 • Algorithmique • Master


4 Les tableaux 11

Exercice 4.6.
Que produit l’algorithme suivant ?
Variable Suite Tableau[1 .. 6] de Entier
i, k : Entier
Debut
Suite[1] ← 2
Pour k de 2 a 6
Suite[k] ← Suite[k-1] + 3
FinPour
Pour i de 1 a 6
Ecrire(Suite[i])
FinPour
Fin
Peut-on simplifier cet algorithme avec le même résultat ?

Exercice 4.7.
Ecrire un algorithme qui lit et permute les éléments d’un tableau de 10 éléments en plaçant le
dernier élément en premier et ainsi de suite, voir la figure suivante :

Tableau initial 23 89 41 6 74 92 2 9 65 13

Tableau final 13 65 9 2 92 74 6 41 89 23

Exercice 4.8.
Ecrire un algorithme permettant à l’utilisateur de saisir un nombre quelconque de valeurs, qui
devront être stockées dans un tableau. L’utilisateur doit d’abord déclarer le nombre de valeurs
qu’il compte saisir. Il effectuera ensuite cette saisie. Enfin, l’algorithme affichera la moyenne et
l’écart-type des valeurs saisies.

Exercice 4.9.
Soit un tableau déjà saisi. Ecrire un algorithme permettant à l’utilisateur de supprimer une
valeur du tableau à l’aide de son indice. Noter bien qu’il ne s’agit pas de remettre une valeur à
zéro. Par exemple, le tableau suivant :

23 89 41 6 74 92 2 9 65 13

si on supprime la valeur d’indice 5, on obtient :

23 89 41 6 92 2 9 65 13

Exercice 4.10.
Ecrire un algorithme qui permet la saisie des notes d’une classe de 15 étudiants en 4 matières.
Cet algorithme doit aussi calculer et afficher la moyenne de chaque étudiant, la moyenne de la
classe dans chaque matière et la moyenne générale de la classe.

© FSJES-Agadir 2016 • Algorithmique • Master


5 Procédures et fonctions

Objectifs pédagogiques

Exercice 5.1.
Écrire un algorithme utilisant une procédure qui permet de saisir un nombre entier et d’afficher
un message indiquant si ce nombre est pair ou impair.
Exercice 5.2.
Écrire une procédure qui prend en paramètres un prénom et un âge. La procédure affichera
ensuite un message disant "BONJOUR", PRENOM, puis indiquera s’il s’agit d’un enfant (moins
de 20 ans), d’un adulte (moins de 50 ans), ou d’une personne âgée.
Exercice 5.3.
Ecrire une procédure, nommée Etoiles, qui affiche à l’écran une ligne de 10 étoiles puis passe à
la ligne suivante.
Exercice 5.4.
Ecrire un algorithme qui appelle la procédure Etoiles (voir l’exercice précédent) afin de
dessiner un carré d’étoiles de 10 lignes et 10 colonnes.
Exercice 5.5.
Que font les deux algorithmes suivants ?
Algorithme PassageVal Algorithme PassageRef
Variable n : entier Variable n : entier
Procédure Double(m : entier) Procédure Double(Var m : entier)
Debut Debut
m ← 2 * m m ← 2 * m
Ecrire(m) Ecrire(m)
FinProc FinProc
Debut Debut
n ← 3 n ← 3
Double(n) Double(n)
Ecrire(n) Ecrire(n)
Fin Fin
Expliquer le résultat

© FSJES-Agadir 2016 • Algorithmique • Master


5 Procédures et fonctions 13

Exercice 5.6.
Ecrire un algorithme qui permet à l’utilisateur de choisir dans un menu, la figure géométrique
pour laquelle il veut calculer l’aire. Pour cela, il est souhaitable d’écrire :
— une procédure aireTriangle qui calcule et affiche l’aire d’un triangle
— une procédure aireRectangle qui calcule et affiche l’aire d’un rectangle
— une procédure aireCercle qui calcule et affiche l’aire d’un cercle
— ...
— une procédure GestionChoix qui gère de toutes ces procédures
Prévoir un algorithme principal appelant la procédure GestionChoix qui constituée un menu
de gestion de toutes les autres procédures.
Exercice 5.7.
Écrire une procédure qui calcule le montant des intérêts rapportés par un capital placé à un
taux donné pendant une durée donnée, exprimée en mois.
Exercice 5.8.
Ecrire une fonction booléenne, nommée estAnneeBissextile, qui teste si une année, mise en
paramètre, est bissextile ou non. Par exemple, estAnneeBissextile(2017) renvoie Faux.
Rappel : Une année bissextile est divisible par 4, mais que les années divisibles par 100 ne sont
pas bissextiles, sauf si elles sont divisibles par 400.
Exercice 5.9.
En utilisant la fonction prédéfinie Alea(), écrire une fonction qui renvoie une valeur entière
aléatoire comprise entre deux nombres entiers différents.
Exercice 5.10.
En utilisant des fonction prédéfinies, écrire une fonction qui prend en entrée un réel x et lui
associe Exp(x) si x est négatif et Cos(x) si x est positif.
Exercice 5.11.
On désire effectuer des opérations arithmétiques usuelles sur deux nombres réels. Ecrire une
fonction fOperationsSurReels qui prend en entrée deux réels x, y et affiche à l’utilisateur un
menu pour choisir l’opération qu’il veux. La fonction fOperationsSurReels fait appel :
— à la fonction fMax pour calculer le maximum de deux nombres réels
— à la fonction fSomme pour calculer la somme de deux nombres réels
— à la fonction fRapport pour calculer le rapport de deux nombres réels
— ...
— à une procédure GestionChoix qui affiche le menu et lit le choix de l’utilisateur
Exercice 5.12.
Ecrire une fonction récursive, nommée fFactorielle, permettant de calculer la factorielle d’un
entier positif. Noter que : n! = n × (n − 1)!.

© FSJES-Agadir 2016 • Algorithmique • Master


6 Les structures

Objectifs pédagogiques

Exercice 6.1.
Expliquer ce que font les deux algorithmes suivants :

Type Structure Produit Type Structure Etudiant


Code : chaîne Code : chaîne
Libellé : chaîne Nom : chaîne
Prix : réel Note : réel
Quantité : entier FinStruct
FinStruct Variable Etud1, Etud2 : Etudiant
Variable Prod1, Prod2 : Produit Debut
Debut Etud1.Note ← 16
Prod1.Prix ← 220 Etud2.Note ← 6
Prod2.Code ← "HL1802" Etud2.Note ← Etud1.Note
Ecrire(Prod1.Prix," Dh") Etud1.Note ← Etud2.Note
Fin Fin
Exercice 6.2.
Un compte en banque concerne une personne spécifiée par son nom (une chaîne de caractères),
un numéro de compte (un entier), et un montant (un réel).

1◦ Définir une structure Compte contenant trois champs : nom, numéro, et montant.
2◦ Déclarer deux variables Compte1 et Compte1 de type Compte.
3◦ Ecrire les instructions qui affectent le nom Nabil et le montant 15 000 au Compte1.

Exercice 6.3.
Un nombre complexe est un nombre qui peut s’écrire sous la forme a + b i, où a et b sont des
nombres réels et i un nombre imaginaire tel que i2 = −1. Le nombre a s’appelle la partie réelle
du nombre complexe et le nombre b la partie imaginaire.
Ecrire un algorithme qui lit deux nombres complexes C1 et C2 et qui affiche ensuite leur somme
et leur produit.

© FSJES-Agadir 2016 • Algorithmique • Master


6 Les structures 15

Exercice 6.4.
Un enseignant organise les informations concernant ses étudiants dans une liste identique à la
suivante :
CODE NOM PRENOM AGE MOYENNE
1201 Chafiq Nabil 22 ans 14.50
2615 Afifi Sara 21 ans 13.25
··· ··· ··· ··· ···
4010 Wardi Mounir 24 ans 10.75

L’enseignant veut créer un programme permettant la saisie et le traitement de ces listes sachant
que sa classe comporte au maximum 60 étudiants.
Ecrire un algorithme qui permet de définir une structure qui groupe les informations concer-
nant les étudiants et de remplir la fiche de chaque étudiant de la classe.

Exercice 6.5.
Un enseignant organise les informations concernant ses étudiants dans une liste identique à la
suivante :
CODE NOM PRENOM Né le MOYENNE
1201 Chafiq Nabil 23/12/1995 14.50
2615 Afifi Sara 04/07/1996 13.25
··· ··· ··· ··· ···
4010 Wardi Mounir 28/02/1993 10.75

L’enseignant veut effectuer des opérations sur les dates de naissance de ses étudiants. Aider
l’enseignant à écrire un algorithme qui permet de :

1◦ définir une structure sDate composée de trois champs : Jour, Mois et Année. Ces trois
champs doivent être de type entier.
2◦ définir une structure sEtudiant composée de cinq champs : Code, Nom, Prénom, Né et
Moyenne. Les champs Code, Nom et Prénom doivent être de type chaîne, le champs
Moyenne doit être de type réel, et le champs Né doit être de type sDate.
3◦ saisir et afficher la date d’aujourd’hui et la date de naissance d’un étudiant
4◦ calculer et affichier l’âge de l’étudiant

© FSJES-Agadir 2016 • Algorithmique • Master


7 Les fichiers

Objectifs pédagogiques

Exercice 7.1.
Expliquer ce que font les deux algorithmes suivants :

Variable Prod : chaîne Variable Truc : chaîne


Début Début
Ouvrir "Exo.txt" sur 2 en Ajout Ouvrir "Exo.txt" sur 3 en Lecture
Ecrire(Le nom du produit ?) Tantque Non EOF(3)
Lire(Prod) LireFichier 3, Truc
EcrireFichier 2, Prod Ecrire Truc
Ecrire Prod FinTantQue
Fermer 2 Fermer 3
Fin Fin
Exercice 7.2.
Soient Toto.txt et Tata.txt deux fichiers dont les enregistrements ont la même structure. Ecrire
un algorithme qui recopie tout le fichier Toto dans le fichier Tutu, puis à sa suite, tout le fichier
Tata (concaténation de fichiers).

Exercice 7.3.
On considère un fichier texte nommé Prerequis.txt qui est enregistré sur une unité de stockage
(disque dur, CD-ROM, clé USB,. . . ) et dont le contenu est illustré dans la figure suivante :

Ecrire un algorithme qui permet d’afficher à l’écran, le contenu du fichier Prerequis.txt ligne
par ligne.

© FSJES-Agadir 2016 • Algorithmique • Master


7 Les fichiers 17

Exercice 7.4.
Ecrire un algorithme permettant de créer sur le disque dur un fichier texte nommé Notes.txt
contenant des données organisées dans des enregistrements de longueur fixe, comme il est
illustré dans la figure suivante :

Exercice 7.5.
Pour compléter l’exercice précédent, prévoir une procédure qui ouvre en lecture seule le fichier
Notes.txt et affiche à l’écran son contenu ligne par ligne. Ne pas oublier de fermer le fichier
après l’affichage de son contenu.

© FSJES-Agadir 2016 • Algorithmique • Master

Vous aimerez peut-être aussi