Anda di halaman 1dari 85

ENSAM - Casablanca Année universitaire 2017-2018

NOTION D’ALGORITHME

API2
Plan
 Définition
 Qu’est ce qu’un bon algorithme
 Représentation des algorithmes
 Notions de données
 Les instructions de base
 Expressions & Opérateurs
 Les structures conditionnelles
 Les structures répétitives
 Les tableaux
 Organigramme
 Procédures & Fonctions
 Récursivité

2
Définition:

 Un algorithme est une suite finie de règles à appliquer


dans un ordre déterminé à un nombre fini de données
pour arriver, en un nombre fini d'étapes, à une résolution
d’un problème.
 Le rôle de l'algorithme est fondamental. En effet, sans
algorithme, il n'y aurait pas de programme (qui n'est
jamais que sa traduction dans un langage compréhensible
par l'ordinateur).

3
Définition:

 De plus, les algorithmes sont fondamentaux en un autre sens: ils


sont indépendants à la fois de l'ordinateur qui les exécute, des
langages dans lequel ils sont énoncés et traduits.

4
Qu’est ce qu’un bon algorithme:
 C’est un schéma de résolution possédant les caractéristiques
suivantes.
 Correct : s’il répond au problème posé.
 Précis : s’il fourni exactement les résultats attendus.
 Rapide : s’il utilise un temps d’exécution minimal.
 Efficace : s’il utilise le moins d’espace mémoire
possible.

5
Qu’est ce qu’un bon algorithme:
 Claire et lisible : s’il est facile à lire en vu de le
maintenir et le développer.
 Résistant : s’il est capable de détecter les cas de
mauvaises utilisations.

6
Représentation des algorithmes :
 Un algorithme est utilisé pour désigner des instructions en langage
naturelle, grâce à des structures et des mots clés.
 Un algorithme est écrit en utilisant un langage de description
d’algorithme (LDA). Un algorithme se compose de trois parties :
 L’en-tête : Comprend le nom de l’algorithme
 Les déclarations : Comprend les listes suivantes :
La liste des constantes
La liste des variables
 Le corps : Contient les instructions à exécuter.

7
Exemple : Un algorithme qui calcul la
surface d’un rectangle
Algorithme Surface_d_rectangle ;
Variables Longueur, Largeur, Surface : réel ;
Début
Ecrire (‘Donner la longueur :’) ;
Lire (Longueur) ;
Ecrire (‘Donner la largeur :’) ;
Lire (Largeur) ;
Surface Longueur * Largeur ;
Ecrire (‘La surface du rectangle est :’, Surface) ;
Fin .

8
Notions de données
 Les algorithmes agissent sur des données, qui peuvent varier
ou rester constantes.
 Les données peuvent être de types différents : numérique,
chaîne de caractères, ou booléen (valeurs logiques : vrai ou
faux).
 Chaque donnée est identifiée par un nom (identifiant) unique
qui la définit (la rend reconnue) dans l’algorithme.

9
Notions de données: Les constantes
 Une constante est une donnée dont la valeur reste
inchangée tout le long de l’algorithme. On ne peut
jamais modifier sa valeur et celle-ci doit donc être
précisée lors de la définition de la donnée.

10
Notions de données: Les variables
 Une variable est une donnée dont la valeur peut être modifiée par
une opération dans l’algorithme.
 Une variable est aussi un espace mémoire, la modification de la
valeur de la variable modifié aussi le contenue de la zone mémoire
associé.

11
Notions de données
 Donc à toute variable est associés un identifiant, un type, un
espace mémoire, et une valeur.

12
Les types de données :
 Types numériques :
 Type Entier : un type qui accepte des valeurs comme : -5, -2,
0, 1, 10, 2006, etc.
 Type Réel : un type qui accepte des valeurs comme : -5, 2.6,
0.125, 107, 2.5x1031, etc.

13
Les types de données :
 Type alphanumérique :
 Type caractère : un type qui accepte les caractères.
Si une variable C est de type caractère, alors elle accepte des
valeurs comme : ‘a’, ‘A’, ‘1’, ‘?’, ‘*’,’/’, ‘ ’, etc.
 Type chaîne de caractères : Une variable de ce type peut
