Vous êtes sur la page 1sur 6

Programmer, c'est quoi ?

On commence par la question la plus simple qui soit, la plus basique de toutes les questions
basiques.

Que signifie le mot « programmer » ?

Programmer signifie réaliser des « programmes informatiques ». Les programmes


demandent à l'ordinateur d'effectuer des actions.

Votre ordinateur est rempli de programmes en tous genres :

 La calculatrice est un programme ;


 Votre traitement de texte est un programme ;
 les jeux vidéo sont des programmes.

En bref, les programmes sont partout et permettent de faire a priori tout et n'importe
quoi sur un ordinateur.

Programmer, dans quel langage ?


Donc si nous voulons écrire un programme qui calcule une expression arithmétique
simple « 7+5 ». cette expression sera traduit en un langage informatique, ça pourrait
donner quelque chose comme (j'invente, je ne connais quand même pas la
traduction informatique par cœur) :
0010110110010011010011110

Ce que vous voyez là, c'est le langage informatique de votre ordinateur,


appelé langage binaire (retenez bien ce mot !). Votre ordinateur ne connaît que ce
langage-là et, comme vous pouvez le constater, c'est absolument incompréhensible.

Votre ordinateur ne parle pas l'anglais et encore moins le français. Pourtant, il est
inimaginable « impossible » d'écrire un programme en langage binaire. Même les
informaticiens les plus fous ne le font pas.

La question qui se pose

Comment parler à l'ordinateur plus simplement qu'en binaire avec des 0 et des 1 ?

Eh bien l'idée que les informaticiens ont eue, c'est d'inventer de nouveaux langages qui
seraient ensuite traduits en binaire pour l'ordinateur. En faite, Le plus dur à faire dans cet
idée, c'est de réaliser le programme qui fait la « traduction ». Heureusement, ce programme
a déjà été écrit par des informaticiens et nous n'aurons pas à le refaire. au contraire On va
s'en servir pour écrire des phrases comme : « Fais le calcul 3 + 5 » qui seront traduites par
le programme de « traduction » en quelque chose comme :
«0010110110010011010011110».
Le schéma suivant résume ce que je viens de vous expliquer.

Un peu de vocabulaire

Là j'ai parlé avec des mots simples, mais il faut savoir qu'en informatique il existe un mot qui
définit chacune de ces choses-là.

Reprenons le schéma

La première case est « Votre programme est écrit dans un langage simplifié ». Ce fameux «
langage simplifié » est appelé en fait langage de haut niveau.
Il existe plusieurs niveaux de langages. Plus un langage est haut niveau, plus il est proche
de notre vraie langue (comme le français) et par conséquent plus facile à utiliser.

En informatique ,il existe de nombreux langages de plus ou moins haut niveau dans lesquels
vous pouvez écrire vos programmes. Par exemple :
 le C ;
 le C++ ;
 Java
 Visual Basic ;
 Delphi ;
Certains de ces langages sont plus haut niveau que d'autres (donc en théorie un peu plus
faciles à utiliser).

Un autre mot de vocabulaire à retenir est code source. Ce qu'on appelle le code
source, c'est tout simplement le code de votre programme écrit dans un langage de
haut niveau. C'est donc vous qui écrivez le code source, qui sera ensuite traduit en
binaire.

Venons-en justement au « programme de traduction » qui traduit notre langage de


haut niveau (comme le C ou le C++) en binaire. Ce programme a un nom : on
l'appelle le compilateur. La traduction, elle, s'appelle la compilation.

Très important : il existe un compilateur différent pour chaque langage de haut niveau. C'est
d'ailleurs tout à fait logique : on ne traduit pas le C de la même manière qu'on traduit le
Delphi.
Enfin, le programme binaire créé par le compilateur est appelé l'exécutable. C'est d'ailleurs
pour cette raison que les programmes (tout du moins sous Windows) ont l'extension « .exe »
comme EXEcutable.
Compiler un programme C
Le principe de la compilation consiste à passer d’un ensemble de fichiers de code à un
programme exécutable sur une machine. Cette transformation est effectuée par un ensemble
de programmes qu’il est important de bien comprendre et maîtriser.

Compilation en plusieurs phases


