Classe de TS Cours
ALGORITHMIQUE
PROGRAMMATION DE MICROCONTROLEUR « PIC »
EN LANGAGE ALGORITHMIQUE
SOMMAIRE
1. Démarche algorithmique, algorithme et algorigramme……….………….. page 2
2. Les différentes structures d'algorigrammes..………….……….………….. page 3
2.a La structure linéaire….………….……….…………….……….………. page 3
2.b Les structures alternatives (ou conditionnelles) …………………….... page 4
2.c Les structures itératives ou répétitives.………………………………… pages 4, 5
3. Types de variables ou de constantes…………………………………………. page 6
4. Entrées -Sorties de données sur un port du microcontrôleur ……….…….. page 6
5. Fonctions d'attente …………………………………………………………… page 6
6. Expressions (ou calculs)
Opérateur d’affectation……...…………………………….. page 6
Opérateurs bit à bit sur un octet……...…………………… page 6
Opérateurs logiques sur un octet…………………………… page 7
Opérateurs de décalage sur un octet……...……………….. page 7
Opérateurs arithmétiques…………………………………. page 7
Opérateurs relationnels……………………………………... page 7
Ce document s’appuie en partie sur les spécificités du progiciel Flowcode utilisé pour la
programmation de microcontrôleurs à partir d’algorigrammes.
Les symboles d'algorigrammes utilisés par Flowcode sont conformes à la norme internationale ISO 5807 (*), très
proche de la norme française NF Z 61-100. La différence principale se situe au niveau des itérations (boucles
répétitives) pour lesquelles la norme ISO utilise un symbole spécifique alors que la norme NF utilise le symbole de
décision (alternative).
Flowcode effectue une 1ère compilation de l'algorigramme en langage C, puis en assembleur, puis en langage machine.
Ce passage par le langage C transparaît dans la mise en œuvre de certaines fonctionnalités du logiciel (par exemple le
symbole d’affectation est le signe « = » au lieu du « := » ou du « » prescrits par la norme.
Systèmes logiques et
numériques Algorithmique Sciences de
l’Ingénieur
1. Algorithme et algorigramme (ou ordinogramme) :
Un algorithme est un ensemble de règles opératoires rigoureuses ordonnant, à un processeur particulier,
d'exécuter dans un ordre déterminé, un nombre fini d'opérations élémentaires pour soudre tous les problèmes
d'un type donné (NF Z 61-100)
Un algorithme peut être représenté :
▪ soit littéralement grâce au langage algorithmique en respectant un formalisme d'écriture,
▪ soit graphiquement à l'aide de l'algorigramme en respectant un formalisme de symboles et de structure.
Algorigramme : les symboles décrivant un algorigramme sont définis par des normes (NF Z 67-010 et ISO 5807) :
2. Les différentes structures algorithmiques :
Un algorithme fait appel à diverses structures et met en œuvre un ensemble d’opérations et d’actions élémentaires
appelées primitives et constituant un répertoire.
Comme nous l'avons vu dans le paragraphe précédent, un problème étant posé, il sera décomposé pour s’écrire en une
succession de fonctions et d’actions élémentaires faisant appel aux primitives de la machine théorique. L’algorithme sera
ensuite traduit dans le langage de la machine réelle (pour nous le langage C) et constituera un programme. Chaque
primitive pourra être convertie en une ou plusieurs instructions.
Systèmes logiques et
numériques Algorithmique Sciences de
l’Ingénieur
Principales primitives :
Affectation, transfert
Opérations arithmétiques : addition, soustraction, multiplication, division, incrémentation, décrémentation…
Opérations logiques : oui, non, et, ou, ou exclusif
Opérations de décalage….
Présentation d'un algorithme littéral :
Nota : les primitives doivent être différenciées des autres textes (en gras souligné par exemple). Les commentaires
doivent être délimités par des accolades.
Algorithme « nom_algorithme »
Déclarations :
type octet non signé : chiffre1, chiffre2, …
type entier : codebon, codelu, …
type…
Début programme principal
{Initialisations}
codebon 4375
Répéter à l’infini
Sous-programme Acquérir_état _capteurs
Fin répéter à l’infini
Fin programme principal
a. Structure linéaire :
La structure linéaire consiste en une suite d’actions à exécuter dans l’ordre de leur énoncé.
ALGORITHME :
L’algorithme de la structure linéaire se traduit par
l’écriture de la suite d’instructions caractérisant le
processus ou la partie du processus considéré.
ALGORIGRAMME :
Nota : les systèmes automatisés nécessitent le plus souvent la mise en œuvre de structures plus complexes que la
structure linéaire, à savoir :
les structures alternatives lorsque des traitements sont liés à des choix (voir §2.b)
les structures itératives lorsque le traitement nécessite la répétition de boucles (voir §2.c)
Début algorithme Structure linéaire
Exécuter Instruction 1
Exécuter Instruction 2
…………
Exécuter Instruction n
Fin algorithme Structure linéaire
CI11 Systèmes logiques et
numériques Algorithmique Sciences de
l’Ingénieur
b. Structures alternatives :
Les structures alternatives (ou conditionnelles) mettent en œuvre une fonction de choix (décision) entre :
l’exécution ou non d'un traitement alternative simple
l’exécution d'un traitement ou d'un autre alternative complète (double)
l'exécution de différents traitements en fonction des valeurs d'une variable alternative généralisée
Algorigramme Algorithme littéral Langage C
Structure
alternative
simple
si <condition vraie> alors
<exécuter action1>
fin_si
if (<condition vraie>)
{
<exécuter action1> ;
}
Structure
alternative
complète
si <condition vraie> alors
<exécuter action1>
sinon
<exécuter action2>
fin_si
if (<condition vraie>)
{
<exécuter action1> ;
}
else
{
<exécuter action2> ;
}
Structure
alternative
généralisée
X=c1
vrai
faux
Action 1
Action 2
X=c2
vrai
faux
X=c3
vrai
faux
Action 3
Action 4
switch (X)
{
case c1 : {<action1> ; break}
case c2 : {<action2> ; break}
case c3 : {<action3> ; break}
default <action4> ;
}
Remarque
X est une variable pouvant prendre
les valeurs c1, c2, c3 ou autre.
c. Structures itératives ou répétitives (boucles) :
Les structures itératives, ou structures répétitives, se caractérisent par la répétition de l’exécution d’un traitement.
Il existe trois types principaux de structures itératives :
Itération 0..N : Le nombre de boucles n'est pas préalablement connu et l'action peut ne jamais être exécutée.
Itération 1..N : Le nombre de boucles n'est pas préalablement connu et l'action est exécutée au moins une fois.
Itération 0..Nf avec variable de contrôle : Le nombre de boucles est préalablement connu.
Règles de conception :
La conception du programme principal doit permettre une vision
globale du fonctionnement du système technique. Pour cela l'utilisation
de sous-programmes permet d'alléger le programme principal.
Le traitement se fera ensuite dans l’ordre suivant :
1- Lecture d’une entrée,
2- Modifier la ou les variables, effectuer des calculs,
3- Agir sur une ou plusieurs sorties.
Important : Les boucles peuvent être successives ou imbriquées, par
contre, sauf rare exception, il ne faut jamais qu’elles soient enchevêtrées car elles sont déstructurantes (risques de
dysfonctionnements).
Flowcode ne permet pas de créer des boucles enchevêtrées sauf dans le cas d'utilisation de sauts inconditionnels (points
de jonction). L’outil « point de jonction » est donc à utiliser avec beaucoup de précautions.
vrai
faux
Action
CI11 Systèmes logiques et
numériques Algorithmique Sciences de
l’Ingénieur
Algorigramme NF Z 67-010 Algorigramme ISO 5807 (*) Algorithme littéral Langage C
Itération
0..N
vrai
faux
Condition
Instruction 1
vrai
faux
Condition
Instruction 1
tant que <condition vraie>
faire
<exécuter instruction1>
fin_faire
Variante avec proposition inverse :
jusqu'à <condition vraie>
répéter
<exécuter instruction1>
fin_répéter
while (<condition vraie>)
{
<exécuter instruction1> ;
}
while !(<condition vraie>)
{
<exécuter instruction1> ;
}
while (1) //cette boucle est infinie
{
}
Itération
1..N
Condition
vrai
faux
Instruction 1
Condition
faux
vrai
Instruction 1
faire
<exécuter instruction1>
tant que <condition vraie>
Variante avec proposition inverse :
répéter
<exécuter instruction1>
jusqu'à <condition vraie>
do
{
<exécuter instruction1> ;
}
while (<condition vraie>) ;
do
{
<exécuter instruction1> ;
}
while !(<condition vraie>) ;
Itération
0..Nf
avec
variable
de contrôle
X>Xf
vrai
faux
Instruction 1
X:=X+pas
X := Xi
Xi est la valeur initiale de X
Xf est la valeur finale de X
pour X:=Xi jusqu'à Xf faire
<exécuter instruction1>
fin_pour
Si le pas est différent de 1 écrire :
pour X:=Xi jusqu'à Xf pas Y
faire
<exécuter instruction1>
fin_pour
for (X = Xi ; X ≤ Xf ; X+pas)
{
<exécuter instruction1> ;
}
Explication
for (<initialisation> ; <condition> ; <opération>)
// la boucle est réalisée tant que la condition est vraie
for (a=0 ; a<=10 ; a++)
// la boucle est réalisée 11 fois
for ( ; ;) // cette boucle est infinie
Début algorithme Structure linéaire
Proposition
inverse
Proposition
inverse
Proposition
inverse
Proposition
inverse
Pas de 1
1 / 8 100%