Algo

publicité
Algorithme
12/09/97
L’introduction
1. L’information c’est le traitement automatique de l’information
2. L’informatique c’est la science de l’ordinateur
1 met l’accent sur le concept d’information ( le côté humain de l’information)
2 met l’accent sur l’ordinateur ( insiste sur l’importance de la machine)
La difficulté majeure de l’information est la nécessité de passer de concepts humains à
une représentation mécanique
Une information est critère qui permet de restreindre la taille d’un ensemble où l’on
recherche la réponse à une question
Le traitement de l’information n’ajoute jamais d’information mais se contente d’extraire
l’information intéressante parmi celle que contiennent les données
Un système :
Un ensemble de parties coordonnées en vue d’atteindre un ensemble d’objectifs:
- Par ses objectifs : ensemble de taches à executer dans des conditions
données.
- Par sa composition : ensemble organisé d'éléments fonctionnels
composition d’un système, on distingue :
 les entrées : variables dont les valeurs sont
imposées par l’extérieur
 les sorties : variables qui agissent sur l’extérieur
 les opérateurs : réalisent la transformation des
entrées en sortie
Entrées
Transformation
E1
E2
E3
Sortie
opérations
internes
S1
S2
S3
Ces transformations
sont étudiées en
algorithmique
Algorithmique : c’est la science de fabrication des algorithmes
Algorithme : c’est la démarche logique et naturelle dans la résolution d’un problème
c’est une succession d’opération qui permet de faire passer l’environnement de
l’état initial à l’état final (ensemble = ensemble des objets)
Les algorithmes écrits, il faut les coder dans un certain langage de programmation
La notion de programmation :
 c’est l’art de faire des programmes
 Un programme est une suite de déclaration et d’instruction écrites dans un
langage de programmation donné, permettant à un machine sur laquelle ce
langage est utilisable, d’exécuter un certain travail
Ecrire dans un langage
2
approprié
3
un certain travail
1
1. la description de ce travail = la fabrication de l’algorithme
2. c’est la traduction de l’algorithme
3. Dans un langage compréhensible par l’ordinateur
- pour executer un programme P écrit dans un langage de programmation L, il faut pouvoir le
mettre à la portée de la machine.
Il existe 2 modes :
* Le mode interprété : La correspondance est effectuée grâce à un programme spécial,
l'interprète, qui opère sur le programme et les données.
L'interprète décode P au fur et à mesure, et effectue les actions demandées.
* le mode compilé, dont l'exécution comprend 2 étapes :
Traduction de P en 1 programme équivalent exprimé en langage machine, traduction opérée par
un programme spécial, le compilateur.
La compilation, contrairement à l'interprétation, s'effectue une fois pour toute.
Notion d’action et de processeur
Soit l’énoncé E1
E1
Confection d’une omelette de 6 œufs
abcde-
casser six œufs dans une coupe
battre les œufs avec une fourchette
chauffer beurre dans la poêle
poêle chaude, verser le contenu de la coupe
enlever la poêle, quand cuit
L’énoncé E1 décrit un travail donné
Définition :
On appelle processeur toute entité capable de comprendre un énoncé et
d’exécuter le travail indiqué.
Dans le cas de E1, toute personne sachant lire et disposant des ustensiles nécessaire, peut être
processeur.
Définition :
On appelle environnement d’un travail, l’ensemble des ustensiles (objets)
nécessaire à l’exécution du travail
Dans la description des travaux précédents, on distingue plusieurs étapes (1,2,3,... ;a,b,c,d,...)
Après chaque étape l’environnement est modifié
ex : avant a : la coupe est vide
après a : la coupe contient les œufs
Chaque étape constitue une action
Définition :
On appelle action un événement qui modifie l’environnement
 En général, le processeur exécute les actions dans l’ordre dans lequel elles
