cazh-CNendeeliwhiiditjakoptrues

     

Big Tuto : Programmez avec le langage C

De la théorie à la pratique

Chapitre 4 : La RAM

Tutoriel présenté par : The Ludovyc et Jérémie F. Bellanger (Jay)
 The Ludovyc 
Publication : 11 mars 2014 
Dernière révision : 17 avril 2016

   Dans ce chapitre, nous allons passer par un peu de théorie et aborder la RAM.

   Quoi, on va ramer ?! surprise

   Un peu, oui, mais pas autant que l'ordi ! Ahah ! smiley

   I- Qu'est ce que la RAM ?

   Vous en avez sûrement déjà entendu parler, ne serait-ce que dans l'expression :"Mon PC rame à mort !" wink
   Quoi ?!? Mon PC fait de l'aviron ?!? angry
   Mais non, RAM est le sigle pour Random Access Memory, ou Mémoire Vive, en français. Si vous bidouillez un peu votre ordinateur, vous aurez sans doute déjà changé les barrettes de mémoire de votre PC. Eh bien, vous aviez alors rajouté de la RAM à votre PC (peut-être sans le savoir ?). wink


  

Exemples de barettes de mémoire RAM pour PC de bureau et portable


   En anglais, le sigle RAM signifie exactement Random Access Memory, soit mémoire à accès aléatoire.
   Mais, alors, c'est comme dans Donjons & Dragons, l'ordinateur lance un dé et fait un jet aléatoire jusqu'à tomber sur la bonne variable?!? frown
   Hum...?? Non ! sad Cela signifie plutôt que l'on peut accéder à n'importe quelle variable où qu'elle soit en mémoire (sans être obligé de repartir du début à chaque fois).
En effet, la RAM est organisée en slots (= tiroirs) de 1 octect (soit 8 bits, l'équivalent d'un caractère en ASCII). Le processeur accède aux données grâce à leur adresse en mémoire (un peu comme le facteur vous retrouve avec votre adresse en fait wink).
   Vous pouvez donc vous imaginer que la RAM de votre ordi est une sorte de bibliothèque gigantesque remplie de millions d'ouvrages avec des archivistes qui se déplacent à la vitesse de l'électricité pour aller chercher ce que vous leur demandez : lire, écrire ou éditer un ouvrage et le ranger à sa bonne place en rayon.

   II- Amusons-nous à utiliser la RAM pour mettre un caractère en mémoire

   Bon, j'avais prévu de développer encore davantage le fonctionnement de la mémoire mais je me rends compte finalement que cela ne vous sera pas forcément très utile pour débuter en C. On va donc plutôt faire un petit programme qui aura pour but de mettre un caractère en mémoire, puis d'aller le rechercher et de l'afficher (comment ça : "Ouf !" ? cheeky).

Voilà le programme :

//Pour avoir accès aux fonctions printf() et system().
//A noter que stdlib n'est normalement pas nécessaire,
//mais Visual Studio 2013 ne veut pas compiler sans.
#include <stdio.h>
#include <stdlib.h>

int main()
{
       //On crée une variable de type char en mémoire, 
      //nommée c et on y enregistre le caractère a

      char c = 'a';

      printf("%c\n",c); //On affiche la valeur de c dans la console

     /* Instruction à rajouter en mode console (ou sous VS) pour avoir 
     "Appuyer sur une touche pour continuer...", déjà inclus dans Code::Blocks */

     system("PAUSE");
}

Note importante : les commentaires
Vous aurez remarqué que notre programme ci-dessus contient des commentaires. Ceux-ci sont utiles pour aider à la (re)lecture d'un programme, en indiquant ce que fait chaque partie du programme et comment elle fonctionne. Bien entendu, ces commentaires ne seront pas compilés, et il faut donc bien utiliser les balises, sans quoi le compilateur les prendra pour du code, et plantera. De façon générale, il ne faut pas hésiter à commenter au maximum son code, de façon à le rendre lisible aux autres, et aussi à soi, si on y revient quelques temps plus tard.

Voici les deux types de commentaires avec leurs balises :

   // Commentaire sur une seule ligne.

   /* Pour un commentaire sur plusieurs lignes,
       ouvrez-le avec la balise /* et fermez-le avec */

   Mais revenons-en maintenant à notre programme :
   Il met donc la valeur de la variable "c" en mémoire. "c" est à la fois le nom de la variable et son adresse (enfin, à la compilation, l'éditeur de liens se charge de convertir le nom en adresse mémoire pour nous wink).
   Nous aurions pu lui donner n'importe quel autre nom mais nous avons choisi "c" pour nous rappeler que c'est un char. Et c'est une bonne méthode : il vaut toujours mieux avoir des noms de variables explicites qui rendent bien compte de ce qu'elles contiennent. Ainsi par exemple, dans un jeu de rôles, ce sera plus simple de savoir ce que contient une variable PV_du_heros plutôt que h32 ! cheeky

 

   Intéressons-nous maintenant au contenu de la variable c. Nous y enregistrons la lettre 'a', pour pouvoir l'écrire ensuite à l'aide d'un printf(). Cependant, il faut savoir que chaque lettre est en fait représentée par un nombre en mémoire. En effet, l'ordinateur ne sait que compter. wink
   La lettre a correspondant au nombre 97, on aurait donc aussi pu écrire : char c = 97; ! cheeky

   Vous remarquerez aussi la différence d'utilisation de la fonction printf(). Nous avons mis en premier paramètre %c\n, où %c indique que nous allons afficher le contenu d'une variable sous forme de caractère (c pour char) et \n indique à la console qu'elle devra faire un retour à la ligne après l'affichage du caractère (aussi appelé retour chariot, comme au temps des vieilles machines à écrire). Enfin, le deuxième paramètre est la variable que nous allons afficher à la place de %c.

   On peut maintenant faire une petite variante, pour illustrer le fait que la lettre a correspond bien au nombre 97 :

//Pour avoir accès aux fonctions printf() et system()
#include <stdio.h>
#include <stdlib.h>

int main()
{
       //On crée une variable de type char en mémoire, 
      //nommée c et on y enregistre 97 (le numéro de la lettre a)

      char c = 97;
       //On crée une seconde variable de type char en mémoire, 
      //nommée c1 et on y enregistre le caractère a

      char c = 'a';

      printf("%c\n%c\n",c, c1); //On affiche la valeur de c dans la console

     /* Instruction à rajouter en mode console (ou sous VS) pour avoir 
     "Appuyer sur une touche pour continuer...", déjà inclus dans Code::Blocks */

     system("PAUSE");
}

Et voilà le résultat dans notre console :

Vous remarquerez au passage que les noms de variables doivent être uniques. Pour notre seconde variable, nous l'avons donc simplement nommée c1. wink

Eh voilà, @ bientôt pour le prochain chapitre ! smiley

 

Connexion

CoalaWeb Traffic

Today221
Yesterday236
This week2322
This month982
Total1645558

4/12/22