Execution des programmes
Le sens d’un programme est son comportement lorsqu’il est exécuté. Un programme est composé d’une suite d’instructions, qui sont executées les unes après les autres, sequentiellement.
Chaque instruction peut effectuer trois sortes d’actions : d’entrée ou de sortie des données, de changement sur les variables, c’est a dire sur les cases mémoires qui leur sont associées. Ainsi chaque instruction modifie l’état mémoire de la machine, et un programme est une suite de modifications successives de l’état mémoire de la machine. Pour étre bref, l’exécution d’un programme est une suite d’etats memoires.
Variables et memoire
Les variables sont utilisées pour stocker les donnees du programme. A chaque variable correspond un emplacement en memoire, ou la donnee est stockée, et un nom qui sert a designer cette donnée, ou ses valeurs futures, tout au long du programme. La memoire est divisée en emplacements, appeles mots, possedant chacun une adresse qui permet d’acceder au contenu du mot de maniere directe. Selon la nature de la valeur contenue dans une variable, elle peut occuper un ou plusieurs mots de suite. Ainsi, chaque variable correspond a son adresse de stockage en mémoire, et par voie de conséquence, a la valeur qui s’y trouve.
Comportement des déclarations de variables
Le sens d’une d´eclaration de variable est de changer l’ etat de la m emoire par :
– Création de l’Environnement du programme (voir notion introduite plus haut).
– Allocation d’un emplacement libre en mémoire, de taille suffisante pour stocker une valeur du type declaré. Les valeurs succesivement acquises par la variable seront stockées dans cet emplacement. Attention : Un mot de la mémoire est une suite de bits, chacun est nécessairement 0 ou 1. Il est donc impossible qu’un emplacement, et a fortiori une variable, ne contienne “rien”. Par exemple, une fois la place pour une variable entiére reservée, il y a dans cet emplacement un entier (qu’on ne connait pas forcement). Par ailleurs, chaque emplacement ne permet de stocker qu’une valeur a la fois. Ainsi, une nouvelle valeur sera reecrite sur la valeur precedente, a la place de celle-ci.
Exemple : Considerons les déclarations :
int x,y;
int a = 0;
int b = 0;
int z = 0;
L’état de la mémoire ou environnement du programme, après déclarations, est donné par :
x ?
y ?
a 0
b 0
z 0
role du type de la variable : Le fait de donner un type a une variable lors de sa déclaration permet de prevoir combien d’espace memoire il faut reserver pour la variable. Par exemple, un double est plus gros a stocker qu’un int.
Comportement d’une affectation
C’est une instruction qui modifie la valeur d’une variable en memoire..
La syntaxe d’une affectation a la forme :
nom variable = expression ;
– Comportement : Modifie en mémoire le contenu de la variable a gauche, avec la valeur qui résulte du calcul de l’expression a droite du symbole =
– Execution : suit les pas suivants. Prenons l’exemple de l’execution de x = x+2 dans un etat mémoire ou x vaut 5 .
1. evaluation de l’expression a droite dans l’environnement courant evaluons x+2 avec x vaut 5 ⇒ 5+2 ⇒ 7,
2. Modification de la variable en memoire : x vaut 7,
Trace d’une execution
Nous allons maintenant suivre pas a pas l’execution d’un programme comportant des de-clarations et des affectations. Pour y parvenir, nous allons faire la trace de l’exécution de ce programme. Nous donnons l’etat de la machine apres execution de chacune des instructions du programme, autrement dit, l’etat des entrees, l’etat des sorties, et de la memoire (les valeurs des variables du programme). Comme notre programme ne fait pas de s d’entrées ni de sorties, la dernière case sera vide.
Durée de vie d’une variable
Lorsqu’on declare une variable, on associe un nom (le nom de la variable) a une case mémoire.
On peut ensuite designer cette case mémoire en utilisant le nom de la variable. Cette association entre un nom et une case memoire a une durée de vie limitée :
– La création de l’association entre le nom d’une variable et la case mémoire se fait lors de l’exécution de la déclaration.
– la destruction de l’association se fait lorsque la dernière instruction du bloc contenant la déclaration est exécutée.
La notion de bloc
Qu’est ce qu’un bloc ?
En Java, ils sont faciles a reconnaitre : un bloc est une suite d’instructions contenue entre des accolades. Ainsi, le corps d’une boucle est un bloc, les instructions entre les accolades d’un if, d’un else, d’un elseif sont des blocs. Les instructions entre les accolades du main forment aussi un bloc..
Cours Langage C (178 KO) (Cours PDF)