Retour à l'index

Le test et l'alternative

Le test

­
Introduction. Si nous reprenons l'un de nos programmes de calcul de la fonction habituelle et que, à l'appel de x, nous répondions, par exemple, 0 alors il y aura un problème à cause de l'ensemble de définition du logarithme. Nous pouvons améliorer notre programme en ne permettant plus cette évaluation grâce à un test, c'est-à-dire que nous ne ferons rien si l'argument est négatif.
Syntaxe. Cette instruction a la forme suivante :
		if (condition)
			instruction
		
où condition est une expression booléenne et instruction une instruction.
Sémantique.La condition est évaluée.
  • Si elle est vraie alors l'instruction instruction est effectuée puis on passe à l'instruction suivante ;
  • si elle est fausse on passe directement à l'instruction suivante.

Exemple. Avec notre problème de calcul de la valeur de notre fonction habituelle, nous pouvons utiliser le programme suivant (en utilisant la boucle WHILE) :
			#include <stdio.h> 
			#include <math.h> 
			
			int main(void) 
			{  
				float x, y;  
			
				printf("x = ");  
				scanf("%f",&X);  
	
				while (x != 1000.0)  
				{  
					if (x > 0)  
					{  
						y = (sin(x) + log(x))/(exp(x) + 2);  
						printf("f(%f) = %f\n", x, y);  
					}  
				
				printf("x = ");  
				scanf("%f",&X);  
				}  
			}
		

L'alternative

Introduction. Nous venons de voir comment éviter une erreur d'exécution si nous reprenons l'un de nos programmes de calcul de la fonction habituelle et que, à l'appel de x, nous répondions, par exemple, 0. Nous pouvons encore améliorer ce programme en indiquant explicitement qu'il y a un problème lors d'un argument négatif (tout en donnant la valeur lors d'un argument strictement positif). Ceci est réalisé grâce à l'alternative.
Syntaxe. Cette instruction a la forme suivante :
		if (condition)
			instruction1
		else
			instruction2 
		

où condition est une expression booléenne et instruction1 et instruction2 des instructions (préfixées et suffixées éventuellement par
{
et
}
, respectivement, pour bien les délimiter si c'est un séquencement).
Sémantique. La condition est évaluée.
  • Si elle est vraie alors l'instruction instruction1 est effectuée puis on passe à l'instruction sui­vante ;
  • Si elle est fausse alors l'instruction instruction2 est effectuée puis on passe à l'instruction suivante.

Exemple. Avec notre programme de calcul de la valeur de notre fonction habituelle, nous pouvons utiliser le programme fonct 7.c suivant (en utilisant la WHILE) :
		#include <stdio.h>   
		#include <math.h>   
		
		int main(void)   
		{   
			float x, y;   
			
			printf("x = ");   
			scanf("%f",&X);   
			
			while (x != 1000.0)   
			{   
			if (x <= 0)   
				printf("f(%f) non definie\n", x);   
			else   
			{   
				y = (sin(x) + log(x))/(exp(x) + 2);   
				printf("f(%f) = %f\n", x, y);   
			}   
			printf("x = ");   
			scanf("%f",&X);   
			}   
		}   
		

Retour sur l'affectation

­
Introduction. Pour rendre les expressions de réinitialisation des boucles FOR plus concises on utilise un jeu d'abréviations pour les affectations en langage C. Par exemple l'affectation souvent rencontrée
i = i + 1 
se notera plus simplement
i++
.
Opérateurs d'affectation.En fait nous n'avons pas qu'une seule affectation mais plusieurs opérateurs d'affectation. Les opérateurs d'affectation sont des opérateurs binaires écrits sous forme infixe qui mettent dans leur opérande de gauche la valeur de leur opérande de droite. L'opérande de gauche doit étre une Lvalue (pour valeur à gauche du signe d'affectation) : il s'agit d'une expression désignant une adresse dans la mémoire de l'ordinateur, par exemple le nom d'une variable (mais pas une constante).
L'opérande de droite peut être n'importe quelle expression. En fait certains opérateurs d'affectation seront unaires mais représentent en fait des notations abrégées d'opérations binaires.
Affectations en chaîne. On peut écrire en C des affectations en chaîne telle que l'affectation suivante :
a = b = c = 4;

qui affecte la valeur 4 aux trois variables a, b et c.
Affectations combinées. Une affectation combinée mélange une opération d'affectation avec une opération arithmétique (ou de bits). Dans le tableau suivant les expressions de la colonne de gauche équivalent aux expressions de la colonne de droite :
  • x += y (<=> x = x + y)
  • x -­= y (<=> x = x - y)
  • x *= y (<=> x = x * y )
  • x /= y (<=> x = x / y )
  • x %= y (<=> x = x % y )

Incrémentation et décrémentation. Il est fréquent qu'on doive augmenter ou diminuer de '1' une variable (entière), en particulier à propos des boucles FOR. On peut le faire grâce à
x = x+1 
ou à
x += 1
, mais on peut encore faire plus bref. On écrit
x++
ou
++x
(resp.
x--
ou
--x
) pour augmenter (resp. diminuer) la valeur de x de 1.
Remarque. Il y a une différence entre x++ et ++x. Lorsque l'une de ces expressions est utilisée dans une expression complexe, on incrémente x, suivant le cas, avant ou aprés en avoir tenu compte dans l'expression complexe.

Cours, éxercices ou graphismes libre de droit. Un mail est souhaitable | Webmestre : Aublet Bastien (bastien.aublet@hotmail.fr)