Algorithmes et programmation : Construire des algorithmes simples

Généralités sur les algorithmes

L’algorithme est la description d’un traitement automatisé de données destinées à être réalisé sur un ordinateur, après avoir traduit cette description dans un langage de programmation.

L’algorithme est la discipline qui consiste, après analyse du problème à résoudre, à définir cette description du traitement, et ce, de manière totalement indépendante du langage qui sera choisi pour la programmation.

L’algorithme se construit simplement à partir de mots clés et de conventions, en français, en utilisant un certain nombre de principes directeurs.

Un algorithme bien  fait se doit d’être optimisé et correctement conçu, de sorte que sa traduction en langage de programmation soit rapide, quasiment systématique et corresponde (c’est sa finalité) à un programme qui fonctionne de manière optimale.

Principe général

De manière générale, un traitement automatisé consiste à effectuer des opérations sur des informations que l’on peut qualifier de données d’entrée (on parle aussi simplement de données) et à fournir (après traitement) d’autres informations appelées résultats (on parle aussi de données de sortie).

Partant, le schéma ci-dessous doit être considéré comme la règle générale de tout algorithme

Données → Traitement → résultats 

Variables et constantes

Données et résultats sont des grandeurs qui sont susceptibles de varier, car un algorithme de traitement a vocation à pouvoir traiter, de manière répétitive, toutes sortes de valeurs différentes. On les appelle, des variables. On trouvera également dans les algorithmes, des grandeurs dont la valeur est fixée définitivement (par exemple π qui vaut toujours 3,14159…). Ce sont des constantes.

Une variable ou une constante doit toujours posséder un nom appelé identificateur qui sera choisi, dans tous les cas, aussi explicite que possible. La règle consiste à construire les noms de variables et de constantes en utilisant que des caractères alphabétiques, des chiffres et le symbole de soulignement “_”. Un nom doit commencer par une lettre; les espaces sont proscrits. Quantité, A1, Prix_ttc sont des noms corrects. Par contre, Prix ttc, 25ABC sont des noms incorrects. Déroger à cette règle n’est pas dramatique en soi pour la conception d’un algorithme, mais cette contrainte étant imposée par la totalité des langages de programmation, il est préférable de l’adopter tout de suite. Dans notre exemple, on peut nommer nos grandeurs : Rayon, Surface et Pi.

Types

Les variables et les constantes peuvent être de types différents. Un rayon, une surface, sont des grandeurs numériques (des nombres réels); mais des traitements plus sophistiqués feront immanquablement appel à des informations non numériques. Les types les plus simples sont :

  • les types numériques : réel, entier (on prend l’habitude de faire la distinction). Les nombres 22, 3, -5 sont des entiers. Les nombres réels quant à eux, sont notés sous la forme mantisse et  exposant : 2.5296E6 signifie 2,5296×106  ;
  • les types caractère et chaîne de caractères;
  • le type booléen (deux valeurs possibles : Vrai ou Faux).

