L’objet principal de la programmation est d’écrire une suite d’instructions appelé programme afin de faire exécuter, par un ordinateur, une suite de tâches conforme à l’énoncé d’une suite de tâches à réaliser.
La programmation est une activité complexe et difficile qui demande à être abordée avec méthode. Pour faciliter la réalisation de programme il est recommandé l’aborder en deux temps:
- Résolution algorithmique du problème
- Codage de l’algorithme dans un langage de programmation
Une programmation méthodique dès les premiers apprentissages évite de prendre des habitudes de programmation empiriques et désordonnées. Elle évite ainsi de rendre l’apprentissage de la programmation particulièrement fastidieuse en donnant des résultats décourageants pour le débutant. Parce que les langages de programmation impérative usuels n’ont pas pour objectif d’appréhender simplement la logique de réalisation d’un problème, leur syntaxe et sémantique étant beaucoup trop riche, on a recours à une approche algorithmique pour permettre au développeur d’en maitriser la complexité.
Par conséquent, la réalisation d’un algorithme spécifiant formellement les étapes de résolution du problème que l’on désire faire exécuter, sera la condition d’un bonne programmation.
Présentation générale
L’algorithme est le résultat d’une démarche logique de résolution d’un problème pour la mise en œuvre pratique sur ordinateur, il décrit une succession d’opérations qui, si elles sont fidèlement exécutées, devront produire le résultat escompté. Cette suite d’actions devra s’exécuter sur un ordinateur pour arriver en un temps fini, à un résultat déterminé. La suite d’opérations est composée d’actions élémentaires appelées instructions.
Dans la suite d’articles consacrés à l’étude de l’algorithmique on verra comment formaliser l’analyse d’un problème les à l’aide de Schéma d’algorithme construits à base de schémas élémentaires. D’autre part on introduit les notions fondamentales d’algorithmique qui doivent permettre de mener correctement la programmation d’un problème concret à l’aide de Schéma de Programme . Nous donnons les règles ainsi que les modèles de traduction des schémas élémentaires indispensables au codage d’un algorithme dans une langage de programmation. Ainsi nous disposons des outils nécessaires pour coder n’importe quel algorithme décrit sous forme des schémas.
Présentation algorithmique
La construction des schémas est appliquée à l’étude des principales structures d’information utilisées en informatique. Alors qu’en mathématiques on s’intéresse aux ensembles de valeurs principalement numériques, en informatique les ensembles de valeurs sont finis, stockés et ordonnés sur des supports physiques et sont de nature numérique ou sous forme d’objets complexes ( son, images, texte etc…). De part la nature physique des supports, on montre l’importance de la notion d’accès qui est fondamentale dans la conception d’algorithme, on en distingue deux grandes catégories:
- L’accès séquentiel: l’accès séquentiel peut être comparé à une bande magnétique ou l’accès à une information ne peut se faire qu’en parcourant la bande de puis le début.
- L’accès direct: L’accès direct peut être comparé à un disque CD ou l’accès à une chanson peut se faire directement sans avoir à parcourir le disque depuis le début.
De ces deux types d’accès dépendent l’organisation des données. Ils sont présentés dans deux grandes parties avec l’étude des files séquentielles dont l’accès est séquentiel et les vecteurs dont l’accès est direct. L’organisation des données est donc un élément important dans l’étude des algorithmes. On donnera par la suite les principaux algorithmes pour les structures d’information suivantes:
- Les files séquentielles
- Les vecteurs
- Les listes linéaires
- Les piles
- Les tables
- Les arbres
A ces ensembles finis de valeurs sont naturellement associés des algorithmes différents suivant la nature de l’accès. Prenons l’exemple de la recherche d’information dans un parchemin ou dans un dictionnaire. L’accès à une information dans un dictionnaire est directe ou presque puisque principalement réalisée par une recherche par dichotomie alors qu’il nous faut dérouler le rouleau de parchemin pour trouver une information se trouvant au bas de celui-ci.
Il faut donc organiser les ensembles de valeurs sur leur support en fonction des accès possibles pour rendre, réalisables les opérations couramment pratiquées en informatique sur ces ensembles. Parmi ces opérations on distingue:
- Accès à une élément
- Recherche d’un élément
- Insertion d’un élément
- Suppression d’un élément
- Copie d’une partie d’un ensemble
- Éclatement de l’ensemble en plusieurs sous-ensemble
- Fusion de plusieurs ensemble en un seul
- Tri (ordonner les élément de l’ensemble suivant une relation d’ordre)