I. Introduction aux langages de programmation : Un algorithme ne peut être exéc

I. Introduction aux langages de programmation : Un algorithme ne peut être exécuté que s’il est exprimé sous la forme que le processeur concerné peut comprendre. Dans les exemples que nous avons vus les algorithmes sont exprimés sous une forme adaptée à la compréhension humaine. Et il serait intéressant que les ordinateurs puissent comprendre l’une de ces formes d’expression (anglais, français ou arabe …). Malheureusement, les ordinateurs ne sont pas actuellement en mesure de le faire, et ce pour les raisons suivantes : (1) Les langues ont un vocabulaire considérable et des règles grammaticales complexes. Pour qu’un ordinateur puisse analyser des phrases, des algorithmes appropriés lui seraient nécessaires. Mais la procédure d’analyse est si complexe et si mal comprise que de tels algorithmes n’ont pas encore été inventés, sauf pour des sous ensembles restreints de la langue (ex : l’analyseur grammatical du traitement de texte Word fait souvent des erreurs). (2) L’interprétation d’une phrase dépend non seulement d’une analyse grammaticale mais encore du contexte dans lequel la phrase apparaît. De nombreux mots ont plusieurs significations qui peuvent être interprétées uniquement par le contexte. Ex : l’expression « une drôle de situation » est ambiguë tant que la signification du mot « drôle » (curiosité ou humour) n’est pas révélée par le contexte sémantique créé par la phrase. L’utilisation métaphorique et autres jeux de langages rendent également difficile l’interprétation d’une langue. Ex : Cueillons les roses de la vie. Puisque l’anglais ou le français ou l’arabe sont trop complexes pour être compris par les ordinateurs, les algorithmes exécutables doivent être écrits plus simplement. Par analogie avec les langages naturels, chaque langage de programmation a son propre vocabulaire et ses propres règles grammaticales, qui dictent les conditions dans lesquelles le vocabulaire peut être utilisé. Ex : une des étapes d’un algorithme de comptabilité s’exprime de la manière suivante : MULTIPLIER prix PAR quantité DONNE coût et en pseudo-code : Coût ← prix * quantité Les deux formes d’expression signifient la même chose : Une instruction est donnée pour multiplier un nombre appelé prix par un nombre appelé quantité afin d’obtenir un nombre appelé coût. 1. Syntaxe et sémantique : Comprendre l’écriture même de l’algorithme se décompose en deux étapes. En premier lieu le processeur doit être capable de reconnaître et de comprendre les symboles par lesquels est exprimé l’algorithme (mots français ou anglais, abréviations, symboles mathématiques, notes dans une partition musicale). L’ensemble des règles grammaticales qui régissent la manière dont les symboles dans un langage doivent être utilisés est appelé la syntaxe du langage. Un programme qui respecte la syntaxe du langage dans lequel il est écrit est dit syntaxiquement correct. Tout écart de syntaxe dans le langage est appelé une erreur de syntaxe. Ex : cuisson les aromates La deuxième étape de la compréhension de l’écriture d’un algorithme consiste à donner une signification à chaque énoncé en termes d’opérations que le processeur doit effectuer. Ex : maille à l’envers indique comment manipuler les aiguilles à tricoter et la laine coût ← prix * quantité signifie que deux nombres prix et quantité doivent être multipliés pour donner un troisième nombre appelé coût. La signification de formes données d’expressions dans un langage est appelée la sémantique du langage. Les langages de programmation sont conçus de telle sorte que leur syntaxe et leur sémantique soient relativement simples et qu’un programme puisse être analysé du point de vue de la syntaxe sans référence sémantique. Dans les langages naturels, la syntaxe et la sémantique sont très complexes et souvent corrélatives. Il est possible d’écrire des phrases à la syntaxe correcte mais pourtant dépourvues de signification. Ex : (dû à Noam Chomsky) Les idées vertes incolores dorment furieusement De même un énoncé dans un algorithme peut être syntaxiquement correct mais dépourvu de signification Afficher le nom du 13ème mois de l’année Outre les erreurs de syntaxe et de sémantique, il y a une troisième catégorie d’erreurs. Il s’agit de l’erreur logique. Un programme peut ne pas décrire d’une manière adéquate le traitement désiré. Ex : considérons l’algorithme suivant qui consiste à calculer la circonférence d’un cercle : Calculer la circonférence en multipliant le rayon par  Cet algorithme est syntaxiquement et sémantiquement correct, mais le résultat produit sera faux (car on a oublié de multiplier le rayon par 2). 2. Mémoire, registre, variable, constante, affectation « Mémoire : faculté de conserver l’information, mais aussi de la retrouver et d’en permettre une nouvelle exploitation. » Il est rare que le résultat cherché puisse s’obtenir par un calcul direct ; l’étape finale du calcul ou du raisonnement fait le plus souvent intervenir un certain nombre de résultats intermédiaires établis antérieurement et mémorisés à cette fin ; d’où l’intérêt de disposer d’une machine permettant le stockage de valeurs numériques. Sans rentrer dans le détail de son organisation, disons que la mémoire d’une machine est constituée par un ensemble de registres dans chacun desquels on pourra ranger une valeur puis lire cette valeur. Un registre se conçoit bien en l’imaginant comme une case dans laquelle est inscrite une valeur et une seule à la fois. On peut écrire dans cette case une nouvelle valeur provoquant par là l’effacement du contenu précédent ; on peut lire le contenu de cette case. Chaque registre est repéré par un numéro ou adresse, mais plutôt que d’utiliser cette adresse il est plus commode de donner à chacun des registres utilisés un nom symbolique. Dans la description des algorithmes la référence aux registres se fait donc par l’intermédiaire de ces noms symboliques que l’on appelle des variables. A chaque variable rencontrée est associé un registre et le contenu de ce registre à un instant donné est appelé la valeur de la variable à cet instant. Définition : Une variable est une zone mémoire dans laquelle on peut mémoriser de façon temporaire une valeur pour une exploitation ultérieure. Son contenu peut varier au cours de l’exécution du programme. Notion de constante : Une constante est une zone mémoire désignée par une adresse. La valeur de la constante ne change jamais. L’affectation : Une première instruction importante est l’affectation d’une valeur à une variable, c’est-à-dire le rangement d’une valeur dans le registre correspondant. Cette instruction est notée par : ← . Ex : A ← 5 signifie affecter la valeur numérique 5 à la variable A c’est-à-dire ranger cette valeur dans le registre nommé A. L’affectation ne doit pas être confondue avec l’identité mathématique, c’est une instruction qui est exécutée à un instant déterminé et cette notion de chronologie est fondamentale pour bien comprendre le sens d’instructions plus complexes. L’utilisation des valeurs ainsi mémorisées se fait en « rappelant » le contenu des registres c’est- à-dire la valeur des variables. Ex : A ← 2 B ← 2 * A + 1 Après exécution de ces deux instructions la valeur de B est égale à 5. La notation A est une référence implicite à la valeur de A. Les entrées, sorties : Si l’on fait des calculs c’est surtout pour en connaître les résultats. Le problème de l’accès aux résultats se conçoit bien dès l’instant que l’on suppose que le programme est exécuté par un système qui nous est extérieur, soit quelqu’un d’autre, soit une machine. Une machine peut être considérée comme un espace clos ; nous sommes à l’extérieur. Nous pouvons lui donner un travail à effectuer (ou programme), le lui faire exécuter, mais nous ne nous contenterons pas de savoir qu’elle a effectué ce travail et que quelque part, dans un de ses registres, se trouve inscrit le résultat que nous cherchons. Il faut que, ce résultat, elle nous le communique à nous qui sommes à l’extérieur, et cela ne se fera pas spontanément, mais uniquement si nous lui en avons donné l’instruction. La communication de l’intérieur d’un système vers l’extérieur s’appelle la « sortie ». Nous traduisons cette instruction de sortir un résultat par écrire X qui signifie écrire (imprimer, afficher sur écran, …) la valeur de la variable X. La communication de l’extérieur vers l’intérieur s’appelle « l’entrée ». Nous la traduisons par l’instruction entrer X qui signifie attendre qu’une valeur soit donnée puis affecter cette valeur à la variable X. Les expressions arithmétiques : Les expressions arithmétiques s’écrivent en combinant des valeurs numériques, des variables, des opérateurs et des fonctions avec les règles d’usage de la notation scientifique. Par exemple : 4 + A + 3 * B Une telle écriture nous est familière mais il convient de préciser la signification exacte que nous lui donnons. Une expression arithmétique est une instruction qui signifie calculer la valeur de l’expression obtenue en remplaçant chaque variable par sa valeur, et ce avec les règles d’usage. Exemple : Supposons que la valeur de A est 5 et celle de B est 3, 4 + A + 3 * B signifie calculer 4 + 5 + 3 * 3, le résultat est 18. L’évaluation d’une expression s’accompagne souvent d’une affectation sous la forme générale variable ← expression qui signifie évaluer l’expression puis affecter le résultat à la uploads/s3/ conception-des-algorithmes.pdf

  • 48
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager