Traitement informatique des informations Cours TSEN COURS D’ALGORITHMIQUE I – NOTIONS GENERALES Un algorithme peut être défini comme étant un ensemble de règles opératoires, employées en vue d’obtenir un résultat déterminé au moyen d’un nombre fini d’opérations. Dans ce cours, nous étudierons de nombreux algorithmes fondamentaux qui se retrouvent dans des problèmes d’origines diverses et variées. 1. Syntaxe générale Un algorithme est défini par un nom. Il commence par décrire les objets qu’il utilise, puis les actions réalisées sur ces objets et qui définissent le processus de résolution. L’ensemble des objets de données représente l’environnement (c’est la partie déclarations) de l’algorithme tandis que la description des actions constitue l’énoncé (c’est le corps) de l’algorithme. On adopte la syntaxe générale suivante : Algo : nom_de_algorithme Déclarations Déclarations des objets utilisés Début Liste des actions Fin nom_de_algorithme L’écriture d’un algorithme à partir du schéma de résolution doit être établie dans un formalisme indépendant de tout langage de programmation. Ainsi, l’algorithme est considéré comme le support de communication entre les programmeurs maîtrisant différents langages évolués. Convention d’écriture : tous les mots clés du langage algorithmique peuvent être soulignés pour pouvoir être différenciés des autres écritures et pour la lisibilité de l’algorithme. 2. Commentaires Un algorithme doit être bien documenté, il représente un support de communication entre les programmeurs. Ainsi, à chaque étape, il est nécessaire d’insérer des commentaires explicatifs qui permettent d’expliciter les actions réalisées. De même, on insère aussi des commentaires pour expliciter les rôles des objets de données utilisés. Lycée des Métiers Jacques Prévert Combs – la – Ville Section de BAC PRO Systèmes électroniques numériques Electronique Industrielle Embarquée 1 Traitement informatique des informations Cours TSEN Un commentaire est inséré entre deux accolades, et peut être allongé sur plusieurs lignes. Exemple : { ceci est un commentaire } { cet algorithme réalise une opération de retrait } II– OBJETS DE DONNEES, TYPES, OPERATIONS et ACTIONS 1. Objets de données et types Pour chaque algorithme, on distingue les objets de données et les actions réalisées sur ces derniers. Les objets peuvent être : Les objets d’entrée : données fournies par l’utilisateur pour le déroulement de l’algorithme. Les objets de sortie : résultats produits par l’algorithme. Les objets internes : objets intermédiaires servant aux différentes manipulations pour aboutir aux résultats attendus. Pour déclarer un objet, on doit préciser : son nom, son utilisation, son type et sa nature. Le Nom : Le nom est utilisé pour désigner un objet. Il doit être composé par une suite (sans espèces) de lettres ou de chiffres et le caractère _. La première lettre doit être une lettre. C’est un identificateur de l’objet. Il doit être le plus expressif possible. Exemple : Prix, Age, An2001 On peut utiliser des commentaires pour expliciter le rôle d’un objet et son utilité dans l’algorithme, ce qui facilitera la compréhension dans une relecture. L’utilisation : La caractéristique entrée, sortie ou interne indique l’utilisation qui sera faite de l’objet. L’algorithme peut modifier des objets qui sont alors des objets d’entrée-sortie. Le type : Le type caractérise les valeurs que peut prendre un objet et les actions autorisées sur cet objet. On distingue les types prédéfinis et les types nouveaux que l’utilisateur peut définir. La définition d’un nouveau type est faite par le mot clé type. Nous verrons plus loin son utilisation. Les principaux types simples ou prédéfinis usuels, disponibles dans presque tous les langages de haut niveau, sont les suivants : Le type entier : les objets prennent des valeurs entières positives ou négatives. Le type réel : les objets prennent des valeurs réelles positives ou négatives. Le type caractère : les objets peuvent être une lettre, un chiffre ou un symbole. Lycée des Métiers Jacques Prévert Combs – la – Ville Section de BAC PRO Systèmes électroniques numériques Electronique Industrielle Embarquée 2 Traitement informatique des informations Cours TSEN Le type chaîne de caractères (taille) : les objets sont des suites de caractères avec une taille donnée (le nombre de caractères composant la chaîne). Le type booléen : les objets prennent les valeurs vrai ou faux. La syntaxe suivante est utilisée pour la déclaration des objets : Nom_de_objet : type Exemple : Prix : réel Compteur : entier Car : caractère Ville : chaîne (20) Trouve : booléen La nature : Un objet peut être une constante ou une variable. Une constante ne change pas de contenu durant le déroulement de l’algorithme, la seule valeur de départ est gardée. Par contre, une variable peut prendre plusieurs valeurs compatibles avec son type. Pour les différencier, nous déclarons les constantes avec le mot clé constantes selon la syntaxe suivante : Constantes Nom_constantes = valeur Exemple : Constantes TVA = 0.196 Max = 15 2. Actions Les entrées/sorties permettent à un programme de communiquer avec le monde extérieur. Les termes entrées et sortie étant relatifs à l'emplacement où on se situe, on se placera toujours du côté de l'algorithme. Une entrée permet au programme de demander une donnée à l'utilisateur. Une sortie fournit un résultat à l'utilisateur. a. Entrée : Lecture ou Saisie Pour demander la saisie d’une donnée tapée par l’utilisateur, l’action Lire (ou Saisir) est utilisée selon la syntaxe suivante : Lire (identificateur) Saisir (identificateur) Identificateur est un nom de variable qui indiquera où sera rangée la valeur lue. On peut demander la saisie de plusieurs variables, dans ce cas, les identificateurs seront séparés par des virgules selon la syntaxe suivantes : Lire (identificateur1, identificateur2, …) Saisir (identificateur1, identificateur2, …) Lycée des Métiers Jacques Prévert Combs – la – Ville Section de BAC PRO Systèmes électroniques numériques Electronique Industrielle Embarquée 3 Traitement informatique des informations Cours TSEN Exemple : Lire (Prix) Saisir (Ville, Code_postal) b. Sortie : Affichage ou Ecriture Pour afficher un message à l’utilisateur ou afficher le contenu d’une variable, l’action afficher (ou écrire) est utilisée selon la syntaxe suivante : Afficher (identificateur) Ecrire (identificateur) Afficher (« … ») Ecrire (« … ») On peut mélanger des identificateurs et des messages dans la même action d’affichage pour plus de convivialité. Dans ce cas, il faut séparer chaque entité par des virgules selon la syntaxe suivante : Afficher (identificateur1, « … », identificateur2, …) Ecrire (identificateur1, « …», identificateur2, …) Exemple : Afficher (« Le prix à payer est : », Prix) Ecrire (« Bonjour », Nom) c. Affectation A chaque variable est associé un espace mémoire indépendant repéré par le nom de celle-ci. L’affectationconsiste à reverser la valeur d’une expression calculable, ou d’une constante ou d’une variable dans une autre variable. La syntaxe suivante est utilisée : Identificateur expression Comme indiqué par le sens de la flèche, c’est le contenu de la partie de droite qui sera versé dans la partie de gauche. L’ancien contenu de la variable de gauche sera écrasé par le nouveau contenu. Exemple : Prix_HT Ville Prix_TTC 15.67 « Paris » Prix_HT * TVA Lycée des Métiers Jacques Prévert Combs – la – Ville Section de BAC PRO Systèmes électroniques numériques Electronique Industrielle Embarquée 4 Traitement informatique des informations Cours TSEN 3. Opérations a. Opérations arithmétiques Le tableau ci-après récapitule les opérations arithmétiques usuelles disponibles dans presque tous les langages évolués. Opérateur + + * : DIV / % MOD Désignation Plus unaire Moins unaire Addition Soustraction Multiplication Division avec reste Division Modulo reste de la division Exemple +X -X X+Y X–Y X*Y X : Y ou X DIV Y X/Y X % Y ou X MOD Y X et Y peuvent être des constantes entières ou des variables (de type entier ou réel) ou encore des expressions. b. Opérations logiques Le tableau ci-après récapitule les opérations logiques usuelles disponibles dans presque tous les langages évolués. Opérateur NON ET OU OUX Désignation Négation ET logique OU logique inclusif OU logique exclusif Exemple NON (X) X ET Y X OU Y X OUX Y X et Y peuvent être des variables booléennes ou des expressions logiques. Les valeurs logiques que peut prendre une variable sont 0 pour Faux et 1 ou pour Vrai. Lycée des Métiers Jacques Prévert Combs – la – Ville Section de BAC PRO Systèmes électroniques numériques Electronique Industrielle Embarquée 5 Traitement informatique des informations Cours TSEN Voici les tables de vérité des quatre opérateurs logiques : Table de vérité de l’opérateur NON X 0 1 NON(X) 1 0 Table de vérité de l’opérateur ET X 0 0 1 1 Y 0 1 0 1 X ET Y 0 0 0 1 Y 0 1 0 1 X OU Y 0 1 1 1 Y 0 1 0 1 X OUX Y 0 1 1 0 Table de vérité de l’opérateur OU X 0 0 1 1 Table de vérité de l’opérateur OUX X 0 0 1 1 Lycée des Métiers Jacques Prévert Combs – la – Ville Section de BAC PRO Systèmes électroniques numériques Electronique Industrielle Embarquée 6 Traitement informatique des informations Cours TSEN c. Opérations de test Le tableau ci-après récapitule les opérations de test usuelles disponibles dans presque tous les langages évolués. Il faut faire attention à l’utilisation du signe =, il s’agit ici d’un test d’égalité et non d’une affectation (désignée en haut par une flèche ). Opérateur = > < Désignation Test d’égalité Supérieur à Inférieur à Supérieur ou égal à Inférieur ou égal à Différent de Exemple X=Y X>Y X<Y XY XY XY d. Priorité et associativité des opérateurs L’évaluation et le calcul de la valeur d’une expression suivent un ensemble de règles qui déterminent la séquence d’exécution des différentes opérations. La priorité est relative à l’ordre par lequel on évalue les opérateurs et l’associativité se rapporte à l’ordre par lequel on évalue les opérateurs qui ont la même priorité. Afin d’aboutir aux résultats attendus, il faut faire usage des parenthèses qui assurent l’ordre dans lequel sera évaluée l’expression. Les parenthèses ont la plus forte priorité. Le tableau suivant présente les priorités des opérateurs dans l’ordre décroissant de leurs priorités : () Non + - (opérateurs unaires) * / Div Mod ET OU OUX + - (opérateurs binaires) Lycée des Métiers Jacques Prévert Combs – la – Ville Section de BAC PRO Systèmes électroniques numériques Electronique Industrielle Embarquée 7 Traitement informatique des informations Cours TSEN III – ALGORIGRAMMES C’est une représentation graphique de l’algorithme. Pour le construire, on utilise des symboles normalisés. Lycée des Métiers Jacques Prévert Combs – la – Ville Section de BAC PRO Systèmes électroniques numériques Electronique Industrielle Embarquée 8