Programmation en C-Conditions et Boucles


Niveau:2

Introduction:

Dans cet article, nous verrons comment utiliser les conditions et comparaisons en langage C.

Définition:

On appelle instruction de contrôle toute instruction qui permet de faire exécuter une partie du programme en fonction de certaines conditions.

Par exemples:

Si la valeur de la variable est égale à une valeur X, alors nous exécutons ce programme. On pourrait dire, que si il fait beau je pars en vacances, si non je pars au travail: La condition est si il fait beau, et les programmes à exécuter sont, soit je pars en vacances, soit je pars au travail.

Tant que  la valeur de la variable est inférieure à une valeur X, je fais toujours le même programme. On pourrait dire, si je ne suis pas arrivé à l’étage souhaité, je continue de faire monter mon ascenseur. La condition est je ne suis pas arrivé à l’étage et le programme à exécuter est faire monter mon ascenseur.

Notre programme:

Voici le code que nous allons détailler:

/*
	* conditions.c
	* 
	* Christophe Caron
	* www.caron.ws
	* 2019
	* Licence MIT
	* 
*/

#include <stdio.h>

int main (int argc , char * argv []) 
{
	// Initialisation des variables
	int compteur;
	int etage=0;
	
	
	// Saisie de l'étage
	printf("Choisissez votre étage de destination ? (De 1 à 10)\n") ;
	scanf ("%d", & etage ) ;
	getchar ();
	
	if ((etage<10)&&(etage>0)){
		for (compteur=1;compteur<=etage;compteur++){
			printf( "Valeur de l'étage = %d \n", compteur );
			puts( "Continuer à monter en appuyant sur entrée" );
			getchar ();
		}
		printf("Vous êtes arrivé à l'étage sélectioné") ;
        } else {
		printf("La valeur n'est pas comprise entre 1 et 10") ;
	}
	
	// Fin du programme
	return 0;
}

Fichier source: conditions.c

Explication du programme:

Dans les premières ligne du programme,nous initialisons nos variables et nous saisissons la valeur de l’étage.

getchar() est une fonction qui renvoie le caractère saisie au clavier. Nous l’utilisons pour arrêter notre programme et attendre l’appuie sur une touche. Dans notre cas, je demande d’appuyer sur entrée.

Ensuite nous vérifions les valeurs saisies par la fonction if + condition. Si (etage est inférieure ou égale à 10) et (etage supérieure à 0) alors nous exécutons le code du programme for…  si non on affiche un message d’erreur.

Une fois les valeurs validées, nous incrémentions notre compteur dans la boucle for (valeur initiale;condition d’arrêt;incrémentation) .

Dans notre boucle nous affichons les valeurs du compteur.

puts() écrit la chaîne de caractères et un retour-chariot final sur l’écran.

Une fois la condition validée ( compteur inférieure ou égale à etage), nous sortons de la boucle.

Exécution de notre programme:

Après avoir compiler votre programme vous pouvez le tester en l’exécutant.

Opérateurs logiques de comparaison :

x == y (x est égal à y)
x != y (x est différent de y)
x < y (x est inférieur à y)
x > y (x est supérieur à y)
x <= y (x est inférieur ou égal à y)
x >= y (x est supérieur ou égal à y)

Instruction de condition if else:

Les structures décisionnelles ont besoins d’une ou plusieurs conditions à évaluer ou à tester par le programme, ainsi qu’une instruction ou des instructions à exécuter si la condition est considérée comme vraie et, éventuellement, d’autres instructions à exécuter si la condition est déterminée comme fausse.

Exemple de code:

/*
/* if_else.c
	* 
	* Christophe Caron
	* www.caron.ws
	* 2019
	* Licence MIT
	* 
*/
#include <stdio.h>

int main () {
	
	/* Définition de la variable*/
	int a;
	
    printf("Choisissez votre valeur ? (De 1 à 20)\n") ;
    scanf ("%d", & a ) ;
    /* condition est égale à 10 */
    if (a==10){
		/* Si la condition est vrai */       
        printf("a est égale à 10\n" );
        printf("La valeur est de  : %d\n", a);
        return 0;    
	}
    /* condition si a inférieure à 10 */
    if( a < 10 ) {
		/* Si la condition est vrai */
		printf("a est inférieure à 10\n" );
		} else {
		/* Si la condition est fausse */
		printf("a est supèrieure à 10\n" ); 
        
	}
	printf("La valeur est de  : %d\n", a);
	
	return 0;
}

Fichier source: if_else.c

Instruction de commutation switch:

Une instruction switch permet de tester l’égalité d’une variable par rapport à une liste de valeurs. Chaque valeur est vérifiée et même après avoir trouvé une correspondance.

Si l’instruction break n’est pas trouvée après avoir exécuté le code d’une condition vraie, le programme continue à tester les conditions restantes parmi les cas restants.Si une instruction break est rencontrée, le cas fait sortir de la structure.

Exemple de code:

/* switch.c
	* 
	* Christophe Caron
	* www.caron.ws
	* 2019
	* Licence MIT
	* 
*/
#include <stdio.h>


int main () {
	
	/* Définition de la variable*/
	int a;
	
    printf("Choisissez votre valeur ? (De 1 à 5)\n") ;
    scanf ("%d", & a ) ;
	
	switch(a) {
		case 1 :
		printf("Valeur égale à 1\n" );
		break;
		case 2 :
		printf("Valeur égale à 2\n" );
		//break; Continue à éxécuter le code jusqu'au prochain break 
		case 3 :
		printf("Valeur égale à 3\n" );
		break;
		case 4 :
		printf("Valeur égale à 4\n" );
		break;
		case 5 :
		printf("Valeur égale à 5\n" );
		break;
		default :
		printf("Valeur invalide\n" );
	}
	return 0;
}

Fichier source:switch.c

Instruction de boucle:

while loop:

La boucle while évalue l’expression du test.Si l’expression est vraie (différente de zéro), les codes contenus dans le corps de la boucle while sont exécutés. L’expression est à nouveau évaluée et le processus se poursuit jusqu’à ce que l’expression soit fausse.

Exemple de code:

/* 
	* while.c
	* 
	* Christophe Caron
	* www.caron.ws
	* 2019
	* Licence MIT
	* 
*/
#include <stdio.h>


int main () {
	
	/* Définition de la variable*/
	int a;
	int i=1;
	
	printf("Choisissez votre valeur ? (De 1 à 20)\n") ;
	scanf ("%d", & a ) ;
	
	while ( i <= a) {
		printf ("iteration %d \n", i) ;
		i++ ;
	}
	
	return 0;
}

Fichier source:while.c

do while:

Contrairement au boucle while , qui testent la condition de la boucle en haut de la boucle, la boucle do … while vérifiera sa condition au bas de la boucle.

Une boucle do … while est similaire à une boucle while, à l’exception du fait qu’elle s’exécutera au moins une fois.

Exemple de code:

/* 
	* do while.c
	* 
	* Christophe Caron
	* www.caron.ws
	* 2019
	* Licence MIT
	* 
*/

#include <stdio.h>

int main () {
	
	/* Définition de la variable*/
	int a=0;
	int i=0;
	
	printf("Choisissez votre valeur ? (De -10 à 10)\n");
	scanf ("%d", & a ) ;
	
	/* boucle do while */
	do {
		printf("valeur de i: %d\n", i);
		
		i++;
	}while( i <= a );
	printf("valeur de a: %d\n", a);
	
	return 0;
}

Fichier source:do_while.c

for loop:

Une boucle for est une structure de contrôle de répétition identique à la boucle while avec la définition de l’initialisation, de l’incrémentation et de la condition. Cela vous permet d’écrire efficacement une boucle devant s’exécuter un nombre de fois. Une boucle for se décompose en trois parties, l’initialisation d’une variable ;une condition ; l’incrémentation d’une variable.

Exemple de code:

/* 
	* for.c
	* 
	* Christophe Caron
	* www.caron.ws
	* 2019
	* Licence MIT
	* 
*/

#include <stdio.h>

int main () {
	
	/* Définition de la variable*/
	int a;
	
	printf("Choisissez votre valeur ? (De 1 à 10)\n");
	scanf ("%d", & a ) ;
	
	/* boucle for */
	for (int i = 1 ; i <= a ; ++i){
		printf("valeur de i: %d\n", i);
		
	}
	
	return 0;
}

Fichier source:for.c