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

Algorithmique et Programmation A. Alikacem. Semaine 3 Semaine 3 Bâtir un algorithme Lecture: chapitre 3 des notes de cours Rappel des outils algorithmiques.

Présentations similaires


Présentation au sujet: "Algorithmique et Programmation A. Alikacem. Semaine 3 Semaine 3 Bâtir un algorithme Lecture: chapitre 3 des notes de cours Rappel des outils algorithmiques."— Transcription de la présentation:

1 Algorithmique et Programmation A. Alikacem

2 Semaine 3 Semaine 3 Bâtir un algorithme Lecture: chapitre 3 des notes de cours Rappel des outils algorithmiques Conception des algorithmes La documentation dans les algorithmes

3 Comment bâtir un programme? En suivant lune ou lautre des multiples méthodologies de développement… On y retrouve généralement un ensemble de points communs: Analyse et définition des besoins : ce que lon sattend que le programme devra réaliser comme tâche. Lanalyse et la spécification du problème se fera dans un langage naturel. Spécification du programme : définir spécifiquement chaque fonctionnalité du programme.

4 Conception: décomposition du programme en sous- problème (définition des modules du programme) ainsi que le développement des algorithmes nécessaires au fonctionnement du programme. La conception des algorithmes sappuiera sur lanalyse et la spécification du problème. Programmation: traduction des algorithmes dans le langage de programmation choisi pour la réalisation du programme. On parle dimplantation. Comment bâtir un programme?

5 Tests et validation: phase durant laquelle le bon fonctionnement, ainsi que la conformité du programme aux spécifications sont vérifiés. Maintenance : activité qui assure lentretien et le bon fonctionnement du programme tant et aussi longtemps quil sera utilisé. Documentation du programme: chaque étape énoncée doit être documentée pour assurer la pérennité du programme. Comment bâtir un programme?

6 Algorithme Programme Ordinateur Description formelle Transcription Compilation Langage de programmation Langage machine Exécution Solution Problème Étapes de la construction dun programme

7 Rappel

8 Les composantes dun ordinateur

9 Définition Cest la spécification dune séquence détapes pouvant être exécutée de façon automatique par un ordinateur. Une décomposition en instructions simples de n'importe quel processus. Donne la structure du programme. Un algorithme doit être simple à traduire dans un langage de programmation. Lalgorithmique impérative

10 Propriétés : Un nombre fini détapes Un nombre fini dopérations par étape Une suite dopérations primitives Fournit un résultat (décidabilité) Chaque opération est non ambiguë Effective calculabilité Lalgorithmique impérative

11 Programmation impérative Ce paradigme repose sur les notions suivantes: La mémoire principale Les variables Laction Létat Changement détat

12 Variables et constantes Une variable possède deux attributs : un nom (identificateur); un type, qui définit l'utilisation possible de cette variable en spécifiant ses propriétés. Un contenu modifiable Une constante possède : un nom; un type; un contenu non modifiable : Déterminé avant lexécution de lalgorithme;

13 Action = événement produit par un acteur (exécutant) Durée finie Produit un résultat prévisible et sans ambiguïté Modifie l'état de la machine (actions internes) Précondition Spécification de l'état mémoire avant l'exécution de l'action Postcondition Spécification de l'état mémoire après l'exécution de l'action Exemple: incrémenter x {A: x < n} {A: x n} Notion daction

14 Etat de la mémoire Valeur de l'ensemble des variables à l'instant t Etat du processeur Contenu de la mémoire interne du processeur à l'instant t Adresses 100 Entier x dont la valeur à l'instant t vaut Notion détat

15 Expression construite à partir de constantes, de variables et d'opérateurs Evaluation lors de l'exécution Valeur dépendant de l'état du programme Exemple: x x + 1 Définition explicite du flot de contrôle => Suite ordonnée d'actions qui modifient l'état du processus Changement détat

16 Répéter début DEMANDER n fin Tant Que (???) DEMANDER n {A: n est un entier compris entre 0 et 10} DEMANDER n {A: n vaut 1 ou 2} Répéter début DEMANDER n fin Tant Que (????) Les assertions (1) La validation de données