contenir une suite de caractères comme : ‘Lecteur CD-ROM’,
‘MPSI 3’, ‘A’, ‘CPGE Khansa’, etc.

14
Les types de données :
 Type logique (booléen) :
Une variable de type booléen est une variable qui ne peut
contenir que soit vrai, ou faux. Donc les données de type
booléen sont des valeurs de vérités,

15
Les instructions de base

 Lecture – Ecriture (Entrée/Sortie):


 Les instructions de lecture et d’écriture permettent à l’ordinateur de
communiquer avec le monde extérieur.

16
Les instructions de base
 Lecture : est l’opération de base qui consiste à lire des
données tapées au clavier. Chaque donnée lue est stockée
dans une variable.
 Syntaxe :
 Lire(x)
  Permet de lire une valeur donnée par l’utilisateur et la
stocker dans la variable x. Si l’utilisateur a écrit 2 alors la
valeur de x sera 2.

17
Les instructions de base
 Ecriture : est l’opération qui permet à l’algorithme de
communiquer des messages à l’utilisateur en les affichant à
l’écran.
 Syntaxe :
 Ecrire (‘bonjour’)
  Permet d’afficher le message : bonjour
 Ecrire (‘la valeur de x est ‘, x)
  Si la valeur de x est 5 cet instruction permet d’afficher le
message : la valeur de x est 5

18
Les instructions de base

 Affectation :
 L’affectation est une attribution d’une valeur à une variable.
 L'action d'affectation modifie la valeur de la variable, et donc le
contenu de la mémoire de la machine.
 Syntaxe : nom de variable  valeur ;
nom de variable  expression ;
 Action : "Met le résultat du calcul de l'expression dans la variable".

19
Remarque importante :

 Il faut respecter le type de chaque variable, donc on ne peut pas


affecter à une variable qui est de type Type1 une expression qui renvoi
une valeur de type Type2.
 Exemple : nom est de type Chaîne de caractères
 X1 est de type entier :
 X1  nom est une instruction fausse.
 Nom  3 est aussi une instruction fausse.

20
Expressions & Opérateurs

 Une expression est un ensemble de valeurs, reliées par des


opérateurs, et équivalente à une seule valeur.
 Un opérateur est un signe qui relie deux valeurs pour produire un
résultat.
 Opérateurs numériques
 + Addition
 - soustraction
 * multiplication
 / division
 ^ puissance

21
Expressions & Opérateurs
 Opérateur alphanumérique : &
 Cet opérateur permet de concaténer ou de joindre deux
chaînes de caractères.

22
La structure conditionnelle
Définition
 Elle exprime le choix entre deux séquences d’action en
fonction de la valeur d’une condition ou expression logique

23
Syntaxe
Si condition alors
instruction1
sinon
instruction2 ;
finsi

24
Structure conditionnelle à choix
multiple
 C’est une structure qui permet de choisir un choix parmi
plusieurs cheminements proposés.

25
Structure conditionnelle à choix
multiple
Syntaxe :
Selon ( expression entière ou caractère )
Cas choix1 : instruction1 ;
cas choix2 : instruction2 ;
...
cas choixN : instructionN ;
[autrement instruction]
Finselon

26
Exemple : Calcul d’une facture
 Ecrire un algorithme qui calcule le prix toute taxe comprise
(PTTC) d’un article, à partir du prix total hors taxe (PTHT)
et selon le code de la TVA .

27
28
Les structures répétitives

 Les structures répétitives sont utilisées lorsque nous avons une


instruction ou un bloc d’instructions qui se répètent un certain
nombre de fois .
 En algorithmique, nous disposons de trois structures
 Tant que ……………….Faire ……
 Répéter ………………Jusqu’à ….
 Pour ………………..Faire ………

29
Structure POUR
 Cette structure permet une répétition d’instructions, le
NOMBRE DES RÉPÉTITIONS étant CONNU avant la première
exécution.
 Une variable va servir de test pour l'exécution de la boucle. Cette