apparaissent dans l’énoncé
Il respecte la séquence des actions
Une même action peut apparaitre plusieurs fois.
Action primitive ; décomposition d’une action
Définition :
Pour un processeur donné, une action est primitive si l’énoncé de cette action est à lui
seul suffisant pour que le processeur puisse l’exécuter sans information supplémentaire
Définition :
Pour un processeur donné, une action non-primitive doit être décomposée en actions
primitives
ex : décomposition de a
a1. Prendre une boite d’œuf, l’ouvrir, poser les œufs sur le plan de travail (il y
en a 6)
Répéter
a2. Prendre un œuf sur le plan de travail
a3. Le casser et versé son contenu dans la coupe
a4. Jeter la coquille à la poubelle
jusqu'à ce qu’il n’y ait plus d’œufs sur le plan de travail
Les actions a2, a3, a4 constituent un bloc.
A1 : initialisation
Analyse descendante : Top Down
Soit T un travail décrit par un énoncé non primitif. L'analyse descendante consiste à trouver 1
décomposition t1 t2 tn qui soit une suite d'énoncés dont l'exécution réalise le travail T.
Algorithme :
Etant donné un processeur bien défini et un traitement à exécuter par ce processeur, un
algorithme du traitement est l’énoncé d’une séquence d’actions primitives que devra effectuer le
processeur pour arriver en un temps fini au résultat demandé (définie par une
« post-condition » ), à partir d’une situation donnée (définie par une « pré-conditon »)
Notion d’objet informatique
A l’origine d’un traitement informatique l’on trouve toujours une situation réelle dont
les informations manipulées au cours du traitement représentant une image.
Cette image (ou modèle est construite par un processus faisant suite à une analyse de la
situation réelle.
Cette analyse consiste à dégager
 des grandeurs caractéristiques, reliées par des relations
 des invariants
Dans les modèles utilisés en informatique, les éléments de base sont souvent des
objets abstraits = informations pouvant prendre un ensemble fini ou infini de valeurs discrètes
ou continues. ( ex : objet mathématique )
Pour permettre leur utilisation par une machine les « objets abstraits » sont
représenter par des objets informatiques = information ne pouvant prendre qu’un nombre fini
de valeurs discrètes
Ce sont ces derniers objets qui sont représentés physiquement dans les machines
 l’activité de programmation s’intéresse :
 aux objets informatiques
 à leurs modes de représentation en machine
 aux traitements qui leur sont appliqués
objet réels
monde réel
objets abstraits
modèle
objet informatique
algorithme
représentation en mémoire
programme
représentation physique
machine
Les algorithmes sont composés :
 d'entités informatique ( ou objets) qui représentent l’information
 d'opérations (ou manipulations) qui manipulent des objets
 de structures de commandes qui gouvernent le déroulement des informations
Pour l’étude d’un problème, il faut définir un univers (ou environnement)
Cet univers est caractérisé par un état (qui est l’état de l’ensemble des objets)
L’état de l’environnement change au cours du temps, cette évolution est discrète.
(on peut définir différent instants de référence)
Les objets ont des propriétés qui doivent être connus à la fin par la machine, le programmeur,
utilisateur. L’intervalle des valeurs possible dépends du langage de programmation.
Mais l’intervalle des valeurs possibles pour un entier dépends de l’ordinateur sur lequel nous travaillons
L’ordinateur manipule des objets qui sont des configurations de listes d’objets ou de notes. Comme les
représentations physiques varient selon les objets à manipuler, il faudra pour le programmeur définir :
 précisément les objets à manipuler
 manipuler leurs types
Algorithmique
19/09/97
La spécification du type des objets
définition :
Un type est un ensemble de valeurs munies de propriétés communes à ces valeurs et munies
d’opérations qui permettent de les manipuler
exemple :
type SALAIRE= nombre entiers de centimes, supérieur ou égale à 0 . inférieur à une
limite
opération= l’arrondi, comparaison, augmenter, diminuer, multiplier
propriétés= nombre de chiffres requis pour afficher les valeurs singulières
Mais pourquoi des types ?
 clarté, lisibilité
( ne pas mélanger des objets de nature différente)
 efficacité
L’ensemble des valeurs possibles pour un objet étant connues, la
quantité d’informations nécessaires pour coder une valeur est connue
optimisation de la taille de la mémoire nécessaire
optimisation des procédure de codage
(décodage de valeur)
 vérification à priori
La compilateurs peut avertir le programmeur de son erreur =>
amélioration de la sécurité du programme
Comment introduire un type de données dans le programme
Pour pouvoir citer un type, il faut l’identifier en lui donnant un nom
Certains noms sont prédéfinis : ils ne font pas l’objet de déclarations
dans le programme
D’autres sont définis explicitement : ils font l’objet de déclarations de
type dans le programme avant toute utilisation : on parle de type
construit
La forme générale d'un type sera :
- Type T = <Type>
où T est l'identificateur du type
Type est une description du type
Les types prédéfinis simples (ou standards)
Le type caractère
Chaque ordinateur possède un « jeu de caractères » grâce auquel il communique avec
l’extérieur.
Ces caractères sont disponibles sur le périphérique d’entrée (lecture, clavier) ou de
sortie (imprimante)
On dispose au minimum de : 26 minuscules, 26 majuscules, 10 chiffres, les ponctuations
Les jeux courants sont :
 ISO {Office de Normalisation Internationale}
 EBCDIC {IBM}
 ASCII {American Standard Code For Info Interchange}
Le type entier
Le type entier représente un domaine de valeurs entière, positives, nulles ou négatives
limitées par les caractérisation de l’ordinateur.
Ces limites sont variables d’un ordinateur à un autre => Possibilités de débordement
L’ensemble des valeurs admises est un ensemble général
{-2exp(n-1) ;... ;(2exp(n-1))-1}
n est un entier qui dépends du nombre de bits requis pour coder un entier
Les valeurs entières sont dotées des relations d’ordre habituelles
Les opérateurs suivants sont définis :
+, - , x, div, mod
Si une opération produit un résultat qui sort de l’intervalle des valeurs ordinaires il y a
dépassement de capacité.
L’ordinateur le signal et abandonne le calcul ( sauf si le cas a été défini de façon
explicite à la création de l’algorithme.
Attention :
(100+100) - 90 n’est pas égal à (100 -90) + 100
Le type réel
Le type réel décrit un domaine de valeurs qui sont en réalité une approximation de
nombres réels
(chaque valeur de ce type représente un intervalle de valeurs réelles)
La représentation interne de ces types comprend 1 nombre fractionnaire et un facteur
d'échelle.
Le type booléen
Le type booléen définit le domaine de valeurs logiques formé de 2 éléments : vrai ou
faux
Les opérateurs standards sont définis sur des arguments de ce type.
OU (  )
ET (  )
NON (  )
Les relations produisent un résultat de type booléen
vrai : la relation est satisfaite
faux : la relation n’est pas satisfaite
Etant donné 2 arguments booléens p et q, les valeurs des relations pq, pq, p, q


p
Q
qp
qp
p
q
V
V
V
V
F
F
V
F
V
F
F
V
F
V
V
F
V
F
F
F
F
F
V
V
2² = 4 cas
A partir de cette table, on peut décrire :
La commutativité:
pvq=qvp
pq= qp
L'associativité
(p v q) v r = p v (q v r)
(p q) r = p (q r)
La distributivité :
(p q v r = (pvr)(q v r)
(p v q) r = (pr)v (qr)
Lois de De Morgan
(pq) = p  q
(pq) = p  q
Les types construits (constructeurs)
On distingue 2 catégories de types construits
 des types « constructeurs simples »
 des types « constructeurs composés »
Constructeurs simples
Le type énumération
Le type énumération permet de définir toutes les valeurs et un type en
les nommant.
Ce sont les seuls valeurs appartenant à un type
ex : type ANIMAL={Chien, Chat, Cochon}
type SAISON={été, automne, hiver, printemps}
Il y a un ordre d'énumération
Le type énumération non-ordonnée
Pas de relation d’ordre entre les objets : les opérateurs = < >
n’ont pas de sens
Le type énumération ordonnée
 ordre d’énumération
 relation d’ordre entre les objets
 ou type scalaire discret ordonné
Le type intervalle
Permet de préciser un domaine de valeurs contiguës
Ce type est défini à partir d’un type prédéfini
syntaxe :
Type (nom du type) = [ e ..q ]
e : borne inférieure
q : borne supérieure
l et q : entier ou défini précédemment comme énumération
C’est un moyen de vérification et de documentation qui permet
d’éviter que l’objet de type T prenne des valeurs en dehors de l’intervalle
déclaré, donc indésirable
Ex : Type JOUR_DU_MOIS = [1..31]
Type AGE_CHAT= [0..20]
Type SEMAINE_TRAVAIL = [lundi..vendrdi]
L’intérêt de ce type est de provoquer un message d’erreurs lorsqu’on
sort du domaine prévu (soit compilation, exécution)
Dans un langage de programmation n’ayant pas de type, il faut alors
incorporer un test de vraisemblance.
Constructeurs composés
Les types constructeurs composés se construisent comme des groupements
d’éléments appartenant à un type précédemment défini
Le type simple constitue le type de base de la structure
La construction peut être étagée en hiérachie, on construit des types très
complexe, de proche en groupant des éléments, puis en groupant les groupes...
ex : type tableau
type enregistrement
type pointeur
Les objets manipulés
Chaque objet possède :
 un type : indique les caractères communs à tous états possiblesde l’objet.
 une valeur : qui peut à la suite de l’exécution d’une action
Pour qu’il puisse ètre identifié sans ambiguité, il faut lui attribués un nom.
Le nom (ou identificateur), permet de distinguer un objet par rapport aux autres objets déjà
présent.
Nom et objet sont différent
2 raisons :
 Selon les traitements, le même objet peut avoir des noms différents
ex : Paul DUPONT, matricule 7789044528
Paul  Collègue
Paul  amis
DUPOND  supérieurs
employé  service du personnel
78904528  service de la paye
 Un même identificateur peut être employé sous plusieurs objets.
Ex : paramètre dans la procédure
Constantes
Une constante est un objet qui possède :
. un nom fixe
. un type fixe
. une valeur fixe
ex : déclares un objet ayant pour nom vingt, type entier, valeur 20
Variables
Une variable est un objet qui possède :
. nom fixe
. type fixe
. valeur variable, suivant les besoins du programme
ex : NOM est le nom d’une variable à manipuler, de type CARACTERE dont la valeur est
successivement AGATHE, DUPOND, DUPONT
Avant toute utilisation, dans beaucoup de langages, il faut déclarer les variables utilisées
ex : VAR
ex :
GRI :entier
CONST
UN=1
PI= 3,1415
VAR
a,b : entier
c,d : caractère
e : booléen
TYPE
JOUR_DU_MOIS = [1..31]
CONST
VAR
TVA=1,186
JOUR= JOUR_DU_MOIS
 Chaque identificateur est composé d’une suite de chiffres ou de lettres en maj ou min
mais ne doit surtout pas commencer par des chiffres
 Les mots réservés peuvent être écrits en maj ou min : debut, fin, var
Notion de procédure
Une procédure est une suite nommé et déclarée d’actions que l’on exécuter en l’appelant par son
nom
ex : alorithme XXX
a,c,YYY,g
Algorithme YYY
a,b,c,d,e,f
Lors de l'exécution de XXX, la séquence exécutée sera :
a,c,a,b,c,d,e,f,g
Déclaration de procédure
Un processeur ne peut exécuter que ce qui est parfaitement défini .
Il faut déclarer la procédure dans la partie ‘déclaration’ de l’algorithme utilisant la procédure.
La déclaration comprend les parties :
 en-tête de procédure : Le mot "procedure", le nom de la procédure, le nom
et le type des objets dont un utilisateur doit avoir connaissance, pour
utiliser la procédure. Ce sont les paramètres formels.
Ex :
Procedure AAA (TOTO, TATA: Entier)
 corps de procédure
Le corps contient le (ou les) énoncé à exécuter lord de l’appel à la
procédure. Ce corps est borné par les mots begin et end.
Appel de procédure
Un appel à une procédure sera une action formée
1. du nom de la procédure
2. d’une liste de paramètre qui correspondent aux caractères formels, ce sont
les paramètres effectifs lesquels nous voulons exécuter la procédure.
Ex : algorithme ZZZ
VAR CHOCOLATS, BOULVARD : entier
PROCEDURE AAA (TOTO,SUZETTE : entier)
deb :
....
....
fin.
Deb
....
....
....
AAA (CHOCOLAT, BOULVARD)
....
....
....
fin.
La notion de fonction
Définition : Une fonction est une procédure qui retourne un seul résultat
Déclaration : cf procédure, mais avec quellesques différences
1. le mot fonction remplace le mot procédure
2. Dans la liste des paramètres formels, aucun ne correspond à un résultat
3. Le résultat sera associé au nom de la fonction, il faut donc préciser son type
Appel de fonction
Un appel de fonction sera une action formée
1. du nom de la fonction
2. de paramètres effectifs ( qui correspond aux paramètres formels lors de
l’appel)
* Définition d'un algoritme
Pour un problème donné, un algorithme de résolution est une succession
d'opérations qui permet de faire passer l'environnement de l'état initial à l'état final
désiré, succesion telle que chaque opération soit :
- une action primitive
- un algo déja connu et décrit, une procédure ou une fonction
Rappel
Les algorithmes sont composés :
1. d’objets qui représentent l’information
2. d’opérations (ou d’actions) qui manipulent les objets
3. de structures de commandes qui gouvernent le déroulement de ces
opérations
Quelles sont ces actions : les actions élémentaires qui permettent de maniupuler
les objet sont : écriture, affectation
Les actions élémentaires
Lecture
La valeur d’un objet à traiter peut ne pas faire partie de l’environnement d’un travail
 il faut le faire rentrer dans l’environnement
Définition : on appelle lecture une opération qui fait entrer une valeur dans
environnement (par l’intermédiaire d’un appareil)
ex : unité de disque, bande, ...
notations :
lire (e)
« la prochaine valeur lue sur le périphérique d’entrée sera attribuée à la
variable e »
lire (console,e)
lire (a,b,c)
Les 3 prochaines valeurs lues seront affectées à a,b et c
Remarques :
 une lecture est une opération primitive
 toute lecture détruit l’ancienne valeur de l’objet
 il faut une comptabilité entre le flux d’entrée et l’objet
 la lecture d’une constante n’est pas définie
L'écriture :
On peut sortir de l'environnement pour communiquer une information vers
l'extérieur.
Définition: On appelle écriture une opération qui permet de communiquer à l'extérieur
la valeur d'un objet ou/et un message ( par l'intermédiaire d'un appareil.
Ex : imprimante, écran, disque, bande...
Notation :
Ecrire(<liste des éléments de sortie>)
Les éléments de sortie sont des variables, des constantes, des expressions dont on
calcule le résultat, des libellés...
ex:
écrire(A)
écrire(<Périph> A)
écrire('A=')
écrire('A=',A)
17
17
A=
A=17
Remarques:
-Toute écriture est une primitive
- Contrairement à la lecture, l'écriture ne détruit pas l'ancienne valeur de
l'objet
- La lecture et l'écriture ne sont que des affectations particulières
L'affectation
Définition: l'action d'affectation consiste à établir une relation entre un nom d'objet et
la valeur résultatnt de l'évaluation d'une expression
Notation : NE
N: Nom de la varialble à laquelle le processeur attribue la valeur
:Affectation
E: Expression, la valeur à affecter qui sera une constante, un message, le nom
d'une variable, une expression arithmétique...
Remarques:
1- N et E sont obligatoirement de même type
2- L'affectation est une opération destructrice, puisque l'ancienne valeur est
remplacée par la nouvelle.
3- L'affectation d'une valeur à une constante est interdite.
Constante :
A1
A est ici du type entier
Chaîne de caractères
Nom  ‘Dupond’
Nom est ici du type caractère
Nom de variable
Total  Somme
TOTAL
SOMME
Affecte à la variable Total, le contenu de la
variable de type Somme
10
13
avant
13
13
après
Seule la variable apparaissant à gauche du signe d'affectation change de valeur
Expression
Définition : une expression est une famille ou une règle de calcul qui détermine toujours
une valeur ou un résultat
Une expression pourra être simple ou composée
Les expressions simples :
Une expression simple est une combinaison d’opérandes et
d’opérateur arithmétique.
. les opérandes :
Les opérandes sont :
. des constantes désignée par leur nom ou pas
ex: Pi, 3,14, des variables.
. les opérateurs arithmétiques
Les opérateurs arithmétiques donnent un résultat numérique à partir
d’opérandes numériques
+ addition
- soustraction
* multiplication
/ division ordinaire
div division euclidienne
z  13/2
z  13 div 2
z reçoit 6,5
z recoit 6
 exponentiation
Exemple :
1. x
y 1
A  x+y
donc A=1
 x 
y 1
x x + y
donc x=1
3. A  x * 18,6
By+2
Résultat  A/B
4. PTTC  PHT + PHT * 18,6/100
si PHT : 120, quelle sera la vaaleur recue par PTTC
 si les opérateurs sont évalués de la gauche vers la droite
PTTC  44,64
 si les opérateurs sont évalués de la droite vers la gauche
PTTC  142,32
Ordre de priorité des opérateurs dans une expression simple :
2 cas : expression sans parenthèse
avec parenthèse
. Sans parenthèse
Les opérateurs arithmétique standards peuvent être répartis
en 4 classes :
1- opérateur d’exponentiation
. possède la priorité la plus haute
. évalués de la droite vers la gauche
2- opérateurs unaires (A ne pas confondre avec les
opérateurs binaires)
+ unaire
- unaire
. possèdent une priorité de 2ème niveau
. droite vers gauche
3- opérateurs de multiplication * ou de div, . ou div
. 3ème niveau
. gauche vers droite
4- opérateurs :
d’addition +
de soustraction . priorité de 4ème niveau
. évalués de gauche vers la droite
Classe
1
2
3
4
opération

 
* / div
+
-
signification
exponentielle
signe
multiplication,divison
addition, soustraction
évaluation
DàG
DàG
GàD
GàD
Parenthèses
On peut mettre des parenthèses si il y a ambiguité, pour rendre plus lisible ou pour forcer l’ordre
. Les parenthèses peuvent indiquer un ordre différent de l’ordre habituel. A l’intérieur d’une parenthèse,
l’ordre reste vrai. Si on des parenthèses consécutives, elle sont évaluèes de la gauche vers la droite. Si les
parenthèses sont imbriquées, les opérations les plus internes sont évaluées en priorité.
Les expressions composées
Une expression composée est une combinaison E1 R E2 de:
- 2 expressions simples E1 et E2
- un opétareur de relation R
(<,>,=,....)
Algorithmique
30/07/97
La notion de prédicat (ou fonction propositionnelles)
Définition :
Un prédicat est un énoncé vrai pour certains éléments d’un ensemble donné, et faux pour
les autres éléments de cet ensemble.
Ex :
 Le prédicat : « Y est un multiple de 2 » est
 vrai pour (4,6,8,...)
 faux pour (3,4,7,9,...)
 Le prédicat : « X aime Julie » est
 vrai pour Didier, Gérard
 faux pour Hubert et Jean-Michel
on distingue :
 les prédicats élémentaires
Si l’on effectue une comparaison entre deux valeurs de même type en utilisant
les opérateurs de relation
- Numériques : il existe une relation d'ordre
ex : Si X = 6 et Y = 30
X=Y
F
X>Y
F
X>3
V
XY
F
- Caractères
Il est nécessaire que sur l'ensembles des caractères utilisés, existe
une relation d'ordre définie par l'ordre alphabétique.
 les prédicats composés (ou expression logique)
Une expression logique est une combinaison P1 R P2 de 2 prédicats P1 et P2,
et un connecteur logique R : et, ou, non
non : (not) négation
et : (and) conjonction
ou : (or) disjonction
exemple : x=1 ou y=2 et z>3
si
x=1
V
V
V
V
F
F
F
F
y=2
V
V
F
F
V
V
F
F
Z>3
V
F
V
F
V
F
V
F
x=1
y=4
z=2
(y=2) et (z>3)
V
F
F
F
V
F
F
F
(x=1) ou (y=2) et (z>3)
V
V
V
V
V
F
F
F
Le « et » a priorité sur le « ou »
Rappel : Les algorithmes sont composés :
- d’objets qui représentent l’information
- d’opérations qui manipulent ces objets
- de structures de communication qui gouvernent le déroulement des opérations, des
actions
Quelles sont ces structures ?
Les structures de base :
- structuration séquentielle
- structuration alternative ou décisionnelle
- structuration répétitive
Structure séquentielle
C’est la structure la plus primitive, la plus élémentaire.
A1

A2

An 
- C’est une structure « de bloc » : c’est un lot ficelé.
- Les actions sont traitées une par une.
- Chaque action est traitée une fois. (mais pas plus). Et en plus elles sont exécutées dans
l’ordre d’écriture.
- L’exécution de la dernière instruction signifie qu’on quitte le bloc.
- aucune action n’est omise
- L’ordre des actions sera l’ordre d’écriture
Représentation de l’algorithme
Algorithme NESTOR
{Déclartations}
debut
a1
a2
a3
|
an
Fin
Structure conditionnelle
Dans la plupart des situations, on se retrouve face à un choix
Si une telle condition est réalisée ou effectuée une action sinon on en fait une autre
-
a
Si (Prédicat)
Alors b
c
Si ingénieur : a,b,c
Si pas ingénieur : a,c
ex1 : Calculer le salaire brut, si l’employé est ingénieur, ajouter la prime technicité. Enfin,
ajouter la prime d’ancienneté.
Calculer le salaire brut
Si l’employé est ingénieur
alors ajouter prime de technicité
ajouter prime d’ancienneté
ex2 : Calculer le salaire brut, puis si l’employé est ingénieur, ajouter prime technique sinon payer
les heures supplémentaires
a Calculer le salaire brut
P Si l’employé est ingénieur
b alors ajouter la prime de technicité
c sinon ajouter prime heures-sup
d ajouter prime d’ancienneté
Puis on ajoute des délimiteurs
Début
a
si P
alors b
Début
a
si P
alors b
fin si
c
…
fin
sinon c
fin si
d
…
fin
On peut emboiter les structures conditionnelles ;
si(prédicat1)
alors
sinon
si (prédicat2)
alors
fin si
fin si
Mais, l’utilisation de tel schémas peut se révéler très lourd :
ex :
Jour
Lundi
Mardi
Mercredi
Jeudi
Vendredi
Autres
Algo
Facturation
Réception
commandes
Comptabilité
F/S*
Erreur
(*Ndlr : Si vous ne savez pas ce qu’est F/S, allez voir un certain Mr Kueviakoe !)
Début
Si jour = lundi
Alors facturation
Sinon Si jour = mardi
Alors récéption
Sinon si jour = mercredi
Alors commandes
Sinon Si jour = Jeudi
Alors Comptabilité
Sinon Si jour = Vendredi
Alors F/S*
Sinon Si jour = Autres alors Erreur
Fin si
Fin si
Fin si
Fin si
Fin si
Fin
(Si j’en ai oublié, tant pis)
Structure de choix (sélective)
Dans le cas où une expression E a une valeur Vi associée, alors on exécute l’action Ai
associée
E
V1
A1
V2
Vi
A2
Vn
Ai
An
L’énoncé de choix s’écrira de façon formelle
Au cas où (Expression) =
valeur1 : action 1
valeur2 : action 2
valeur n : action n
fin cas
attention : Si il n’existe pas de k pour lequel E = Vl, l’énoncé de choix n’est pas défini,
le compilateur doit signaler l’erreur.
Au cas où jour =
lundi : acheter pain
fin cas
On peut aussi refaire le cas précédemment effectué avec les si.
(ndlr : M’enfin là j’ai la flemme)
Les structures itératives (ou répétitives)
définition : On appelle itération toute répétition de l’exécution d’une action ou séquence
d’action.
Si le nombre (n) d’itération est connu, on peut écrire n fois la fonction, solution
longue et fastidieuse.
Souvent le nombre d’itérations est inconnu, il faut utiliser des séquences
algorithmiques permettant de décrire tout les cas de figures. On utilise le
schéma :
Répéter....jusqu'à
- Exemple des polycopiés (TD 1)
Répéter
C1 : prendre les feuilles nécessaires à un exemplaire
C2 : Les agrafer
C3 :Les poser sur la table
Jusqu’à ce que C4 : Une des tables soit vide.
Répéter
Action(s)
Jusqu'à (prédicat de sortie de l’itération)
MAIS
- La condition d’arrêt est évaluée après chaque exécution.
- A est toujours exécuté au moins une fois
C’est parfois génant :
Algorithme DIVISION
Var
DVDE, DSEUR,R,Q :entier
Début
R  DVDE
Q0
Répéter
R  R - DSEUR
Q  Q+1
Jusqu'à R < DSEUR
Fin
Ceci produit des résultats étranges : si 9/11, on a le résultat 1 !
Le schéma : Tant que (prédicat) faire(action) fin faire
Tant que p
faire a
Fin faire
L’action a peut ne jamais être exécutée
Algorithme DIVISION
Var DVDE,DSEUR,R,Q : entier
début
R  DVDE
Q 0
Tant que R  DSEUR
faire R  R - DSEUR
QQ+1
fin faire
Fin tant que
fin
Téléchargement