La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

CSI 3525, Contrôle, page 1 Instructions de contrôle Instructions simple Instructions structurées de base Séquence Sélection Itération Instruction jump.

Présentations similaires


Présentation au sujet: "CSI 3525, Contrôle, page 1 Instructions de contrôle Instructions simple Instructions structurées de base Séquence Sélection Itération Instruction jump."— Transcription de la présentation:

1 CSI 3525, Contrôle, page 1 Instructions de contrôle Instructions simple Instructions structurées de base Séquence Sélection Itération Instruction jump

2 CSI 3525, Contrôle, page 2 Instructions simple dans les langages impératifs Celles-ci sont des opérations atomiques (tout ou rien): assignation, Instruction vide, Appel à une procédure, exit, next, break, continue goto (jump). Un bloc est aussi une opération tout-ou-rien.

3 CSI 3525, Contrôle, page 3 Instructions structurées séquence, ou instruction composée: { S1 S2 } sélection, ou instruction conditionnelle: if (C) S1 else S2 itération, ou instruction de boucle: while (C) S Trois mécanismes fondamentaux nous permettent de regrouper des instructions en une instruction structurée.

4 CSI 3525, Contrôle, page 4 Toute autre instruction de contrôle structurée est dérivée de ces trois mécanismes de base. if (C) S if (C) S else {} do S while (C) S while (C) S switch (i) {if (i == C1) S1 case C1: S1 … else … et ainsi de suite. )

5 CSI 3525, Contrôle, page 5 Séquence (1) LangagesMécanismes Algol, Pascal, Ada,...begin... end C, Java, Perl{... } Fortran IVrien Prologimplicite a :- b, c, d. veut dire évaluer b, puis c, puis d. Scheme(begin...)

6 CSI 3525, Contrôle, page 6 Séquence (2) Une seule entrée, une seul sortie Une instruction composée est traitée comme une instruction simple. Ceci est base sur le principe de labstraction: On peut « faire abstraction » de la structure interne.

7 CSI 3525, Contrôle, page 7 Sélection La structure if-else existe dans presque tout les langages de programmation (Prolog est lexception importante). Modula et Ada sont les premiers à avoir correctement entoures le if-then-else avec 4 mots-clef autours de 3 éléments: if C then S1 else S2 end if Il y a aussi la sélection imbriquée if-elsif-...-else dans Ada: if C1 then S1 elsif C2 then S elsif Cn then Sn else Sn+1 end if

8 CSI 3525, Contrôle, page 8 Formes spéciales de sélection en Fortran IV GO TO calculé. GO TO (label 1,..., label n ), expression Lexpression retourne un entier et on va au label correspondant. GO TO assigné. ASSIGN label i TO variable GO TO variable(label 1,..., label n )

9 CSI 3525, Contrôle, page 9 Linstruction switch de C et Java est inspirée des GO TO calculé. switch(expression){ case const 1 : S 1 ;... case const n : S n ; default: S n+1 ;} Après que S i est exécuté, lexécution se poursuit en cédant le contrôle aux cas suivant: S i+1 est le suivant à être exécuté. Ceci peut être évité avec linstruction break. Formes spéciales de sélection (2)

10 CSI 3525, Contrôle, page 10 Linstruction case de Pascal et Ada: chaque cas est séparé, lexécution des autres cas ne se poursuit pas après quun cas est exécuté. En Ada: case expression is when constantList 1 => S 1 ;... when constantList n => S n ; when others => S n+1 ; end case; (3)

11 CSI 3525, Contrôle, page 11 La sélection, en Prolog, se fait plutôt selon la réussite, ou léchec de lévaluation de prédicats. La sélection est implicite dans le backtracking: si il y a réussite, stop; sinon, essaie un autre choix. union( [Elem | S1], S2, S1_S2 ) :- member( Elem, S2 ), union( S1, S2, S1_S2 ). union( [Elem | S1], S2, [Elem | S1_S2] ) :- \+ member( Elem, S2 ), union( S1, S2, S1_S2 ). union( [], S2, S2 ). (4)

12 CSI 3525, Contrôle, page 12 Représentation avec des graphes organigramme S2S2 C S1S1 Y N C S Y N if–then–else if–then

