Files
programmationc/anatomie.md
2026-01-06 13:25:47 +01:00

149 lines
5.3 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.
# Anatomie d'un programme en C
Un programme en langage C est constitué des éléments suivants :
- Directives de préprocesseur
- Fonctions
- Déclarations de variables
- Instructions
- Structures de contrôle
- Commentaires
En langage C, un programme est souvent découpé en plusieurs fichiers afin dêtre plus clair et mieux organisé. On utilise principalement deux types de fichiers :
- les fichiers .c (fichiers source)
- les fichiers .h (fichiers den-tête, ou headers)
Un fichier .c contient le **code réel** du programme, cest-à-dire :
- les fonctions (leur définition)
- les instructions exécutées
Cest dans les fichiers .c que se trouve le "travail" effectué par le programme.
Un fichier .h sert à **déclarer** ce qui sera utilisé ailleurs dans le programme.
On y trouve généralement :
- les prototypes de fonctions
- les constantes (#define)
- parfois des types (struct, typedef)
## Exemple minimaliste
```c
#include <stdio.h> // Directive de préprocesseur
int main() { // Début de la fonction principale
puts("Bonjour."); // Instruction
return 0; // Retourne le code 0 pour indiquer la fin du programme
}
```
### Directives de préprocesseur
Les directives de préprocesseur commencent par le symbole # et sont traitées avant la compilation. Elles servent principalement à inclure des bibliothèques ou définir des constantes.
Inclure la bibliothèque d'entrées/sorties standard (stdio : standard input output)
```c
#include <stdio.h>
```
Déclarer une constante
```c
#define PI 3.1415
```
### Blocs de code
En langage C, les accolades `{ }` définissent un bloc de code. Un bloc regroupe plusieurs instructions qui vont être exécutées ensemble.
Un bloc commence avec `{` et se termine avec `}`.
Tout ce qui se trouve entre les accolades appartient au même bloc.
### Fonctions
La fonction `main` est le point d'entrée de tout programme C. Elle retourne un code numérique pour spécifier si le traitement (quelqu'il soit) s'est bien déroulé.
### Variables
Une variable doit être déclarée avant utilisation, en précisant son type.
```c
int age = 25; // variable de type nombre entier (integer)
float taille = 1.75; // variable de type nombre réel à virgule flottante
char initiale = 'A'; // variable de type caractère (character)
```
### Instructions
Les instructions sont des opérationsqui sont exécutées par le programme elle peuvent iclure des tests, des opérations mathématiques ou des appels de fonctions.
Chaque instruction en C se termine par un point-virgule ;.
### Commentaires
Il existe deux manières d'écrire des commentaires : en-ligne ou en bloc.
Les commentaires en-ligne doivent obligatoirement tenir sur une ligne. Ils Peuvent se trouver à la suite d'une instruction.
```c
// Calcul du discriminant
delta = b * b - 4 * a * c; // Δ = b² - 4ac
```
Les commentaires en bloc peuvent s'étendre sur plusieurs lignes. Ils sont délimités par /* et */
```c
/* Résolution d'une équation du 2nd degré
Auteur: Emmanuel Medina */
```
## Bibliothèques
### stdio
La bibliothèque standard d'entrée/sortie ***stdio.h***, est essentielle pour interagir avec les flux d'entrée et de sortie. Elle fournit des fonctions pour lire et écrire des données, ainsi que pour manipuler les fichiers.
### stdlib
La bibliothèque standard ***stdlib.h*** (standard library) fournit des fonctions essentielles pour la gestion de la mémoire, le contrôle des processus, le tri des données, les fonctions mathématiques simples et les conversions de texte en nombre.
### string
La bibliothèque ***string.h*** fournit des fonctions pour manipuler les chaînes de caractères et les blocs mémoire.
- `strlen()` : Calculer la longueur de la chaîne (sans compter le caractère nul).
- `strcpy()` : Copier une chaîne dans une autre (=).
- `strcmp()` : Comparer deux chaînes (==).
- `strcat()` : Concaténer deux chaînes (+).
[VOIR](string) en détail le fonctionnement des chaines de caractères.
### ctype
La bibliothèque ***ctype.h*** fournit des fonctions pour tester et manipuler des caractères.
- `tolower` : Transforme une lettre majuscule en une minuscule.
- `toupper` : Transforme une lettre minuscule en une majuscule.
- `isalpha` : Vérifie si un caractère est alphabétique (A-Z a-z).
- `islower` : Vérifie si un caractère est une lettre minuscule (a-z).
- `isupper` : Vérifie si un caractère est une lettre majuscule (A-Z).
- `isdigit` : Vérifie si un caractère est un chiffre. (0-9)
- `isalnum` : Vérifie si un caractère est alpha-numérique. (A-Z a-z 0-9).
- `isblank` : Vérifie si un caractère est blanc (espace ou tabulation).
- `isspace` : Vérifie si l'on a à faire à un caractère d'espacement. (caractère blanc \f \r \n \v)
- `iscntrl` : Vérifie si l'on a à faire à un caractère de contrôle.
- `ispunct` : Vérifie si l'on a à faire à un caractère de ponctuation (!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~).
- `isprint` : Vérifie si un caractère est affichable (printable).
- `isgraph` : Vérifie si un caractère posséde une représentation graphique.
- `isxdigit` : Vérifie si un caractère est un chiffre hexadécimal (0-F 0-f).
### math
La bibliothèque ***math.h*** , permet de définir les principales fonctions usuelles mathématiques.
[VOIR](math) les fonctions de la bibliothèque math.h