CSI3525: Concepts des Langages de Programmation Notes # 10: Controle ( Lire Chapitre 7 )

Slides:



Advertisements
Présentations similaires
Prmt For imbriqués.
Advertisements

Formation universitaire à .NET: Introduction à C#
Initiation à la programmation et algorithmique cours 2
GEF 243B Programmation informatique appliquée Boucles §
GEF 243B Programmation informatique appliquée
Sayada le 03 Mars 2009 Réalisé par : Mr. SOUISSI Chaouki
Les Structures de contrôles itératives
5. Les structures répétitives
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
CSI3525: Concepts des Langages de Programmation Notes # 5: Langages de Programmation Fonctionelle I: Introduction au Scheme.
CSI3525: Concepts des Langages de Programmation Notes # 11: Sous-Programmes ( Lire Chapitre 8 )
Qu’est-ce qu’un ordinateur ?
Les bases de l’Algorithmique
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
Cours de programmation
La structure conditionnelle simple
Récursivité.
Points importants de la semaine Les boucles. Les types arithmétiques. Les opérateurs.
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.
8PRO100 Éléments de programmation Comment faire prendre une décision à un ordinateur?
Structures de contrôle de l’exécution
Algèbre de Boole et les Boucles
Les structures de contrôle conditionnelles
RESUMES Module II1 SOMMAIRE CYCLE 1 : Saisir – Afficher – Données
Python La structure itérative
1 CSI3525: Concepts des Languages de Programmation Notes # 2: Criteres d Evaluation des Languages.
Algorithmique et Programmation
Bases de la programmation en C++ 1 Les enchaînementsdinstruction Séquentiels. Exécutions dinstructions les unes à la suite des autres. Instructions séparées.
Les structure d’un programme :
Les itérations (boucle) Les routines Les Fonctions
Points importants de la semaine Les constantes. Les boucles. Les opérateurs relationnels Les opérateurs logiques.
Instruction sélective switch-case Instruction répétitive do-while For
CSI3525: Concepts des Langages de Programmation Notes # 7: Noms, Liaisons, Verification de Type et Portee ( Lire Chapitre 4 )
1 CSI3525: Concepts des Languages de Programmation Notes # 4: Description Semantique des Languages.
CSI3525: Concepts des Languages de Programmation
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.
Partie II Sémantique.
Instructions de contrôle
Plan troisième cours Instruction sélective Instruction répétitive
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.
Structures alternative et répétitive
Paradigmes des Langages de Programmation
Paradigmes des Langages de Programmation
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)
Un survol du language C.
Le langage Racket (Lisp)
Cours n° 3 Traitements en Java
CSI2520 Un langage de programmation par scripting orienté-objet (et fonctionnel)
1 PHP 5 Notions fondamentales (niveau 1 – cours #2) Formation continue – Cégep de Sainte-Foy.
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
Scripts et fonctions Instructions de contrôle
PRO-1027 Programmation Scientifique en C
02/10/2015Les structures de contrôle1 COURS A2I12 Initiation à l'algorithmique illustrée par le langage C Guillaume BOURLET Département GEII IUT Sénart/Fontainebleau.
Philippe Gandy – 10 novembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
Algorithmique Boucles et Itérations
L E C ORPS D ’ UN A LGORITHME / P ROGRAMME – L A PARTIE I NSTRUCTION Réalisé par : OUZEGGANE Redouane Département de Technologie Faculté de Technologie.
Introduction à l’Informatique chap 3 Licence SPI Mme Delmotte.
O UTILS DE P ROGRAMMATION P OUR LES M ATHÉMATIQUES Mr. BENDIB. I MAA, LAMIS Laboratory, Université Larbi Tébessi - Tébessa.
Instructions de contrôle
Transcription de la présentation:

CSI3525: Concepts des Langages de Programmation Notes # 10: Controle ( Lire Chapitre 7 )

2 Plan du Cours Introduction et mecanismes de controle de base Sequences d’instructions Selections: Simples et Multiples Repetitions: a Test Logique et a compteur L’Instruction Goto Commandes Gardees.22

3 Introduction Afin de rendre la programmation utile et flexible, il faut, en plus des affectations, des intructions de controles. C’est a dire: Un moyen de choisir entre des alternatives de code differentes, Un moyen de repeter des collections d’instructions. De plus, afin de faciliter la conception des instruction de controle, il faut un mecanisme qui permette de former des collections d’instructions.

4 Mecanismes de Structuration de Base Il y a, donc, trois mecanismes de structuration d’instruction fondamentaux et indispensables: Les instructions composees/sequences: begin-end Les instructions de selection/conditionnelles: if- then-else Les repetitions/boucles: while-do Ces trois mecanismes peuvent etre utilises pour construire toute instruction structuree. De meme, tous les autres mecanismes de structuration peuvent etre derives de ces mecanismes de base. En fait, il a ete prouve que seulement 2 mecanismes de structuration sont necessaires: les gotos et les selections a une branche. Neanmoins, les gotos ne permettent pas de style aussi elegants que les begin- end, if-then-else et while-do.

5 Examples de Derivation d’autres Mecanismes de Structuration if C then S  if C then S else null repeat S until C  S; while ~C do S for i:= lo to hi do S  i:= lo; while i<= hi do begin S; i := succ(i) end case i of C1: S1; ….  if i=C1 then S1 else …

6 Sequences L’instruction composee a tout d’abord ete introduite en Algol 60 sous la forme: begin … end L’idee d’une instruction composee est que plusieures instructions peuvent etre abstraites en une seule. Dans certains langages, de plus des instrctions composees, il peut y avoir des declarations de donnees. Dans ce cas on parle de bloc. Algol, Pascal, Ada: begin … end; C: { … }; Algol 68: if-fi, do-od, case-esac, etc. Fortran (vieux): pas d’instructions composees; Prolog: instruction composee implicite: a :- b, c, d.

7 Selection En Pascal, il peut y avoir une ambiguite avec les if- then-else emboites:if C1 then if C2 then S1 else S2 a quoi s’attache le “else”? Reponse: au “then” le plus proche. En Algol-60 pas d’ambiguite est possible car seulement une instruction simple est permise apres “then”. En Modula-2 et en Ada, il n’y a pas d’ambiguite non plus car les if-then-else instructions doivent etres terminees par un end (Modula-2) ou end if (Ada). En Ada, il existe aussi le elsif, pour les if-then-else emboites.

8 Formes Speciales de Selection Le goto calcule en Fortran (primitif, car pas d’encapsulation): go to (label1, … labeln), expression En C, l’instruction switch similaire au goto calcule: switch (expression){ case const1: S1; … case constn: Sn; default: Sn+1} Probleme: une fois l’instruction Si execute, le controle va a Si+1 a moins que des “break”s ne soient utilises.

9 Formes Speciales de Selection (Continue) Pascal Case expression of constList1: S1; … constListn: Sn; else Sn+1 end Ada Case espression is when constList1 => S1; … when consListn => Sn; when others => Sn+1; end case En Pascal et en Ada, il y a les instructions de cas dans lesquels chaques cas est separe (on n’a pas besoin de “breaks” comme en C).

10 Selection en Prolog En Prolog, plutot que d’etre conduit par ce qui est vrai ou faux, la selection est conduite par le succes ou l’insucces. La selection est implicite dans le backtracking. eat_or_drink(Stuff) :- solid(Stuff), eat(Stuff). eat_or_dring(Stuff) :- liquid(Stuff), drink(Stuff).

11 Representation Graphique de la selection: flowcharts : Ceci represente un test: Est-ce que C est vrai? Si oui, prendre le chemin de gauche. Sinon, prendre le chemin de droite. C OuiNon S : Ceci represente une instruction S ou bien une sequence d’instructions S.

12 Iterations a test logique Il y a deux variations sur les iterations: les iterations pre-test et les iterations post-test. En Pascal: Pre-test: while C do S; Post-test: repeat S until C; En C: Pre-test: while (expr) S; Post-test: do S while (expr); En Ada: Pre-test: while C loop S end loop; Post-test: Non-definie

13 Iterations a test logique (Continue) En Ada, le prefix “while C” est une extension de l’instruction d’teration de base: loop S end loop Un autre prefix est: “for i in range” L’instruction de de base sans prefix doit etre terminee a l’interieur de la boucle avec une instruction de sortie: “exit” Cette instruction est ou bien: exit; --- sans condition exit when C; En fait, le prefix while est une abbreviation de l’instruction de base “loop” avec un “exit when”...

14 Iterations a Compteur Les iterations a compteur (for loops) sont apparu plus tot, historiquement, que les iterations a test logique. Elles sont aussi moins generales. On peut lesvoir, sous des formes differentes, en: Fortran Algol 60 Pascal Ada C En Prolog et Scheme, par contre, il n’y a pas d’terations, mais l’iteration existe sous forme de recursion (cela peut, d’ailleurs, aussi etre fait dans les langages imperatif qui permettent la recursion)

15 L’instruction Goto L’instruction goto est un transfer de controle sans restriction a un point different du programme. C’est le seul mecanisme de transfer present dans les langages de bas-niveau. Le mecanisme est dangereux, mauvais pour la lisibilite et doit etre evite. Les structure de controle plus avancee permettent de faire beaucoup de choses typiques et des chose atypiques egalement. De plus, le goto peut laisser des choses inachevees derriere lui. Certains langages ont tout de meme conserve le goto, mais restrictent son usage et le rendent peu commode a utiliser.

16 Commandes Gardees Il existe une forme de selection et de boucle completement differente: les commandes gardees [Dijkstra, 1975]. L’idee d’une commande gardee est la suivante: etant donne plusieurs choix: 1. Si aucun de ces choix n’est possible, il y aura une erreur a l’execution. 2. Si un seul de ces choix est possible, l’instruction correspondant a ce choix est executee. 3. Si plus d’un choix est possible, l’un de ces choix est choisi de facon non-determine (au hasard) et l’instruction correspondant a ce choix est executee.

17 Commandes Gardees (Continue) La motivation pour ces commandes etait de creer une methodologie qui permettait de verifier la validite d’un programme pendant son developpement plutot qu’une fois que le programme etait termine. Cette technologie n’a pas ete adoptee a part dans le cas de calculs simultanes. Ada permet de tels calculs et, donc, inclut les commandes gardees. Les commandes gardees sont elegantes a utiliser lorsqu’un choix doit etre fait entre plusieures possibilites mais que chacunes de ces possibilites ont la meme priorite: il faut, a ce moment la, une construction qui permettent de choisir au hasard parmi les possibilites diverses.

18 Commandes Gardees: Exemples en Ada I if Garde_1  Instructions_1 [] Garde_2  Instructions_2 [] …. [] Garde_k  Instructions_k fi  Les gardes sont evalues en parallele, l’un des garde qui est vrai est choisi au hasard, et les instructions y correspondant sont executees.  Si aucun garde n’est vrai, il y aura une erreur au moment de l’execution

19 Commandes Gardees: Exemples en Ada II do Garde_1  Instructions_1 [] Garde_2  Instructions_2 [] …. [] Garde_m  Instructions_m od  Repeter: evaluer tous les gardes en parallele, choisir au hasard parmi les gardes qui sont vrai, executer les instructions correspondant a ce garde

20 Commandes Gardees: Exemples en Ada III Comment exprimer les instructions suivantes avec des commandes gardees: If-then-else If-then Case-of While-do Repeat-until