Instructions de contrôle

Slides:



Advertisements
Présentations similaires
Chapitre annexe. Récursivité
Advertisements

Portée des variables VBA & Excel
Fonctions & procédures
Calculs de complexité d'algorithmes
GEF 243B Programmation informatique appliquée Boucles §
GEF 243B Programmation informatique appliquée
GEF 243B Programmation informatique appliquée Flot de contrôle et énoncés de sélection §
GEF 243B Programmation informatique appliquée Expressions de type mixte et blocs §
GEF 243B Programmation informatique appliquée
Sayada le 03 Mars 2009 Réalisé par : Mr. SOUISSI Chaouki
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
Chap 1 Grammaires et dérivations.
Calcul numérique (avec Maple)
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Qu’est-ce qu’un ordinateur ?
Points importants de la semaine Les commentaires. Les variables. Les instructions conditionnelles. Les instructions itératives (les boucles).
Langage C Révision.
Sous-programmes Concepts généraux Passage de paramètres Fonctions
Récursivité.
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Expressions et assignations
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Algèbre de Boole et les Boucles
Analyse lexicale Généralités Expressions rationnelles Automates finis
Sémantique axiomatique
Python La structure itérative
Introduction à l’algorithmique
Les itérations (boucle) Les routines Les Fonctions
Instruction sélective switch-case Instruction répétitive do-while For
CSI3525: Concepts des Langages de Programmation
1 CSI3525: Concepts des Languages de Programmation Notes # 4: Description Semantique des Languages.
CSI3525: Concepts des Languages de Programmation
CSI 3525, Noms etc., page 1 Noms, attachement, porté, vérification de type Noms, variables Attachement Porté Constantes Initialisation des variables Vérification.
IFT 6800 Atelier en Technologies d’information
Ift 2251 Introduction au Génie Logiciel
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
8PRO107 Éléments de programmation
Chapitre 9 Les sous-programmes.
Chapitre 8 Structure de contrôle.
Chapitre 3 Syntaxe et sémantique.
Partie II Sémantique.
CSI 1502 Principes fondamentaux de conception de logiciels
Synchronisation Classique
Chapitre 3 Les bibliothèques de balises JSP et la JSTL
Répéter dans un programme avec une Instruction itérative
Les Opérateurs Ils régissent toutes les opérations ou transformations sur les valeurs des variables. Opérateur d'affectation Opérateurs arithmétiques Opérateurs.
NORMALISATION DES LANGAGES DE PROGRAMMATION des Automates Programmables Industriels CEI
Programmation procédurale Transformations
Les boucles imbriquées
1 Notations Asymptotiques Et Complexité Notations asymptotiques : 0 et  Complexité des algorithmes Exemples de calcul de complexité.
Paradigmes des Langages de Programmation
Algorithmique Les structures Rappel L'enchaînement séquentiel
La Boucle Repeat Cours LCS N°1 Présenté par Mr: LALLALI.
O-notation 1. Introduction 2. O-notation 3. Opérations 3.1 Somme 3.2 Produit 4. Règles générales 5. Exemple 6.Analyse des algorithmes récursifs 6.1 Dilatation.
1 Algorithmique et programmation en Itérations (boucles) Types numériques simples (suite)
Algorithmique et programmation en
Chapitre 6.2 Les curseurs Cours SGBD 3A Mme hkimi Jihène
Un survol du language C.
Le langage Racket (Lisp)
Cours n° 3 Traitements en Java
CSI 3525, Implémentation des sous-programmes, page 1 Implémentation des sous-programmes L’environnement dans les langages structurés en bloc La structure.
1 Programmation en C++ Marianne Morris. 2 Intro générale à la programmation On a déjà étudié le langage assembleur Langage de bas niveau Meilleur que.
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Les structures de contrôle
CSI3525: Concepts des Langages de Programmation Notes # 10: Controle ( Lire Chapitre 7 )
Scripts et fonctions Instructions de contrôle
Algorithmique Boucles et Itérations
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
Instructions de contrôle
Transcription de la présentation:

