Structure de contrôle - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

En programmation impérative, une structure de contrôle est une commande qui contrôle l'ordre dans lequel les différentes instructions d'un algorithme ou d'un programme informatique sont exécutées.

On appelle aussi cet enchaînement d'instructions le flot d'exécution d'un programme.

Structure de contrôles séquentielle

Un programme informatique est une suite d'instructions. Un registre interne du microprocesseur, le compteur ordinal (PC) est chargé de mémoriser l'adresse de la prochaine instruction à exécuter.

Séquence

La plupart des instructions d'un programme sont exécutées séquentiellement: après le traitement de l'instruction courante le compteur ordinal est incrémenté, et l'adresse de la prochaine instruction est chargée.

La première des structures de contrôle est donc la séquence. Elle permet l'évaluation ordonnée d'une suite d'expressions, souvent séparées par un point-virgule ou par des retours chariots.

Arrêt du programme

Un programme s'arrête généralement après l'exécution de la dernière instruction. La plupart des langages de programmation proposent également une ou plusieurs instructions pour stopper l'exécution du programme à une position arbitraire.

Selon l'environnement d'exécution sous-jacent (système d'exploitation ou microprocesseur), cet arrêt peut être définitif ou une suspension de l'exécution du programme en attendant un évènement externe. C'est par exemple le fonctionnement habituel de la plupart des instructions d'entrée sorties qui bloquent le flot d'exécution jusqu'à ce que le périphérique ait terminé de traiter les données.

Extensions de la notion de boucles

Il existe d'autres variantes de boucle, leur comportement est identique à celle d'une boucle tant que, mais elles nécessitent des variables additionnelles au registre PC pour mémoriser leur état.

Compteurs

      POUR compteur DE 0 à fin         Instruction 1      FIN POUR      Instruction 2      

Un compteur permet de réaliser une boucle associée à une variable entière ou un pointeur qui sera incrémentée à chaque itération. Il est souvent utilisé pour exploiter les données d'une collection indexée.

Exemples d'implémentations:

  • BASIC : FOR compteur = depart TO fin instruction NEXT compteur
  • Pascal : for compteur := depart to fin do instruction ;

Fortran II a introduit un premier compteur rudimentaire en 1958.

La notion de compteur peut être directement supportée par le microprocesseur, c'est le cas par exemple avec l'instruction LOOP de l'assembleur 86

Suivant les langages on peut fixer la valeur de début, de fin et la valeur d'incrément à chaque itération. Un de ses usages typique étant de servir d'index, la valeur du compteur est généralement accessible depuis l'intérieur de la boucle.

La boucle for des langages C,C++ ou Java est beaucoup plus générale qu'un simple compteur.

Itérateurs

      POURCHAQUE valeur DANS collection         Instruction 1      FIN POURCHAQUE      Instruction 2      

Un itérateur (ou curseur ou énumérateur) est un objet qui permet de réaliser une boucle parcourant tous les éléments contenus dans une structure de données.

Des langages comme le C++ ou l'Objective C (dans la version initiale du langage) n'ont pas de mots clefs spécifiques pour les itérateurs, ils utilisent des méthodes de bibliothèque associées à des structures de contrôles plus générales.

exemple en Objective C:

      NSEnumerator* enumerator = [collection objectEnumerator];      NSObject* obj;      while(obj = [enumerator nextObject]){              NSLog(@"%@", obj);      }      

Dans d'autres langages, ce concept bénéficie de structures de contrôle dédiées. Exemples d'implémentations:

  • Python : for valeur in collection : instruction
  • Perl : foreach $valeur (collection) instruction ;
Page générée en 0.115 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales
Version anglaise | Version allemande | Version espagnole | Version portugaise