Des objets plus sophistiqués apparaîtront plus tard, nécessitant la définition de types plus complexes. Tous les langages de programmation nécessitent la déclaration des variables et des constantes avant la première ligne de programme. Il est donc fondamental de référencer toutes les variables que l’on utilise, au fur et à mesure où on les introduit, avec leur type. Pour notre exemple, cette liste ressemble aux lignes suivantes (on liste d'(abord les constantes) :

Constantes
    Pi = 3.14159
Variables
   Rayon, Surface : Réels

Expressions et affectation

Dans un algorithme, le traitement de l’information est organisé en une suite d’opérations (on parlera d’instructions lorsqu’il s’agira de programmer). Les plus élémentaires de ces opérations consistent à effectuer des calculs numériques. D’une manière générale, il s’agit d’évaluer une expression comportant des variables, des constantes, des opérateurs (+,-,/,*, etc) et des fonctions plus sophistiqués (qui font partie des langages. les résultats des évaluations de ces expressions sont la plupart du temps “rangés” dans des variables. On dit qu’il s’agit d’une affectation du résultat d’une expression à une variable.

Pour la formule : Surface = π×(Rayon) 2, on écrira :

Surface :=Pi×(Rayon) 2

En algorithme, nous ferons systématiquement la différence entre le concept d’égalité et celui d’affectation qui traduit bien le “devient égal à”. On préférera écrire “:=”, pour cette affectation comme c’est le cas dans certains langages de programmation.

Noter que par anticipation sur la phase programmation, la multiplication souvent notée ” * ” et la division ” / “. Dans une expression comportant plusieurs opérateurs, on anticipe également les règles de priorité entre opérateurs. Par ordre de priorité décroissante, on a :

  • les fonctions mathématiques,
  • la multiplication et la division, 
  • l’addition et la soustraction.

On pourra utiliser des parenthèses pour clarifier les expressions. Une variable peut très bien être affectée du résultat d’une expression qui contient cette même variable. Dans ce cas, il s’agit d’affecter à cette variable, une nouvelle valeur qui dépend de sa valeur actuelle. Par exemple, l’affectation “I:=I+1” ajoute 1 à la valeur I.

Opérations d’entrée-sortie

Imaginons que les variables Rayon et Surface devront être facilement échangées entre l’utilisateur et la machine qui réalisera le traitement. Ces échanges d’informations sont appelées opérations d’entrée – sortie. la saisie de Rayon correspondra à une entrée d’information (une lecture), en règle générale, au clavier. Le résultat Surface devra évidemment être affiché; il s’agit d’une opération de sortie (on parle d’écriture, même si le résultat apparaît sur l’écran). Ainsi, pour pouvoir réaliser correctement le traitement correspondant à notre exemple, il faut :

  • saisir le rayon du cercle;
  • affecter à Surface, le résultat de l’expression π×(Rayon) 2;
  • afficher le résultat.66:!

Par définition, ces trois opérations sont à exécuter l’une après l’autre : c’est une séquence d’instructions. On écrit en général une instruction par ligne. On parle d’algorithme séquentiel; celui-ci possède un début et une fin clairement identifiés. Ces mots clés, début et fin, encadrent généralement le corps de l’algorithme. L’usage veut que l’on indente toute séquence d’_instructions ainsi encadrée en décalant le début de chacune de ses lignes. Cela facilite grandement la relecture et la compréhension du traitement.

Par convention, on écrira :

 
début
  lire (Rayon)
  Surface := Pi*(Rayon) 2
  écrire (Surface)
fin

Dans certains cas, on pourra utiliser des variables qui ne feront l’objet d’aucune opération d’entrée-sortie. Il s’agira de variables intermédiaires nécessaires au traitement qui se verront affecter une valeur par une opération d’affectation et non par une lecture, et/ou qui seront calculées dans le but de les utiliser dans un autre calcul, sans pour autant qu’il soit besoin d’en faire une écriture.

Méthode de construction d’un algorithme simple

Dans un premier temps, on identifie le corps de l’algorithme, c’est-à-dire la séquence d’opérations nécessaires au traitement proprement dit. On établit simultanément la liste des objets nécessaires avec leurs types :

OpérationsObjets
Surface:=Pi*(Rayon)2 Variables réelles : Rayon, SurfaceConstante : Pi = 3,14159

On ajoute ensuite à l’algorithme les opérations de lecture et d’écriture des variables qui le nécessitent. Par définition, les constantes n’ont pas à être lues par une opération d’entrée. le début et la fin de l’algorithme de traitement sont alors clairement identifiés.

OpérationsObjets
débutlire (Rayon)  Surface:=Pi*(Rayon)2  écrire (Surface)fin  Variables réelles : Rayon, SurfaceConstante : Pi = 3,14159

On termine l’écriture par la déclaration des objets utilisés et l’usage veut que l’on nomme l’algorithme, tout en précisant (en clair) l’objet du traitement réalisé.

OpérationsObjets
Calcul Aireconstantes   Pi = 3,14159variables   Rayon, Surface : Réelsdébut   lire (Rayon)   Surface:=Pi*(Rayon)2   écrire (Surface)finCalcul de l’aire d’un cercle à partir de son rayon.    Variables réelles : Rayon, SurfaceConstante : Pi = 3,14159 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut