Préliminaires

(Version projecteur)


Codage binaire

Toute information traitée par un ordinateur est codée en binaire c'est à dire par une suite de bits valant zéro ou un.

Une suite de huit bits est appelé un octet (ou byte en anglais)
Codage des nombres entiers

Le codage binaire des nombres entiers est basé sur l'écriture des nombres en base 2 (en utilisant uniquement les chiffres 0 et 1). Cela permet de coder de coder de grand nombres en utilisant très peu de bits (schéma):

Codage du texte

Les informations textuelles (suite de caractères) sont souvent codés en ASCII où chaque caractère est représenté par un octet de valeur prédéfinie (schéma).

Codage des instructions machines
Une instruction machine est une opération élémentaire (de calcul par exemple) exécutable par le processeur, codées sur 4 ou 8 octets. Le codage de cette opération dépend du type de processeur


Mémoire vive et adresse

La mémoire vive d'un ordinateur peut être vue comme une suite continue de mots.

Pour un même type d'ordinateur, chaque mot a exactement la même dimension, mais sa taille peut varier d'un ordinateur à l'autre.

Un mot contient toujours un nombre entier d'octets.

Chaque mot mémoire possède un numéro. Le numéro du premier est 0, du deuxième 1, etc ... Ce numéro s'appelle l'adresse du mot.

La figure ci-dessous représente une mémoire de 8 mots de 2 octets:

Mot.jpg, 58kB

Les adresses sont souvent notées en système hexadécimal, c'est à dire en base 16 en utilisant les caractères 0,1,2,..., A,B,C,D,E,F comme chiffres.

Par la suite je désignerais par zone mémoire, toute suite de mots consécutifs. Une zone mémoire peut donc être définie par une plage d'adresse (adresse minimale et maximale) ou bien par l'adresse de début (ou autrement dit, l'adresse minimale) de la zone et du nombre de mots qu'elle contient. L'adresse d'une zone mémoire sera par défaut l'adresse de début de cette zone.

Voici, par exemple une zone mémoire de 3 octets, situé à l'adresse 2:

ZoneMemoire.jpg, 28kB

Langage machine et programme exécutable

Langage machine
Un langage machine est un ensemble de conventions définissant le codage binaire des instructions machine d'un type particulier de processeur.
Programme exécutable
Un programme exécutable est constitué d'instructions machine et de zone de données.


StructureExe.jpg, 16kB

Les programmes exécutables peuvent se trouver en mémoire (on dit qu'ils sont résidents) où sur le disque, sous la forme de fichiers (reconnaissable sous windows par leur extension .exe). Mais pour pouvoir être exécutés, ils doivent forcément être chargés en mémoire (schéma).

Les zones de données servent à stocker provisoirement les informations traitées ou produite par un programme résident.

Processus

La mémoire d'un ordinateur contient plusieurs programmes que le processeur exécute à tour de rôle à une telle vitesse que l'on a l'impression qu'ils sont exécutés en même temps.

Chacun de ces programmes résidents possède donc ses propres zones d'instructions et de données.

ProcessusResident.jpg, 15kB


L'exécution d'un programme particulier par un ordinateur s'appelle un processus.

Notez qu'un même programme peut donner lieu à plusieurs processus.

Parmis les processus résidents figurent nécessairement les processus système qui servent (entre autre) à gèrer les périphériques (clavier, souris, écran, disque, lecteur de CD, imprimantes, etc...) et les fichiers.

Langage de programmation

Les langages de programmation ont été introduits pour éviter l'écriture directe de programmes en langage machine (tâche extrèmement fastidieuse, pour ne pas dire impossible !).

Un langage de programmation est un ensemble de conventions définissant la manière d'écrire un programme sous la forme d'un texte.

Ces conventions comprennent des conventions syntaxiques (comparable à la grammaire d'une langue naturelle) et lexicales (comparables à l'orthographe d'une langue naturelle).

Un programme écrit dans un langage de programmation se présente sous la forme d'un ou plusieurs fichiers appelés fichier sources (par opposition aux fichier exécutables).

Ces fichiers contiennent les programmes tels qu'ils ont été initialement écrits par les développeurs. Ce sont des textes écrits en un langage de programmation particulier, que l'on peut visualiser à l'aide d'un éditeur de texte (WordPad par exemple).

A priori, les fichiers sources doivent être traduits en langage machine avant de pouvoir être exécutés. On appelle cela la compilation. Mais nous verrons plus loin que la compilation n'est pas la seule approche possible: il en existe une autre appelée interpretation.

Compilation

Certains langages, comme le C par exemple, ne peuvent être que compilés. Les langages de ce type sont appelés langages compilés. Pour pouvoir les utiliser, vous devez avoir installé sur votre ordinateur un compilateur ( schéma) spécifique à ce langage.

Le compilateur est un programme exécutable qui permet de traduire un programme écrit dans un langage de programmation en langage machine.

Par exemple, pour pouvoir programmer en C, vous devez nécessairement avoir installé un compilateur C sur votre machine.

Après avoir été compilé, le programme peut être exécuté en chargeant sa version exécutable en mémoire (schéma).

Interprétation

Les programmes écrits en langages interpretés (Java, Visual Basic, Php,....) peuvent être exécutées sans avoir été auparavant entièrement traduits en langage machine.

Ils font appel à un interpréteur.

Tout comme un compilateur, un interprèteur est spécifique à un langage donné.

Il existe par exemple, un interpréteur Java, un interpréteur Visual Basic, un interpréteur Php, ...

Contrairement aux programmes compilés, les programmes interprètés ne sont pas directement exécutés par l'ordinateur, mais pas l'interpréteur (qui lui est exécuté par la machine !).

Pour exécuter un programme interprèté, il faut tout d'abord lancer l'interpréteur, puis charger le code source du programme en mémoire. Ce code source peut ensuite être exécuté par l'interpréteur (schéma).

L'interpréteur s'exécute donc toujours "en même temps" que le programme interprété.

Le fait que le code source soit présent en mémoire durant l'exécution est particulièrement interessant pour la mise au point, car il est possible de situer les erreurs par rapport au texte du programme.

Notez que certains interpréteurs (comme Visual Basic par exemple), peuvent également fonctionner en tant que compilateur. Cela permet d'obtenir une version plus rapide et commercialisable du programme, lorsque la mise au point est terminée. En effet:

Structure d'un programme

Un programme est un texte devant respecter une certaine syntaxe (la grammaire du langage) dans lequel figure des mots reservés, des séparateurs/délimiteurs, des opérateurs, des mots inventés par le programmeurs et des commentaires.

Par exemple, dans le programme suivant (langage Visual Basic):

' Declaration des variables
Dim x As Integer
Dim y As Integer
Dim somme As Integer

Private Sub BoutonAdditionner_Click()
' Lecture des données
Lire x, ZoneTexteX
Lire y, ZoneTexteY
somme = x + y
Afficher somme, ZoneTexteSomme
End Sub

Dim, As, Integer, Private, Sub sont des mots reservés. De manière générale, les mots-reservés sont des mots faisant partie du langage de programmation.

Les caractères "," et "(" et ")" sont des séparateurs/délimiteurs. Comme leurs noms l'indiquent, ils servent à séparer et à délimiter.

Les caractères "=" et "+" représentent des opérateurs. Ce sont des caractères spéciaux représentant des opérations de traitement d'information. + représente par exemple l'addition.

Les lignes ' Declaration des variables et ' Lecture des données sont des commentaires. Un commentaire, est une partie du programme qui est ignoré par l'ordinateur. Les commentaires servent à documenter un programme et à le rendre plus lisible. En Visual Basic, les lignes de commentaires se reconnaissent par la présence du caractère "'" en début de ligne.

Interface graphique

Depuis l'apparition du multi-fenêtrage et de l'utilisation de la souris, un programme se présente visuellement sous la forme d'une interface graphique.

Voici quelques exemples d'interface graphiques de logiciels connus: Excel 2003, Visual Basic 6, le gestionnaire de tâche de Windows (Vista).

Il s'agit d'une fenêtre dans laquelle apparaissent des menus, une barre d'outils contenant différents boutons, des zones de textes (zones rectangulaire dans lesquelles il est possible de saisir du texte), d'afficher des images, de faire des dessins,....

Voici l'interface graphique d'un programme réaliser avec Visual Basic comprenant trois zones de texte et un bouton:

Addition-Exe.jpg, 10kB

L'interface graphique est donc ce qui permet d'utiliser un programme à l'aide d'une souris et du clavier. Bien entendu, un programme peut ne pas avoir d'interface graphique, ou bien s'exécuter sans que son interface graphique apparaisse à l'écran (pensez par exemple aux anti-virus).

Aujourd'hui, la conception de l'interface graphique d'un programme est donc inévitable.

Pour cette raison, un grand nombre de langages de programmation (comme Visual Basic, Visual C++, Delphi) sont associés à des logiciels, appelés environnement de programmation, dans lesquels ont trouve des outils permettant de générer automatiquement le code de l'interface graphique.