Algorithme 12/09/97 L’introduction 1. L’information c’est le traitement automatique de l’information 2. L’informatique c’est la science de l’ordinateur 1 met l’accent sur le concept d’information ( le côté humain de l’information) 2 met l’accent sur l’ordinateur ( insiste sur l’importance de la machine) La difficulté majeure de l’information est la nécessité de passer de concepts humains à une représentation mécanique Une information est critère qui permet de restreindre la taille d’un ensemble où l’on recherche la réponse à une question Le traitement de l’information n’ajoute jamais d’information mais se contente d’extraire l’information intéressante parmi celle que contiennent les données Un système : Un ensemble de parties coordonnées en vue d’atteindre un ensemble d’objectifs: - Par ses objectifs : ensemble de taches à executer dans des conditions données. - Par sa composition : ensemble organisé d'éléments fonctionnels composition d’un système, on distingue : les entrées : variables dont les valeurs sont imposées par l’extérieur les sorties : variables qui agissent sur l’extérieur les opérateurs : réalisent la transformation des entrées en sortie Entrées Transformation E1 E2 E3 Sortie opérations internes S1 S2 S3 Ces transformations sont étudiées en algorithmique Algorithmique : c’est la science de fabrication des algorithmes Algorithme : c’est la démarche logique et naturelle dans la résolution d’un problème c’est une succession d’opération qui permet de faire passer l’environnement de l’état initial à l’état final (ensemble = ensemble des objets) Les algorithmes écrits, il faut les coder dans un certain langage de programmation La notion de programmation : c’est l’art de faire des programmes Un programme est une suite de déclaration et d’instruction écrites dans un langage de programmation donné, permettant à un machine sur laquelle ce langage est utilisable, d’exécuter un certain travail Ecrire dans un langage 2 approprié 3 un certain travail 1 1. la description de ce travail = la fabrication de l’algorithme 2. c’est la traduction de l’algorithme 3. Dans un langage compréhensible par l’ordinateur - pour executer un programme P écrit dans un langage de programmation L, il faut pouvoir le mettre à la portée de la machine. Il existe 2 modes : * Le mode interprété : La correspondance est effectuée grâce à un programme spécial, l'interprète, qui opère sur le programme et les données. L'interprète décode P au fur et à mesure, et effectue les actions demandées. * le mode compilé, dont l'exécution comprend 2 étapes : Traduction de P en 1 programme équivalent exprimé en langage machine, traduction opérée par un programme spécial, le compilateur. La compilation, contrairement à l'interprétation, s'effectue une fois pour toute. Notion d’action et de processeur Soit l’énoncé E1 E1 Confection d’une omelette de 6 œufs abcde- casser six œufs dans une coupe battre les œufs avec une fourchette chauffer beurre dans la poêle poêle chaude, verser le contenu de la coupe enlever la poêle, quand cuit L’énoncé E1 décrit un travail donné Définition : On appelle processeur toute entité capable de comprendre un énoncé et d’exécuter le travail indiqué. Dans le cas de E1, toute personne sachant lire et disposant des ustensiles nécessaire, peut être processeur. Définition : On appelle environnement d’un travail, l’ensemble des ustensiles (objets) nécessaire à l’exécution du travail Dans la description des travaux précédents, on distingue plusieurs étapes (1,2,3,... ;a,b,c,d,...) Après chaque étape l’environnement est modifié ex : avant a : la coupe est vide après a : la coupe contient les œufs Chaque étape constitue une action Définition : On appelle action un événement qui modifie l’environnement En général, le processeur exécute les actions dans l’ordre dans lequel elles apparaissent dans l’énoncé Il respecte la séquence des actions Une même action peut apparaitre plusieurs fois. Action primitive ; décomposition d’une action Définition : Pour un processeur donné, une action est primitive si l’énoncé de cette action est à lui seul suffisant pour que le processeur puisse l’exécuter sans information supplémentaire Définition : Pour un processeur donné, une action non-primitive doit être décomposée en actions primitives ex : décomposition de a a1. Prendre une boite d’œuf, l’ouvrir, poser les œufs sur le plan de travail (il y en a 6) Répéter a2. Prendre un œuf sur le plan de travail a3. Le casser et versé son contenu dans la coupe a4. Jeter la coquille à la poubelle jusqu'à ce qu’il n’y ait plus d’œufs sur le plan de travail Les actions a2, a3, a4 constituent un bloc. A1 : initialisation Analyse descendante : Top Down Soit T un travail décrit par un énoncé non primitif. L'analyse descendante consiste à trouver 1 décomposition t1 t2 tn qui soit une suite d'énoncés dont l'exécution réalise le travail T. Algorithme : Etant donné un processeur bien défini et un traitement à exécuter par ce processeur, un algorithme du traitement est l’énoncé d’une séquence d’actions primitives que devra effectuer le processeur pour arriver en un temps fini au résultat demandé (définie par une « post-condition » ), à partir d’une situation donnée (définie par une « pré-conditon ») Notion d’objet informatique A l’origine d’un traitement informatique l’on trouve toujours une situation réelle dont les informations manipulées au cours du traitement représentant une image. Cette image (ou modèle est construite par un processus faisant suite à une analyse de la situation réelle. Cette analyse consiste à dégager des grandeurs caractéristiques, reliées par des relations des invariants Dans les modèles utilisés en informatique, les éléments de base sont souvent des objets abstraits = informations pouvant prendre un ensemble fini ou infini de valeurs discrètes ou continues. ( ex : objet mathématique ) Pour permettre leur utilisation par une machine les « objets abstraits » sont représenter par des objets informatiques = information ne pouvant prendre qu’un nombre fini de valeurs discrètes Ce sont ces derniers objets qui sont représentés physiquement dans les machines l’activité de programmation s’intéresse : aux objets informatiques à leurs modes de représentation en machine aux traitements qui leur sont appliqués objet réels monde réel objets abstraits modèle objet informatique algorithme représentation en mémoire programme représentation physique machine Les algorithmes sont composés : d'entités informatique ( ou objets) qui représentent l’information d'opérations (ou manipulations) qui manipulent des objets de structures de commandes qui gouvernent le déroulement des informations Pour l’étude d’un problème, il faut définir un univers (ou environnement) Cet univers est caractérisé par un état (qui est l’état de l’ensemble des objets) L’état de l’environnement change au cours du temps, cette évolution est discrète. (on peut définir différent instants de référence) Les objets ont des propriétés qui doivent être connus à la fin par la machine, le programmeur, utilisateur. L’intervalle des valeurs possible dépends du langage de programmation. Mais l’intervalle des valeurs possibles pour un entier dépends de l’ordinateur sur lequel nous travaillons L’ordinateur manipule des objets qui sont des configurations de listes d’objets ou de notes. Comme les représentations physiques varient selon les objets à manipuler, il faudra pour le programmeur définir : précisément les objets à manipuler manipuler leurs types Algorithmique 19/09/97 La spécification du type des objets définition : Un type est un ensemble de valeurs munies de propriétés communes à ces valeurs et munies d’opérations qui permettent de les manipuler exemple : type SALAIRE= nombre entiers de centimes, supérieur ou égale à 0 . inférieur à une limite opération= l’arrondi, comparaison, augmenter, diminuer, multiplier propriétés= nombre de chiffres requis pour afficher les valeurs singulières Mais pourquoi des types ? clarté, lisibilité ( ne pas mélanger des objets de nature différente) efficacité L’ensemble des valeurs possibles pour un objet étant connues, la quantité d’informations nécessaires pour coder une valeur est connue optimisation de la taille de la mémoire nécessaire optimisation des procédure de codage (décodage de valeur) vérification à priori La compilateurs peut avertir le programmeur de son erreur => amélioration de la sécurité du programme Comment introduire un type de données dans le programme Pour pouvoir citer un type, il faut l’identifier en lui donnant un nom Certains noms sont prédéfinis : ils ne font pas l’objet de déclarations dans le programme D’autres sont définis explicitement : ils font l’objet de déclarations de type dans le programme avant toute utilisation : on parle de type construit La forme générale d'un type sera : - Type T = <Type> où T est l'identificateur du type Type est une description du type Les types prédéfinis simples (ou standards) Le type caractère Chaque ordinateur possède un « jeu de caractères » grâce auquel il communique avec l’extérieur. Ces caractères sont disponibles sur le périphérique d’entrée (lecture, clavier) ou de sortie (imprimante) On dispose au minimum de : 26 minuscules, 26 majuscules, 10 chiffres, les ponctuations Les jeux courants sont : ISO {Office de Normalisation Internationale} EBCDIC {IBM} ASCII {American Standard Code For Info Interchange} Le type entier Le type entier représente un domaine de valeurs entière, positives, nulles ou négatives limitées par les caractérisation de l’ordinateur. Ces limites sont variables d’un ordinateur à un autre => Possibilités de débordement L’ensemble des valeurs admises est un ensemble général {-2exp(n-1) ;... ;(2exp(n-1))-1} n est un entier qui dépends du nombre de bits requis pour coder un entier Les valeurs entières sont dotées des relations d’ordre habituelles Les opérateurs suivants sont définis : +, - , x, div, mod Si une opération produit un résultat qui sort de l’intervalle des valeurs ordinaires il y a dépassement de capacité. L’ordinateur le signal et abandonne le calcul ( sauf si le cas a été défini de façon explicite à la création de l’algorithme. Attention : (100+100) - 90 n’est pas égal à (100 -90) + 100 Le type réel Le type réel décrit un domaine de valeurs qui sont en réalité une approximation de nombres réels (chaque valeur de ce type représente un intervalle de valeurs réelles) La représentation interne de ces types comprend 1 nombre fractionnaire et un facteur d'échelle. Le type booléen Le type booléen définit le domaine de valeurs logiques formé de 2 éléments : vrai ou faux Les opérateurs standards sont définis sur des arguments de ce type. OU ( ) ET ( ) NON ( ) Les relations produisent un résultat de type booléen vrai : la relation est satisfaite faux : la relation n’est pas satisfaite Etant donné 2 arguments booléens p et q, les valeurs des relations pq, pq, p, q p Q qp qp p q V V V V F F V F V F F V F V V F V F F F F F V V 2² = 4 cas A partir de cette table, on peut décrire : La commutativité: pvq=qvp pq= qp L'associativité (p v q) v r = p v (q v r) (p q) r = p (q r) La distributivité : (p q v r = (pvr)(q v r) (p v q) r = (pr)v (qr) Lois de De Morgan (pq) = p q (pq) = p q Les types construits (constructeurs) On distingue 2 catégories de types construits des types « constructeurs simples » des types « constructeurs composés » Constructeurs simples Le type énumération Le type énumération permet de définir toutes les valeurs et un type en les nommant. Ce sont les seuls valeurs appartenant à un type ex : type ANIMAL={Chien, Chat, Cochon} type SAISON={été, automne, hiver, printemps} Il y a un ordre d'énumération Le type énumération non-ordonnée Pas de relation d’ordre entre les objets : les opérateurs = < > n’ont pas de sens Le type énumération ordonnée ordre d’énumération relation d’ordre entre les objets ou type scalaire discret ordonné Le type intervalle Permet de préciser un domaine de valeurs contiguës Ce type est défini à partir d’un type prédéfini syntaxe : Type (nom du type) = [ e ..q ] e : borne inférieure q : borne supérieure l et q : entier ou défini précédemment comme énumération C’est un moyen de vérification et de documentation qui permet d’éviter que l’objet de type T prenne des valeurs en dehors de l’intervalle déclaré, donc indésirable Ex : Type JOUR_DU_MOIS = [1..31] Type AGE_CHAT= [0..20] Type SEMAINE_TRAVAIL = [lundi..vendrdi] L’intérêt de ce type est de provoquer un message d’erreurs lorsqu’on sort du domaine prévu (soit compilation, exécution) Dans un langage de programmation n’ayant pas de type, il faut alors incorporer un test de vraisemblance. Constructeurs composés Les types constructeurs composés se construisent comme des groupements d’éléments appartenant à un type précédemment défini Le type simple constitue le type de base de la structure La construction peut être étagée en hiérachie, on construit des types très complexe, de proche en groupant des éléments, puis en groupant les groupes... ex : type tableau type enregistrement type pointeur Les objets manipulés Chaque objet possède : un type : indique les caractères communs à tous états possiblesde l’objet. une valeur : qui peut à la suite de l’exécution d’une action Pour qu’il puisse ètre identifié sans ambiguité, il faut lui attribués un nom. Le nom (ou identificateur), permet de distinguer un objet par rapport aux autres objets déjà présent. Nom et objet sont différent 2 raisons : Selon les traitements, le même objet peut avoir des noms différents ex : Paul DUPONT, matricule 7789044528 Paul Collègue Paul amis DUPOND supérieurs employé service du personnel 78904528 service de la paye Un même identificateur peut être employé sous plusieurs objets. Ex : paramètre dans la procédure Constantes Une constante est un objet qui possède : . un nom fixe . un type fixe . une valeur fixe ex : déclares un objet ayant pour nom vingt, type entier, valeur 20 Variables Une variable est un objet qui possède : . nom fixe . type fixe . valeur variable, suivant les besoins du programme ex : NOM est le nom d’une variable à manipuler, de type CARACTERE dont la valeur est successivement AGATHE, DUPOND, DUPONT Avant toute utilisation, dans beaucoup de langages, il faut déclarer les variables utilisées ex : VAR ex : GRI :entier CONST UN=1 PI= 3,1415 VAR a,b : entier c,d : caractère e : booléen TYPE JOUR_DU_MOIS = [1..31] CONST VAR TVA=1,186 JOUR= JOUR_DU_MOIS Chaque identificateur est composé d’une suite de chiffres ou de lettres en maj ou min mais ne doit surtout pas commencer par des chiffres Les mots réservés peuvent être écrits en maj ou min : debut, fin, var Notion de procédure Une procédure est une suite nommé et déclarée d’actions que l’on exécuter en l’appelant par son nom ex : alorithme XXX a,c,YYY,g Algorithme YYY a,b,c,d,e,f Lors de l'exécution de XXX, la séquence exécutée sera : a,c,a,b,c,d,e,f,g Déclaration de procédure Un processeur ne peut exécuter que ce qui est parfaitement défini . Il faut déclarer la procédure dans la partie ‘déclaration’ de l’algorithme utilisant la procédure. La déclaration comprend les parties : en-tête de procédure : Le mot "procedure", le nom de la procédure, le nom et le type des objets dont un utilisateur doit avoir connaissance, pour utiliser la procédure. Ce sont les paramètres formels. Ex : Procedure AAA (TOTO, TATA: Entier) corps de procédure Le corps contient le (ou les) énoncé à exécuter lord de l’appel à la procédure. Ce corps est borné par les mots begin et end. Appel de procédure Un appel à une procédure sera une action formée 1. du nom de la procédure 2. d’une liste de paramètre qui correspondent aux caractères formels, ce sont les paramètres effectifs lesquels nous voulons exécuter la procédure. Ex : algorithme ZZZ VAR CHOCOLATS, BOULVARD : entier PROCEDURE AAA (TOTO,SUZETTE : entier) deb : .... .... fin. Deb .... .... .... AAA (CHOCOLAT, BOULVARD) .... .... .... fin. La notion de fonction Définition : Une fonction est une procédure qui retourne un seul résultat Déclaration : cf procédure, mais avec quellesques différences 1. le mot fonction remplace le mot procédure 2. Dans la liste des paramètres formels, aucun ne correspond à un résultat 3. Le résultat sera associé au nom de la fonction, il faut donc préciser son type Appel de fonction Un appel de fonction sera une action formée 1. du nom de la fonction 2. de paramètres effectifs ( qui correspond aux paramètres formels lors de l’appel) * Définition d'un algoritme Pour un problème donné, un algorithme de résolution est une succession d'opérations qui permet de faire passer l'environnement de l'état initial à l'état final désiré, succesion telle que chaque opération soit : - une action primitive - un algo déja connu et décrit, une procédure ou une fonction Rappel Les algorithmes sont composés : 1. d’objets qui représentent l’information 2. d’opérations (ou d’actions) qui manipulent les objets 3. de structures de commandes qui gouvernent le déroulement de ces opérations Quelles sont ces actions : les actions élémentaires qui permettent de maniupuler les objet sont : écriture, affectation Les actions élémentaires Lecture La valeur d’un objet à traiter peut ne pas faire partie de l’environnement d’un travail il faut le faire rentrer dans l’environnement Définition : on appelle lecture une opération qui fait entrer une valeur dans environnement (par l’intermédiaire d’un appareil) ex : unité de disque, bande, ... notations : lire (e) « la prochaine valeur lue sur le périphérique d’entrée sera attribuée à la variable e » lire (console,e) lire (a,b,c) Les 3 prochaines valeurs lues seront affectées à a,b et c Remarques : une lecture est une opération primitive toute lecture détruit l’ancienne valeur de l’objet il faut une comptabilité entre le flux d’entrée et l’objet la lecture d’une constante n’est pas définie L'écriture : On peut sortir de l'environnement pour communiquer une information vers l'extérieur. Définition: On appelle écriture une opération qui permet de communiquer à l'extérieur la valeur d'un objet ou/et un message ( par l'intermédiaire d'un appareil. Ex : imprimante, écran, disque, bande... Notation : Ecrire(<liste des éléments de sortie>) Les éléments de sortie sont des variables, des constantes, des expressions dont on calcule le résultat, des libellés... ex: écrire(A) écrire(<Périph> A) écrire('A=') écrire('A=',A) 17 17 A= A=17 Remarques: -Toute écriture est une primitive - Contrairement à la lecture, l'écriture ne détruit pas l'ancienne valeur de l'objet - La lecture et l'écriture ne sont que des affectations particulières L'affectation Définition: l'action d'affectation consiste à établir une relation entre un nom d'objet et la valeur résultatnt de l'évaluation d'une expression Notation : NE N: Nom de la varialble à laquelle le processeur attribue la valeur :Affectation E: Expression, la valeur à affecter qui sera une constante, un message, le nom d'une variable, une expression arithmétique... Remarques: 1- N et E sont obligatoirement de même type 2- L'affectation est une opération destructrice, puisque l'ancienne valeur est remplacée par la nouvelle. 3- L'affectation d'une valeur à une constante est interdite. Constante : A1 A est ici du type entier Chaîne de caractères Nom ‘Dupond’ Nom est ici du type caractère Nom de variable Total Somme TOTAL SOMME Affecte à la variable Total, le contenu de la variable de type Somme 10 13 avant 13 13 après Seule la variable apparaissant à gauche du signe d'affectation change de valeur Expression Définition : une expression est une famille ou une règle de calcul qui détermine toujours une valeur ou un résultat Une expression pourra être simple ou composée Les expressions simples : Une expression simple est une combinaison d’opérandes et d’opérateur arithmétique. . les opérandes : Les opérandes sont : . des constantes désignée par leur nom ou pas ex: Pi, 3,14, des variables. . les opérateurs arithmétiques Les opérateurs arithmétiques donnent un résultat numérique à partir d’opérandes numériques + addition - soustraction * multiplication / division ordinaire div division euclidienne z 13/2 z 13 div 2 z reçoit 6,5 z recoit 6 exponentiation Exemple : 1. x y 1 A x+y donc A=1 x y 1 x x + y donc x=1 3. A x * 18,6 By+2 Résultat A/B 4. PTTC PHT + PHT * 18,6/100 si PHT : 120, quelle sera la vaaleur recue par PTTC si les opérateurs sont évalués de la gauche vers la droite PTTC 44,64 si les opérateurs sont évalués de la droite vers la gauche PTTC 142,32 Ordre de priorité des opérateurs dans une expression simple : 2 cas : expression sans parenthèse avec parenthèse . Sans parenthèse Les opérateurs arithmétique standards peuvent être répartis en 4 classes : 1- opérateur d’exponentiation . possède la priorité la plus haute . évalués de la droite vers la gauche 2- opérateurs unaires (A ne pas confondre avec les opérateurs binaires) + unaire - unaire . possèdent une priorité de 2ème niveau . droite vers gauche 3- opérateurs de multiplication * ou de div, . ou div . 3ème niveau . gauche vers droite 4- opérateurs : d’addition + de soustraction . priorité de 4ème niveau . évalués de gauche vers la droite Classe 1 2 3 4 opération * / div + - signification exponentielle signe multiplication,divison addition, soustraction évaluation DàG DàG GàD GàD Parenthèses On peut mettre des parenthèses si il y a ambiguité, pour rendre plus lisible ou pour forcer l’ordre . Les parenthèses peuvent indiquer un ordre différent de l’ordre habituel. A l’intérieur d’une parenthèse, l’ordre reste vrai. Si on des parenthèses consécutives, elle sont évaluèes de la gauche vers la droite. Si les parenthèses sont imbriquées, les opérations les plus internes sont évaluées en priorité. Les expressions composées Une expression composée est une combinaison E1 R E2 de: - 2 expressions simples E1 et E2 - un opétareur de relation R (<,>,=,....) Algorithmique 30/07/97 La notion de prédicat (ou fonction propositionnelles) Définition : Un prédicat est un énoncé vrai pour certains éléments d’un ensemble donné, et faux pour les autres éléments de cet ensemble. Ex : Le prédicat : « Y est un multiple de 2 » est vrai pour (4,6,8,...) faux pour (3,4,7,9,...) Le prédicat : « X aime Julie » est vrai pour Didier, Gérard faux pour Hubert et Jean-Michel on distingue : les prédicats élémentaires Si l’on effectue une comparaison entre deux valeurs de même type en utilisant les opérateurs de relation - Numériques : il existe une relation d'ordre ex : Si X = 6 et Y = 30 X=Y F X>Y F X>3 V XY F - Caractères Il est nécessaire que sur l'ensembles des caractères utilisés, existe une relation d'ordre définie par l'ordre alphabétique. les prédicats composés (ou expression logique) Une expression logique est une combinaison P1 R P2 de 2 prédicats P1 et P2, et un connecteur logique R : et, ou, non non : (not) négation et : (and) conjonction ou : (or) disjonction exemple : x=1 ou y=2 et z>3 si x=1 V V V V F F F F y=2 V V F F V V F F Z>3 V F V F V F V F x=1 y=4 z=2 (y=2) et (z>3) V F F F V F F F (x=1) ou (y=2) et (z>3) V V V V V F F F Le « et » a priorité sur le « ou » Rappel : Les algorithmes sont composés : - d’objets qui représentent l’information - d’opérations qui manipulent ces objets - de structures de communication qui gouvernent le déroulement des opérations, des actions Quelles sont ces structures ? Les structures de base : - structuration séquentielle - structuration alternative ou décisionnelle - structuration répétitive Structure séquentielle C’est la structure la plus primitive, la plus élémentaire. A1 A2 An - C’est une structure « de bloc » : c’est un lot ficelé. - Les actions sont traitées une par une. - Chaque action est traitée une fois. (mais pas plus). Et en plus elles sont exécutées dans l’ordre d’écriture. - L’exécution de la dernière instruction signifie qu’on quitte le bloc. - aucune action n’est omise - L’ordre des actions sera l’ordre d’écriture Représentation de l’algorithme Algorithme NESTOR {Déclartations} debut a1 a2 a3 | an Fin Structure conditionnelle Dans la plupart des situations, on se retrouve face à un choix Si une telle condition est réalisée ou effectuée une action sinon on en fait une autre - a Si (Prédicat) Alors b c Si ingénieur : a,b,c Si pas ingénieur : a,c ex1 : Calculer le salaire brut, si l’employé est ingénieur, ajouter la prime technicité. Enfin, ajouter la prime d’ancienneté. Calculer le salaire brut Si l’employé est ingénieur alors ajouter prime de technicité ajouter prime d’ancienneté ex2 : Calculer le salaire brut, puis si l’employé est ingénieur, ajouter prime technique sinon payer les heures supplémentaires a Calculer le salaire brut P Si l’employé est ingénieur b alors ajouter la prime de technicité c sinon ajouter prime heures-sup d ajouter prime d’ancienneté Puis on ajoute des délimiteurs Début a si P alors b Début a si P alors b fin si c … fin sinon c fin si d … fin On peut emboiter les structures conditionnelles ; si(prédicat1) alors sinon si (prédicat2) alors fin si fin si Mais, l’utilisation de tel schémas peut se révéler très lourd : ex : Jour Lundi Mardi Mercredi Jeudi Vendredi Autres Algo Facturation Réception commandes Comptabilité F/S* Erreur (*Ndlr : Si vous ne savez pas ce qu’est F/S, allez voir un certain Mr Kueviakoe !) Début Si jour = lundi Alors facturation Sinon Si jour = mardi Alors récéption Sinon si jour = mercredi Alors commandes Sinon Si jour = Jeudi Alors Comptabilité Sinon Si jour = Vendredi Alors F/S* Sinon Si jour = Autres alors Erreur Fin si Fin si Fin si Fin si Fin si Fin (Si j’en ai oublié, tant pis) Structure de choix (sélective) Dans le cas où une expression E a une valeur Vi associée, alors on exécute l’action Ai associée E V1 A1 V2 Vi A2 Vn Ai An L’énoncé de choix s’écrira de façon formelle Au cas où (Expression) = valeur1 : action 1 valeur2 : action 2 valeur n : action n fin cas attention : Si il n’existe pas de k pour lequel E = Vl, l’énoncé de choix n’est pas défini, le compilateur doit signaler l’erreur. Au cas où jour = lundi : acheter pain fin cas On peut aussi refaire le cas précédemment effectué avec les si. (ndlr : M’enfin là j’ai la flemme) Les structures itératives (ou répétitives) définition : On appelle itération toute répétition de l’exécution d’une action ou séquence d’action. Si le nombre (n) d’itération est connu, on peut écrire n fois la fonction, solution longue et fastidieuse. Souvent le nombre d’itérations est inconnu, il faut utiliser des séquences algorithmiques permettant de décrire tout les cas de figures. On utilise le schéma : Répéter....jusqu'à - Exemple des polycopiés (TD 1) Répéter C1 : prendre les feuilles nécessaires à un exemplaire C2 : Les agrafer C3 :Les poser sur la table Jusqu’à ce que C4 : Une des tables soit vide. Répéter Action(s) Jusqu'à (prédicat de sortie de l’itération) MAIS - La condition d’arrêt est évaluée après chaque exécution. - A est toujours exécuté au moins une fois C’est parfois génant : Algorithme DIVISION Var DVDE, DSEUR,R,Q :entier Début R DVDE Q0 Répéter R R - DSEUR Q Q+1 Jusqu'à R < DSEUR Fin Ceci produit des résultats étranges : si 9/11, on a le résultat 1 ! Le schéma : Tant que (prédicat) faire(action) fin faire Tant que p faire a Fin faire L’action a peut ne jamais être exécutée Algorithme DIVISION Var DVDE,DSEUR,R,Q : entier début R DVDE Q 0 Tant que R DSEUR faire R R - DSEUR QQ+1 fin faire Fin tant que fin