Terminons ce chapitre par la discussion d'un problème concret tiré de la vie quotidienne. Supposons qu'on nous demande de réaliser un programme permettant de calculer le salaire brut d'un nombre déterminé d'individus connaissant leurs salaires horaire et le nombre d'heures de travail en indiquant une retenue plafonnée de P pour-cent sur la sécurité sociale.
Une première étape importante consiste dans le choix et la description des variables. Appelons:
H le salaire horaire,
T le nombre d'heures de travail,
B le salaire brut qui se calcule d'après la formule B = H * T,
P le pourcentage de la retenue,
R la retenue sur le salaire brut qui se calcule d'après la formule R = B * P,
N le salaire net ( N = B - R ),
Max le plafond de la retenue,
K le nombre d'individus.
Avec ces définitions, l'arbre programmatique décrivant le programme prend la forme de la figure 5.4. Dans cet arbre apparaît à côté de la structure répétitive, dont nous avons fait connaissance dans le paragraphe 5.6, une deuxième structure de base: la structure alternative. Dans le cas d'une structure alternative, le rond portera le mot réservé TEST suivi d'une condition donnée en clair par une expression booléenne. Ici NOP signifie "pas d'opération" [angl. No Operation]. Ecrivons enfin un programme Turbo-Pascal à partir de l'arbre programmatique de la figure 5.4:
PROGRAM Salaire;
USES Crt;
VAR P, Max, H, T, N: Real;
Count, K: Integer;
PROCEDURE Test ( VAR R: Real; Max: Real );
BEGIN
IF R > Max THEN BEGIN
R:=Max
END ELSE BEGIN
{No Operation}
END;
END; {-- Test }
FUNCTION Retenue ( B, P: Real ): Real;
VAR R: Real;
BEGIN
R := B*P;
Test( R, Max);
Retenue := R;
END; {-- Retenue }
FUNCTION SalaireBrut ( H, T: Real ): Real;
BEGIN
SalaireBrut := H*T;
END; {-- SalaireBrut }
FUNCTION SalaireNet ( H, T, P: Real ): Real;
VAR B: Real;
BEGIN
B := SalaireBrut ( H, T );
SalaireNet := B - Retenue( B, P );
END; {-- SalaireNet }
Figure 5.4 Calcul du salaire brut de K individus . . .
BEGIN {main}
Write ( 'Entrer K, P, Max: ' ); ReadLn ( K, P, Max );
FOR Count:=1 TO K DO BEGIN
Write ( 'Entrer H, T: ' ); ReadLn ( H, T );
N := SalaireNet( H, T, P );
WriteLn ( N );
END;
END. {-- Salaire }
Nous constatons que le résultat est un programme très structuré, donc lisible, clair et par conséquent facilement extensible.
TERMES TECHNIQUES
ALGOL
arbre programmatique
bloc
bloc principal
concept de blocs
domaine de validité
entête
global
local
niveau d'emboîtement
partie de déclaration d'étiquettes
partie de déclaration de procédures et de fonctions
partie de déclaration de variables
partie de définition de constantes
partie de définition de types
programme principal
programmation structurée
structure alternative
structure à blocs emboîtés
structures de base
structure répétitive
© Aflo Informatique , 2003-2004