0% ont trouvé ce document utile (0 vote)
2 vues3 pages

Types de fichiers en programmation C

Le document traite des types de fichiers en programmation, en distinguant le code source, qui est lisible par un humain, et le code binaire, exécutable par un ordinateur. Il explique également le processus de compilation, qui transforme le code source en code binaire à travers plusieurs étapes, ainsi que les erreurs de compilation et d'exécution qui peuvent survenir lors de l'écriture d'un programme. Enfin, il souligne l'importance de corriger les erreurs de compilation avant d'exécuter le programme, car elles empêchent la création d'un fichier exécutable.

Transféré par

fayearmel
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues3 pages

Types de fichiers en programmation C

Le document traite des types de fichiers en programmation, en distinguant le code source, qui est lisible par un humain, et le code binaire, exécutable par un ordinateur. Il explique également le processus de compilation, qui transforme le code source en code binaire à travers plusieurs étapes, ainsi que les erreurs de compilation et d'exécution qui peuvent survenir lors de l'écriture d'un programme. Enfin, il souligne l'importance de corriger les erreurs de compilation avant d'exécuter le programme, car elles empêchent la création d'un fichier exécutable.

Transféré par

fayearmel
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Algorithme et programmation

LES TYPES DE FICHIER


Introduction
On peut considérer un programme comme la traduction d’un algorithme dans un langage de
programmation, i.e. un langage formel compréhensible par un ordinateur. On dit alors que ce
programme est l’implémentation de cet algorithme.
1. Programme
Programme : séquence d’instructions destinées à être exécutées par un ordinateur.
Instruction : action que l’ordinateur connait et peut réaliser.
Un langage de programmation (y compris le C) est caractérisé par son jeu d’instructions :
Jeu d’instructions : ensemble des instructions autorisées dans un langage de programmation.
Un programme est stocké dans un fichier (un ensemble de données stockées sur un support
persistant).
On distingue deux types de fichiers, correspondant à deux versions différentes d’un programme
: fichier source et fichier exécutable. Le premier contient ce que l’on appelle le code source, il
s’agit d’un fichier texte, alors que le second contient le code binaire, aussi appelé code machine
ou code objet.
Code source : programme exprimé dans un langage de programmation compréhensible par un
être humain, et ne pouvant pas être exécuté directement par l’ordinateur.
Code binaire : programme exprimé en langage machine, pouvant être directement exécuté par
l’ordinateur.
Remarque : on utilise souvent le seul terme programme pour désigner le code source ou le
code binaire. Son interprétation dépend alors du contexte.
Le code binaire est obtenu à partir du code source, en réalisant un traitement appelé compilation.
Ce traitement est réalisé par un programme spécial appelé le compilateur.
2. Compilation
C’est l’action de transformer un code source en code binaire, de manière à obtenir un fichier
exécutable à partir d’un fichier source.
Le code binaire est spécifique au processeur qui va exécuter le programme. Par contre, le code
source en est généralement indépendant. Cela signifie qu’un même code source sera compilé
différemment en fonction du processeur (et/ou du système d’exploitation) que l’on veut utiliser
pour exécuter le programme.
Remarque : il est important de bien comprendre qu’un code source et l’algorithme qu’il
implémente sont deux choses bien distinctes. En effet, le même algorithme peut être
implémenté différemment, en fonction de :
 La personne qui écrit le programme ;
 Le langage de programmation employé ;
 La machine et/ou le système d’exploitation utilisé ;
 Le niveau de précision de l’algorithme ; etc.
La procédure de compilation varie en fonction du langage de programmation. On s’intéresse ici
au cas du langage C, décrit dans la figure ci-dessous.
Un programme C prend généralement la forme de plusieurs fichiers source distincts, que l’on
veut compiler de manière à obtenir un seul fichier exécutable.

Dr. Oumar DIA Page 1 sur 3


Algorithme et programmation

La décomposition d’un programme en plusieurs fichiers séparés permet de le rendre modulaire,


