Files
Cours-C/001-ch0-présentation.md
2026-04-09 10:54:23 +02:00

213 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Chapitre 0 — Introduction au langage C
## 0.1 Présentation du langage C
Le langage C est un langage de programmation bas niveau.
Cela signifie quil est proche du fonctionnement réel de la machine.
Concrètement, un programme C manipule directement la mémoire.
Chaque variable correspond à une zone mémoire précise.
Le programmeur peut lire et écrire à des adresses mémoire.
Cela se fait à laide des pointeurs.
Le C permet aussi de manipuler les bits.
On peut contrôler précisément la représentation des données.
Par exemple, un entier est stocké sous forme binaire.
Le programmeur peut agir directement sur ces bits.
Le C ne masque pas le fonctionnement du processeur.
Il expose des concepts proches de lassembleur.
Par exemple :
- la pile (stack)
- le tas (heap)
- les appels de fonctions
- la mémoire brute
Le C ne fournit pas de protections automatiques.
Cela signifie que le langage ne vérifie pas certains comportements dangereux.
Par exemple :
- accès hors limites dun tableau
- utilisation dun pointeur invalide
- dépassement dentier
- division par zéro
Ces situations peuvent provoquer un comportement indéfini.
Le programme peut :
- planter
- produire un résultat incorrect
- sembler fonctionner mais être corrompu
Le C ne possède pas de ramasse-miettes.
Un ramasse-miettes (garbage collector) est un système automatique.
Il libère la mémoire qui nest plus utilisée.
Dans certains langages, cette gestion est automatique.
En C, elle est manuelle.
Lorsque lon alloue de la mémoire :
- avec malloc
- ou calloc
Il faut la libérer avec free.
Sinon :
- fuite mémoire
- crash
- comportement indéfini
Le C donne un contrôle total au programmeur.
Mais cela demande de la rigueur.
---
### Exemple 1 — Programme minimal
```c
int main(void)
{
// Point d'entrée du programme
return 0;
}
```
---
### Exemple 2 — Affichage simple
```c
#include <stdio.h>
int main(void)
{
// Affiche un message
printf("Bonjour\n");
return 0;
}
```
---
### Exemple 3 — Calcul simple
```c
#include <stdio.h>
int main(void)
{
int a = 5;
int b = 3;
int resultat = a + b;
printf("Resultat: %d\n", resultat);
return 0;
}
```
---
## 0.2 Historique et cas dusage
Le langage C a été créé dans les années 1970.
Il a été conçu pour écrire des systèmes dexploitation.
Le système UNIX a été écrit en C.
Aujourdhui, le C est utilisé dans :
- systèmes dexploitation
- systèmes embarqués
- bibliothèques système
- moteurs haute performance
---
## 0.3 Compilation vs interprétation
Un programme C est compilé.
Cela signifie quil est transformé en code machine avant exécution.
Étapes :
1. Préprocesseur
2. Compilation
3. Linking
---
## 0.4 Structure générale dun programme C
Un programme C contient :
- des fonctions
- des variables
- des instructions
La fonction principale est main.
---
## 0.5 Premier programme
```c
#include <stdio.h>
int main(void)
{
printf("Hello, world\n");
return 0;
}
```
---
## 0.6 Programme minimal et printf
Un programme commence toujours par main.
---
### Exemple 1
```c
int main(void)
{
return 0;
}
```
---
### Exemple 2
```c
#include <stdio.h>
int main(void)
{
printf("Hello, world\n");
return 0;
}
```
---
### Exemple 3
```c
#include <stdio.h>
int main(void)
{
int valeur = 42;
printf("Valeur = %d\n", valeur);
return 0;
}
```