« INFO916 : Cours de C » : différence entre les versions

De Wiki du LAMA (UMR 5127)
Aller à la navigation Aller à la recherche
Ligne 31 : Ligne 31 :


La mémoire est en fait un tableau d'octets (byte en anglais). Un octet est un entier sur 8 bits (bits aussi en anglais) donc compris entre 0 et 255 = 2<sup>8</sup> - 1. Donc mathématiquement un élément de
La mémoire est en fait un tableau d'octets (byte en anglais). Un octet est un entier sur 8 bits (bits aussi en anglais) donc compris entre 0 et 255 = 2<sup>8</sup> - 1. Donc mathématiquement un élément de
<math>\frac{\mathbb Z}{256 \mathbb Z}^N</math> où N dépend de l'architecture de la machine (N = 2<sup>30</sup>, N = 2<sup>31</sup> ou N = 2<sup>32</sup>
{0;1;2;...;255}<sup>N</sup> où N dépend de l'architecture de la machine (N = 2<sup>30</sup>, N = 2<sup>31</sup> ou N = 2<sup>32</sup>
sur une machine 32 bits et N = 2<sup>48</sup> ou plus sur une machine 64 bits).
sur une machine 32 bits et N = 2<sup>48</sup> ou plus sur une machine 64 bits).


Attention: N ne dépend pas de la quantité de mémoire installée dans la machine !
Attention: N ne dépend pas de la quantité de mémoire installée dans la machine !

Seul une partie de la mémoire est accessible en lecture écriture pour le programme C (on peut aussi avoir des zones mémoire accessible en lecture seule).
De plus, la mémoire accessible est divisée en deux zones:
* La pile
* Le tas


== Pointeurs et adresses ==
== Pointeurs et adresses ==

Version du 13 septembre 2007 à 07:57

Introduction

Qu'est ce qu'un langage de programmation :

Ce sont des intruction indiquant à un ordinateur ce qu'il doit faire.

Un langage est caractérisé par trois éléments :

  • syntaxe : quel sont les programmes valides
  • sémantique : que font faire ces programmes à la machine
  • des usages et conventions : des pratiques usuelles pour mieux programmer

Ce cours portera sur les trois aspects, notemment, on devra être capable d'évaluer un programme C à la main.

Historique et classification des languages

C est un

  • langage impératif et procédural
  • "assembleur" portable

Modèle mémoire et type de données

Modèle mémoire

Afin de pouvoir donner la sémantique du langage, il nous faut un "modèle" simplifié de machine. Essentiellement, un programme C agit sur deux choses:

  • La mémoire
  • Les entrées/sorties (fichier)

On s'intéressera aux entrées/sorties en fin de cours.

La mémoire est en fait un tableau d'octets (byte en anglais). Un octet est un entier sur 8 bits (bits aussi en anglais) donc compris entre 0 et 255 = 28 - 1. Donc mathématiquement un élément de {0;1;2;...;255}N où N dépend de l'architecture de la machine (N = 230, N = 231 ou N = 232 sur une machine 32 bits et N = 248 ou plus sur une machine 64 bits).

Attention: N ne dépend pas de la quantité de mémoire installée dans la machine !

Seul une partie de la mémoire est accessible en lecture écriture pour le programme C (on peut aussi avoir des zones mémoire accessible en lecture seule). De plus, la mémoire accessible est divisée en deux zones:

  • La pile
  • Le tas

Pointeurs et adresses

Malloc et le tas

Fonctions et prototypes

Opérateurs

Structures de contrôles

Organisation des programmes C (les .h et les .c)

Le préprocesseur

Les types définis par le programmeur

Les entrées/sorties