La langage C est un langage compilé. Cela signifie qu'un programme C est d´écrit par un fichier
texte appelé fichier source. Ce fichier n'est pas exécutable par le microprocesseur, il faut le
traduire en langage machine. Cette opération est effectuée par un programme appelé
compilateur.

Il est important de bien comprendre le processus de compilation. Le problème qui se pose quand
on compile plusieurs fichiers de code est qu’il y a dans certains de ces fichiers des appels à des
fonctions ou variables qui apparaissent dans d’autres fichiers. À cause de ce fait, la compilation
d’un code écrit en C se décompose en plusieurs étapes.

Supposons que l’ont ait des fichiers de code fichier1.c, fichier2.c, ... fichier n.c.

Pour passer de ces multiples fichiers de code à un exécutable, on effectue les étapes suivantes :

1. pour chacun des fichier fichieri.c on effectue l’étape de compilation. Cette étape consiste à
construire un fichier binaire (dit fichier objet), presque compréhensible par la machine.
Cependant, comme certaines fonctions ou variables utilisées dans ce code ne sont pas définie
dans le fichier (ils sont définis dans d’autres des fichiers de code), il n’est pas possible de
traduire leurs appels en langage machine. Par conséquent ces appels sont laissés tels quels dans
le fichier binaire produit. Le résultat est un fichier, usuellement nommé fichieri.o qui n’est pas
exécutable.

2. Une fois que tous les fichiers .o ont été générés, par autant de compilations, on peut effectuer
l’étape d’édition de lien. Lors de cette étape, le programme d’édition de lien va mettre bout-à-
bout tous les fichiers .o nécessaires puis va résoudre les appels qui ont été laissés durant l’étape
de compilation. Résoudre les appels consiste à remplacer l’appel à la fonction par un lien (un
saut) vers la fonction elle-même (qui se trouve à un endroit différent dans le binaire). Enfin,
l’édition de lien positionne le point de départ du programme (la première ligne de la fonction
main).
La compilation d'un programme C se décompose en 4 phases successives :

1. Le traitement par le préprocesseur : le fichier source est analysé par un programme


appelle préprocesseur qui effectue des transformations purement textuelles
(remplacement de chaines de caractères, inclusion d'autres fichiers source, etc.).

2. La compilation : au cours de cette étape, le fichier engendré par le préprocesseur est


traduit en assembleur, c'est à dire en une suite d'instructions qui sont chacune
associées à une fonctionnalité du microprocesseur (faire une addition, une
comparaison, etc.).

3. L'assemblage : cette opération transforme le code assembleur en un fichier binaire,


c'est-a dire en instructions directement compréhensibles par le processeur. Le fichier
produit par l'assemblage est appelé fichier objet. o).

4. L'´édition de liens : un programme est souvent séparé en plusieurs fichier source


(ceci permet d'utiliser des librairies de fonctions standard déjà ´écrites comme les
fonctions d'affichage printf par exemple). Une fois le code source assemblé, il faut
donc lier entre les différents fichier objets. L'édition de liens produit alors un fichier
exécutable.

En C, la traduction d’un fichier source se déroule en deux étapes totalement indépendantes :


• un prétraitement ;
• une compilation proprement dite.
La plupart du temps, ces deux étapes sont enchaînées automatiquement, de sorte qu’on a
l’impression d’avoir affaire à un seul traitement. Généralement, on parle du préprocesseur pour
désigner le programme réalisant le prétraitement. En revanche, les termes de « compilateur »
ou de « compilation » restent ambigus puisqu’ils désignent tantôt l’ensemble des deux étapes,
tantôt la seconde. L’étape de prétraitement correspond à une modification du texte d’un fichier
source, basée essentiellement sur l’interprétation d’instructions très particulières dites «
directives à destination du préprocesseur » ; ces dernières sont reconnaissables par le fait
qu’elles commencent par le signe #.
Les deux directives les plus importantes sont :
• la directive d’inclusion d’autres fichiers source : #include ;
• la directive de définition de macros ou de symboles : #define.
La première est surtout utilisée pour incorporer le contenu de fichiers prédéfinis, dits « fichiers
en-tête », indispensables à la bonne utilisation des fonctions de la bibliothèque standard, la plus
connue étant :
#include <stdio.h>
Exercice 2 TP1

Fonction getch() : https://ans.wiki/q/en-c-a-quoi-sert-la-fonction-getch/