13 CSI 3525, Contrôle, page 13 Le principe dabstraction: if ( C ) S1 else S2 est une expression simple. S2S2 C S1S1 Y N Single entry, single exit 2)

14 CSI 3525, Contrôle, page 14 if–then–elsif-…elsif-then-else S2S2 S1S1 Y N C2C2 C1C1 S3S3 N C3C3 SnSn N CnCn … YY Y S n+1 (3)

15 CSI 3525, Contrôle, page 15 case e of v1: S1;... else Sn+1 end (4) S2S2 S1S1 Y N e=v 2 e=v 1 S3S3 N e=v 3 SnSn N e=v n … YY Y S n+1

16 CSI 3525, Contrôle, page 16 Itération Variations: itération pré-test ou itération post-test. while C do S Pascal repeat S until C while (C) S Java do S while (C) while C loop S end loop; Ada (pas ditération post-test)

17 CSI 3525, Contrôle, page 17 En Ada, le préfixe while C est une extension de linstruction itérative de base: for i in range Une telle boucle doit donc être terminée à partir de lintérieur. La terminaison forcée arrête litération: exit; inconditionnelle exit when C; )

18 CSI 3525, Contrôle, page 18 Le préfixe while est une abréviation. La boucle: while C loop S end loop; est équivalente à loop exit when not C; S end loop; 3)

19 CSI 3525, Contrôle, page 19 Exemple: exit SUM := 0; loop get(X); exit when X = 0; SUM := SUM + X; end loop; Simple, et plus intuitif SUM := 0; get(X); while X /= 0 loop SUM := SUM + X; get(X); end loop; La condition est inversée, get(X) apparais deux fois

20 CSI 3525, Contrôle, page 20 Représentation avec des graphes while-do C S Y N repeat-until S Y N S ¬C C YN S repeat-until

21 CSI 3525, Contrôle, page 21 loop - exit - end loop S2S2 Y N S1S1 C

22 CSI 3525, Contrôle, page 22 Boucles for Les boucles for ("contrôlées par un compteur") sont apparus avant les boucles while ("contrôlées par une condition"), et sont moins générales. DO 1000 var = lo, hi Fortran IV CONTINUE DO label var = lo, hi, incr for var := expr do S Algol 60 for var := low step incr until high do S for var := expr while C do S Les itérateurs peuvent être combinés: for i := 0, i+1 while i n do S(i)

23 CSI 3525, Contrôle, page 23 for var in range Ada loop S end loop; for var in reverse range loop S end loop; for (e1; e2; e3) S C, Java, Perl Quest-ce que ceci? for (;;) S

24 CSI 3525, Contrôle, page 24 Litération en Prolog et en Scheme est uniquement obtenu avec la récursivité. La même approche peut aussi être utilisée dans la plupart des autres langages.

25 CSI 3525, Contrôle, page 25 Jump (linstruction goto ) Le transfert sans contrainte de lexécution est le seul mécanisme disponible dans les langages de bas niveau mais cest un outil très général. La sélection à une seul branche et le goto nous permettent dexprimer tout les autres structures de contrôle. Le mécanisme du jump est dangereux, il peut restreindre la lisibilité et devrait être évité les structures de contrôle plus avancées sont peuvent efficacement accomplir toutes les tâches habituelles, et la plupart des tâches moins fréquentes.

26 CSI 3525, Contrôle, page 26 Certain langages restreignent lusage du goto (ne permettent pas son usage à lintérieur dune itération ou dune sélection) et font ainsi en sorte quil est difficile de lutiliser. Ada fait en sorte que les étiquettes soient facile à voir dans un programme (ce qui décourage leur usage par des programmeurs voulant les utiliser malgré quelles soient interdite par leur patron). SUM := 0; loop get(X); if X = 0 then goto DONE; end if; SUM := SUM + X; end loop; > put(SUM); goto peut causer des problèmes quand il fait sortir dun bloc qui nest ainsi pas termine de façon normale.


Télécharger ppt "CSI 3525, Contrôle, page 1 Instructions de contrôle Instructions simple Instructions structurées de base Séquence Sélection Itération Instruction jump."

Présentations similaires


Annonces Google