les ALGORITHMES

publicité
ALGORITHMIQUES
1
Qu’est-ce qu’un algorithme ?

« écrire un algorithme », c’est :


Analyser et comprendre le problème : étudier les
données fournies et les résultats attendus
Résoudre le problème, c’est trouver les structures
de données adaptées ainsi que l’enchaînement
des actions à réaliser pour passer des données
aux résultats
 Comment exécuter un algorithme sur un
ordinateur ?

Il faut traduire cet algorithme à l’aide d’un langage
de programmation connu par l’ordinateur.
2
Qu’est-ce qu’un algorithme ?
Un algorithme correspond à la description d’un
processus logique écrit en langage naturel décrivant
une succession d’opérations à exécuter dans un
certain ordre et sous certaines conditions, pour
passer des données de base aux résultats
3
Qu’est-ce qu’un algorithme ?

L’algorithmique est la technique des algorithmes

Un algorithme décrit un traitement selon une
logique et un formalisme rigoureux.

L’algo prépare la programmation
 L’algo est une étape préalable indispensable à la
réalisation d’un bon programme
 C’est une méthode de découpage d’un traitement en
instructions élémentaires
4
Caractéristiques d’un algorithme

Il contient plusieurs séquences à exécuter
 Ensemble d’actions élémentaires

les séquences (étapes) se succèdent dans un
certain ordre

Il peut éventuellement exister une répétition
(itération) ou une condition d’exécution ou non
de certaines séquences

Il est caractérisé par un début et une fin
5
La structure d’un algorithme
En général, un algo comprend 4 parties :
1. la déclaration des variables nécessaires aux
traitements
2. Au début de l’algo, l’initialisation des
variables : affectation de valeurs initiales aux
variables déclarées
6
La structure d’un algorithme
3. Le traitement des différentes séquences
ordonnées de l’algo :
Réalisation d’actions élémentaires ou
structurées
Appel de procédures ou de fonctions
externes : « sous-traitement » de portée
générale qui sont réutilisés dans plusieurs
algorithmes différents
4. À la fin de l’algo, la sortie des résultats et
l’arrêt de l’algo
7
Les objets utilisés dans l’algo
Un algo utilise des objets qui peuvent être des
variables, des constantes.

Chaque objet à un rôle qui consiste à mémoriser
une valeur particulière significative :
 La variable qui contient une valeur appelée à être
modifiée au cours de l'algorithme.
 La constante qui retient une valeur qui ne change pas
au cours de l'algorithme

Un objet est parfaitement défini s’il est
parfaitement identifié, typé et renseigné
8
a) caractéristiques d’une variable
Une variable est un dispositif de mémorisation d’une valeur à
laquelle on accède à tout moment. Elle est caractérisée par :
 Un rôle : signification attribuée à la variable
 Un nom (identificateur) : « contenant » permettant
d’accéder directement à son contenu. Il doit être le plus
parlant et le plus évocateur du rôle de la variable
 Une valeur : contenu de la variable à un moment donné
Variables de type élémentaire : contient 1 seule valeur
Variables de type tableau : contient plusieurs valeurs
contenues dans un tableau déclaré dans un seul type
 Un type : c’est la définition du domaine dans lequel une
