Académique Documents
Professionnel Documents
Culture Documents
Mourad BOUTAHIR
2019/2020
1
Définitions
⚫ Un algorithme est une suite de raisonnements ou d'opérations qui
fournit la solution de certains problèmes.
2
Représentation d’un algorithme
Historiquement, deux façons pour représenter un algorithme:
3
Représentation d’un algorithme
• Le pseudo-code:
représentation textuelle Variables N1,N2,max: réel
Avec une série de conventions DEBUT
Ecrire("Tapez le premier nombre:")
ressemblant Lire(N1)
à un langage de programmation Ecrire("Tapez le deuxième nombre:")
(sans les problèmes Lie(N2)
de syntaxe) Si(N1>N2) alors
max=N1
• plus pratique pour écrire Sinon max= N2
un algorithme fin si
• représentation Ecrire("Le plus grand nombre est: " , max)
largement utilisée FIN
4
STRUCTURE D'UN ALGORITHME
La structure d’un algorithme est composée d'une entête et d'un corps.
Instruction n
Délimité par
Fin
Début et Fin
Notion de variable
⚫ Une variable désigne en fait un emplacement mémoire dont le
contenu peut changer au cours d’un programme (d’où le nom
variable)
7
Déclaration des variables
⚫ Exemple:
Variables i, j,k : entier
x, y : réel
OK: booléen
ch1, ch2 : chaîne de caractères
8
L’instruction d’affectation
⚫ l’affectation consiste à attribuer une valeur à une variable
(ça consiste en fait à remplir où à modifier le contenu d'une zone mémoire)
9
L’instruction d’affectation
Exemple:
Variables i, j,k : entier
x, y : réel
OK: booléen
ch1, ch2 : chaîne de caractères
10
Quelques remarques
11
échanger deux valeurs
nb <- 10
Exemple : Instruction d’écriture
17
Exercice (lecture et écriture)
Que seront les valeurs des variables a et b après l'exécution des
instructions suivantes :
Variable a, b : Entier
Début
a←5
b←a+4
a←a+1
b←a-4
Fin
18
Exercice (lecture et écriture)
Quels seront les valeurs des variables a, b et c après l'exécution
des instructions suivantes :
Variable a, b, c : Entier
Début
a←1
b←2
c←a+b
Fin
19
Exercice (lecture et écriture)
Que seront les valeurs des variables a,b et c après l'exécution des
instructions suivantes :
Variable a, b, c : Entier
Début
a←3
b ← 10
c←a+b
b←a+b
a←c
Fin
20
Exercice (lecture et écriture)
Que seront les valeurs des variables a,b et c après l'exécution des
instructions suivantes :
Variable a, b, c : Entier
Début
a←3
b ← 10
c←a+b
b←a+b
a←c
Fin
21
Exercice
Ecrire un algorithme qui demande un nombre entier à l'utilisateur, puis
qui calcule et affiche le double de ce nombre
Algorithme Calcul_double
variables A, B : entier
Début
écrire("entrer le nombre ")
lire(A)
B ← 2*A
écrire("le double de ", A, "est :", B)
Fin
22
Exercice (lecture et écriture)
Ecrire un algorithme qui vous demande de saisir votre nom puis
votre prénom et qui affiche ensuite votre nom complet
Algorithme AffichageNomComplet
variables Nom, Prenom, Nom_Complet : chaîne de caractères
Début
écrire("entrez votre nom")
lire(Nom)
écrire("entrez votre prénom")
lire(Prenom)
Nom_Complet ← Nom & Prenom
écrire("Votre nom complet est : ", Nom_Complet)
Fin
23
Exercice
Écrire un algorithme permettant de permuter le contenu de deux
variables a et b, quelque soit le type.
24
25
Exercice
Ecrire un programme qui lit le prix HT d’un article, le nombre d’articles et le taux de TVA, et
qui fournit le prix total TTC correspondant. Faire en sorte que des libellé s apparaissent
clairement. (TTC=NA*HT*(1+TVA))
27
Tests: instructions conditionnelles (2)
⚫ La partie Sinon n'est pas obligatoire, quand elle n'existe pas et que
la condition est fausse, aucun traitement n'est réalisé
Si condition alors
instruction ou suite d'instructions1
Finsi
28
Exemple (Si…Alors…Sinon)
Algorithme AffichageValeurAbsolue (version1)
Variable x : réel
Début
Ecrire (" Entrez un réel : “)
Lire (x)
Si (x < 0) alors
Ecrire ("la valeur absolue de ", x, "est:",-x)
Sinon
Ecrire ("la valeur absolue de ", x, "est:",x)
Finsi
Fin
29
Exemple (Si…Alors)
Algorithme AffichageValeurAbsolue (version2)
Variable x,y : réel
Début
Ecrire (" Entrez un réel : “)
Lire (x)
y← x
Si (x < 0) alors
y ← -x
Finsi
Ecrire ("la valeur absolue de ", x, "est:",y)
Fin
30
Exercice (tests)
Ecrire un algorithme qui demande un nombre entier à l'utilisateur,
puis qui teste et affiche s'il est divisible par 3
Algorithme Divsible_par3
Variable n : entier
Début
Ecrire " Entrez un entier : "
Lire (n)
Si (n%3=0) alors
Ecrire (n," est divisible par 3")
Sinon
Ecrire (n," n'est pas divisible par 3")
Finsi
Fin
31
Tests imbriqués
⚫ Les tests peuvent avoir un degré quelconque d'imbrications
Si condition1 alors
Si condition2 alors
instructionsA
Sinon
instructionsB
Finsi
Sinon
Si condition3 alors
instructionsC
Finsi
Finsi
32
Tests imbriqués: exemple (version 1)
Variable n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si (n < 0) alors
Ecrire ("Ce nombre est négatif")
Sinon
Si (n = 0) alors
Ecrire ("Ce nombre est nul")
Sinon
Ecrire ("Ce nombre est positif")
Finsi
Finsi
Fin
33
Tests imbriqués: exemple (version 2)
Variable n : entier
Début
Ecrire ("entrez un nombre : ")
Lire (n)
Si (n < 0) alors Ecrire ("Ce nombre est négatif")
Finsi
Si (n = 0) alors Ecrire ("Ce nombre est nul")
Finsi
Si (n > 0) alors Ecrire ("Ce nombre est positif")
Finsi
Fin
Remarque : dans la version 2 on fait trois tests systématiquement alors que
dans la version 1, si le nombre est négatif on ne fait qu'un seul test
Conseil : utiliser les tests imbriqués pour limiter le nombre de tests et placer
d'abord les conditions les plus probables
34
Tests imbriqués: exercice
Le prix de photocopies dans une reprographie varie selon le
nombre demandé: 0,5 DH la copie pour un nombre de copies
inférieur à 10, 0,4DH pour un nombre compris entre 10 et 20 et
0,3DH au-delà.
35
Tests imbriqués: corrigé de l'exercice
Variables copies : entier
prix : réel
Début
Ecrire ("Nombre de photocopies : ")
Lire (copies)
Si (copies < 10) Alors
prix ← copies*0.5
Sinon Si (copies< 20)
prix ← copies*0.4
Sinon
prix ← copies*0.3
Finsi
Finsi
Ecrire (“Le prix à payer est : ”, prix)
Fin
36
Conditions composées
⚫ Une condition composée est une condition formée de plusieurs
conditions simples reliées par des opérateurs logiques:
ET, OU, OU exclusif (XOR) et NON
⚫ Exemples :
• x compris entre 2 et 6 : (x > 2) ET (x < 6)
• n divisible par 3 ou par 2 : (n%3=0) OU (n%2=0)
37
Tables de vérité
C1 C2 C1 ET C2 C1 C2 C1 OU C2
VRAI VRAI VRAI VRAI VRAI VRAI
VRAI FAUX FAUX VRAI FAUX VRAI
FAUX VRAI FAUX FAUX VRAI VRAI
FAUX FAUX FAUX FAUX FAUX FAUX
C1 C2 C1 XOR C2 C1 NON C1
VRAI VRAI FAUX VRAI FAUX
VRAI FAUX VRAI FAUX VRAI
FAUX VRAI VRAI
FAUX FAUX FAUX
38
Tests: L’instruction cas
Lorsque l’on doit comparer une même variable avec plusieurs
valeurs, comme par exemple :
si (a=1) alors
faire une chose
Sinon si a=2 alors
faire une autre chose
Sinon si a=4 alors
faire une autre chose
sinon
...
Finsi
Syntaxe :
selonque
v1 : action1
v2 : action2
...
vn : actionn
autre : action autre
finselonque
v1, . . . , vn sont des constantes de type scalaire (entier, caractère … )
Action i est exécutée si v = vi (on quitte ensuite l’instruction cas)
Algorithme Deux_Nombres_Etre_25_75
Variable A,B: Entiers
Début
Ecrire ("Entrez deux nombres A et B:")
Lire(A,B)
Si (A < 75 ET A > 25) ET (B < 75 ET B > 25) Alors
Ecrire (" Ces deux nombres compris entre 25 et 75”)
Finsi
Fin
Exercice2-e
Écrire un algorithme qui lit trois nombres et dit s'ils sont dans l'ordre croissant.
Exercice2-e
Algorithme Ordre_Croissant
Variable A,B,C: Entiers
Début
Ecrire ("Entrez 3 nombres A, B et C:")
Lire(A,B,C)
Si (A < B ET B < C) Alors
Ecrire(" Ces nombres sont dans l’ordre croissant”)
Sinon
Ecrire("Ces nombres ne sont pas dans l’ordre croissant”)
Finsi
Fin
Exercice2-f
Modifier l'algorithme de la question 1-2 pour qu'il affiche l'une des mentions
suivantes en
fonction de la moyenne :
entre 0 et 9 : Insuffisant entre 13 et 16 : Bien
63
Les boucles Tant que
TantQue (condition)
instructions condition Vrai instructions
FinTantQue Faux
65
Boucle Tant que : exemple
Un algorithme qui détermine le premier nombre entier N tel que la
somme de 1 à N dépasse strictement 100
version 1
Variables som, i : entier
Debut
i←0
som← 0
TantQue (som <=100)
i ← i+1
som ← som+i
FinTantQue
Ecrire (" La valeur cherchée est N= ", i)
Fin
66
Boucle Tant que : exemple (version2)
Un algorithme qui détermine le premier nombre entier N tel que la
somme de 1 à N dépasse strictement 100
instructions instructions
Jusqu'à condition
Faux
condition
Vrai
⚫ Condition est évaluée après chaque itération
68
Boucle Répéter jusqu’à : exemple
Un algorithme qui détermine le premier nombre entier N tel que la somme de 1
à N dépasse strictement 100 (version avec répéter jusqu'à)
69
Les boucles Pour
Pour compteur allant de initiale à finale par pas valeur du pas
instructions
FinPour
i ←initiale
Vrai
i n'a pas atteint finale instructions i ← i + pas
Faux
70
Les boucles Pour
⚫ Remarque : le nombre d'itérations dans une boucle Pour est connu
avant le début de la boucle
⚫ Compteur est une variable de type entier (ou caractère). Elle doit
être déclarée
⚫ Pas est un entier qui peut être positif ou négatif. Pas peut ne pas
être mentionné, car par défaut sa valeur est égal à 1. Dans ce cas, le
nombre d'itérations est égal à finale - initiale+ 1
71
Boucle Pour : exemple1
Calcul de x à la puissance n où x est un réel non nul et n un
entier positif ou nul
Variables x, puiss : réel
n, i : entier
Debut
Ecrire (" Entrez la valeur de x ")
Lire (x)
Ecrire (" Entrez la valeur de n ")
Lire (n)
puiss ← 1
Pour i allant de 1 à n
puiss← puiss*x
FinPour
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
72
Boucle Pour : exemple1 (version 2)
Calcul de x à la puissance n où x est un réel non nul et n un entier
positif ou nul (version 2 avec un pas négatif)
FinPour
puiss ← 1
i←1
TantQue (i<=n)
puiss← puiss*x
i ← i+1
FinTantQue
Ecrire (x, " à la puissance ", n, " est égal à ", puiss)
Fin
75
Boucles imbriquées
⚫ Les instructions d'une boucle peuvent être des instructions
itératives. Dans ce cas, on aboutit à des boucles imbriquées
⚫ Exemple: Exécution
Pour i allant de 1 à 5 OX
Pour j allant de 1 à i OOX
écrire("O") OOOX
FinPour OOOOX
écrire("X") OOOOOX
FinPour
76
Choix d'un type de boucle
⚫ Si on peut déterminer le nombre d'itérations avant l'exécution de la boucle,
il est plus naturel d'utiliser la boucle Pour
77
Exercice4-1
Ecrire un algorithme qui détermine si un entier N est parfait ou non Un
entier est dit
Ecrire( "Le PGCD de " ,a, " et " ,b, " est ",pgcd)
Fin
Exercice5
Les habitants paient l’impôt selon les règles suivantes :
les hommes de plus de 20 ans paient l’impôt
les femmes paient l’impôt si elles ont entre 18 et 35 ans
les autres ne paient pas d’impôt
L’algorithme demandera donc l’âge et le sexe de chaque habitant, et se
prononcera donc ensuite
Vous devez écrire un algorithme qui permette la saisie des scores de quatre
candidats au premier tour. Cet algorithme traitera ensuite le candidat numéro 1
(et uniquement lui) : il dira s'il est élu, battu, s'il se trouve en ballottage
favorable (il participe au second tour en étant arrivé en tête à l'issue du premier
tour) ou défavorable (il participe au second tour sans avoir été en tête au
premier tour).
Exercice7
Algorithme Elections
Variables A, B, C, D : Réels
Variables C1, C2, C3, C4 : Booléen
Début
Ecrire( "Entrez les scores des quatre prétendants : " )
Lire (A, B, C, D)
C1 ← A > 50
C2 ← B > 50 ou C > 50 ou D > 50
C3 ← A >= B et A >= C et A >= D
C4 ← A >= 12,5
Si (C1) Alors
Ecrire (“Elu au premier tour ")
Sinonsi (C2 ou Non(C4) ) Alors
Ecrire (“Battu, éliminé, sorti !!!”)
Exercice7
SinonSi (C3) Alors
Ecrire ("Ballotage favorable ")
Sinon
Ecrire ("Ballotage défavorable ")
FinSi
Fin
Serie 3 Exercice1-a
Ecrire l'algorithme qui permet de calculer le produit de deux entiers en
utilisant des additions successives.
Serie 3 Exercice1-a
Algorithme Multiplier (a, b)
Variables produit,i,a,b : Entiers
Debut
Ecrire ("Entrez deux nombres a et b")
Lire(a,b)
produit <- 0
Pour i de 1 A a Faire
produit <- produit + b
Finpour
Ecrire ("le produit de a et b est" ,produit)
Fin
Serie 3 Exercice1-b
Ecrire l'algorithme qui permet de calculer la division de deux entiers en
utilisant des soustractions successives
Serie 3 Exercice1-b
Algorithme Soustration(a, b)
Variables quotient,a,b : Entiers
Debut
quotient<-0
Tantque (a >= b) Faire
a <- a - b
quotient <- quotient + 1
Ftque
Ecrire ( " la division de a sur b est" ,quotient)
Fin
Serie 3 Exercice1-c
Ecrire l'algorithme qui permet de saisir un entier N et d'afficher s'il est
premier ou non. Un
nombre est dit premier s'il est divisible uniquement par 1 et par lui-même.
Serie 3 Exercice2-a
Ecrire l'algorithme qui détermine le 20ième terme d'une suite définie
par : S0 = 2, S1 = 3 et Sn = Sn-2 + (-1)n * Sn-1
Serie 3 Exercice2-a
Algorithme 2-a
Variables i,u,v,w : Entiers
Debut
u <- 2
v <- 3
Pour i de 2 A 20 Faire
w <- u + (-1)^i*v
u v
v w
Finpour
Ecrire ("le 20eme terme est" ,w)
Fin
Serie 3 Exercice2-b
Ecrire l'algorithme qui détermine le Nième terme d'une suite définie
par : S0 = 2, S1 = 3, S2 = -2 et Sn = Sn-3 + (-1)n * Sn-1
Serie 3 Exercice2-b
Algorithme 2-a
Variables i,u,v,w,z : Entiers
Debut
Ecrire (" donnez un nombre N")
Lire(N)
u <- 2
v <- 3
w <- -2
Pour i de 3 A N Faire
z <- u + (-1)^i*w
u v
v w
w z
Finpour
Ecrire ("le Neme terme est" ,z)
Fin
Serie 3 Exercice2-d
Ecrire l'algorithme qui permet d'évaluer le cosinus d'une valeur x donnée.
Serie 3 Exercice2-d
Algorithme 2-d
Variables i,N : Entiers
X,som,prod: Reél
Debut
Ecrire (" donnez un nombre N")
Lire(N)
Ecrire (" donnez un nombre X")
Lire(X)
som <- 0
prod 1
Pour i de 1 A N Faire
som <- som + (-1)^i*(X^(2*i))/( prod*2*i)
Finpour
Ecrire (" le resultat est" ,som)
Fin
Serie 3 Exercice3-1
Ecrire un algorithme qui demande à l’utilisateur de saisir une série de
nombres et
calculant leurs somme et produit en utilisant les structures :
- Pour .......... ....Faire
- Tant que ..........Faire.
Serie 3 Exercice3-1
Algorithme 2-d
Variables i,N : Entiers
X,som,prod : Reél
Debut
Ecrire (" donnez un nombre N")
Lire(N)
som <- 1
prod 1
Pour i de 1 A N Faire
Ecrire (" donnez un nombre X")
Lire(X)
Serie 3 Exercice3-1
som <- som + x
prod prod*x
Finpour
Ecrire (" la somme de ces nombes est" ,som)
Ecrire (" le produit de ces nombes est" ,prod)
Fin
Serie 3 Exercice3-1
Algorithme 2-d
Variables i,N : Entiers
X,som,prod: Reéls
Debut
Ecrire (" donnez un nombre N")
Lire(N)
som <- 1
prod 1
i1
Tantque (i<N)
Ecrire (" donnez un nombre X")
Lire(X)
Serie 3 Exercice3-1
som <- som + x
prod prod*x
Ii+1
FinTantQue
Ecrire (" la somme de ces nombes est" ,som)
Ecrire (" le produit de ces nombes est" ,prod)
Fin
Serie 3 Exercice3-2
Ecrire un algorithme déterminant le Maximum et le minimum de cette
série de nombres
Serie 3 Exercice3-2
Algorithme 2-d
Variables i,N,som,prod : Réels
X,Y,Max,Min: Reél
Debut
Ecrire (" donnez un nombre N et X")
Lire(N,X)
Pour i de 2 A N Faire
YX
Ecrire (" donnez un nombre X")
Lire(X)
Serie 3 Exercice3-2
Si (X<Y) Alors
MinX
MaxY
FinSi
Finpour
Ecrire (" Le maximum de ces nombes est" ,Max)
Ecrire (" le minimum de ces nombes est" ,Min)
Fin
Serie 3 Exercice4-1
Ecrire un algorithme qui demande un nombre de départ, et qui calcule la
somme des
entiers jusqu’à ce nombre. Par exemple, si l’on entre 5, le programme doit
calculer :
1 + 2 + 3 + 4 + 5 = 15
Serie 3 Exercice4-1
Algorithme 4-1
Variables i,N,som : Entiers
Debut
Ecrire (" donnez un nombre N")
Lire(N)
som0
Pour i de 1 A N Faire
somsom+i
FinPour
Ecrire (" La somme est" ,som)
Fin
Serie 3 Exercice4-2
Ecrire un algorithme calculant la somme de la série suivante :
⚫ Selon les langages, le premier indice du tableau est soit 0, soit 1. Le plus
souvent c'est 0 (c'est ce qu'on va adopter en pseudo-code). Dans ce cas,
notes[i] désigne l'élément i+1 du tableau notes
⚫ Il est possible de déclarer un tableau sans préciser au départ sa dimension.
Cette précision est faite ultérieurement .
• En tous cas, un tableau est inutilisable tant qu’on n’a pas précisé le nombre de
ses éléments
⚫ Un grand avantage des tableaux est qu'on peut traiter les données qui y
sont stockées de façon simple en utilisant des boucles
Algorithme Tableaux
variable p : entier
tableau A[10] : réel
Début
p ← 10
SaisieTab(p, A)
AfficheTab(10,A)
Fin
> A:=array(1..4,[5,8,1,7]);
> moyenne(4,A); résultat : 21/4
Algorithme Matrices
variables tableau M1[3][4],M2 [3][4],M3 [3][4] : réel
Début
SaisieMatrice(3, 4, M1)
SaisieMatrice(3, 4, M2)
AfficheMatrice(3,4, M1)
AfficheMatrice(3,4, M2)
SommeMatrice(3, 4, M1,M2,M3)
AfficheMatrice(3,4, M3)
Fin
2007/2008 Module I2, 1ère année 134
Matrices : syntaxe Maple
⚫ Pour définir une matrice en Maple, on peut utiliser le type array ou le type
matrix comme suit :
⚫ Le type matrix est disponible dans le package linalg. Il faut donc charger ce
package avec la commande with(linalg) avant d'utiliser ce type
2007/2008 Module I2, 1ère année 135
Tableaux : 2 problèmes classiques
• Recherche séquentielle
• Recherche dichotomique
1 4 9 7 3
• Étape 3:
1 3 4 7 9
temp ← T[indice_ppe]
T[indice_ppe] ← T[i]
T[i] ← temp
FinPour
2007/2008 Module I2, 1ère année 139
Tri par sélection : complexité
⚫ Quel que soit l'ordre du tableau initial, le nombre de tests et d'échanges
reste le même
⚫ On effectue N-1 tests pour trouver le premier élément du tableau trié, N-2
tests pour le deuxième, et ainsi de suite. Soit : (N-1)+(N-2)+…+1 = N(N-1)/2
On effectue en plus (N-1) échanges.
variable q: entier
Si p <r alors
Partition(T,p,r,q)
TriRapide(T,p,q-1)
TriRapide(T,q+1,r)
FinSi
Fin Procédure
⚫ Le pire des cas correspond au cas où le pivot est à chaque choix le plus petit
élément du tableau (tableau déjà trié)
⚫ différentes versions du tri rapide sont proposés dans la littérature pour rendre
le pire des cas le plus improbable possible, ce qui rend cette méthode la plus
rapide en moyenne parmi toutes celles utilisées