variable est initialisée au démarrage de la boucle puis évolue, de
façon automatique, après chaque itération.

30
Syntaxe
Pour <variable de test> = <valeur de départ> à <valeur
d’arrivée>
Instructions
Fin Pour

31
Exercice 0
 Ecrire l’algorithme qui permet de calculer S:
S=1+2+3+………….+N

32
Exercice 1
 Ecrire l’algorithme qui permet de calculer S:
S=1+1/2+1/3+1/4+……………….+1/n

33
Exercice 2
 Ecrire un algorithme qui demande un nombre de départ, et
qui calcule sa factorielle.
NB : la factorielle de 8, notée 8 !, vaut
1x2x3x4x5x6x7x8

34
Exercice 3
 Calculer Un
U1=1 ; U2=2
Un=2*Un-1 + 3*Un-2 Pour n >2

35
Structure TANT QUE
 Cette structure permet de répéter un groupe d’instructions, le
NOMBRE DES RÉPÉTITIONS étant INCONNU avant la
première exécution de la boucle.
 La condition doit être remplie pour que les instructions soient
exécutées (y compris la première fois) : ce type de condition est
appelé CONDITION DE CONTINUATION.

36
Syntaxe

Tant Que < condition de continuation > FAIRE


Instructions à exécuter si la condition est remplie
Fin Tant Que

37
Exercice:
 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.

38
Structure RÉPÉTER

 Cette structure permet de répéter un groupe d’instructions, le


NOMBRE DES RÉPÉTITIONS étant INCONNU avant la
première exécution de l’action concernée. Cette boucle sera
exécutée AU MOINS UNE FOIS car la condition est posée à la fin
de la boucle.
 L'exécution cesse lorsque la condition est remplie. Cette
condition est donc appelée CRITÈRE D’ARRÊT.

39
Syntaxe
Répéter
Instructions à exécuter
Jusqu’à <critère d’arrêt>

40
Exemple :
 Ecrire un algorithme qui demande à l’utilisateur un nombre
compris entre 1 et 3 jusqu’à ce que la réponse convienne.

41
Algorithme nombre_verifier ;
Variable i : entier ;
Debut
Repeter
Ecrire (‘donner un nombre compris entre 1 et 3 : ‘) ;
Lire(i) ;
Jusque ( i>=1 et i<=3 ) ;
Fin.

42
Les tableaux
 Supposons que nous avons besoin de calculer la moyenne de 12
notes d’un étudiant.
 la seule solution dont nous disposons consiste à déclarer douze
variables, appelées par exemple: X1, X2, X3,…X12.
 La première étape est de lire les valeurs de toute ces variables une
par une, ce qui nous fait douze instructions de lecture et après
calculer la moyenne par l’instruction:
 Moy ← (X1+X2+X3+X4+X5+NX6+X7+X8+X9+X10+X11+X12)/12

43 28/02/2018
Les tableaux(suite)
 C’est pourquoi l’algorithmique (la programmation) nous permet
de rassembler toutes ces variables en une seule, au sein de
laquelle chaque valeur sera désignée par un numéro.

Un ensemble de valeurs portant le même nom de variable et repérées par


un nombre, s’appelle un tableau, ou encore une variable indicée.
Le nombre qui, au sein d’un tableau, sert à repérer chaque valeur s’appelle
l’indice.
Chaque fois que l’on doit désigner un élément du tableau, on fait figurer le
nom du tableau, suivi de l’indice de l’élément, entre parenthèses.
Ex: Nom_tableau(5)

44 28/02/2018
Les tableaux(suite)
 Notation et utilisation algorithmique
 Dans notre exemple, nous créerons donc un tableau appelé Note.
 Tableau Note(12) : Entier
 On peut créer des tableaux contenant des variables de tous types :
tableaux de numériques, tableaux de caractères, tableaux de
booléens, tableaux de tout ce qui existe dans un langage donné
comme type de variables.
 L’énorme avantage des tableaux, c’est qu’on va pouvoir les traiter en
faisant des boucles.

45 28/02/2018
Les tableaux(suite)
 Notation et utilisation algorithmique
