Suivez-nous sur X

|
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z,
ALL
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
0,
A,
B,
C,
D,
E,
F,
G,
H,
I,
J,
K,
L,
M,
N,
O,
P,
Q,
R,
S,
T,
U,
V,
W,
X,
Y,
Z
|
|
A propos d'Obligement
|
|
David Brunet
|
|
|
|
Programmation : C - structure d'un programme
(Article écrit par Batchman et extrait d'A-News (Amiga News) - juin 1989)
|
|
Dans la lignée de Chorizo Kid, je reprends l'initiation au langage C car vous êtes nombreux à nous en demander. Il s'agit
ici de vous apprendre à programmer en C. Mais on ne fait pas de bons programmes sans bons algorithmes. Voyez donc pour
ça les articles d'ASD de mon compère (je rappelle qu'ASD ne signifie pas
"Alcool, Sexe et Drogue" mais "A Soigneusement Déboguer").
Structure des programmes C
Nous parlerons cette fois-ci de la structure des programmes C mais pour ne pas trop en dire à la fois, nous aborderons
plus tard la compilation séparée. Nous considérons donc le cas où un programme est contenu en entier dans un fichier.
Qu'est-ce qu'un programme C ? Un ensemble de déclarations, C tout. Ces déclarations peuvent être de variables ou de fonctions.
Parmi celles-ci, une est particulière, c'est la fonction "main" qui constitue l'ossature du programme.
Tout de suite, un exemple psycho-socio-pédagogique ayant pour but d'insérer dans la société informatisée à l'aube du XXIe
siècle le Yéti le plus récalcitrant au langage C.
Si vous voulez un Batchman-minitip, ce n'est même pas la peine de taper ce programme pour voir s'il marche. De toute façon,
vous ne verriez rien. Mais c'est un bon exemple de début pour étudier la structure. Nous y trouvons :
- Une déclaration de variable : int i;.
- Une déclaration de fonction : main. Cette fonction doit toujours exister pour qu'un exécutable soit produit.
La structure d'un programme C n'est pas plus compliquée que ça. Mais il y a généralement plus de variables et de fonctions...
Chorizo Kid me souffle que ça marcherait aussi avec i=6 : il ira loin ce petit... Ah, s'il m'avait écouté et qu'il
ait fait des études...
"main" est la fonction appelée quand on lance le programme ; c'est elle qui contient les appels à d'autres fonctions.
Les variables déclarées hors de toute fonction sont globales, c'est-à-dire qu'elles sont visibles depuis n'importe quelle
partie du programme. En d'autres termes, vous pouvez les citer dans n'importe quelle fonction. Vous pouvez aussi leur
donner une valeur initiale. Par exemple :
...permet de déclarer un entier qui contient la valeur 7 quand le programme est lancé.
Les fonctions
Voyons maintenant ce qu'est une fonction : il s'agit d'un morceau de votre programme qui contient des instructions, reçoit
des arguments ou paramètres et retourne une valeur. Exemple :
Ceci est la déclaration de la fonction qui calcule le carré d'un entier. Les instructions de cette fonction sont x*x.
L'argument reçu est l'entier "x". La valeur retournée est l'entier carré qui vaut "x". Dans d'autres fonctions, on
peut appeler celle-ci comme une variable, en lui donnant un paramètre (exemple : surface = Pi*carré(rayon);).
Tout ceci est fort simple. Mais on peut aussi avoir des déclarations à l'intérieur d'une fonction. Les déclarations de
fonctions sont ici interdites mais on peut avoir des variables locales : elles ne pourront être utilisées qu'à l'intérieur
de cette fonction-là. Ceci pour la bonne raison qu'elles sont dynamiques, c'est-à-dire qu'elles n'existent pas avant,
sont créées lorsque l'on rentre dans la fonction, et détruites quand on en sort. "A quoi ça sert ?" me dira le béotien
moyen ? C'est vrai que l'on pourrait s'en passer mais c'est plus rigoureux pour écrire des programmes proprement.
Exemple :
Voici un exemple de fonction utilisant une variable dynamique : c'est "y". j'espère que vous l'aviez reconnue. C'est juste
un exemple car il est évident que cette fonction est moins efficace que la précédente (comptez le nombre d'opérations
effectuées). Une fonction peut donc contenir des déclarations et des instructions, éventuellement mélangées.
Hors de cette fonction, parler de la variable "y" n'a aucun sens. Elle est allouée sur la pile lorsque la fonction "carré"
est appelée. A l'intérieur de la fonction, vous pouvez utiliser cette variable pour tous vos délires. Encore plus fort,
vous pouvez avoir plusieurs variables "y" à l'intérieur de fonctions différentes : ceci ne posera pas de problème car chacune
est locale à sa fonction. Donc, la variable "y" de "carré()" n'aura rien de commun avec la variable "y" de "cube()",
par exemple.
Autre conséquence de la destruction d'une variable locale lorsque l'exécution de la fonction est terminée :
sa valeur n'est pas conservée. En d'autres termes, la valeur de "Y" lorsqu'on entre dans la fonction "carré"
n'est pas forcément la même qu'à la fin du précédent appel de cette fonction (nous verrons plus tard que ce n'est
pas une règle absolue mais il faut bien débuter).
Je ne sais pas si j'ai convaincu Frédéric Autechaud mais les règles qui définissent la structure d'un programme C sont simples,
comme vous venez de le voir. Ces bases nécessaires étant posées, je vous parlerai la prochaine fois des types de données.
|