Structure d’un programme

Un programme, qu’il soit informatique ou autre, est défini par plusieurs choses :

  1. Des instructions
  2. Des variables
  3. Des opérateurs
  4. Des embranchements conditionnels
  5. Des boucles
  6. Des méthodes

Nous avons déjà un programme simple sous le coude dans mon précédent article, nous allons le reprendre ensemble. Je me cite : « Je souhaites réaliser un programme qui me dit si je suis majeur ou mineur, et qui devra effectuer des actions précises dans les deux cas de figure. ». Reprenons donc mon algorithme :

Début

Demander Age
  Si Age >= 18 Faire ActionMajeur
  Sinon Faire ActionMineur

Fin

Pour commencer, j’ai un début et une fin de programme. Je le rappelle, un programme possède toujours un début et une fin, quel qu’il soit.

Dans ce programme, j’ai besoin d’une variable « Age », qui devra exécuter une action « ActionMajeur » ou « ActionMineur ». J’ai utilisé pour ce faire une condition, et on pourrait imaginer les deux actions comme des méthodes.

Je ne vais pas vous donner d’exemple du programme ici dans un langage précis, cela ne servirait à rien. On va rester très général encore une fois.

1) Les instructions

Suivant la machine, le jeu d’instruction ne sera pas le même. Par exemple, un processeur ARM ne comprend rien à un programme écrit pour un processeur Intel, et un programme Intel ne sera pas non plus compris par un processeur AMD. Il en existe bien d’autres, mais limitons-nous déjà à ces trois fabriquants de micro-processeurs.

Les processeurs ne connaissent que des instructions simple, comme mettre un nombre à un emplacement mémoire, ajouter, soustraire … Cependant, certains processeurs possèdent des instructions un peu plus complexes conçues pour accélérer l’exécution des programmes, comme par exemple l’instruction Intel x86 « CRC » (Cyclic Redundancy Check). On pourrait parfaitement la programmer avec des instructions simples.

Le jeu d’instruction qu’un micro-processeur connaît, encore une fois, dépend de son fabriquant. Les instructions sont codées en binaire au niveau de la machine, et ont une longueur indéterminée. Elles sont généralement codées en octets (un octet étant représenté sur 8 bits). Cependant, inutile d’écrire un programme en binaire, ça ne se fait plus depuis l’invention du premier compilateur, fort heureusement. De plus, les programmes devenant de plus en plus complexes au fils des ans, il est nécessaire aujourd’hui d’avoir un compilateur sachant transcoder notre programme en langage machine.

2) Les variables

On a parfois besoin de variables dans un programme. Par exemple, si on a besoin d’ajouter 2 à un nombre donné par l’utilisateur, il nous sera nécessaire de définir une variable en mémoire, puis de lui ajouter 2. Les variables peuvent avoir une portée globale (visible par tout le programme), ou locale (visible par une portion du programme).

En pratique, il est fortement déconseillé d’utiliser des variables globales, générant plus facilement des bogues, ou, dans le cas de certains programmes, des failles de sécurité.

Plusieurs types de variables existent : les nombres entiers, les nombres à virgule (flottante ou fixe), les chaines de caractères et par extension les caractères (qui eux-mêmes sont représentés par des entiers). Les nombres ont une représentations dite signée (le bit de poids le plus fort sert à savoir si le nombre est positif (0) ou négatif (1)) ou non signée (le nombre étant alors strictement positif ou nul). La machine possède une limite de taille maximum pour une variable, en fonction de son architecture. Par exemple, un processeur 32 bits ne peut supporter que des nombre de 32 bits de longueur – un bit étant représenté par un 0 ou un 1. En conséquences, sur un nombre entier, sa taille maximum peut être calculé de la façon suivante : 2^32. Sa plage de valeurs peut être calculée de la façon suivante :

  • Pour un nombre entier non signé : [ 0 ; 2^32 – 1 ]
  • Pour un nombre entier signé : [ -2^(32-1) ; 2^(32-1) – 1 ]

Note: le caractère « ^ » signifie « exposant ».

La représentation des nombres en mémoire dépend de l’architecture de la machine (ARM, Intel, AMD …) et donc du fabriquant. Le compilateur existe entre autres choses pour nous épargner la tâche de conversion entre les différentes machines.

3) Les opérateurs

Il existe plusieurs catégories d’opérateurs. Les plus courant sont les opérateurs mathématiques : « + » pour additionner, « – » pour soustraire, « * » pour multiplier, et « / » pour diviser. Ils existent dans presque tous les langages de programmation. Il existe aussi dans certains langages un opérateur de concaténation, utilisé pour assembler deux chaines de caractères ensemble.

Nous possédons aussi à notre éventail des opérateurs logiques (AND, OR, XOR), souvent un opérateur de négation (« ! » ou « NOT »), parfois l’ensemble de ces deux catégories, et des opérateurs binaires (AND, OR, XOR, NOT).

Suivant le langage de programmation choisi, ils ne s’écrivent pas de la même façon (le Basic et le C# sont par exemple complètement différent l’un de l’autre sur les opérateurs).

4) Les embranchements conditionnels

On a parfois besoin d’un embranchement conditionnel pour effectuer une tâche en fonction d’un ou plusieurs paramètres. Nous l’avons vu dans mon exemple de programme. Le code à l’intérieur d’une condition n’est exécuté que si la condition est vraie. Si la condition est fausse, on saute à l’instruction de fin de condition. Une condition doit toujours posséder un début et une fin, sinon, risque de bogue ou de faille de sécurité en perspective! Les conditions sont souvent combinées avec des opérateurs logiques.

5) Les boucles

On a parfois besoin de faire une boucle, elle parfois constituée d’une condition d’entrée, et possède presque toujours une condition de sortie. Un conseil, évitez d’écrire des boucles infinies, elles finissent toujours par mal tourner. En pratique, on les évite comme la peste.

Dans les langages de haut niveau, il existe les boucles « Tant que condition … Faire instruction(s) … Fin Tant que », les boucles « Faire instruction(s) … Tant que condition« .

6) Les méthodes

Une méthode est un sous-programme, qui peut posséder zéro, un, ou plusieurs paramètres, qui a la possibilité de retourner un résultat, et qui est appelée par le programme principal.

Suivant le langage de programmation choisi, les méthodes ne s’écrivent pas de la même façon. De plus, tous les processeurs ne permettent pas forcément l’appel à des méthodes. Mais si vous souhaitez programmez en informatique, je vous rassure, tous nos processeurs peuvent faire appel à des méthodes!


Voila pour ce qui est des généralités de la programmation, si j’ai oublié quelque chose, ou si j’ai mal expliqué un point ou deux, merci de me laisser un message, soit en commentaire, soit par email en passant par le formulaire de contact.

Laisser un commentaire