variable peut puiser sa valeur
9
b) Tableau de déclaration de variables
N°
Nom
Statut
Rôle
Type
Format
(Entier, réel,
texte, date,
booléen)
(Entrée ou
Sortie)
1
Codecli
E
Code du
client
entier
111
2
datfact
E
date
jj/mm/aaaa
3
4
anciencli
Nomcli
E
E
Date de la
facture
Ancien client
Nom du
client
Booléen
Texte
Oui / non
40 car
…
10
Les règles de mise en forme de
l’algorithme
Nom de l’algorithme
Début
Déclaration des variables et constantes
Instructions1
Instructions 2
Fin
11
Les actions élémentaires
1.
L’instruction d’affectation
L'opération consiste à affecter une valeur à
une variable. Elle est représentée par une
flèche orientée à gauche
NomVariable
expression ; constante ; variable
Exemple : Nomcli
« DUPONT »
A
100
B
A * 0.196
A
A+B
12
Les instructions élémentaires
2.
L’instruction d’entrée : SAISIR ou ENTRER
A l’exécution de cet ordre, l’ordinateur demande à
l’utilisateur de lui communiquer par l’intermédiaire du
clavier ou de la souris, une valeur.
L’info saisie doit être cohérente avec le type de la variable.
Remarque : lors de la saisie d’une donnée, celle-ci est automatiquement
affichée à l’écran.
SAISIR « nom de l’élève : », NOMELEV
3.
L’instruction de sortie : AFFICHER
A l’exécution de cet ordre, l’information est
restituée à l’écran.
AFFICHER « La note obtenue par : », NOMELEV, « est de : », NOTE
13
Exemple d’algo – niveau 1
Ex Algo : Facture
Début
* Constantes:
TXTVA : 0,196
Variables
Ref, Nb
: Entier
Puht, BrutHT, : Réel Entrée des données élémentaires
SAISIR « référence de la bouteille ? », Ref
SAISIR « Prix HT d’une bouteille ? », Pu
SAISIR « Combien de bouteilles achetées ?, Nb
* Calcul du montant dû par le client
BrutHT
Pu * Nb
* Sortie des résultats
Afficher "Montant dû par le client:", BrutHT
etc.
Fin
14
Les actions structurées
Les instructions structurées sont des
structures algorithmiques de base.
C’est l’ordonnancement logique des actions,
tenant compte des décisions à prendre, qui
structure l’algo
1. La structure alternative
2. La structure itérative
15
La structure alternative
Cette structure permet de mener deux
actions différentes selon une condition. La
condition peut être simple ou combinée
(avec les opérateurs logiques ET, OU). Les
alternatives peuvent s’imbriquer.
Alternative complète :
Si « condition »
Alors « Action 1 »
Sinon « Action 2 »
Fin Si
Alternative appauvrie :
Si « condition »
Alors « Action 1 »
Fin Si
16
Exemple d’algo – niveau 2
Algo :
Début
Constantes:
TXTVA : 0,196
Variables
Ref, Nb : Entier
Pu, BrutHT, Rem, NetHT, netTTC
* Entrée des données élémentaire
: Réel
SAISIR « référence de la bouteille ? », Ref
SAISIR « Prix HT d’une bouteille ? », Pu
SAISIR « Combien de bouteilles achetées de cette référence ?, Nb
* Calcul du montant dû par le client
…..
* Sortie des résultats
Afficher "Montant dû par le client:", NetTTC
Fin
17
Exemple d’algo – niveau 2
* Calcul du montant dû par le client
* *Calcul du montant de la remise
BrutHT
Pu * Nb
Si Nb >= 24
Alors Rem
BrutHT * 0,05
Sinon Rem
0
Fin Si
* *Calcul du montant net HT
NetHT
BrutHT – Rem
** Calcul du montant net TTC
Si NetHT > 2000
Alors NetTTC
Sinon NetTTC
Fin Si
NetHT * 0,9 * (1+TxTVA)
NetHT * (1+TxTVA)
18
Variante de la structure alternative
pour remplacer avantageusement la structure
alternative (SI..ALORS…SINON…), quand il y a un
grand nombre de cas possibles selon les valeurs
que peut prendre une variable, on peut utiliser la
structure SELON CAS :
Selon Cas <variable>
Cas <expression>
<action1>
Cas <expression>
<action2>
…
Voir exemple : calcul
des frais réels
Cas Sinon
<action3>
Fin selon
19
ALGO calcul des frais de
déplacement
Variables :
Nbkm : entier
Puissance : entier
Tarif : réel
Frais : réel
Saisir « puissance fiscale du
véhicule :», puissance
Saisir « nombre de kilomètres
parcourus :», nbkm
* Calcul des frais
* Affichage des résultats
Afficher « le montant des frais de
déplacement est de :», frais
Si nbkm <= 100
Alors frais
0
Sinon
Selon Cas puissance
Cas 1 à 3
tarif = 1
Cas 4 à 6
tarif = 1.5
Cas 7 à 8
tarif = 2
Cas 9 à 12
tarif = 2.5
Cas Est > 12
tarif = 3
Cas Sinon
tarif = 0
Fin Selon
frais
tarif * nbkm
Fin Si
20
La structure itérative
L’itération (ou boucle) est une structure qui permet de
faire répéter un ensemble d’actions, un certain
nombre de fois dans un ordre préalablement défini.
Il existe trois types de structures itératives :
1. la structure « TANT QUE… FAIRE » :
Le nombre de répétitions n’est pas connu et peut être nul : 0 à n
répétitions
2. la structure « REPETER… JUSQU’À » :
Le nombre de répétitions n’est pas connu mais ne peut pas être nul : 1
à n répétitions
3. la structure « POUR… FIN POUR » :
Le nombre de répétitions est connu (i= 1 à 20)
21
La structure «TANT QUE… FIN TANT QUE»
… Début
* TOTALTTC : réel
TOTALTTC  0
SAISIR « Quelle est la référence des bouteilles achetées ? », Ref
* répétition du calcul du montant dû pour
TANT QUE Ref <> 0 FAIRE
* Entrée des autres données élémentaires Pu, Nb
* * Calcul du montant de la remise
* * Calcul du montant net HT
* * Calcul du montant net TTC
TOTALTTCTOTALTTC + NETTTC
Saisir « Autre référence de bouteille :», ref
FIN TANT QUE
AFFICHER «montant total TTC facturé et dû par le client », TOTALTTC
Fin
22
La structure «REPETER… JUSQU’A»
Algo : FactBout (d’après sujet Bac IG Désaltère)
Variables :
… TOTALTTC : réel
Réponse : booléen
Début
* Initialisation de la variable TOTAL
TOTALTTC
0
* répétition du calcul du montant dû pour
REPETER
* Entrée des autres données élémentaires Ref, Pu, Nb
* * Calcul du montant de la remise
* * Calcul du montant net HT
* * Calcul du montant net TTC
TOTALTTC
TOTALTTC + NETTTC
Saisir «Y-a-t-il une autre référence de bouteille :», réponse
JUSQU’À réponse
NON
AFFICHER «montant total TTC facturé et dû par le client », TOTALTTC
Fin
23
La structure «POUR… FIN POUR»
Algo : FactBout (d’après sujet Bac IG Désaltère)
Variables :
… TOTALTTC : réel
NBREF : entier
i : entier
Début
* Initialisation de la variable TOTAL
TOTALTTC
0
SAISIR « nombre de références différentes des bouteilles achetées : », NBREF
* répétition du calcul du montant dû pour
POUR i = 1 à NBREF
* Entrée des autres données élémentaires Ref, Pu, Nb
* * Calcul du montant de la remise
* * Calcul du montant net HT
* * Calcul du montant net TTC
TOTALTTC
TOTALTTC + NETTTC
FIN POUR
AFFICHER «montant total TTC facturé et dû par le client », TOTALTTC
Fin
24
Les actions nommées :
procédures et fonctions
Dans le principe, un bon algorithme ne
devrait pas dépasser une page !
Pour respecter ce principe, il convient de
NOMMER certaines séquences d’actions qui
correspondront à des procédures ou à des
fonctions
Ainsi, ces actions nommées seront décrites
dans des algorithmes auxiliaires et seront
utilisées dans un algorithme principal.
25
Les
procédures
Une procédure est un algo auxiliaire qui




contient une séquence d’actions :
La procédure est désignée par un nom
La procédure est appelée, une ou plusieurs
fois, dans un ou plusieurs algos principaux.
La procédure a besoin de variables
élémentaires déclarées dans l’algo principal
La procédure renvoie, dans l’algorithme
principal, un ou plusieurs résultats contenus
dans des variables déclarées dans l’algo
principal
26
L’utilisation des procédures - Exemple
Algo principal : Lasagnes à la Bolognaise
Variables :



500g lasagnes précuites –150 g parmesan – 50 gbeurre
plat à gratin
NBpers
DEBUT
Saisir « Plat pour combien de personnes ? », nbpers

Préparer la sauce bolognaise (nbpers)

Préparer la sauce béchamel (nbpers)
1. Disposer vos ingrédients dans le plat
 Préchauffer four thermostat 6 et beurrer un plat à gratin
 Disposer une couche de lasagne au fond du plat
 Étaler généreusement de la sauce bolognaise
 Puis recouvrir de sauce béchamel
Renouveler l’opération 1 ou 2 fois selon la hauteur du plat
Parsemer de parmesan et de beurre
Faire gratiner 35 min au four à chaleur tournante
FIN
27
Algo auxiliaire :
Procédure Bolognaise (quantité)
Variables locales (pour 8 personnes) :
600g de bœuf et porc haché - 100 g de dés de lard fumé - 500 g oignons _300 g
champignons – 2 carottes – 2 côtes de céleri – 60 cl vin blanc – 70 cl bouillon - 60 cl
purée de tomates – huile d’olive – poivre – 100 g beurre
DEBUT procédure
 Pelez et coupez les oignons, carottes, céleri
 Faire revenir ces légumes 5 min dans huile d’olive et 50g de
beurre
 Faire dorer les champignons puis la viande et le lard dans une
