Vous êtes sur la page 1sur 21

29/11/2021

Architecture des
ordinateurs & Algorithmique

Algorithmique

Filière : Années préparatoires au CI (ENSA-BM)


Département : Informatique
Enseignant : Mohammed BOUTALLINE
boutalline@gmail.com
www.boutalline.com

D'où vient le mot algorithme?

Muhammad Ibn Mûsâ al-Khuwârizmî (~780-850)


mathématicien, géographe, astrologue et astronome perse

3
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

1
29/11/2021

Qu'est ce qu'un algorithme?

Au départ, il y a un problème ? ? ?

Comment trier dans l'ordre croissant


une suite de nombres entiers?
Comment faire un
gâteau au chocolat?

Comment additionner 2 nombres?

4
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Qu'est ce qu'un algorithme?

Suite finie d'instructions qui transforment une


donnée d'entrée en une donne de sortie

5
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

2
29/11/2021

Qu'est ce qu'un algorithme?

Pour 6 personnes:
200 g de chocolat noir
4 œufs
150 g de sucre
80 g de farine
200 g de beurre
Entrée Sortie
mélanger les jaunes d’ œufs avec
...
mettre 20 min au four a 180
suite finie d'instructions

6
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Qu'est ce qu'un algorithme?

La donnée d'entrée est appelée instance du problème

n1= 18 res = 262


n2 = 244 Sortie
Entrée

Commencer par additionner les 2 chiffres des unités

puis répéter :
 Noter le chiffre des unités
 Retenir le chiffre des dizaines, s'il y en a un
 Additionner les deux chiffres suivants de n1 et n2
et la retenue

suite finie d'instructions

7
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

3
29/11/2021

Qu'est ce qu'un algorithme?

La donnée d'entrée est appelée instance du problème

n1= 50839 res = 211575


n2 = 160736 Sortie
Entrée

Commencer par additionner les 2 chiffres des unités

puis répéter :
 Noter le chiffre des unités
 Retenir le chiffre des dizaines, s'il y en a un
 Additionner les deux chiffres suivants de n1 et n2
et la retenue

suite finie d'instructions

