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).
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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 |
|
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.
| 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 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. |
| 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)