poêle avec 25 g de beurre et un peu d’huile d’olive
 Regrouper la viande avec les légumes .Verser le vin et laisser
mijoter 20 min à feu doux.
 Délayer le bouillon et la purée de tomate et ajouter à la
préparation
 Poivrer et laisser mijoter 1 h 30
FIN Procédure
28
Algo auxiliaire :
Procédure Béchamel (quantité)
Variables locales (pour 8 personnes) :
80g de farine – 1,25 l de lait - 100 g beurre – noix de muscade – sel poivre
DEBUT procédure
 Faire fondre le beurre dans une casserole
 Ajouter la farine et mélanger pendant 2 min à feu doux
 Verser peu à peu le lait en remuant régulièrement
 Porter à ébullition pendant 5 min en toujours en remuant
 Poudrer de noix de muscade. Saler. Poivrer
 Retirer du feu et couvrer.
FIN Procédure
29
L’utilisation des procédures - Exemple



L’algorithme appelant (lasagnes) est celui qui
contient l’appel aux procédures (bolognaise et
béchamel ).
L’algorithme appelé (bolognaise ou béchamel)
utilise des variables déclarées dans l’appelant :
il s’agit donc de variables globales (Nbpers)
L’algo appelé peut déclarer ses propres
variables qu’il est seul à utiliser. Il s’agit de
variables locales (liste ingrédients)
30
L’intérêt d’utiliser des procédures est de
permettre une plus grande lisibilité de l’algo
principal (appelant) :

Gain de temps car cela évite d’écrire plusieurs
fois la même chose. l’algo auxiliaire peut être
appelé dans plusieurs algos principaux :
: pizza à la bolognaise – Appelé : Bolognaise
 Appelant : choux fleur Sauce Mornay –Appelé :
Béchamel
 Appelant

Mise à jour plus aisée de l’algo principal :
Réduction du risque d’erreur car seul l’algo
appelant est modifié
31
Les fonctions
Une fonction est une procédure particulière
qui ne renvoie, dans l’algorithme principal,
qu’un et un seul résultat.
La fonction est appelée dans l’algorithme
principal, directement dans une instruction :
 en général, elle apparaît dans la partie droite
d’une affectation
Lors de son appel, la fonction est évaluée à
partir d’arguments qui lui sont fournis
 le résultat vient se substituer au nom de la
fonction dans l’expression appelante
32
Les fonctions
Toute utilisation de la fonction nécessite donc
deux spécifications :
1. Un nom
2. Un ou plusieurs paramètres
Exemple :
déduction1 ---- fraisforfait (somme)
33
Les fonctions
Il existe deux catégories de fonctions :
1. Les fonctions standards : fonctions de
base offertes par le langage utilisé
2. Les fonctions utilisateurs : Tôt ou tard,
l’utilisateur devra développer ses propres
fonctions à partir du langage utilisé. En
effet, elles doivent répondre à un besoin
précis et elles ne seront pas disponibles
dans la bibliothèque du langage de
programmation utilisé…
34
Application : voir TP ALGO DECFISC
Calcul du revenu imposable d'un contribuable
Revenu net annuel global
Type de déduction des frais
(1 = forfaitaire ou 2 = réel) :
2
Reste net
Abattement de 20%
( limité à 20000 €)
REVENU NET IMPOSABLE
35
La notion de variables tableaux
Dans un algo, il est possible qu’une variable
puisse contenir à un moment donné, non
pas une valeur, mais plusieurs valeurs à la
fois.
 Il
•
•
s’agit dans ce cas d’une variable TABLEAU
Un tableau est une variable qui permet de
stocker des valeurs de même type.
Chaque valeur est repérée par un indice
indiquant sa position dans le tableau
36
La déclaration de variables tableaux
Un tableau doit avoir :


un nom déclaré comme un type particulier de
données
Une dimension connue à l’avance :
 La dimension correspond au nombre
maximum de cases composant le tableau
 Un indice doit être déclaré pour permettre
d’adresser les différentes cases du tableau.
L’indice est obligatoirement du type entier
NOMTABLEAU [nbvaleurmax] : type
(préciser aussi le rôle de la variable tableau)
i : entier
(indice)
37
L’utilisation de variables tableaux



Un tableau peut être à 1 ou 2 dimensions.
L’accès à l’élément d’un tableau s’effectue :
 En précisant la position relative de l’élément
par rapport au début du tableau.
 En utilisant le ou les indices
