les algorithmes
Post on 09-Jan-2016
73 Views
Preview:
DESCRIPTION
TRANSCRIPT
-
DbutPortB =0MLI = 0Tant Que vrai RpterSi (Bplus =0 OU Bpmoins = 0) AlorsSi (Bpplus=0 ET MLI50)Alors MLI =MLI - 51Fin SiSi MLI = 0 Alors jakubowicz MarcLyce LoritzFin SiAttendre 2sFin SiFin Tant QueFin
-
tapes de programmation
Dfinition dun cahier des charges fonctionnel (ce que doit faire le programme)
Dfinition de lenvironnement (A quelle broche brancher telles ou telles commandes)
Ecriture du programme:A partir du cahier charge fonctionnel (CdCf), le programmeur crit le programme. Le langage utilis est lalgorithme ou lalgorigramme.
Le codage:A partir de lalgorithme le codeur va transcoder lalgorithme ou algorigramme en un langage de haut niveau: C C++ Basic, ou en un langage de bas niveau: assembleurA ce stade le programme peut-tre simul afin de vrifier que son excution est conforme.
La Compilation:La compilation consiste transformer le langage de haut ou bas niveau en code machine directement excutable par le microcontrleur.
-
tapes de programmation
Programmation des composants.Le code machine et les variables de fonctionnement vont tre introduits dans les diffrentes mmoires du microcontrleur. La programmation peut s'effectuer:Sur site, le microcontrleur est dans son environnement, le technicien le place dans un mode "maintenance" ce qui permet de modifier n'importe quelle mmoire.Hors site, le microcontrleur est plac sur un programmateur externe, ce qui permet de modifier la mmoire ROM et EEPROM.
Vrification.Elle se fait directement sur le systme.
Points blancs = broche 1
Cble port COM1 (ne pas visser sur le PC SVP)
Alimentation 9V
Support ZIF
Points blancs = broche 1
A1
A0
A2A3
B0
B7
-
Un algorithme est une rgle.
Processus dfini par une succession finie, ordonne dans le temps, doprations dun acteur unique appliques un nombre fini de donnes conduisant en un nombre fini dtapes un rsultat dfini quelles que soient les valeurs des donnes dans leurs domaines de dfinition.
Algorigramme Reprsentation graphique conventionnelle dun algorithmeRgle 0
Lalgorithmique est faite pour dcrire laspect temporel des processus.
Un algorithme sans fin ne peut reprsenter quun programme mal fait et plant.
Deux vnements reprsents sur deux lignes (cellules graphiques) conscutivesse succdent strictement dans le temps.
-
Rgle 1
Deux vnements simultans doivent tre mentionns dans la mme lignedalgorithme, ou dans le mme rectangle dalgorigramme.Rgle 2
Les mots cls de lalgorithmique (il ny en na mme pas 20, un minimum de 12suffisent) semploient toujours souligns.Rgle 3
Les couples suivants fonctionnent comme des parenthses algbriques ( uneouverture correspond une et une seule fermeture sans enchevtrement) et sont toujours relis par des traits verticaux de validation :
-
Rgle 4
Le signe = a toujours une valeur de test boolen (une question laquelle la rponse ne peut tre que oui ou non, un affirmation qui ne peut tre que vraie ou fausse) , laffectation est toujours reprsente par son signe prend pour valeur : Rgle 5
Tout algorithme a un dbut et une fin. Un processus permanent a toujours une boucle principale qui natteint sa fin que sur rupture des conditions normales de fonctionnement.Rgle 6
Tout algorithme peut se reprsenter en algorigramme et rciproquement. Rgle 7
Lalgorigramme nest pas un outil danalyse des systmes, cest un outil devalidation et de prsentation des solutions labores en mode algorithme (texte).
-
Rgle 8
Les deux formes de boucle lgitimes ne sont pas quivalentes.Les vnements de la boucle rpter sont toujours excuts au moins une fois alors que la boucle tant que peut trs bien ne jamais avoir lieu.Rgle 9
Un si ne contrle jamais une boucle ! ! !Ce sont les structures tant que et rpter ...jusqu qui contrlent les boucles lgitimesRgle 10
La description en langage libre ne doit jamais contenir de structures decontrle implicites.
Cela interdit donc les synonymes plus ou moins avous de nos mots cls :continuer, reprendre, arrter, passer , attendre, stop, sauter en, selon, en fonction de, excuter, attendre, choisir, recommencer, soit que...soit que, quand, ds que, aprs que, vrifier, au cas o, etc...
-
Rgle 11
Une boucle algorithmique est toujours excute un nombre entier de fois.Rgle 12
Une boucle GOTO peut apparatre en premire analyse de constatation dunobjet existant mais elle peut et doit toujours tre limine de la version finale.Rgle 14
Deux boucles peuvent tre successives ou imbriques, jamais enchevtres.Rgle 13
LE GOTO slimine en rcrivant une boucle tant que ou rpter
Successives
Imbriques
Enchevtres
-
Rgle 15
La hirarchie matrielle dun systme doit se traduire par la hirarchie delalgorithme : lalgorithme lie une structure matriellement subordonne une autre ne peut tre quun sous- algorithme de lalgorithme de la structure prioritaireRgle 16
Tout tat physique mmoire (bascule, charge de condensateur, tat duncommutateur...) se reprsente par une variableRgle 17
La hirarchie algorithmique doit respecter la hirarchie matrielle.Rgle 18
Le sous-algorithme dune structure qui fonctionne sous le contrle matrielpermanent dune autre ne peut contenir de boucle durable .
-
Squence
Ensemble d'oprations, d'instructions, comprises entre deux dlimiteurs qui seront excutes successivement dans le temps.
DbutInstruction 1Instruction 2Opration 1Fin
-
Condition est une variable boolenne.
Structure algorithmique correspondante :
Si (condition vraie) alors faire Squence 1sinon faire Squence 2.Fin siAlternative ou choixAlternative multiple
Cas [variable_cl][condition_boolenne_1 sur variable_cl] [action_1][condition_boolenne_2 sur variable_cl] [action_2]...[condition_boolenne_n sur variable_cl] [action_n]sinon [action_autre]Fin cas
Condition vraie
Squence 1
Condition fausse
Squence 2
-
Itration (rptition)Rptition dune squence un nombre de fois dtermin ou non.n peut tre connu ou inconnu
Squence(s)
Rpter n fois
-
Pour Variable1 de dbut finPour Variable de [dbut] [fin]Squence 1Squence 2Rpter
Remarque : les variables [Dbut] et [fin] doivent tre dtermine avant litration.Faire jusquFaireSquence 1Squence 2 jusqu (condition = vraie)
Remarque : les squences sont ralises au moins une fois.Structures algorithmiques possibles :Tant que faireTant que (condition = vraie) Rpter Squence 1 Squence 2Fin tant que
Remarque : les squences peuvent ne pas tre ralises. Le Fin tant que nest pas obligatoire.
-
Reprsentation sous forme dalgorigramme
Dbut
Instruction 2
Sous programme
test
Instruction...
Sous programme
Dbut, fin, interruption
2
Renvoi
Test d'une condition
1
Renvoi
Traitement, Instruction, opration...
oui
non
-
Reprsentation sous forme dalgorigramme
Dbut
Instruction 2
test
IO
Sortie
Entre
Fin
DEL
Bp
Test d'une condition
Oprations sur des entres/sorties avec ou sans
2
Renvoi
xxx
Commentaire
Instruction...
non
oui
1
Renvoi
-
AlgorithmeAlgorigrammeQ BasicSquence linaire
Dbut :Instruction 1Instruction 2SquenceFin :Exemple de programme
Y=Y+1X=X*3+2CALL trace
Choix ou Alternative
SI (condition vraie) Alors faire Squence Sinon faire InstructionFin SIExemple de programme
IF touche = 1 THEN CALL clavier ELSE tmp=tmp+1END IFItration Fairejusqu
Faire SquenceJusqu (condition=vraie)Exemple de programme
DO CALL encodageLOOP UNTIL res=1
Dbut
INITPORT
t1 t1 minientrer t1 mini dans variable t1
Instruction 2
Instruction 1
Sous programme
Instruction 2
Fin
Front descendant dur bp M/A ?
Instruction 2
Sous programme
Instruction
Test ?
oui
non
Sous programme
test
-
AlgorithmeAlgorigrammeQ BasicItrationTant quefaire
Tant que (condition=vraie) Rpter Instruction SquenceFin Tant queExemple de programme
WHILE test=1 X=X+1 CALL tempoWENDItrationPour variable de dbut fin
Pour variable CNT de [dbut] [fin] instructionRpterExemple de programme
FOR CNT=0 TO 100 Y=CNT*12+3NEXT CNT
Instruction 2
Sous programme
test
Instruction
oui
non
Instruction 2
test
Incrmenter CNT
CNT dbut
Y CNT*12+3
CNT > fin ?
non
oui
-
Raliser le programme suivant: Initialisez une variable compteur 0. Sortir la variable compteur sur le port B Incrmenter la variable compteur Attendre 200ms. Recommencer linfini.
Dbut
Instruction 2
Sous programme
test
IO
Fin
boucle 0
Incrmenter boucle
Compteur
Incrmenter compteur
boucle >255 ?
non
oui
1
Compteur 0
Attendre 200ms
oui
non
Port B
-
Raliser le programme suivant: Initialisez une variable compteur 0. Sortir la variable compteur sur le port B Incrmenter la variable compteur Attendre 200ms. Recommencer linfini.Algorigramme type Flowcode
- void main(){COMPTEUR = 0 ;while( 1 ){for (LOOP1=0; LOOP1
-
program compteurdim compteur as bytedim boucle as byte
main:
trisb = $00 'Le port B est en sortie
While true compteur = $0 For boucle = 0 to 255 PortB = compteur compteur = compteur + 1 Delay_ms(200) Next boucle Wendend. 'Fin de programme
-
label2BCF STATUS, RP0CLRF gbl_COMPTEURCLRF gbl_LOOP1label6MOVLW 0xFFSUBWF gbl_LOOP1, WBTFSC STATUS,CGOTOlabel2BSF STATUS, RP0CLRF gbl_trisbBCF STATUS, RP0MOVF gbl_COMPTEUR, WMOVWF gbl_portbINCF gbl_COMPTEUR, WMOVWF gbl_COMPTEURMOVLW 0xC8MOVWF delay_ms_00000_arg_delCALL delay_ms_00000INCF gbl_LOOP1, FGOTOlabe6; } main function end
-
Alimentation 9V
Support ZIF
Points blancs = broche 1
A1
A0
A2A3
B0
B7
-
main: CMCON=7'Configure le portA en entres/sorties numriques trisa = $FF'le port A est en entre trisb = $00'Le port B est en sortie portb = $00'Met les sortie du port B 0 While (bp=1'Tant que bp non appuy faire la boucle Wend del=1'Sortie b0 1 Del allume Delay_ms(2000) 'Attendre 2s del=0 'Sortie b0 0 Del teinteend.'Fin de programme
Programme 0Eteindre toutes les DEL.Attendre que BP soit 1Allumer la DEL 0 durant 200ms.Eteindre la DEL 0.Termin.
Dbut
Instruction 2
Sous programme
test
IO
Port A en numriquePort A en entrePort B en sortie
BP=1 ?
0
1
Tempo 200ms
0
Fin
Port B
Port B.0
Port B.0
-
main: CMCON=7'Configure je portA en entres/sorties numriques trisa = $FF'le port A est en entre trisb = $00'Le port B est en sortie portb = $0'Met les sortie du port B 0
PortB = $FF 'Sortie b0 1 Del allume Delay_ms(1000) 'Attendre 1s PortB = 0 'Sortie b0 0 Del teinte Delay_ms(1000)'Attendre 1s
end.Programme 1
Allumer toutes les DEL.Attendre 1s.Eteindre toutes les DEL.Attendre 1s.Termin.
Dbut
Instruction 2
Sous programme
0
Port B
Port A en numriquePort A en entrePort B en sortie
Tempo 200ms
Tempo 200ms
Fin
Tempo 200ms
$FF
Port B
-
main: CMCON=7'Configure je portA en entres/sorties numriques trisa = $FF'le port A est en entre trisb = $00'Le port B est en sortie portb = $0'Met les sortie du port B 0
while true PortB = $FF 'Sortie b0 1 Del allume Delay_ms(1000) 'Attendre 1s PortB = 0 'Sortie b0 0 Del teinte Delay_ms(1000)'Attendre 1s Wendend.Programme 2
Allumer toutes les DEL.Attendre 1s.Eteindre toutes les DEL.Attendre 1s.Le programme se rpte linfini.
Dbut
Instruction 2
Sous programme
test
0
Port B
Port A en numriquePort A en entrePort B en sortie
Fin
Tempo 200ms
Tempo 200ms
1
OUI
NON
$FF
Port B
-
dim compteur as byte Dfinition de la variable compteur comme un octet
main: compteur = $0 While true Faire tant que doFaire PortB = compteur Delay_ms(200) compteur = compteur +1 loop until compteur = $FF Jusqu WendRpterend. Programme 3On va compter :Initialisez une variable compteur 0.Sortir la variable compteur sur le port BIncrmenter la variable compteur compteur = compteur +1Attendre 200ms.Et recommencer linfini.
Dbut
Instruction 2
Sous programme
test
initialisation PIC
Compteur 0
Tempo 200ms
Incrmenter compteur
Compteur = 255 ?
1
OUI
NON
Fin
OUI
NON
compteur
Port B
-
dim port as byte
main: While true Port = portA port= NOT Port PortB = port Wendend. Programme 5
Lire le port A en entre, le stocker dans une variable port on veut sur le port de sortie, linverse de portSortir sur le port B la variable /port .Et recommencer linfini.
Dbut
Instruction 2
test
Port
Port A
Port NOT port
initialisation PIC
Port
1
OUI
NON
Fin
Port B
-
main:While true chenille = $01 for compteur = 0 to 6 PortB = chenille delay_ms(200) chenille = chenille > 1 Next compteurWendendProgramme 6 7 Un petit chenillard Initialiser une variable chenille 01Sortir sur le port B la variable chenille .Attendre 200ms.Dcaler gauche dun bit la variable chenille Recommencer 7 fois.on veut que la DEL fasse un allez retour perptuel
Dbut
Instruction 2
Sous programme
test
initialisation PIC
Chenille
Tempo 200ms
1
OUI
NON
Fin
Chenille 1Compteur 0
Dcaler chenille de 1 bit gauche
OUI
Compteur > 6
Incrmenter compteur
NON
OUI
Tempo 200ms
Compteur 0
Dcaler chenille de 1 bit droite
Compteur > 6
Chenille
Incrmenter compteur
Port B
NON
OUI
Port B
-
main: While true port = portA.0 IF port = 1 then chenille = $01 for compteur = 0 to 7 PortB = chenille delay_ms(200) chenille = chenille > 1 Next compteur End IF Wendend. Programme 8Variante du programme 6, on veut que la DEL fasse un allez ou retour dans le sens de linterrupteur A0.
Dbut
Instruction 2
Sous programme
test
Port = 1
initialisation PIC
Tempo 200ms
1
OUI
NON
Fin
Chenille 1Compteur 0
Dcaler chenille de 1 bit gauche
Compteur > 7
OUI
NON
Tempo 200ms
Chenille
Dcaler chenille de 1 bit droite
Chenille $80Compteur 0
Compteur > 7
OUI
Incrmenter compteur
NON
Incrmenter compteur
Chenille
Port B
NON
OUI
Port
Port A.0
Port B
-
Ralisez le programme en Qbasic permettant de dessiner une courbe sinusodale.
Dbut
Initialiser l'cran en mode graphique 640x480 16 couleurs
Tracer l'axe des tensions 10 pts du bord gauche
Tracer l'axe de temps mi-hauteur
Gnrer la fonction sinus partir de NB (sinus en radian, sortie comprise entre 0 et 480)
Variable x 10
x = 640
Fin
Incrmenter NB
Oui
NON
Afficher le point de coordonn (x, sin)
0,0
640,0
0,480
640,480
top related