Instructions de contrôle Instructions simple Instructions structurées de base Séquence Sélection Itération Instruction jump

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.

Instructions structurées Trois mécanismes fondamentaux nous permettent de regrouper des instructions en une instruction structurée. 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

do S while (C)  S while (C) S 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.

a :- b, c, d. veut dire évaluer b, puis c, puis d. Séquence (1) Langages Mécanismes Algol, Pascal, Ada, ... begin ... end C, Java, Perl { ... } Fortran IV rien Prolog implicite a :- b, c, d. veut dire évaluer b, puis c, puis d. Scheme (begin ...)

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

Sélection if C then S1 else S2 end if La structure if-else existe dans presque tout les langages de programmation (Prolog est l’exception 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 S2 ...... elsif Cn then Sn else Sn+1 end if

Formes spéciales de sélection en Fortran IV GO TO calculé. GO TO (label1, ..., labeln), expression L’expression retourne un entier et on va au label correspondant. GO TO assigné. ASSIGN labeli TO variable GO TO variable(label1, ..., labeln)

Formes spéciales de sélection (2) L’instruction switch de C et Java est inspirée des GO TO calculé. switch(expression){ case const1: S1; ... case constn: Sn; default: Sn+1;} Après que Si est exécuté, l’exécution se poursuit en cédant le contrôle aux cas suivant: Si+1 est le suivant à être exécuté. Ceci peut être évité avec l’instruction break.

(3) L’instruction case de Pascal et Ada: chaque cas est séparé, l’exécution des autres cas ne se poursuit pas après qu’un cas est exécuté. En Ada: case expression is when constantList1 => S1; ... when constantListn => Sn; when others => Sn+1; end case;

(4) 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 ).

Représentation avec des graphes organigramme if–then–else if–then Y N N Y C C S1 S2 S

Single entry, single exit 2) Le principe d’abstraction: if ( C ) S1 else S2 est une expression simple. S2 C S1 Y N Single entry, single exit

if–then–elsif-…elsif-then-else (3) if–then–elsif-…elsif-then-else S2 S1 Y N C2 C1 S3 C3 Sn Cn … Sn+1

case e of v1: S1; ... else Sn+1 end (4) case e of v1: S1; ... else Sn+1 end S2 S1 Y N e=v2 e=v1 S3 e=v3 Sn e=vn … Sn+1

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 d’itération post-test)

Une telle boucle doit donc être terminée à partir de l’intérieur. ) En Ada, le préfixe while C est une extension de l’instruction itérative de base: for i in range Une telle boucle doit donc être terminée à partir de l’intérieur. La terminaison forcée arrête l’itération: exit; inconditionnelle exit when C;

Le préfixe while est une abréviation. La boucle: 3) 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;

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; end loop; La condition est inversée, get(X) apparais deux fois

Représentation avec des graphes while-do repeat-until repeat-until S Y N ¬C C Y N S C S Y N

loop - exit - end loop S2 Y N S1 C

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 ... 1000 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)

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 Qu’est-ce que ceci? for (;;) S

L’ité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.

Jump (l’instruction goto) Le transfert sans contrainte de l’exécution est le seul mécanisme disponible dans les langages de bas niveau — mais c’est un outil très général. La sélection à une seul branche et le goto nous permettent d’exprimer 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.

Certain langages restreignent l’usage du goto (ne permettent pas son usage à l’intérieur d’une itération ou d’une sélection) et font ainsi en sorte qu’il est difficile de l’utiliser. 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é qu’elles soient interdite par leur patron). SUM := 0; loop get(X); if X = 0 then goto DONE; end if; SUM := SUM + X; end loop; <<DONE>> put(SUM); goto peut causer des problèmes quand il fait sortir d’un bloc qui n’est ainsi pas termine de façon normale.