Exemple de tableau à 1 dimension :
reprenons notre TP DECFISC…
Pour calculer les frais réels, nous pouvons utiliser un
tableau (voir version 2) contenant toutes les valeurs
correspondantes à la puissance fiscale du véhicule, au
lieu d’utiliser la structure SELON CAS (version 1) …
38
Algo Fonction version 1 du calcul
des frais réels
SI NBKM <= 100
ALORS déduction1 = 0
SINON
Selon Cas puissanceF
Cas 1 à 3
tarif = 0,1
Cas 4 à 6
tarif = 0,15
Cas 7 à 8
tarif = 0,25
Cas 9 à 12
tarif = 0,4
Cas Est > 12
tarif = 0.5
Cas SINON
tarif = 0
Fin Selon
Déduction1 = tarif * NBKM
FIN SI
Algo fonction version 2 du calcul des
frais réels
*déclaration du tableau Tarif
tarif [13] : tableau de 13 réels
i : entier
* Initialisation des valeurs du tableau
Tarif[7] = 0.25
Tarif[1] = 0.1
Tarif[8] = 0.25
Tarif[2] = 0.1
Tarif[9] = 0.3
Tarif[3] = 0.1
Tarif[10] = 0.3
Tarif[4] = 0.15
Tarif[11] = 0.3
Tarif[5] = 0.15
Tarif[12] = 0.3
Tarif[6] = 0.15
Tarif[13] = 0.5
‘calcul de la déduction au frais réels
SI NBKM <= 100
ALORS déduction1 = 0
SINON SI puissanceF > 13
ALORS i = 13
SINON i = puissanceF
FIN SI
Déduction1 = Tarif(i) * NBKM
39
FIN SI
L’utilisation de variables tableaux
Exemple de tableau à 2 dimensions :
Prenons le TP RAPID’AUTO…
Code catégorie de véhicule loué
Code
période de
location
1
2
3
4
Périodes de location
1
2
3
4
journée (lun - mar - mer - jeu)
Week-End (du samedi 12h au lundi 10h
ou vendredi 10h à samedi 18h)
Semaine (du lundi 8 h au vendredi 17 h)
75,00 €
82,00 €
129,00 €
105,00 €
126,00 €
155,00 €
219,00 €
180,00 €
291,00 €
338,00 €
519,00 €
411,00 €
Forfait : 2 semaines
650,00 €
700,00 €
1 000,00 €
800,00 €
Pour déterminer le forfait de location applicable selon la
catégorie du véhicule loué ET la période de location
choisie, nous pouvons utiliser un tableau à 2 dimensions
(voir version 2) contenant toutes les valeurs applicables au
forfait de location du véhicule, au lieu d’utiliser la structure
SELON CAS (version 1) …
40
Algo Fonction version 1
Algo fonction version 2
Fonction forfait(categ, typeloc)
SI categ = 1
ALORS Selon Cas typeloc
Cas 1
forfait = 75
Cas 2
forfait = 126
Cas 3
forfait = 291
Cas 4
forfait = 650
Fin Selon
SINON SI categ = 2
ALORS Selon Cas typeloc
…
Fin Selon
SINON SI categ = 3
ALORS Selon Cas typeloc
…
Fin Selon
SINON SI categ = 4
ALORS Selon Cas typeloc
…
Fin Selon
SINON forfait = 0
FIN SI
FIN FONCTION
Fonction forfait(categ, typeloc)
*déclaration du tableau à 2 dimensions
TABFORLOC : tableau de 16 réels
categ : entier
(indice de colonne)
typeloc : entier (indice de ligne)
* Initialisation des valeurs du tableau
TABFORLOC[1,1] = 75
TABFORLOC[1,2] = 126
TABFORLOC[1,3] = 291
TABFORLOC[1,4] = 650
TABFORLOC[2,1] = 82
TABFORLOC[2,2] = 155
TABFORLOC[2,3] = 338
TABFORLOC[2,4] = 700
TABFORLOC[3,1] = 129
TABFORLOC[3,2] = 219
TABFORLOC[3,3] = 519
TABFORLOC[3,4] = 1000
TABFORLOC[4,1] = 105
TABFORLOC[4,2] = 180
TABFORLOC[4,3] = 411
TABFORLOC[4,4] =880
* choix de la valeur renvoyée dans la
fonction grâce aux indices
Forfait = TABFORLOC[categ,typeloc]
FIN Fonction
41
FIN du cours d’algo
N’oubliez pas :
Un bon programme, c’est
d’abord un bon algo !
42
Téléchargement