Tableau Note(12) : Entier
Variables i, Som : Entier
Variable Moy : Réel
Pour i ← 0 à 11
Ecrire (“Entrez la note n°”, i)
Lire( Note(i))
FPour
Som ← 0
Pour i ← 0 à 11
Som ← Som + Note(i)
Fpour
Moy ← Som / 12

46 28/02/2018
Les tableaux(suite)
 Remarque générale : l’indice qui sert à désigner les
éléments d’un tableau peut être exprimé directement
comme un nombre en clair, mais il peut être aussi une
variable, ou une expression calculée.
 La valeur d’un indice doit toujours :
 être égale au moins à 0 (dans quelques rares langages, le premier
élément d’un tableau porte l’indice 1). Mais nous avons choisi ici de
commencer la numérotation des indices à zéro, comme c’est le cas
en langage C.
 être un nombre entier. Quel que soit le langage.
 être inférieure ou égale au nombre d’éléments du tableau
(moins 1, si l’on commence la numérotation à zéro).

47 28/02/2018
Les tableaux(Tri)
Définition
 « trier » signifie « répartir en plusieurs classes selon certains
critères ».
 De manière plus restrictive, le terme de « tri » en algorithmique
est très souvent attaché au processus de classement d'un ensemble
d'éléments dans un ordre donné.
 Par exemple, trier N entiers dans l'ordre croissant, ou N noms dans
l'ordre alphabétique.

48 28/02/2018
Les tableaux: Tri par sélection
 Tri par sélection est l’un des algorithmes de tri les plus simple,
elle procède à la sélection successive de l’élément minimal
parmi ceux restant. Il fonctionne de la manière suivante :
 On commence par rechercher l’élément de plus petite valeur du
tableau pour l’échanger avec celui en première position.
 On recherche ensuite l’élément ayant la deuxième plus petite
valeur pour l’échanger avec celui en deuxième position, et l’on
continue ainsi jusqu’à ce que le tableau soit entièrement trié.

49 28/02/2018
Les tableaux: Tri par sélection
 Le sous-algorithme suivant est une implantation de ce processus. Pour tout i entre 0 et
N-2, on échange T[i] avec l’élément de valeur minimal parmi T[i+1]….T[N-1] :
TriSelection(T: 0…N-1: entier; N: entier)
Pocédure TriSelection
Var i, j, min, q:entier;
Début
pour i de 0 jusqu’à N-2 faire
mini;
pour j de i+1 jusqu’à N-1 faire
Si(T[j]<T[min]) alors A mesure que l’indice i progresse vers la
droite du fichier, les éléments situés à sa
minj; gauche ont pris leur position définitive et le
Fsi tableau est trié lorsque l’indice i atteint
Fpour l’extrémité droite
qT[min];
T[min]T[i];
T[i]q;
Fpour
Finprocédure
50 28/02/2018
Exercice 0
 Écrire un algorithme qui déclare et remplisse un tableau de 7
valeurs numériques en les mettant toutes à zéro.
Exercice 1
 Écrire un algorithme qui déclare et remplisse un tableau
contenant les six voyelles de l’alphabet latin.
Exercice 2
 On saisit des entiers et on les range dans un tableau (maximum
50) Écrire un programme qui affiche le maximum, le minimum
et la valeur moyenne de ces nombres.

51 28/02/2018
Exercice 3
 Écrivez 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.

52 28/02/2018
Les tableaux à deux dimensions
 Les langages de programmation permettent de déclarer des
tableaux dans lesquels les valeurs sont repérées par deux
indices. Ceci est utile par exemple pour représenter des
matrices .

53
Syntaxe
 Tableau identificateur[dimension1] [dimension2] : type
 Exemple : une matrice A de 3 lignes et 4 colonnes dont les
éléments sont réels: Tableau A[3][4] : réel
 A[i][j] permet d'accéder à l’élément de la matrice qui se
trouve à l’intersection de la ligne i et de la colonne j

54
Exemple :
 Algorithme qui permet de saisir les éléments d'une matrice :
