Retour à l'index

Le langage C comme calculette quatre opérations

 Nous allons indiquer comment se servir du langage C en tant que calculette, en commençant par la calculette quatre opérations.

 A chaque fois que nous définirons une instruction, nous préciserons sa syntaxe (c'est-à-dire comment il faut l'écrire) et sa sémantique (c'est-à-dire quel doit être le comportement de l'ordinateur devant l'instruction en question). Plus exactement nous scinderons la sémantique en deux parties, à savoir la sémantique attendue (qui nous donnera, comme son nom l'indique, ce que l'on aimerait bien avoir) et la sémantique réelle, que l'on déduira de l'observation de notre système informatique considéré comme boîte noire.

 La différence entre la sémantique réelle et la sémantique attendue dépendra de problèmes d'implémentation ou, quelquefois, de limitations plus profondes de l'informatique (qu'il sera alors de notre devoir d'expliquer).

Cas des entiers naturels


Introduction L'ensemble N des entiers naturels est le premier ensemble de nombres que nous rencontrons, à l'école élémentaire. Il sert à dénombrer les ensembles finis. Nous étudions également les opérations sur cet ensemble, en particulier l'addition et la multiplication, pour simplifier le dénombrement. Reste à effectuer ces opérations.
Exemple Pour faire afficher le résultat de 1 + 1 on peut utiliser, par exemple, le programme suivant :

				#include <stdio.h>
				
				int main(void) 
				{
					printf("%d",1 + 1);
				}
			

dont on peut vérifier qu'il donne bien ce qui est attendu.

Représentation et affichage des entiers naturels


Syntaxe de l'affichage Une première manipulation sur les entiers consiste à les afficher à l'écran. Ceci se fera grâce à l'instruction suivante:
printf("%d",<entier>);

entier est un mot représentant un entier, comme nous venons de le dire.
Format Comme nous l'avons déjà dit le 'f' de printf signifie format.
Il faut donc indiqué un format lors de l'utilisation de cette instruction, sauf éventuellement pour les chaînes de caractères (comme nous l'avons déjà vu à propos de l'affichage de Bonjour de notre premier exemple).
Le format est indiqué comme une chaîne de caractères précédée du symbole %. Nous verrons les différents formats au fur et à mesure de nos besoins. Le format pour les entiers représentés en base dix est %d (avec d pour décimal).
Sémantique attendue Ce mot (représentation d'un entier) doit être recopié tel que à l'écran.

Addition des entiers naturels


Syntaxe La mise en oeuvre de l'addition se fait de façon naturelle en utilisant le symbole `+'. Nous l'avons d'ailleurs déjà vu à propos de notre premier exemple, dans lequel on faisait calculer 1 + 1.
Sémantique attendue Lorsqu'on utilise l'instruction : printf("%d",entier1 + entier2); on veut voir affiché à l'écran la somme de ces entiers. Cependant, cet affichage trouve ses limites pour l'affichage de nombre extrêmement important.

Multiplication des entiers naturels


Syntaxe La mise en oeuvre de la multiplication se fait comme pour l'addition sauf, qu'au lieu d'utiliser l'un des symboles traditionnels '.' ou '×', on utilise le symbole '*'. Ce choix, traditionnel en informatique, est dû au fait que, d'une part, le point sert pour la représentation des réels et que, d'autre part, on peut aussi considérer des textes, comme nous le verrons, et donc que les symboles '.' et '×' sont utilisés dans un autre contexte.
Exemple : Un programme de multiplication se présentera donc sous la forme Calc 2.c suivante :
				#include <stdio.h> 
				
				void main(void)
				{ 
					printf("%d",2*3); 
				} 
			
Vous remarquerez qu'il est traditionnel, contrairement à ce qui est fait pour l'addition, de ne pas laisser d'espace entre les facteurs et le signe de la multiplication.
Sémentique attendue Lorsqu'on utilise l'instruction : printf("%d",entier1*entier2); on veut voir affiché à l'écran le produit de ces entiers.

Soustraction et division


Remarque fondamentale La soustraction et la division ne sont pas des opérations totales sur l'ensemble N des entiers naturels. L'informatique ne peut pas faire de miracle, l'application des opérations `-' et `/', qui existent cependant, ne donneront donc pas nécessairement des entiers naturels.

Cas des entiers relatifs


Représentation Les entiers relatifs se représentent de façon naturelle en base dix, c'est-à-dire zéro par 0, un entier relatif positif comme un entier naturel (éventuellement précédé du signe `+') et un entier relatif strictement négatif comme un entier naturel non nul précédé du signe '-'. Le format est le même que pour les entiers naturels.
Syntaxe des opérations Les opérations habituelles (l'addition de symbole `+', la multiplication de symbole `*' et la soustraction de symbole `-') se mettent en oeuvre comme dans le cas des entiers naturels.
Remarques
  • Ceci est rare pour un symbole dans un langage informatique, mais un même symbole, ici le symbole `-', a trois significations différentes (pour l'instant ; nous verrons en fait qu'il en a d'autres, car la soustraction pour les réels n'est pas la même chose que la soustraction pour les entiers, par exemple) : il sert à noter les entiers relatifs (pour indiquer leur signe), pour noter l'opération unaire d'opposition [par exemple -(-2) = 2] et pour noter l'opération binaire de soustraction.
  • La division (de symbole `/') existe mais ne donne pas le quotient (là encore l'informatique ne peut pas faire de miracle avec une opération partielle).
  • On notera l'usage de parenthèses pour rendre certaines opérations non ambiguës.


Cas des rationnels


Après les ensembles N des entiers naturels et Z des entiers relatifs, l'ensemble Q des rationnels et l'ensemble D des nombres décimaux (ou nombres à virgule) ont été introduit au collège. Cependant il est traditionnel que les opérations sur les rationnels ne soient pas implémentées dans les langages de programmation, sans qu'il y ait de raisons profondes à cet état de fait.

Cas des réels

Représentation décimale

Syntaxe La représentation habituelle des décimaux a son analogue en langage C à une restriction près, à savoir que la virgule décimale (française) est remplacée par le point décimal (anglo-saxon). Tout décimal non nul est donc représenté par un signe (éventuellement), suivi d'un entier naturel, suivi d'un point, suivi d'un nombre fini de chiffres de 0 à 9.
Format Le format pour cette représentation est %f (pour représentation à virgule flottante). On écrira, par exemple :
printf("%f",3.14159);
pour afficher une valeur approchée du nombre.

Représentation scientifique

Représentation avec mantisse et exposant Une représentation des réels utilisant les puissances de dix est souvent utilisée en Physique, par exemple : 32, 456.10-5 .
Dans ce cas le nombre devant la puissance (avec son signe éventuel) est appelé la mantisse, -5 est l'exposant. Ceci conduit à une représentation, dite scientifique. Comme, d'une part, on ne peut écrire que linéairement, et non en utilisant des exposants, et que, d'autre part, la base dix est sous entendue une fois pour toute, on écrit simplement le symbole `E' ou `e' devant l'exposant. Par exemple le réel ci dessus s'écrira :
32.456 E ­5
ou
32.456 e ­5
Une représentation scientifique d'un réel est donc un entier relatif suivi d'un point suivi d'un mot composé de chiffres suivi de `E' (ou de `e') suivi d'un entier relatif.
Remarque Entre le point et `E' on a un mot quelconque composé de chiffres et non un entier naturel, puisque ce mot peut commencer par autant de zéros que l'on veut.
Format Le format pour cette représentation est %E (ou %e) suivant que l'on veut voir afficher `E' (ou `e'). On écrira, par exemple :
				printf("%e",.314159e1); 

Remarque L'affichage normalise souvent le résultat, c'est-à-dire que la mantisse débute par un zéro, le point décimal et un chiffre non nul. Bien entendu l'exposant est calculé pour que ce soit bien le bon réel qui soit affiché.
Format G Il existe en fait un troisième type de formats pour les réels : les formats %g et %G. Suivant la précision demandée la forme décimale ou scientifique est utilisée, en fait la plus courte des deux. On a un 'e' ou un `E' (si c'est la représentation scientifique qui semble la plus adéquate au système) suivant que l'on a choisi %g ou %G.

Premières opérations


Mise en oeuvre Comme pour les entiers, la mise en oeuvre est facile : pour additionner, soustraire ou multiplier il suffit d'utiliser les signes respectifs `+', '-' et `*' et des réels sous l'une des deux représentations permises (décimale ou scientifique).
Division Rappelons qu'en informatique réel désigne en fait un décimal, or la division n'est pas une opération totale sur les décimaux puisque, par exemple :
1/3 = 0, 333333...
avec une infinité de chiffres après la virgule.
La division existe cependant (en utilisant le symbole classique `/') mais le résultat est un décimal qui est une valeur approchée. La précision dépend de l'implémentation du langage et on ne peut pas la dominer.

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