ch0
This commit is contained in:
212
001-ch0-présentation.md
Normal file
212
001-ch0-présentation.md
Normal file
@@ -0,0 +1,212 @@
|
||||
# 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 qu’il 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 à l’aide 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 l’assembleur.
|
||||
|
||||
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 d’un tableau
|
||||
- utilisation d’un pointeur invalide
|
||||
- dépassement d’entier
|
||||
- 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 n’est plus utilisée.
|
||||
|
||||
Dans certains langages, cette gestion est automatique.
|
||||
En C, elle est manuelle.
|
||||
|
||||
Lorsque l’on 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 d’usage
|
||||
|
||||
Le langage C a été créé dans les années 1970.
|
||||
Il a été conçu pour écrire des systèmes d’exploitation.
|
||||
|
||||
Le système UNIX a été écrit en C.
|
||||
|
||||
Aujourd’hui, le C est utilisé dans :
|
||||
- systèmes d’exploitation
|
||||
- systèmes embarqués
|
||||
- bibliothèques système
|
||||
- moteurs haute performance
|
||||
|
||||
---
|
||||
|
||||
## 0.3 Compilation vs interprétation
|
||||
|
||||
Un programme C est compilé.
|
||||
|
||||
Cela signifie qu’il est transformé en code machine avant exécution.
|
||||
|
||||
Étapes :
|
||||
1. Préprocesseur
|
||||
2. Compilation
|
||||
3. Linking
|
||||
|
||||
---
|
||||
|
||||
## 0.4 Structure générale d’un 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;
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user