ce qui facilite la maintenance, le débogage et l’évolution du programme.
La première étape ou préprocesseur (en rouge) consiste à précompiler les fichiers source, en
appliquant les directives de pré-compilation indiquées dans le code source. Nous pouvons déjà
dire que le travail de pré-compilation consiste à transformer et compléter le code source. On
obtient ainsi une version complétée de chaque fichier source traité. Les fichiers obtenus
contiennent toujours du code source.
La deuxième étape (en bleu) est la compilation proprement dite. Cependant, elle ne produit
pas directement du code binaire, mais un code source intermédiaire, utilisant le langage
assembleur.
Ce langage est qualifié de bas-niveau, car son jeu d’instructions correspond aux actions les plus
simples qu’un processeur peut effectuer. Par conséquent, un programme assembleur se traduit
très facilement en un programme binaire. À ce stade de la procédure, on obtient autant de
fichiers assembleur qu’on avait initialement de fichiers source.
La troisième étape (en orange) est appelée l’assemblage, et consiste à transformer chaque
fichier assembleur en un fichier binaire. Là encore, on obtient autant de fichiers binaires que de
fichiers source originaux. Ces fichiers prennent généralement l’extension « .o ».
La quatrième et dernière étape (en vert) est l’édition des liens. Elle consiste à rassembler
dans un seul fichier binaire tout le code binaire nécessaire à l’exécution du programme. Ceci
inclut à la fois la totalité ou une partie des fichiers objets de l’étape précédente, mais aussi
éventuellement de bibliothèques statiques préexistantes. Au terme de la compilation, un fichier
d'extension .o (.obj sous Windows) est produit : il contient le code machine équivalent à votre
programme que l’on peut exécuter.
Si un seul fichier de code source C est modifié, il faudra simplement recompiler ce fichier et
rejouer la phase d'édition des liens.
Pour autant, la compilation d'un fichier se passe en deux temps : en premier lieu, le
préprocesseur C est invoqué, ce qui produit un fichier temporaire en mémoire, puis ensuite, la
phase de compilation est lancé sur ce fichier temporaire. Le préprocesseur est un outil de
prétraitement de votre fichier de code source. Comme à la fin de la phase de préprocesseur,
aucun fichier n'est produit sur le disque dur, les développeurs C ont tendance à regrouper les
deux premières phases du processus (préprocesseur et compilation) sur le terme générique de
compilation.

Dr. Oumar DIA Page 2 sur 3


Algorithme et programmation

3. Erreurs de compilation et d’exécution


On distingue deux types de problèmes pouvant survenir lors de l’écriture d’un programme, en
fonction du moment où elles sont détectées : compilation ou exécution.
 Erreur de compilation : problème détecté lors du processus de compilation. Cette
erreur peut être détectée lors de l’étape de compilation proprement dite, mais elle peut aussi
apparaitre lors de la pré-compilation (auquel cas il y a probablement un problème avec les
directives, par exemple un point-virgule « ; » placé incorrectement à la fin d’une ligne de
directive) ou d’une autre étape du processus.
Le compilateur peut indiquer un simple avertissement, auquel cas le problème détecté n’est que
potentiel, et n’empêche pas la création d’un fichier binaire qui pourra ensuite être exécuté.
Ce type de problème est généralement indiqué par l’IDE Integrated development
environnements (environnement de développement intégré), il s’agit du logiciel utilisé pour
écrire le code source en soulignant la portion de code source concernée en jaune ou orange. Il
est obligatoire de corriger les simples avertissements, au même titre que les erreurs.
Le compilateur peut indiquer une erreur proprement dite, qui empêche de finaliser la
compilation. Dans ce cas-là, il n’est pas possible de créer le fichier exécutable correspondant à
votre programme. Il est donc inutile de tenter d’exécuter votre programme si la compilation a
échoué. Ces erreurs-là sont indiquées en rouge par l’IDE. À noter que des options du
compilateur permettent de considérer certains problèmes soit comme des avertissements, soit
comme de vraies erreurs.
Des messages d’information sont indiqués pour chaque avertissement et erreur de compilation,
afin d’aider le programmeur à résoudre le problème identifié. Cependant, il faut savoir que ces
messages ne sont pas toujours très explicites, et peuvent parfois aussi être trompeurs (cela
dépend du compilateur). Il est nécessaire d’avoir une certaine expérience du compilateur utilisé
pour être capable de les interpréter correctement. De plus, une erreur de compilation peut en
provoquer d’autres. Pour cette raison, il faut absolument commencer par corriger la toute
première erreur détectée par le compilateur, puisqu’elle est susceptible de causer les erreurs
ultérieures.
 Erreur d’exécution : erreur se produisant quand le programme n’a pas le comportement
attendu lors de son exécution.
Les erreurs d’exécution ne sont pas détectées par le compilateur, mais par l’utilisateur.
Autrement dit, leur détection n’est pas automatique, mais manuelle. Par conséquent, rien
n’indique précisément la partie du code source qui pose problème : le débogage se fait
complètement manuellement. Ces erreurs sont donc beaucoup plus difficiles à corriger que les
erreurs de compilations.
On distingue deux types d’erreurs d’exécution : les erreurs fatales et les erreurs non-fatales. Les
premières provoquent la terminaison non-naturelle du programme. Autrement dit, votre
programme se termine alors qu’il ne devrait pas. C’est par exemple le cas si vous effectuez une
division par zéro. Dans ce cas-là, il est facile de détecter la présence d’une erreur, puisque le
programme se termine intempestivement. Par contre, localiser la partie du code source
concernée n’est pas forcément simple. Les erreurs non-fatales sont beaucoup plus difficiles à
détecter, car l’exécution continue, et la conséquence de ce type d’erreur peut se manifester bien
après l’apparition de l’erreur elle-même.

Dr. Oumar DIA Page 3 sur 3

Vous aimerez peut-être aussi