8
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Ecrire un algorithme
Il n'est pas nécessaire de choisir un langage de
programmation
On ne veut pas dépendre des spécificités d'un langage
on écrit en pseudo-code également appelé LDA (Langage de
Description d'Algorithmes)

9
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

4
29/11/2021

Ecrire un algorithme
Problème: recherche du minimum dans un tableau d'entiers
données: un tableau d'entiers résultat: l’élément minimum du
tableau

Principe: on initialise le minimum à la première entrée du tableau.


Puis on parcourt les autres entrées du tableau une à
une en mettant à jour le minimum si nécessaire.

6 19 3 7 11 9 2 15 5
min  6
min  3
min  2
A la fin du parcours, on obtient le minimum

10
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Ecrire un algorithme
Problème: recherche le minimum dans un tableau d'entiers
données: un tableau d'entiers
résultat: l’élément minimum du tableau
tab: un tableau de n entiers
début
mintab[1] on initialise le minimum a la première entrée du tableau
Pour i de 1 jusqu’au n Puis on parcourt les autres entrées du
tableau une a une
si min > tab[i]
min tab[i] en mettant a jour le minimum si nécessaire
Fin si
Fin pour
Afficher min A la n du parcours, on obtient le minimum
Fin

11
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

5
29/11/2021

Ecrire un algorithme
Problème: recherche de l’élément x dans un tableau d'entiers
données: un tableau d'entiers n et un entier
résultat: l'indice de l'entier recherché dans le tableau s'il s'y
trouve, -1 sinon

Comment ?

12
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Ecrire un algorithme
Remarque :
Lorsqu'on connait bien un algorithme pour résoudre un
problème, on peut en déduire d'autres pour résoudre d'autres
problèmes similaires en effectuant de petits changements

On a parlé d'amélioration, mais qu'est-ce que cela signifie?

Comment comparer deux algorithmes résolvant le même problème


sur les mêmes instances?

13
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

6
29/11/2021

Ecrire un algorithme
Problème: recherche le minimum dans un tableau d'entiers
données: un tableau d'entiers
résultat: l’élément minimum du tableau
Principe: diviser pour régner

6 19 3 7 11 9 2 15 5

6 3 9 2 5
si T a plus qu'un élément
Diviser le tableau en deux
sous-tableaux T1 et T2
 calculer le minimum, min1 de T1 9 2
 calculer le minimum, min2 de T2
 retourner le minimum de min1 et
min2 3 2
sinon retourner l'unique élément de T
2
14
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Comparer deux algorithmes


comparer les vitesses d'exécution sur les mêmes instances
algorithme efficace

1. compter le nombre d'opérations élémentaires effectuées


lors du déroulement de l'algorithme
aujourd'hui: 1 opération élémentaire ~ 1 nanoseconde (10-9 s)
2. choisir une bonne structure de données
Etude de la complexité en temps
Comparer l'espace nécessaire en mémoire selon les instances
Choisir une bonne structure de données
 Etude de la complexité en espace
3. Lisibilité de l'algorithme, simplicité du principe, simplicité de
l'implémentation...
 Attention il existe des algorithmes pour lesquels
on ne connait pas de solution efficace! 15
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

7
29/11/2021

Le problème du voyageur de commerce

Khouribga
Casablanca
Settat
ronde la plus courte passant
par tous les villages?

Marrakech
Khénifra
Tadla
Azilal
Pas d'autre algorithme connu que de
calculer toutes les rondes possibles!
Pas de solution efficace!

16
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

1 opération élémentaire ~ 1 nanoseconde (10-9 s)

Taille de la donnée

nombres d'opérations élémentaires

Et il existe des problème qu'on ne sait pas résoudre avec un


algorithme!
17
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

8
29/11/2021

Le problème de l'arrêt

Peut-on écrire un algorithme A qui résoudre le problème de la


racine carrée avec toute instance I ?

Un+1=1/2*(Un+a/Un)
avec Un=1

18
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Le problème de l'arrêt

Ecrire un algorithme qui calcule la racine carrée de la


valeur réel positif a grâce à la formule récurrente
Un+1=1/2*(Un+a/Un). Les calculs doivent commencer
avec 1 comme valeur initiale de U0 et s’arrêtent quand la
valeur absolue de la différence entre les deux derniers
valeurs calculés est inférieur strictement à 0.001.

19
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

9
29/11/2021

Connaître des algorithmes permet d'en concevoir de nouveaux


régit par un principe similaire
Lecture, modification et écriture d'algorithmes

Un algorithme doit être efficace pour pouvoir donner une


réponse dans un temps raisonnable en utilisant une place en
mémoire raisonnable.
 Etude de la complexité d'un algorithme

20
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Exercice
Ecrire un algorithme qui demande un nombre de départ, et
qui calcule sa factorielle.

10
29/11/2021

Structure d’un algorithme

• Algorithmique : consiste à concevoir et mettre au point


des algorithmes décrivant les solutions d'un certain type de
problèmes.

•L’algorithmique comporte deux grandes phases: (Analyse et


Conception).

•Algorithme: est une suite finie d'instructions à appliquer


dans un ordre déterminé sur des données afin d'aboutir à un
certain résultat en un temps fini.

22
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Structure d’un algorithme

• Langage de programmation : est un outil


entièrement formalisé avec des mots du langage courant
et des règles précises pour exprimer des algorithmes.
Exemples(PASCAL, C, C++, JAVA…).

• Programme: Traduction d’un algorithme dans un langage de


programmation particulier.

Problème Algorithme Programme Résultats

Algorithmique
Programmation Compilation
(Analyse
(Langage de +
+
programmation) Exécution
Conception)

23
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

11
29/11/2021

Structure d’un algorithme

• Analyse: le dégagement des entrées, des sorties et du


traitement.

• Conception: l’organisation dans un ordre convenable afin


d’aboutir aux résultats attendus.

• Compilation: transformation en langage machine d'un


programme écrit en langage évolué

• Exécution: l'ordinateur exécute les instructions d'un


programme en langage « binaire » ,pour fournir le résultat.

24
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Structure d’un algorithme

Un algorithme peut être structuré en trois parties


principales:

•L’en-tête

•La partie déclarations

•Le corps de l’algorithme

25
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

12
29/11/2021

Structure d’un algorithme

Exemple:

Algorithme : calcul de la surface duCercle; En-tête

Variables Rayon, Surface: Réel;


Partie déclarations
Constante Pi  3.14;

Début

Lire (Rayon);

Surface  Rayon*Rayon*Pi; Corps


Ecrire (Surface);

Fin
26
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Instructions de base
•Donnée •Affectation
•Entrées •Sorties

Une donnée est caractérisée par trois attributs:


 Identificateur
 Valeur
 Type Valeur
Identificateur
3,14
Pi
Exemple
Donnée

Type
Réel
27
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

13
29/11/2021

Donnée

Type (en algorithmique)


Type Description
Une donnée de ce type prend ses valeurs
Entier dans [-32768,32767]
Prend ses valeurs dans l’échelle 2.9x10-39
Réel à 1.7x 10+38 avec 11 chiffres significatifs
après la virgule
Prend ses valeurs dans la table des codes
Caractère ASCII exp ‘A’ ,’S’

logique Peut prendre la valeur Vrai ou Faux

28
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Donnée

Une donnée est divisée en deux catégories:

 Variable: donnée dont la valeur est susceptible de varier.


Syntaxe :
variable identificateur_var : type ;
Exemple: variable surface : réel;

 Constante: donnée dont la valeur est fixe.


Syntaxe :
constante identificateur_const  valeur ;
Exemple: constante Pi  3.14;

29
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

14
29/11/2021

Affectation

•Une affectation est l'opération qui permet de ranger la


valeur d'une expression dans une variable.

•Une expression est une combinaison d’opérandes


et d’opérateurs.

Quelques opérateurs arithmétiques:

Algorithmique Signification
+ Addition
- Soustraction
* Multiplication
/ Division
mod Reste de la division entière
30
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Comparaison

Quelques opérateurs relationnels:

Algorithmique Signification
= Egal
<> Différent
< Inferieur
> Supérieur
<= Inferieur ou égal
>= Supérieur ou égal

31
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

15
29/11/2021

Opérateur logique

Quelques opérateurs logiques:

Algorithmique Signification
Non Négation
OU Ou logique
ET Et Logique

32
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Instructions de lecture et d’écriture

Lecture
Tout simplement, pour que l’utilisateur entre la (nouvelle)
valeur du Rayon , on mettra :

Lire ( Rayon) ;

Dès que le programme rencontre une instruction Lire,


l’exécution s’interrompt, attendant la frappe d’une valeur au
clavier. L'interruption peut durer quelques secondes, quelques
minutes ou plusieurs heures : la seule chose qui fera exécuter
la suite des instructions, c'est que la touche Entrée ait été
enfoncée.

33
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

16
29/11/2021

Instructions de lecture et d’écriture

Ecriture
Dans le sens inverse, pour écrire quelque chose à l’écran, c’est
aussi simple que :

Ecrire ( Rayon) ;

Avant de Lire une variable, il est très fortement conseillé


d’écrire des libellés à l’écran, afin de prévenir l’utilisateur de ce
qu’il doit frapper

Ecrire ("Entrez le rayon du cercle : ");


Lire (rayon);

Ecrire (" Le rayon du cercle est : " , rayon);

34
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Exercice
Ecrire un algorithme qui demande le prix Hors Taxe (PHT)
d’un article, calcule et affiche le prix à payer (TTC) sachant
que la TVA est fixer à 20%. On suppose que ces valeurs
sont des réels

17
29/11/2021

Tests = Structures conditionnelles

On distingue quatre types de structures conditionnelles :

1. Opérateur conditionnel

2. Structure de choix simple

3. Structure de choix alternatif

4. Structure de choix multiples

36
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Opérateur conditionnel

(Expression logique) ? Expression Si Vrai : Expression Si Faux

L'expression conditionnelle débute par un test suivi


du caractère ? puis la valeur lorsque le test est vrai puis le
caractère : et enfin la valeur lorsque le test est faux.
Exemple :

(age>=18) ? Ecrire ("Il/Elle est majeur"); : Ecrire ("Il/Elle est


mineur");

Ecrire un algorithme (un programme en langage C) qui


affiche si un entier est pair ou impair.
37
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

18
29/11/2021

Structure de choix simple / de choix alternatif

Il n’y a que deux formes possibles pour un test ; la première


est la plus simple, la seconde la plus complexe.

Si booléen Alors Si booléen Alors


Instructions Instructions 1
Fin si Sinon
Instructions 2
Fin si
Ceci appelle quelques explications.
booléen est une expression dont la valeur est VRAI ou FAUX.
Cela peut donc être (il n’y a que deux possibilités) :
 une variable (ou une expression) de type booléen
 une condition
 Il serait ainsi bien plus rationnel d’imbriquer les tests
38
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Exercice
Ecrire un algorithme (un programme en langage C) qui
résoudre l’équation du deuxième degré (a.x2+b.x+c=0)
dans IR.

19
29/11/2021

Structure de choix multiples

Selon que expression vaut

valeur 1: instruction 1;

valeur 2: instruction 2;

valeur 2: instruction 3;

valeur n: instruction n;

autrement instruction n+1;

Fin selon

40
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

Exercice
Ecrire un algorithme qui affiche le jour correspondant à
l’entier saisi au clavier.

20
29/11/2021

Encore de la Logique

Faut-il mettre un ET ? Faut-il mettre un OU ?


Une remarque pour commencer : dans le cas de conditions
composées, les parenthèses jouent un rôle fondamental.
Si il fait trop chaud ET il ne pleut pas Alors
Ouvrir la fenêtre
Sinon
Fermer la fenêtre
Fin si

Si il ne fait pas trop chaud OU il pleut Alors


Fermer la fenêtre
Sinon
Ouvrir la fenêtre
Fin si

Ces deux formulations sont strictement équivalentes.

42
Archi. des Ordi. & Algo @ ENSA - BM, Enseignant :Mohammed Boutalline

21

Vous aimerez peut-être aussi