17 Lunité de commande et de contrôle (UCC) En charge de contrôler le déroulement dun programme. Elle dirige le fonctionnement de toutes les autres unités (UAL, mémoire, entrée/sortie) Exécute un programme instruction par instruction, dans lordre (de haut en bas) ou elles sont écrites. Cependant, et très souvent, on aura besoin de briser la séquentialité: en utilisant des structures de contrôle dalternatives ; en utilisant des structures de contrôle de répétitions ; en faisant des appels de sous-programmes, caractérisés par une référence (appel) à un bloc à lintérieur dun autre bloc LUCC

18 SI condition est vrai alors DÉBUT Instructions FIN Structures dalternatives Début Si n = 0 ou n = 1Alors Début fact 1 Fin fact 1 Répéter i [2, n] Début fact fact * i Fin

19 SI condition est vrai alors DÉBUT Instructions v FIN SINON DÉBUT Instruction f FIN Structures dalternatives Début Si n = 0 Alors Début fact 1 Fin Sinon Début Si n = 1 Alors Début fact 1 Fin Sinon Début fact 1 Répéter i [1, n] Début fact fact * i Fin

20 Structures dalternatives Cas V de v1 : b1 v2 : b2. vn : bn Autrement c FinCas Début Cas n de 0 : Début fact 1 Fin 1 : Début fact 1 Fin Autrement : Début fact 1 Répéter i [2, n] Début fact fact * i Fin FinCas Fin

21 RÉPÉTER n FOIS DÉBUT Instructions FIN Structures de répétitions Début Si n = 1 ou n = 0 alors Début fact 1 Fin Sinon Début fact 1 Répéter n-1 fois Début fact fact * i Fin i 2 i i + 1

22 RÉPÉTER i [1,n] DÉBUT Instructions FIN Structures de répétitions Début Si n = 1 ou n = 0 alors Début fact 1 Fin Sinon Début fact 1 Répéter i [2, n] Début fact fact * i Fin

23 RÉPÉTER DÉBUT Instructions FIN TANT QUE condition Structures de répétitions Début Si n = 1 ou n = 0 alors Début fact 1 Fin Sinon Début fact 1 i 1 Répéter Début fact fact * i i i + 1 Fin Tant Que i < n+1 Fin

24 TANT QUE condition DÉBUT Instructions FIN Structures de répétitions Début Si n = 1 ou n = 0 alors Début fact 1 Fin Sinon Début fact 1 i 2 Tant Que i < n+1 Début fact fact * i i i + 1 Fin

25 TANT QUE condition DÉBUT Instructions FIN Structures de répétitions Début i 1 fact 1 Tant Que i < n Début i i + 1 fact fact * i Fin

26 Remarque Répéter i [1, n] début Bloc fin i 1 Tant Que i <= n début Bloc i i + 1 fin i 1 Répéter n fois début Bloc i i + 1 fin i 1 Répéter début Bloc i i + 1 fin Tant Que i <= n

27 DEMANDER n {A: n est un entier positif ou nul} S 0 Répéter n fois début S S + 1 fin AFFICHER S DEMANDER n {A: n est un entier positif ou nul} S 0 Répéter i [1, n] début S S + i fin AFFICHER S DEMANDER n {A: n est un entier positif ou nul} S 0 i 0 Tant Que n i début S S + i i i + 1 fin AFFICHER S DEMANDER n {A: n est un entier positif ou nul} S 0 i 0 Répéter début S S + i i i + 1 fin Tant Que n i AFFICHER S

28 Algorithme : Calculer n! pour un entier n 0 début { Assertion : n est un entier 0 } i 0 fact 1 Tant que i < n début i i + 1 fact fact * i fin Il est impératif que dans tout schéma de répétition conditionnelle la valeur de la condition puisse changer, sinon nous serions dans une boucle sans fin (boucle infinie); On doit faire précéder la structure de contrôle de la boucle Tant Que par des instructions de démarrage (initialisation). Pour sassurer quun algorithme structuré se termine il est suffisant de vérifier que chaque boucle se termine. Une première condition nécessaire est quau moins une des variables de la condition c soit modifiée dans la portée de la boucle. Remarque

29 Technique de la sentinelle Tant que ce nest pas fini Début Instructions du bloc à exécuter Fin total 0 Tant que il y a un étudiant à traiter Début Demander note total total + note Fin Début total 0 n 0 Demander note { A:.. } Tant Que note -1 Début total total + note n n + 1 Demander note {A:.. } Fin moyenne total / n Afficher moyenne Fin Dans le cas du mode conversationnel, la fin dune suite dinformations saisie à l aide dun processus itératif est indiquée au moyen de la technique de la sentinelle.

