Sie sind auf Seite 1von 4

ADA - Algorithmique et programmation

Universit Paul Sabatier, Toulouse

Convention d'criture de code en ADA


1.

Pourquoi une convention d'criture de code


80% du cot d'un logiciel concerne sa maintenance et non son criture initiale, la plupart du temps, les personnes qui maintiennent un logiciel ne sont pas celles qui l'ont crit, les conventions de code augmentent la lisibilit et amliorent la comprhension du code, c'est un des critres de qualit du code dans l'industrie du logiciel, etc.

Ces conventions sont bases sur celles utilises pour l'criture de code en Java, mais aussi en C et C++. Elles ne sont qu'un extrait, mais devront tre respectes pour toute criture de code ADA.

2.

Organisation d'un fichier source simple (sans compilation spare)

Un fichier source est constitu de sections spares par des lignes blanches et identifies par un commentaire optionnel. Les sections sont : Les clauses d'import d'units extrieures : with et use. La procdure principale, qui elle-mme est structure de la faon suivante : les dclarations de types utilisateurs, les variables locales de la procdure principale, les sous-programmes utiliss par la procdure principale, le corps de la procdure principale.

3.

Convention de noms d'identificateurs

3.1 Types

Les noms de types commencent toujours par une majuscule. S'ils sont composs de plusieurs mots, chaque mot commence par une majuscule et il n'y a pas de sparateurs. Exemples : MonType, PileDEntiers, GrapheNonCyclique.
3.2 Variables et sous-programmes

Les noms de variables et de sous-programmes sont identiques aux noms de types sauf qu'ils commencent toujours par une minuscule. Exemples : maVariable, rechercheDuMinimum, indexDuMinimum, poidsFort.
3.3 Constantes

Les constantes sont toutes en majuscules et les diffrents mots sont spars par des "souligns" ('_'). Exemples : MAX_INT, NOIR, BLEU_CLAIR, MATRICE_IDENTITE.

4.

Blocs et mots-cls

Les mots-cls sont crits en minuscule. Les mots-cls signalant le dbut et la fin du bloc sont toujours aligns sous le premier caractre du mot-cl signalant le dbut du bloc.

ADA - Algorithmique et programmation

Universit Paul Sabatier, Toulouse

procedure sousProgrammeProc (param1 : in Integer; param2 : in Float) is i : Integer; -- variable de travail begin - instructions; end sousProgrammeProc;

Table 4.1.Exemple de sous-programme de type procdure


function sousProgrammeFunc (param3 : Integer) return Integer is i : Integer := 0; begin - instructions; return i; -- i est bien un Integer end sousProgrammeFunc;

Table 4.2.Exemple de sous-programme de type fonction


-- structure de contrle : if sans partie else if (condition) then -- instructions; end if; -- structure de contrle : if avec partie else if (condition) then -- instructions excutes si (condition) a la valeur vrai else -- instructions excutes si (condition) a la valeur faux end if;

Table 4.3. Exemple d'instructions if et if-else


-- structure de contrle : while i := 1; while (i <= 10) loop -- instructions; i := i + 1; end loop;

Table 4.4.Exemple de boucle while


-- structure de contrle : for for i in Integer range 1..10 loop -- instructions; end loop;

Table 4.5.Exemple de boucle for

5.

Indentation

Le code situ l'intrieur d'un bloc, signal par un mot cl (begin ou loop), doit tre indent, c'est-dire dcal de quelques caractres vers la droite (pas plus de 4 pour viter les lignes de plus de 80 caractres). Toutes les instructions appartenant un mme bloc sont alignes. Le end est toujours align gauche avec le premier caractre du mot-cl signalant le dbut du bloc. (ici : procedure, while ou if).

ADA - Algorithmique et programmation

Universit Paul Sabatier, Toulouse

-- structure gnrale d'une procdure principale with Ada.Integer_Text_io ; -- pour pouvoir lire et crire des entiers

procedure maProcPrincipale is type MonType is ; -- dfinition de types utilisateurs maVariable : MonType; -- dclaration de variables locales -- sous-programme utilis dans maProcPrincipale procedure maProcedure (parametre : in out Integer) is i : Integer; j : Integer; begin i:= 0 ; while (i < parametre) loop i := i + 1; j := i * 2; while (j < parametre) loop j := j + i; if (j > i) then -- instructions...; end if; -- instructions...; end loop; j := 0; end loop; parametre := j; end maProcedure; begin -- instructions de la procdure principale; maProcedure(maVariable); end maProcPrincipale;

Table 5.1.Exemple d'indentation

6.

Longueur de lignes

Limiter la longueur des lignes 80 caractres (pour faciliter la lecture l'cran et l'impression sur papier). Si des instructions sont trop longues, replier le code de faon faciliter la comprhension.
if ( (condition1 and condition2) or (condition3 and condition4) or (condition5 and condition6)) then -- test repli sur 3 lignes
-- instructions;

maProcedure(unParametre); end if;

Table 6.1.Exemple de repli de ligne trop longue

7.

Dclarations et instructions

Rgles : on crit une dclaration de variable locale par ligne, accompagne d'un commentaire donnant son rle, on crit une instruction par ligne,

ADA - Algorithmique et programmation

Universit Paul Sabatier, Toulouse

on laisse un blanc : entre les mots-clefs if, while, then et la parenthse ouvrante ou fermante,
if (condition1) then

aprs une virgule ou un point-virgule,


procedure sousProgramme(par1 : Integer; par2 : Float) is

de part et d'autre d'un oprateur binaire,


if (par1 >= 0) then par1 := par1 * 10; end if;

on ne met pas de blanc entre un oprateur unaire et son oprande (ici entre le '' et le '1')
par1 := -1;

8.

Cartouche de sous-programmes

Un cartouche est un commentaire, plac juste avant chaque sous-programme, qui contient une brve description : du rle du sous-programme, du rle de chaque paramtre entrant, du rle de la valeur retourne (fonction) ou des valeurs retournes (procdure).
-- Rle : calcule et retourne x la puissance n -- Entres : x entier et n exposant entier -- Sortie : retourne x^n function elevPuissance (x : Integer; n : Integer) return Integer is -- dclarations resultat : Integer := 1; begin -- instructions for i in Integer range 1..n loop resultat := resultat * x; end loop; return resultat; end elevPuissance;

Table 8.1.Exemple de cartouche de sous-programme

Das könnte Ihnen auch gefallen