Bienvenue dans ce cours de programmation en C pour les étudiants ayant déjà une expérience en Python. Nous allons progresser étape par étape, en introduisant les concepts de base du C tout en comparant avec Python pour une meilleure compréhension. Nous n'aborderons pas les pointeurs et la gestion de la mémoire dans cette introduction. Commençons !
1. Structure de base d'un programme en C
En C, tout programme commence avec la fonction main()
. Voici un exemple simple :
Nouveauté en C : La directive #include
est utilisée pour inclure des fichiers d'en-tête, ici <stdio.h>
. Cette bibliothèque <stdio.h>
, STanDard Input Output, est nécessaire pour pouvoir utiliser des fonctions telles que printf
et scanf
.
2. Variables et Types
Contrairement à Python, en C, vous DEVEZ déclarer le type de chaque variable avant de l'utiliser.
Nouveauté en C :
- Les types statiques -
int
,float
,char
. Le typeint
, (abréviation de integer, entier en français), sert pour déclarer un nombre entier. Le typefloat
sert quant à lui à déclarer un nombre réel. Le typechar
sert à déclarer un UNIQUE caractère (nous reviendrons plus tard sur comment déclarer des mots/des chaines de caractères en C). - Enfin, il est toujours nécessaire d'indiquer dans la fonction
printf
en C le type de variable que l'on veut afficher, en utilisant des spécificateurs de format appropriés correspondant à chaque type de variable. Par exemple,%d
pour les entiers (int
),%f
pour les nombres à virgule flottante (float
etdouble
), et%c
pour les caractères (char
). Ces spécificateurs de format indiquent àprintf
comment interpréter et afficher les données fournies.Enfin, il est toujours nécessaire d'indiquer dans la fonctionprintf
en C le type de variable que l'on veut afficher, en utilisant des spécificateurs de format appropriés correspondant à chaque type de variable. Par exemple,%d
pour les entiers (int
),%f
pour les nombres à virgule flottante (float
etdouble
), et%c
pour les caractères (char
). Ces spécificateurs de format indiquent àprintf
comment interpréter et afficher les données fournies.
3. Entrée et Sortie
L'entrée standard en C se fait souvent avec scanf
.
Nouveauté en C : scanf
est l'équivalent de input
en Python pour la saisie de données utilisateur. Notez la présence de l'opérateur &
avant le nom de la variable num
dans l'appel de scanf
. En C, le &
est utilisé pour fournir l'adresse de la variable num
à scanf
, ce qui lui permet d'enregistrer la valeur saisie directement à cette adresse. Cela est nécessaire car scanf
a besoin d'un moyen pour modifier la valeur de la variable passée en argument, et en C, cela se fait via l'adresse de la variable.
4. Conditions
Les structures conditionnelles en C sont similaires à Python, mais les syntaxes sont différentes.
5. Boucles
Les boucles en C utilisent for
et while
.
En Python, la boucle for
est généralement utilisée pour parcourir une série d'éléments, comme une liste.En Python, la boucle for
est généralement utilisée pour parcourir une série d'éléments, comme une liste.
Nouveauté en C : En C, la syntaxe de la boucle for
est plus "découpée". En effet, elle se structure autour de trois composantes : l'initialisation (qui marque le début de la boucle), la condition de continuation (qui marque la fin de la boucle), et l'incrémentation (le pas de la boucle).
- Initialisation : C'est là que vous déclarez et initialisez votre variable de boucle. Par exemple,
int i = 0;
signifie que vous commencez avec la variablei
ayant la valeur 0. Cette partie marque le début de la boucle. - Condition de Continuation : Cela détermine jusqu'où la boucle doit continuer. La boucle s'exécutera tant que cette condition est vraie. Dans
i < 5;
, la boucle continuera tant quei
est inférieur à 5. - Incrémentation : Dans
i++
, nous augmentons la valeur dei
de 1 à chaque fois.
La boucle while
fonctionne de manière similaire en C et en Python. Elle continue à s'exécuter tant que la condition donnée est vraie.
Exemple en C :
Exercices
- Conversion Fahrenheit en Celsius :
Écrivez un programme en C qui convertit une température de Fahrenheit en Celsius. La formule de conversion estcelsius = (fahrenheit - 32) * 5 / 9
. - Somme des N premiers nombres :
Créez un programme en C pour calculer la somme des N premiers nombres entiers.
6. Tableaux (Arrays) en C
Les tableaux en C sont des collections de variables du même type, indexées à partir de 0. Voici toutes les façons dont on peut déclarer un tableau en C.
Déclaration de Tableaux
- Déclaration avec Taille et Valeurs Initiales :
nombres
est un tableau de 5 entiers. Les valeurs entre accolades{}
sont les valeurs initiales du tableau. - Déclaration avec Taille Seule :
nombres
de 5 entiers sans initialiser leurs valeurs. Les valeurs dans le tableau sont alors indéterminées. - Déclaration avec Valeurs Initiales Sans Taille :
nombres
est automatiquement de taille 5.
Nouveauté en C : En C, vous devez spécifier la taille du tableau ou la laisser être déduite des valeurs initiales. Une fois créé, le tableau ne peut pas changer de taille. Vous verrez plus tard qu'en réalité cela est possible, grâce aux concepts de gestion de la mémoire et de tableaux dynamiques, mais cela ne sera pas abordé ici.
7. Chaînes de Caractères en C
Les chaînes de caractères en C sont des tableaux de caractères se terminant par le caractère nul \0
. Voici toutes les façons dont on peut déclarer une chaîne de caractères en C.
Déclaration de Chaînes de Caractères
- Déclaration avec une Chaîne Littérale :
salutation
est un tableau de caractères qui contient automatiquement le caractère nul à la fin. - Déclaration avec Taille et Caractères Spécifiques :
- Déclaration avec Taille Seule :
message
est un tableau de 20 caractères. Le mot "Salut" et le caractère nul sont ajoutés au début, et le reste du tableau contient des valeurs indéterminées.
Nouveauté en C : Le caractère nul \0
est essentiel pour marquer la fin d'une chaîne de caractères. Il est automatiquement ajouté à la fin des chaînes littérales, mais doit être inclus manuellement dans les tableaux de caractères déclarés caractère par caractère.
Exercices
- Inversion d'un Tableau :
Écrivez un programme en C pour inverser un tableau d'entiers. - Longueur d'une Chaîne de Caractères :
Créez un programme en C pour calculer la longueur d'une chaîne de caractères sans utiliserstrlen
.