Sommaire
- La syntaxe
- Les blocs (vous êtes ici)
Temps de lecture estimé : 30min
Conditions
Comme dit dans la page principale, le C ne possède pas de type booléen, ainsi les conditions sont gérées de manière naïve :
- la valeur nulle (0) est "fausse"
- toute autre valeur est "vraie"
Bloc conditionnel
Permet de vérifier qu'une condition est vraie avant d'exécuter du code.
Se note if
...else if
...else
. Les deux derniers sont optionnels.
Exemple :
if (x == 2)
{
puts("x est effectivement égal à 2");
}
else
{
puts("x est différent de 2");
}
Autre exemple :
if (choix == 1)
{
puts("Premier choix");
}
else if (choix == 2)
{
puts("Deuxième choix");
}
else if (choix == 3)
{
puts("Troisième choix");
}
else
{
puts("Attention ! Le choix doit être entre 1 et 3");
}
Blocs itératifs
Bloc while
(tant que)
La boucle itère tant que la condition est vraie.
while (condition)
{
...
}
Bloc do..while
(répéter .. tant que)
La boucle itère tant que la condition est vraie, mais contrairement au while
elle s'exécute au moins une fois avant de vérifier la condition.
do
{
...
} while (condition); // ne pas oublier le ;
Bloc for(...; ...; ...)
for (A; B; C) {
...
}
est équivalent à :
A;
while (B) {
...
C;
}
Usage le plus courant : faire varier un nombre. Exemple :
for (int i = 0; i < 10; i++)
{
...
}
i
va varier de 0 à 9 (car on a écrit < 10
et pas <= 10
).
Mots-clés de boucles
Deux mots-clés spécifiques peuvent être utilisés dans les boucles.
Le mot-clé break
permet de sortir prématurément d'une boucle.
// parcourt le tableau et s'arrête dès qu'un des nombres est supérieur à 5.
#define NB 10
int nombres[NB] = { 4, 1, 2, 1, 8, 5, -2, -4, -9, 6 };
int somme = 0;
for (int i = 0; i < NB; i++)
{
if (nombres[i] > 5)
{
break;
}
somme += nombres[i];
}
// somme vaut 4+1+2+1 = 8
Le mot-clé continue
permet de sauter l'itération actuelle prématurément.
// va parcourir le tableau, et ignorera tous les nombres négatifs.
int resultat = 0;
for (int i = 0; i < NB; i++)
{
if (nombres[i] < 0)
{
continue;
}
resultat += 5;
resultat *= nombres[i];
resultat += 1;
}
// resultat vaut 18457
Note : si vous utilisez le mot-clé return
dans une boucle, celui-ci stoppera net l'exécution de la boucle. Exemple :
/**
* Renvoie le premier nombre pair de la liste.
* Si aucun nombre pair n'est trouvé, renvoie -1.
*/
int premierNombrePair(int nombres[NB])
{
for (int i = 0; i < NB; i++)
{
if (nombres[i] % 2 == 0)
{
return nombres[i];
}
}
return -1;
}
Structure et union
Structure
Il arrive parfois qu'on ait besoin de regrouper des données, comme par exemple un point dans un repère cartésien (X, Y), ou une fiche d'informations (Nom, Prénom, Âge), etc.
En C, on réalise cela avec des structures. Une structure est tout simplement une suite de variables qui sont regroupées ensemble.
Exemples :
typedef struct
{
float x;
float y;
} PointCartesien;
typedef struct
{
char Prenom[30]; // prénom = maximum 29 caractères (+ terminateur de chaîne)
char Nom[30];
int Age;
} FicheInformation;