Début
Tableau A[50][50] : Entier
Variables i,j,n,m : Entier
Pour i ← 0 à n-1
Pour j ← 0 à m-1
Ecrire ("Entrez l'élément de la ligne ", i + 1, " et de
la colonne ", j+1)
lire (A[i][j])
FinPour
FinPour
55
Fin
Organigramme
 Définition
 un organigramme est la représentation schématique qui permet de
faire apparaître d’une façon claire et logique l’enchaînement des
différentes opérations.
 Les symboles utilisés pour construire un organigramme

Symbole général traitement

Symbole début-fin-interruption Les lignes de


liaison

Symbole embranchement(choix)

Symbole commentaire

56 28/02/2018
Organigramme
Exemple :

Condition

Instruction 2 Instruction 1

suite

57 28/02/2018
Organigramme
 Exemple

58
Organigramme
Exemple :Le
Le branchement conditionnel

condition

instruction1 instruction2

59 28/02/2018
Organigramme
Exemple : répéter … jusqu’à

F
instruction

condition

60 28/02/2018
Organigramme
Exemple : Tant que

F
condition

instruction

61 28/02/2018
Notions de sous-algorithme
 Définition
 Un sous-algorithme est un élément d’algorithme nommé et
éventuellement paramétré que l’on définit afin de pouvoir
ensuite l’appeler par son nom en affectant, s’il y a lieu, des
valeurs aux paramètres.
 Intérêt :
 Réaliser un découpage d’une tâche en sous-tâche.
 Effectuer une seule description d’une tâche commune
 Concevoir une application de manière descendante en entrant de plus en
plus dans les détails
 Structure : un sous-algorithme est composé
 D’une tête nom sous-algorithme, paramètres(arguments) avec leur type
 D’un corps des déclarations d’objets locaux aux sous-algorithme,
instructions à exécuter

62 28/02/2018
Notions de sous-algorithme
 Sous-algorithme Nom
Nom(liste des paramètres)
déclarations des variables locales
Début
Corps du sous-algorihtme
Fin
 Algorithme Nom
Déclaration des variables
Début
Instructions
Appel du sous-algorithme
Instructions
Fin
63 28/02/2018
Procédures & Fonctions
 Fonctions

Le rôle d'une fonction en programmation est similaire à celui


d'une fonction en mathématique : elle calcule un résultat à
partir des valeurs des paramètres d'entrées.

64
Procédures & Fonctions
 Fonctions

L'utilisation d'une fonction se fera par simple écriture de son


nom dans le programme principale. Au moment de l'appel,
tous les paramètres doivent être définis. L'ordre, le nombre
et le type des paramètres de l'appel doit correspondre à
l’ordre et aux paramètres formels ainsi qu'à leur type. Le
résultat étant une valeur, devra être affecté ou être utilisé
dans une expression, une écriture, ...

65
Procédures & Fonctions
 Fonctions
 Syntaxe
Fonction nom_fonction(var:type;var:type):type
Variable interne;
Début fonction
Instructions;
Retourner variable;
Fin fonction

66 28/02/2018
Procédures & Fonctions
Exemple
Rep1,Rep2 : caractères
Fonction RepOuiNon() : caractères
variable Rep ← ""
DébutFonction
TantQue Rep <> "Oui" et Rep <> "Non"
Ecrire( "Tapez Oui ou Non")
Lire (Rep)
FinTantQue
Retourner Rep
FinFonction
Début
Ecrire( "Etes-vous marié ?")
Rep1 ← RepOuiNon()
Ecrire( "Avez-vous des enfants ?" )
67 Rep2 ← RepOuiNon() 28/02/2018
Fin
Procédures & Fonctions

Exercice 0 :
 Ecrire une fonction SommeCarre qui calcule la somme des carrées
de deux réels x et y.

68
Procédures & Fonctions

Fonction SommeCarre (x : réel, y: réel ) : réel


variable z : réel
DébutFonction
z ←x^2+y^2
retourner (z)
FinFonction

69
Procédures & Fonctions

Exercice 1 :
 Ecrire une fonction Pair qui détermine si un nombre est
pair.

70
Procédures & Fonctions

Fonction Pair (n : entier ) : booléen


DébutFonction
retourner (n%2=0)
FinFonction

71
Procédures & Fonctions
Algorithme AppelFonction
variables z : réel, b : booléen
Début
b ←Pair(3);
z ←5*SommeCarre(7,2)+1;
écrire("SommeCarre(3,5)= ", SommeCarre(3,5));
Fin

72
Procédures & Fonctions
 Procédures
Dans certains cas, on peut avoir besoin de répéter une tache
dans plusieurs endroits du programme, mais que dans cette
tâche on ne calcule pas de résultats ou qu'on calcule plusieurs
résultats à la fois. Dans ces cas on ne peut pas utiliser une
fonction, on utilise une procédure.

73
Procédures & Fonctions
 Procédures
Une procédure est un sous-programme semblable à une
fonction mais qui ne retourne rien.

Remarque : une procédure peut ne pas avoir de paramètres.

74
Procédures & Fonctions
 Procédures
 Syntaxe
Procédure nom_procédure(var:type;var:type)
Variable interne
Début procédure
Instructions
Finprocédure

75 28/02/2018
Procédures & Fonctions
 Procédures
Contrairement à l'appel d'une fonction, on ne peut pas
affecter la procédure appelée ou l'utiliser dans une
expression. L'appel d'une procédure est constitué d'une seule
instruction composée du nom de la procédure, suivi
éventuellement, entre parenthèses, de la liste des paramètres
effectifs, séparés par des virgules.

76
Procédures & Fonctions
 Exemple 1:
Procédure qui calcule la somme et le produit de deux entiers :
Procédure SommeProduit (x: entier ,y: entier)
Variables som, prod : entier
DébutProcédure
som ← x+y
prod ← x*y
écrire("Somme= ", som );
écrire("Produit= ", prod );
FinProcédure
77
Procédures & Fonctions
 Exemple 2:
Procédure incrementer1 (x : entier, y : entier)
DébutProcédure
x ← x+1
y ← y+1
FinProcédure
Algorithme Test_incrementer1
variables n, m : entier
Début
n←3
m←3
incrementer1(n, m)
écrire (" n= ", n, " et m= ", m)
78
Fin
Récursivité
 Une fonction ou une procédure est visible par elle même; ce
qui permet d'utiliser le nom d'une fonction ou d'une procédure
dans le corps de cette fonction ou cette procédure.
 Ce mécanisme s'appelle la récursivité. Il faut toujours utiliser
une condition pour arrêter les appels récursifs. Cette condition
s'appelle condition d'arrêt.

79
Récursivité

Exercice
 Ecrire une fonction récursive qui calcule la puissance d'un
nombre réel positif.

80
Récursivité
x0 = 1, xn = x*xn-1 si n≥1
Fonction puissance(x : réel ; n : entier) : réel
Variable Résultat : réel;
DébutFonction
Si(n=0) alors
Résultat 1;
Sinon
Résultat  x*puissance(x,n-1);
Finsi
Retourner Résultat;
81 FinFonction
Exercices

82 28/02/2018
Exercices
 EX0
 Ecrire un algorithme qui lit une valeur qlq x et qui
détermine la valeur de l’expression :
1+x+x2+…+x20
 EX1
 Ecrire un algorithme qui permet de lire les âges de 25
stagiaires(ils ont au moins 23ans et au plus 30ans) et
fournit le nombre de stagiaires de chacun des âges.

83 28/02/2018
Exercices
 EX2
 Ecrire un algorithme qui permet de faire les traitements suivants :
Soit un tableau T de N entiers
1. Remplir les N cases du tableau
2. Compter le nombre des éléments non nuls
3. Trouver le plus grand éléments du tableau et le mettre dans la
variable MAX
4. Rechercher la place du plus petit élément et le mettre dans la
variable position.

84 28/02/2018
Exercices

 EX3
 Ecrire une procédure qui lit N éléments en paramètre et
retourne la somme de ces éléments dans une variable
somme.
 EX4
 Ecrire une fonction entière statistique qui lit 100 notes et
retourne le nombre de notes comprises entre 10 et 20 compris

85
28/02/2018