AccueilđŸ‡«đŸ‡·Chercher

Instruction nulle

En programmation informatique, une instruction nulle (ou instruction vide) est une instruction particuliĂšre, qui dicte Ă  l'ordinateur de n'effectuer aucune action.

Langage machine

L'instruction nulle, implémentée dans le jeu d'instructions de beaucoup de processeurs a pour seul effet d'incrémenter le compteur ordinal. Elle est donc ignorée par le processeur, qui passe à l'instruction suivante.

Elle est symbolisée en assembleur par le mnémonique NOP.

Pascal

En Pascal, l'instruction nulle est l'instruction qui n'est constituée d'aucun symbole. C'est une instruction vide.

Par exemple, comme les instructions sont séparées par des points-virgules, deux points-virgules successifs délimitent en fait une instruction nulle.

Une instruction nulle est frĂ©quemment ajoutĂ©e (souvent inconsciemment) Ă  la fin d'une sĂ©quence d'instructions dans un bloc Begin-End par les programmeurs qui prennent l'habitude de faire suivre toutes les instructions par un point-virgule, mĂȘme la derniĂšre.

Un point-virgule mal placé peut provoquer une confusion :

while n > 0 do ;
  begin
    n := n - 1 ;
    f := f * n ;
  end

Dans cet exemple, le point-virgule ajouté par mégarde aprÚs do indique que l'instruction à répéter dans la boucle while est l'instruction nulle. Le bloc Begin-End ne sera exécuté qu'aprÚs la fin de la boucle (donc jamais si n est strictement positif, car ce sera en fait une boucle infinie). Par contre, le point-virgule inutile aprÚs la deuxiÚme ligne du bloc est inoffensif et ne fait qu'y ajouter une instruction nulle sans effet.

Contrairement Ă  l'exemple prĂ©cĂ©dent, il peut ĂȘtre utile de mettre une instruction nulle dans une boucle pour attendre qu'une condition se rĂ©alise avant de continuer l'exĂ©cution :

repeat until KeyPressed

ou

while not KeyPressed do

Mais si l'on veut faire suivre la boucle ci-dessus d'une instruction, il ne faudra pas oublier d'ajouter un point-virgule. Le compilateur détectera l'oubli dans le premier cas, mais dans le deuxiÚme, il considérera l'instruction suivante comme faisant partie de la boucle.

C

Le code suivant est un exemple d'instruction simple en C qui se comporte comme une instruction nulle.

   i+1;

Cette instruction effectue une addition et ignore le rĂ©sultat. En fait, toute instruction n'ayant pas d'effet de bord (et qui n'affecte pas le flux de contrĂŽle comme break ou return) peut ĂȘtre enlevĂ©e, puisque le rĂ©sultat du calcul est ignorĂ©.

La vĂ©ritable instruction nulle en C est l'instruction la plus simple possible. Elle est constituĂ©e d'un simple point-virgule et peut ĂȘtre mise Ă  tout emplacement oĂč une instruction est requise.

   ;

Une autre solution, peut-ĂȘtre plus lisible, est d'utiliser un bloc vide :

   {}

Dans certains cas, tels que le corps d'une fonction, un bloc est obligatoire mais il peut ĂȘtre vide.

L'instruction nulle est inutile en elle-mĂȘme, mais elle peut ĂȘtre d'une utilitĂ© syntaxique dans un contexte plus large, par exemple celui d'une boucle :

  while (getchar() != '\n')
      ;

ou de façon plus concise :

  while (getchar() != '\n');

cependant cette maniĂšre d'Ă©crire peut prĂȘter Ă  confusion car le point-virgule peut souvent ne pas ĂȘtre remarquĂ©.

Autre solution possible, peut-ĂȘtre plus lisible :

  while (getchar() != '\n') {}

Le code ci-dessus répÚte l'appel à la fonction getchar() jusqu'à ce qu'elle retourne un caractÚre \n (fin de ligne), ce qui a pour effet de faire avancer la lecture de l'entrée standard jusqu'au début de la ligne suivante.

Remarque : En pratique, la plupart des compilateurs C ne gĂ©nĂšrent pas de code machine pour une instruction nulle, pas mĂȘme un NOP. Souvent cependant, ils signaleront par un avertissement la prĂ©sence d'une instruction sans effet comme celle du premier exemple [1].

Autres langages

  • Fortran : L'instruction CONTINUE, qui, associĂ©e Ă  une Ă©tiquette, sert de point d'arrivĂ©e pour une instruction de branchement, n'a pas d'effet et peut ĂȘtre considĂ©rĂ©e comme l'instruction nulle du Fortran.
  • BASIC : Il n'y a pas d'instruction vide en BASIC mais l'instruction REM, utilisĂ©e pour Ă©crire un commentaire, peut en jouer le rĂŽle.
  • Ada : L'instruction nulle en Ada est NULL.
  • Perl : En langage Perl, l'instruction ellipse '...' a Ă©tĂ© ajoutĂ©e Ă  la syntaxe pour reprĂ©senter visuellement du code manquant qui doit ĂȘtre ajoutĂ© ultĂ©rieurement.
  • Python : L'instruction pass en Python est une instruction nulle.

Notes et références

Voir aussi

Articles connexes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.