Академический Документы
Профессиональный Документы
Культура Документы
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:
3
Définition:
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
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 :
20
Expressions & Opérateurs
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
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
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
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.
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
mini;
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
minj; gauche ont pris leur position définitive et le
Fsi tableau est trié lorsque l’indice i atteint
Fpour l’extrémité droite
qT[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 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
64
Procédures & Fonctions
Fonctions
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
69
Procédures & Fonctions
Exercice 1 :
Ecrire une fonction Pair qui détermine si un nombre est
pair.
70
Procédures & Fonctions
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.
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