
REGLES DE FORMATAGE ET CONVENTIONS D'ECRITURE

Comme nous l'avons-vu précédemment, il est très facile d'écrire un programme illisible ou très structuré.
Pour vous aider lors de la rédaction de vos programmes, voici les quelques règles que
j'essaie de respecter lors de l'écriture de programmes:
IDENTIFICATEURS
- MOTS RESERVES ET IDENTIFICATEURS PRE-DECLARES
- Les mots réservés du langage (BEGIN, END, FOR, DO, ...) ainsi que tous les
identificateurs prédéclarés (INTEGER, BYTE, CHAR, ...) sont écrits en majuscules.
- CONSTANTES
- Les identificateurs de constantes sont composés de minuscules uniquement. Les
différents mots sont éventuellement séparés des "underline". Exemples:
dimension_tableau, blanc, tva, ...
- VARIABLES
- Les identifiants de variables sont écrites en minuscules avec les initiales en
majuscule. Les mots sont éventuellement séparés par des "underline".
Exemples: Age_Du_Capitaine, Couleur_Fond_Ecran, Vitesse, Acceleration, ...
- TYPES
- Les identificateurs de type commencent toujours par "T_" puis sont écrits
comme les variables, en minuscules avec des initiales en majuscules. Exemples: T_Couleur,
T_Genre, T_Code_D_Erreur, ...
- PROCEDURES
- Les identificateurs de procédures sont écrits comme les noms des variables en
minuscules avec des initiales en majuscules.Mais on utilisera un verbe à l'infinitif, car
un appel de procédure décrit une action à réaliser: Afficher, Close, Effacer_Ecran,
Rebedouler, ...
- FONCTIONS
- Les identificateurs des fonctions sont écrits comme les noms des variables en
minuscules avec des initiales en majuscules.A l'inverse des procédures, un nom (ou une
locution) sera utilisé pour l'identification, car un appel de fonction décrit le
résultat d'une action à réaliser. Exemples: Caractere_Lu, Sinus_Hyperbolique, ... En
principe, une fonction ne devrait avoir qu'un seul paramètre de sortie: le résultat de
la fonction. Si une routine doit avoir plusieurs paramètres de sortie, il est
préférable d'utiliser une procédure.
- UNITES ET PROGRAMME PRINCIPAL
- Les identificateurs d'unités ou de programme principal sont également écrits comme
les noms de variables en minuscule avec initiales en majuscules.

DECLARATIONS
Autant que possible, on ne déclarera qu'un objet par ligne (constante, type ou
variable) afin de pouvoir commenter chacun de ces objets sur la même ligne. Exemple:
CONST
max_x = 100;
{ Bla Bla Bla }
max_y = 200;
{ Patati Patata }
TYPE
T_Couleur = (rouge, vert, bleu); { Pfffffrrrt }
T_Truc = [39..45];
{ Tagada... }
T_Chose = RECORD
{ ...Tsoin tsoin }
Zorglad_Gauche : INTEGER;
Cameleo :
T_Couleur;
END; {RECORD}
VAR
I,
{ Voilà voilà }
J,
{ Ca nous rajeunit pas }
K,
{ K comme Koala }
Longueur : INTEGER;
{ En angström }
Tableau : ARRAY [1..max_c, 1..max_y] OF BYTE; |

INDENTATION
Un incrément d'indentation de 2 caractères sera utilisé à chaque niveau
- BOUCLES FOR, WHILE ET REPEAT
- Ces boucles sont présentées de la manière suivante:
Statment;
Statment;
FOR I := 1 TO 10 DO BEGIN
Statment;
Statment;
END; {FOR}
Statment;
Statment;
WHILE X < Y DO BEGIN
Statment;
END; {WHILE}
Statment;
Statment;
REPEAT
Statment;
UNTIL X > Y;
Statment; |
- On commentera les END de façon à indiquer à quelle boucle ils appartiennent. On
placera également un ";" après la dernière instruction de la boucle (juste
avant le END). de façon à faciliter d'éventuelles insertions d'instructions
ultérieures.
- INSTRUCTIONS IF ET CASE
- Par analogie, l'indentation des instructions IF est CASE est la suivante:
Statment;
Statment;
IF Condition THEN BEGIN
Statment;
END; {IF}
Statment;
IF Condition THEN BEGIN
Statment;
END {IF}
ELSE IF Condition2 THEN BEGIN
Statment;
Statment;
END {ELSE
IF}
ELSE BEGIN
Statment;
END; {ELSE}
Statment;
Statment; |
Statment;
Statment;
CASE Couleur OF
rouge : BEGIN
Statment;
Statment;
END; {BRANCH OF CASE}
vert : BEGIN
Statment;
Statment;
END; {BRANCH OF CASE}
ELSE BEGIN
Statment;
Statment;
END; {OTHERWISE}
END; {CASE
OF}
Statment;
Statment; |
-
Il faut noter que chaque END est accompagné
d'un commentaire indiquant à quel BEGIN il
appartient. Cela est fort utile lorsqu'il y a plusieurs boucles imbriquées les unes dans
les autres...
De plus, même s'il n'y a qu'une seule ligne dans le IF
THEN ou le CASE, il
y a toujours un BEGIN..END,
afin de faciliter l'insertion ultérieure de quelques nouvelles lignes de code.
Pour terminer cette théorie, voici deux listings de la même procédure. Lequel des
deux trouvez-vous le plus agréable à lire ?
Type
tTableau=Array[1..100] Of Real;
Procedure MaxMin(T:tTableau;
Var
max, min: Real);
Var i : Integer ;
Begin
max := T [ 1 ] ;
min := T [ 1 ] ;
For i := 2 to n Do
If T [ i ] > max Then
max := T [ i ]
Else If T [ i ] < min Then
min := T [ i ]
End; |
TYPE
tTableau=Array[1..100] OF REAL;
PROCEDURE MaxMin(T:tTableau;
VAR max,
min:REAL);
VAR
i : INTEGER;
BEGIN
max := T[1];
min := T[1];
FOR i := 2 TO n DO BEGIN
IF T[i] > max THEN BEGIN
max := T[i];
END {IF}
ELSE IF T[i] < min THEN
BEGIN
min := T[i]
END; {ELSE IF}
END; {FOR}
END; {PROCEDURE
MaxMin} |
Question subsidiaire, que fait cette procédure ? |