Obligement - L'Amiga au maximum

Samedi 18 novembre 2017 - 05:42  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

 · Actualité (récente)
 · Actualité (archive)
 · Comparatifs
 · Dossiers
 · Entrevues
 · Matériel (tests)
 · Matériel (bidouilles)
 · Points de vue
 · En pratique
 · Programmation
 · Reportages
 · Tests de jeux
 · Tests de logiciels
 · Tests de compilations
 · Articles divers

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


Jeux Amiga

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


Trucs et astuces

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


Glossaire

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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : C - déclaration des variables
(Article écrit par Denis Gounelle et extrait d'ANews - décembre 1999)


Commissariat de police d'Orléans, septembre 1999 : l'Inspecteur Martin interroge depuis deux heures un certain Denis les doigts de fée, qui a été interpellé la veille dans le cadre d'une enquête sur la secte des amigaïstes.

- Tu es dans de sales draps, tu ferais mieux de tout avouer !

- Vous faites une grave erreur, je n'ai rien à me reprocher.

- Tu te fiches de ma gueule ? Et ces tracts qu'on a retrouvé chez toi ?

L'inspecteur brandit une feuille imprimée sur laquelle on peut lire :

/* Déclaration des variables - prog2.c */
#include <stdio.h>
main()
{
int entier1, entier2 = 3 ;
unsigned long int ULongInt ;
char premier = 'Z', second ;
flat reel[10] ;
double ReelAussiMaisMieux ;
puts( "Tout ça pour rien!" ) ;
}

- C'est juste mon second article pour ANews ! Ça n'a rien d'illégal non ?

- Parlons-en ! Tu sais le nombre de plaintes qu'on a reçu dans toute la France après le premier article ? Cette fois-ci il va falloir t'expliquer un peu mieux que ça ! D'abord qu'est-ce que ça veut dire "déclaration des variables" ?

- Mais enfin, je n'y suis pour rien ! C'est le langage C qui impose que toute variable soit déclarée avant d'être utilisée, c'est-à-dire que l'on dise quel type de donnée elle contiendra. Je me permets de vous rappeler en passant qu'une variable est une mémoire permettant de stocker une valeur sur laquelle on souhaite travailler.

- Je sais ! Arrête de me prendre pour un demeuré !

- Euh oui, excusez-moi Inspecteur !

Comme vous pouvez le voir, les trois types de données que connaît le langage C sont les nombres entiers (int), les caractères (char), et les nombres réels (ou nombres à virgules, float).

- Ben voyons, c'est clair comme de l'eau de roche ! Je te conseille de commencer par le début si tu ne veux pas qu'il t'arrive des bricoles !

- Eh bien pour déclarer une variable, il faut indiquer d'abord son type, puis son nom et finir la ligne par un point-virgule. Un nom de variable est une suite quelconque de lettres minuscules, majuscules, de chiffres, voire de caractères "soulignés". Le compilateur C distingue les minuscules et les majuscules, donc la variable "CoucouPoulet" est différente de la variable "coucoupoulet" ou de la variable "cOUcOUpOUlet".

- C'est fini de te payer ma fiole ? Si tu continues à faire le malin, tu vas finir la nuit au gnouf !

- Désolé, ça m'a échappé... Je reprends : pour déclarer une variable de nom "entier" et de type "int" on écrira donc "int entier :".

On peut déclarer plusieurs variables du même type à la suite, en indiquant leurs noms séparés par une virgule. Par exemple : "int entierl, entier2" permet de déclarer deux variables d'un seul coup.

Enfin, on peut donner une valeur de départ à une variable : "int entier = 5 ;" déclare une variable "entier" qui sera automatiquement initialisée à 5. On peut évidemment faire de même pour les variables de type caractère et nombre réel : "char caract = 'Z' ;" déclare une variable de type caractère et l'initialise avec le caractère et "Z", et "float reel = 0.75 ," déclare une variable de type nombre réel et l'initialise à la valeur 0.75. Je crois que vous savez tout maintenant.

- Ben voyons ! Et le "unsigned long int", hein ? Et le "double" ? Tu vas me faire le plaisir de cracher le morceau jusqu'au bout.

- Le mot-clé "unsigned" ne peut être utilisé que pour les variables de type "char" et "int". Il permet de dire que le contenu de la variable sera toujours considéré comme un nombre positif. Par exemple, alors que les valeurs d'une variable de type "char" sont comprises entre -128 et +127, celles d'une variable de type "unsigned char" sont elles comprises entre 0 et 255.

Les mots-clés "short" et "long" permettent d'indiquer la taille des variables de type "int" : en général, "short int" (qui peut s'abréger en "short") correspond à un entier de 16 bits qui peut prendre des valeurs comprises entre -32768 et +32767, et "long int" (qui peut s'abréger en "long") correspond à un entier de 32 bits qui peut prendre des valeurs comprises entre -2147483648 et +2147483648. De nos jours, si on indique "int" tout seul (sans "short" ni "long" devant) on obtient le plus souvent un entier de 32 bits.

Enfin, "double" correspond à un nombre réel dit "en double précision". C'est en fait l'équivalent d'un "long float", ce qui veut dire que la plage des valeurs possibles est plus importante pour une variable de type "double" que pour une variable de type "float".

- Bien... il ne te reste plus qu'à m'expliquer ce que peut bien vouloir dire le "float reel[10]" !

- Cette ligne correspond à la déclaration d'un tableau. c'est-à-dire une zone qui stocke plusieurs valeurs du même type. On déclare un tableau en indiquant le nombre de postes (donc de valeurs) du tableau entre crochets, après le nom de la variable : ici on déclare donc un tableau de nom "reel" qui pourra contenir dix nombres réels. C'est le même principe pour les autres types de variable, par exemple un tableau de cinq caractères se déclarera "char tableau[5] ;".

Dans le programme, on pourra alors accéder à un poste du tableau en le désignant par "tableau[indice]", soit par exemple "reel[2]". Il faut faire très attention au fait que le premier poste à l'indice 0 et non 1 : dans le cas ci-dessus, les indices possibles vont donc de 0 à 9 et non de 1 à 10. C'est un point sur lequel les débutants se trompent assez souvent.

- Et à part embêter les débutants, ça sert à quelque chose ces tableaux ?

- Bien sûr ! Si vous deviez faire un programme qui compte le nombre de PV que posent vos agents par heure de la journée, utiliser un tableau de 24 entiers sera beaucoup plus pratique que de déclarer 24 entiers. Il faut savoir que l'indice d'accès à un tableau peut être soit une constante (par exemple 2 dans le cas de "reel[2]") ou variable entière (par exemple si la variable "entier2" vaut 3, on peut accéder au tableau par "reel[entier2]" au lieu de "reel[3]").

- Quand je vais transmettre ton dossier au juge, j'ai intérêt à fournir une boîte d'aspirine sinon je vais me faire sonner les cloches !

- Si je puis me permettre Inspecteur... Vous pouvez aussi mettre des commentaires dans le programme, ce sera quand même plus simple :

/* Déclaration des variables - progs2.c */
#include <stdio.h>
main()
{
/* déclare deux variables de type "nombre entier", une de nom "entier1", */
* une autre de nom "entier2" est initialisée à 3 */
int entier1, entier2 = 3 ;
/* déclare une variable de type "nombre entier sans signe sur 32 bits" */
unsigned long int ULongInt ;
/* déclare deux variables de type "caractère", une de nom "premier", une */
* autre de nom "second". La variable "premier" est initialisée à "Z" */
char premier = 'Z', second :
/* déclare un tableau de 10 postes de type "nombre réel simple précision" */
float reel[10] ;
/* déclare une variable de type "nombre réel double prévision" */
double ReelAussiMaisMieux ;
puts( "Tout ça pour rien !") ;
}

- C'est maintenant que tu le dis ? Et en plus, si je comprends bien la dernière ligne, le truc ne sert à rien, n'est-ce pas ?

- Euh... bien oui Inspecteur. C'est juste pour expliquer comment déclarer des variables. En fait, ce programme ne fait strictement rien d'utile...

- Alors là c'est le bouquet ! Brigadier Longtarin, collez-moi ce rigolo au frais pour lui apprendre à nous faire perdre notre temps ! On ira le rechercher quand on n'aura rien de mieux à faire !

- Mais !... Non !... Inspecteur !... Lâchez-moi !... Je veux un avocat !... Aïe !


[Retour en haut] / [Retour aux articles]