30 La documentation: les commentaires dans les algorithmes Vous aurez à considérer 4 types de commentaires des commentaires d'identification des grandes étapes; des commentaires explicatifs; des commentaires du type assertions; les commentaires de spécification formelle; les commentaires de spécification dun bloc;

31 Les commentaires dans les algorithmes Il est très important de bien documenter un algorithme, il nen sera que plus facile à lire. On retrouve 2 types de commentaires que lon peut utiliser pour documenter un algorithme: –Les commentaires généraux. –Les assertions.

32 Placer dansfact la valeur de n! sans modifier l'entier n 0. Début { de l'algorithme } { Assertion : n est un entier 0 } « Voici tout de que nous savons ici. » Si n = 1 ou n = 0 alors Début { des cas n = 1 ou n = 0 } { Assertion : n est un ent ier dans [0, 1], inchangé } « Cette assertion est exacte à chaque fois que nous passons ici. » fact 1 { Assertion : n est un entier dans [0,1], inchangé etfact contient n!} « Notre objectif est atteint dans ces cas. » Fin { des cas n = 1 ou n = 0 } Sinon Début { des cas 2 } { Assertion : n est un entier 2 inchangé} « Voici tout ce que nous savons ici. » fact 1 Répéter i [1, n] : Début { Répéter } { Assertion : n est un entier 2 inchangé, i est un entier dans [1, n] etfact contient (i-1)! } fact fact * i { Assertion : n est un entier 2 inchangé, i est un entier dans [1, n] etfact contient i!} Fin { Répéter} { Assertion : n est un entier 2 inchangé etfact contient n!} « Notre objectif est atteint dans ces cas. » Fin { des cas 2} { Assertion : n est un entier 0 inchangé etfact contient n!} « Notre objectif est atteint dans tous les cas exigés. » Fin { de l'algorithme } Exemple p. 52

33 Les commentaires généraux auront 2 utilités: –Identifier les grandes étapes de lalgorithme –Expliquer certaines séquences dopérations qui peuvent sembler plus ou moins claires à première vue Les commentaires dans les algorithmes

34 Forme structurée, validation des algorithmes et assertions Le principal avantage de la forme structurée est la restriction du nombre possible de «chemins» dans lexécution de lalgorithme. En chaque point de lalgorithme on na quune provenance possible. On peut alors prouver lexactitude dun algorithme en insérant des assertions. Une assertion est une expression logique qui est vraie. Elle est utilisée pour montrer certaines conditions que lon suppose vraies à un point donné dun algorithme. Une assertion dans un algorithme doit être considérée lors de limplantation de lalgorithme : les conditions sont à être interprétées dans le langage de programmation choisi; elles devraient également pouvoir être vérifiées lors de lexécution du programme.

35 Les assertions (2) Les post-conditions Début Demander n { Assertion : n est un entier 0 } Si n = 1 ou n = 0 alors Début fact 1 Fin Sinon Début fact 1 Répéter i [1, n] : Début fact fact * i Fin { Assertion : n est un entier 0 inchangé et fact contient n!} Fin Si Alors

36 Idée de base Abstraire Décomposer Combiner Structuration des actions Séquentielle Conditionnelle Itérative Tout ce quon peut faire sur ordinateur peut être exprimé au moyen de laffectation et dalternatives et des répétitions. Conception dalgorithmes

37 Question à résoudre par une solution informatique Instance d'un problème = entrée nécessaire pour calculer une solution du problème Ensemble de données Ensemble de résultats = solution informatique au problème Description d un ensemble d'actions Exécution dans un certain ordre Problème Algorithme La démarche

38 Conception dalgorithmes Souvent le problème est "mal posé"... Rechercher l'indice du plus petit élément d'une suite => Spécifier = produire un énoncé Énoncé = texte où sont définies sans ambiguïté : L'entrée (données du problème) La sortie (résultats recherchés) Les relations (éventuelles) entre les données et les résultats Que dois-je obtenir ? Soit I l'ensemble des indices des éléments égaux au minimum d'une suite. Déterminer le plus petit élément de I , 4 ?

39 Synthèse Les 3 étapes principales pour arriver à la résolution dun problème sur un ordinateur: comprendre le problème initial et préciser les données fournies (entrées); préciser les résultats attendus (sorties); déterminer le processus qui permet de passer des entrées aux sorties (lalgorithme): Commencer par décrire les grandes étapes Raffiner chacune des étapes jusquà avoir tout décrit en termes dinstructions primitives Insérer des assertions aux endroits clés dans lalgorithme

40 Calcul de l'intérêt et de la valeur acquise par une somme placée pendant un an à intérêt simple. Données fournies: Deux nombres représentant les valeurs de la somme placée et du taux d'intérêt Résultats désirés: Deux nombres représentant l'intérêt fourni par la somme placée ainsi que la valeur obtenue après placement d'un an Exemple (1)

41 Il nous faut maintenant décrire les différentes étapes permettant de passer des donnés aux résultats. Nos connaissances générales nous permettent d'exprimer cette règle: "Pour obtenir l'intérêt fourni par la somme,il suffit de multiplier la somme par le taux d'intérêt divisé par cent; la valeur acquise s'obtient en additionnant ce dernier montant et la somme initiale." Exemple (1)

42 Dans cet exemple simple apparaissent les trois étapes qui caractérisent la résolution d'un problème sur ordinateur: Comprendre la nature du problème posé et préciser les données fournies ("entrées"ou "input" en anglais), préciser les résultats que l'on désire obtenir ("sorties" ou "output" en anglais), déterminer le processus de transformation des données en résultats: lalgorithme! Exemple (1)

43 Les grandes étapes de l'algorithme : (1) Prendre connaissance de la somme initiale et du taux d'intérêt. (2) Multiplier la somme par le taux; diviser ce produit par 100; le quotient obtenu est l'intérêt de la somme. (3) Additionner ce montant et la somme initiale; cette somme est la valeur acquise. (4) Afficher les valeurs de l'intérêt et de la valeur acquise. Toutes ces étapes peuvent être exprimées directement par des instructions primitives…aucun raffinement à faire. Exemple (1)

44 Lalgorithme en pseudo code : DEMANDER sommeInitiale {Assertion: sommeInitiale est un réel > 0} DEMANDER taux {Assertion: taux est un réel > 0 et <= 100} intérêt sommeInitiale * taux / 100 valeurAcquise sommeInitiale + intérêt AFFICHER intérêts, valeurAcquise {Assertion: intérêts et valeurAcquises représentent l'intérêt fourni par le placement de sommeInitiale et la somme obtenue après placement d'un an } Exemple (1)

45 Voici les règles d'un jeu très simple: deux joueurs A et B se cachent la main droite derrière le dos. Chacun choisit de tendre un certain nombre de doigts (de 0 à 5), toujours derrière le dos. Les deux joueurs se montrent la main droite en même temps. Si la somme des nombres de doigts montrés est paire, le premier joueur a gagné, sinon c'est le second. Le problème consiste à faire prendre la décision par un ordinateur. Exemple (2)

46 Exprimé en français, l'algorithme se présente comme suit: - prendre connaissance du nombre de doigts de A - prendre connaissance du nombre de doigts de B - calculer la somme de ces deux nombres - si la somme est paire, A est le gagnant - si la somme est impaire, B est le gagnant. Pour déterminer si un nombre est pair ou impair, il suffit de calculer le reste de la division par 2 (.. modulo 2 ou %2): il vaut 0 dans le premier cas et 1 dans le second. Remarquez quil ny aucun raffinement à faire, tout peut être décrit en termes dinstructions de base…. Exemple (2)

47 DÉBUT DEMANDER na,nb {A:na et nb sont des entiers positifs ou nuls} reste (na + nb) % 2 si reste = 0 alors début AFFICHER"Le joueur A a gagné." fin sinon début AFFICHER "Le joueur B a gagné" fin AFFICHER "Bravo pour le gagnant!« {A: le gagnant est désigné} FIN Exemple (2)

48 Exemple (3) Soit l'équation mathématique ax 2 + bx + c = 0. Écrire un algorithme qui nous fait passer à une situation finale acceptable si notre situation initiale est acceptable. Analyse Description des situations initiales acceptables : a, b et c sont des valeurs réelles bien définies et contenus dans des variables de même nom. Delta contient la valeur de l'expression mathématique b 2 - 4ac

49 Description des situations finales acceptables : a, b, c et Delta n'ont pas été modifiées. Nous avons affiché Pas de racine réelle. si et seulement si l'équation ne possède effectivement pas de racine réelle. Nous avons affiché Racine double. si et seulement si l'équation possède effectivement une racine réelle double. Nous avons affiché Deux racines réelles. si et seulement si l'équation possède effectivement deux racines réelles distinctes. Rien d'autre n'a été affiché ou imprimé depuis la situation initiale. Exemple (3)

50 Conception de l'algorithme: Avant de faire cette conception, écrivons d'une façon très schématique une solution à ce problème. Exemple (3)

51 Algorithme formulé dans un organigramme

52 Delta 0 dans ce rectangle. { Assertion : Les valeurs de a, b et c sont des nombres réels } Si Delta < 0 Alors Début Afficher Pas de racine réelle. Fin Sinon Début Si Delta = 0 Alors Début Afficher Racine double. Fin Sinon Début Afficher Deux racines réelles. Fin { Assertion : …..} Algorithme formulé en pseudo-code

53 Un algorithme qui ajoute une journée à une date donnée. Exemple (4)

54 DEBUT DEMANDER j,m,a {A: a représente une année dans le calendrier grégorien, m un mois dans lannée et j un jour du mois} max 30 SI m=1 OU m=3 OU m=5 OU m=7 OU m=8 OU m=10 OU m=12 ALORS début max 31 fin SI m=2 ALORS début max 28 SI (a % 4 = 0) ET NON (a % 100 =0) ALORS début max 29 fin SI (a % 400=0) ALORS début max 29 fin j j+1 SI j>max ALORSdébut j 1 m m+1 SI m>12 ALORS début m 1 a a+1 fin AFFICHER j,m,a {A: j, m et a représentent la date du lendemain} FIN

55 Ensemble dinstructions à exécuter pour résoudre une instruction complexe Expression en terme de primitives (instructions de base) Exemples Calculer les racines d'une équation du second degré Lister des éléments dun dossier étudiant Trier un ensemble de noms par ordre alphabétique Lapproche descendante permet dexpliciter une action complexe en une suite d'actions primitives: abstraction. Les instructions composées (complexes)

56 Méthode de résolution de problèmes qui nous aide à formuler de bons algorithmes. Elle consiste à considérer un problème dans son ensemble, préciser les données nécessaires et les résultats attendus décomposer le problème en plusieurs sous-problèmes plus simples qui seront traités séparément et éventuellement décomposés eux-mêmes de manière encore plus fine ( raffinement) Lapproche descendante

57 Exemple p.32 dans les notes de cours Imaginons un robot domestique à qui nous devons fournir un algorithme lui permettant de préparer une tasse de café soluble. Une première version de l'algorithme pourrait être: (1) faire bouillir de l'eau (2) mettre le café dans la tasse (3) ajouter l'eau dans la tasse Approche descendante

58 (1) faire bouillir l'eau peut être affinée en (1.1) remplir la bouilloire d'eau (1.2) brancher la bouilloire sur le secteur (1.3) attendre l'ébullition (1.4) débrancher la bouilloire (2) mettre le café dans la tasse pourrait être affiné en (2.1) ouvrir le pot à café (2.2) prendre une cuiller à café (2.3) plonger la cuiller dans le pot (2.4) verser le contenu de la cuiller dans la tasse (2.5) fermer le pot à café Approche descendante

59 (3) ajouter de l'eau dans la tasse pourrait être affinée en (3.1) verser de l'eau dans la tasse jusqu'à ce que celle-ci soit pleine Certaines étapes étant encore trop complexes et sans doute incompréhensibles pour notre robot, il faut les affiner davantage. (1.1) remplir la bouilloire d'eau peut nécessiter les affinements suivants: (1.1.1) mettre la bouilloire sous le robinet (1.1.2) ouvrir le robinet (1.1.3) attendre que la bouilloire soit pleine (1.1.4) fermer le robinet Approche descendante

60 Quand doit-on arrêter le raffinement? Lorsque lon a décrit lalgorithme en des termes que lordinateur peut comprendre On doit donc connaître les instructions primitives, quelle sorte dinstructions le processeur peut interpréter. Un programme sera donc une suite dinstructions primitives, comprises directement par lordinateur. Les algorithmes que nous écrivons doivent donc refléter cette décomposition. Approche descendante

61 Lapproche descendante Dans le cas du robot, « Brancher la bouilloire » est une instruction que le robot est en mesure de comprendre Par contre, « Remplir la bouilloire » est une instruction trop complexe et doit être décomposée à nouveau.

62 Décomposition fonctionnelle Si une instruction donnée n'est pas primitive, c'est-à-dire qu'elle n'est pas assez explicite pour qu'un ordinateur l'interprète directement, elle doit être décomposée en instructions primitives. Chaque décomposition sera encapsulée dans un bloc d instructions. L analyse descendante est une des méthodes pour obtenir cette décomposition. La décomposition fonctionnelle permet de rapides construction de programmes, la possibilité de leur réutilisation pour en construire dautres en plus den assurer une rapide et efficace maintenance.

63 Les blocs algorithmiques Utilisés afin de découper un algorithme en plusieurs sous- tâches. Cette façon de procéder sinscrit très bien dans lapproche descendante et la décomposition fonctionnelle. Chaque tâche à accomplir est alors détaillée au sein dun bloc algorithmique.

64 On peut ré-écrire lalgorithme lendemain de la façon suivante: Bloc B1 – la date du lendemain DEBUT Déterminer une date (Bloc B2) Déterminer le dernier jour du mois m (Bloc B3) Déterminer la date du jour suivant (Bloc B4) AFFICHER « La journée suivante est: », j, m, a {A:….} FIN Les blocs algorithmiques

65 Bloc B2 – Déterminer une date DEBUT DEMANDER j, m, a {A: j est un entier compris entre 1 et 31} {A: m est un entier compris entre 1 et 12} {A: a est un entier représentant une année dans le calendrier} {A:…} FIN Les blocs algorithmiques

66 Bloc B3 – Déterminer le dernier jour du mois DEBUT max 30; SI m=1 OU m=3 OU m=5 OU m=7 OU m=8 OU m=10 OU m=12 ALORS DEBUT max 31; FIN SI m=2 ALORS début max 28; SI a est une année bissextile (voir B5) ALORSdébut max 29; fin {A:…} FIN Les blocs algorithmiques

67 Bloc B4 – Déterminer la date du jour suivant DÉBUT j j+1; SI j > max ALORS début j 1; m m+1; SI m>12 ALORS début m 1; a a+1; fin {A:…} FIN Les blocs algorithmiques

68 Bloc B5 vérification si une année donnée est une année bissextile DEBUT bis FAUX SI (a % 4 = 0) ET NON (a % 100 = 0) ALORS début bis VRAI; fin SI (a % 400=0) ALORS début bis VRAI; fin {A:…} FIN Les blocs algorithmiques

69 La documentation: les commentaires de spécification dans les algorithmes Vous aurez à considérer 4 types de commentaires des commentaires d'identification des grandes étapes; des commentaires explicatifs; des commentaires du type assertions; les commentaires de spécification formelle dun bloc; les commentaires de spécification internes à un bloc;

70 Les (4) commentaires de spécification formelle nous aideront à spécifier linterface de chaque bloc issu dune décomposition. Les (8) commentaires internes à un bloc nous aideront à construire les instructions du bloc tout en assurant sa rapide maintenance. Les commentaires de spécification

71 Len-tête du bloc d instruction implantant une tâche Pré-conditions conditions devant être vraies au départ pour assurer le bon fonctionnement du bloc d instructions Post-conditions conditions étant vraies (observables) après exécution (correcte, i.e. les pré-conditions sont respectées) des instructions du bloc. Sinon, indiquer la ou les actions à entreprendre dans l exécution du bloc. Valeur(s) retournée(s) en output de l exécution des instructions du bloc si les pré-conditions sont respectées, sinon indiquer ce que fournira le bloc. Ce type de commentaires spécialisés sera utilisé essentiellement lors de la décomposition fonctionnelle dune solution lors d une résolution dun problème donné. Ainsi, chaque tâche qui en découle de la décomposition doit être spécifiée par les 4 commentaires suivant: Les commentaires dinterface dun bloc

72 Les commentaires de spécification internes à un bloc Les commentaires de spécification servent à spécifier un bloc dun algorithme: Ce quil fait La façon dont il procède pour atteindre son but Les données nécessaires Les résultats quil fournit Ces commentaires sont internes aux blocs. Ils aideront au développement rapide des blocs, ainsi quà leur validation de façon plus efficace.

73 Définitions Objectifs: ce commentaire sert à décrire le but visé par le bloc. Méthode: la façon dont on procède pour atteindre le but décrit au commentaire précédent Besoins: toutes les données dont le bloc aura besoin pour atteindre son but. Connus: les données que lon connaît davance, que lon naura pas besoin de demander au bloc appelant ni à lusager. Les (8) commentaires de spécification dun bloc

74 Entrées: les données qui parviennent du bloc appelant. Sorties: les données que le bloc renvoie au bloc appelant Résultats: toute conséquence du bloc qui nest pas visible par les autres blocs, exemple: les affichages. Hypothèses: Les conditions nécessaires au bon fonctionnement du bloc. Ces hypothèses concernent: les données en entrée du bloc; les données lues (saisies) dans le bloc. Les commentaires de spécification dun bloc

75 DEMANDER nbEtudiants {Assertion: nbEtudiants 0} Bloc B2… {.. Besoin : n, le nombre entier dont il faut calculer le factoriel Entrée : n.. Hypothèses : n 0 } Début {début du bloc} {A: n 0 } ….. Les assertions (3) Validation des hypothèses

76 Bloc B3.. { les 8 commentaires de spécification internes } début {début du bloc} … {A: post-condition de B3} fin {fin du bloc} Bloc B1… { les 8 commentaires de spécification internes } début{début du bloc} … Calcul de la moyenne d'une série de notes (voir B3) {A: la variable moy contient la moyenne des notes} …. {A: post-condition de B1} fin {fin du bloc} Les assertions (4) Les post-conditions

77 Exercice Compléter lalgorithme suivant en y insérant dans chaque bloc: Les assertions aux endroits requis Les 8 commentaires de spécification internes

78 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début faire le traitement (voir détails Bloc B2) fin Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ fin Afficher CL CP CL fin

79 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début faire le traitement (voir détails Bloc B2) fin Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ fin Afficher CL CP CL fin Jai besoin de quoi?

80 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début faire le traitement (voir détails Bloc B2) fin Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ fin Afficher CL CP CL fin CP et CL!

81 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début faire le traitement (voir détails Bloc B2) fin Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ fin Afficher CL CP CL fin On quitte B1

82 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début faire le traitement (voir détails Bloc B2) fin Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ fin Afficher CL CP CL fin On a quitté... J ai besoin de quoi?

83 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début faire le traitement (voir détails Bloc B2) fin Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ fin Afficher CL CP CL fin On a quitté... CP et CL!

84 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début faire le traitement (voir détails Bloc B2) fin Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ fin Afficher CL CP CL fin Flux de données entre B1 et B2 CP et CL!

85 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début faire le traitement (voir détails Bloc B2) fin Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ fin Afficher CL CP CL fin CP CP…CL Une entrée Une sortie

86 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début faire le traitement (voir détails Bloc B2) fin Bloc B2: le traitement début Demander CL SI CL = CP ALORS début Afficher le caractère de soulignement '_ fin Afficher CL CP CL fin On revient au point dappel Le point d appel

87 Questions: Quaffiche cet algorithme si les données lues sont: " Etes vous efficace?... Bonne chance!! " (Les guillemets ne font pas partie des données) Quel est le rôle du caractère ! dans l'algorithme? Est ce que cest le même espace mémoire qui est associé à CP dans B1 et B2? En dautres termes, est ce que cest la même variable? Attention, ne confondez pas valeur assignée à une variable et variable (labstraction dune cellule mémoire) Exercice

88 Bloc B1: un traitement bien spécial début Demander CP Afficher CP TANT QUE CP ! début faire le traitement (voir détails Bloc B2) fin Bloc B2: le traitement début Demander CL SI CL = X ALORS début Afficher '_ fin Afficher CL X CL fin Paramètres formels de B2 Paramètre formel deB1 mais effectif pour B2


Télécharger ppt "Algorithmique et Programmation A. Alikacem. Semaine 3 Semaine 3 Bâtir un algorithme Lecture: chapitre 3 des notes de cours Rappel des outils algorithmiques."

Présentations similaires


Annonces Google